#ifndef BSP_Q7S_COMIF_I2COMIF_H_ #define BSP_Q7S_COMIF_I2COMIF_H_ #include #include #include #include #include /** * @brief This is the communication interface for i2c devices connected * to a system running a linux OS. * * @author J. Meier */ class I2cComIF: public DeviceCommunicationIF, public SystemObject { public: I2cComIF(object_id_t objectId); virtual ~I2cComIF(); ReturnValue_t initializeInterface(CookieIF * cookie) override; ReturnValue_t sendMessage(CookieIF *cookie,const uint8_t *sendData, size_t sendLen) override; ReturnValue_t getSendSuccess(CookieIF *cookie) override; ReturnValue_t requestReceiveMessage(CookieIF *cookie, size_t requestLen) override; ReturnValue_t readReceivedMessage(CookieIF *cookie, uint8_t **buffer, size_t *size) override; private: typedef struct I2cInstance { int fileDescriptor; std::vector replyBuffer; size_t replyLen; } I2cInstance_t; using I2cDeviceMap = std::unordered_map; using I2cDeviceMapIter = I2cDeviceMap::iterator; /* In this map all i2c devices will be registered with their address and * the appropriate file descriptor will be stored */ I2cDeviceMap i2cDeviceMap; I2cDeviceMapIter i2cDeviceMapIter; }; #endif /* BSP_Q7S_COMIF_I2COMIF_H_ */