/** * @file di_fw/can/gateways.h * @brief CAN-bus gateways discovery and caching * @copyright 2016 Dual Inventive Technology Centre B.V. */ #ifndef INCLUDE_DI_FW_CAN_GATEWAYS_H_ #define INCLUDE_DI_FW_CAN_GATEWAYS_H_ #include #ifndef DI_FW_CAN_GATEWAYS_LEN #error DI_FW_CAN_GATEWAYS_LEN not defined in board.h #endif /** * CAN-bus (DNCM) gateways cache for device:uid */ struct di_fw_can_gateways { size_t pos; struct di_can_msg *msg[DI_FW_CAN_GATEWAYS_LEN]; const char *device_uid[DI_FW_CAN_GATEWAYS_LEN]; }; /** * Discover the CAN-bus gateways and cache the corresponding device:uid * When a gateway is not present or timeouts on device:uid request it is * set to DI_DEVICE_UID_DEFAULT_VALUE. * @remark The device:uid reside as CAN message data, then need to be freed after use with * di_fw_can_gateways_free. * @param gw Gateways cache * @return DNOK when all gateways device:uid are cached * @return DNE_TIMEOUT when one or more gateways didn't respond */ di_errno_t di_fw_can_gateways_discover(struct di_can_ctx *ctx, struct di_fw_can_gateways *gw); /** * Free the device:uid which reside in the gateways CAN reply messages */ void di_fw_can_gateways_free(struct di_fw_can_gateways *gw); #endif /* INCLUDE_DI_FW_CAN_GATEWAYS_H_ */