在struct中指定设备特定的功能

时间:2014-10-13 03:17:12

标签: c++ c struct embedded typedef

我正在使用固件,试图建立一个独立于设备的库。该库使用I2C进行通信,这是一种简单而通用的协议,适用于那些不知道它是什么的人。 I2C使用I" m关注,读取和写入两个函数。在不同的微控制器上使用I2C主要是针对每个内核的不同,我正在寻找一种方法来传递函数,以便它能够以一致的方式使用它们。

如何创建用户可以将变量设置为函数的结构。 类似的东西:

typedef struct I2C_setup{
    function read = device specific read function;
    function write = device specific write function;
} 

然后我可以打电话

I2C_setup I2C;

此后

(return type) RegisterRead = I2C.read(register address);

我会使用函数指针还是......什么?

1 个答案:

答案 0 :(得分:1)

函数指针是个好主意。您可以将原型定义为

typedef struct I2C_setup{
  (*I2C_Read_Func)(uint32_t devAddr, uint32_t subAddr, uint8_t *pData, size_t lenght);
}

你的实际功能

I2C_Read(uint32_t devAddr, uint32_t subAddr, uint8_t *pData, size_t lenght);

您可以通过

分配
I2C_setup I2C;
I2C.I2C_Read_Func = I2C_Read;