1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/**
* @file
* @brief I2C通信(Master側)のHALです。
* @note I2C HALは、
* I2Cポートの初期化、データ送信、データ受信を行う、
* I2C通信の抽象化レイヤです。
* 個々の機器でこのインターフェースを実装して使用します。
*/
/**
* @struct I2cConfig
* @brief I2Cポートの初期化、データ送信・受信の際に必要となる設定情報を格納する構造体です。
*/
typedef struct
I2C_Config;
/**
* @enum I2C_ERR_CODE
* @brief I2C用の汎用エラーコード
* @note 型はint8_tを想定しているが, if_listでラップされているためI2Cの公開関数の返り値はintとなっている
* 基本負なのはRXの返り値は正が送ったByte数, 負がエラーコードとなっているため
*/
typedef enum
I2C_ERR_CODE;
/**
* @brief I2cConfig構造体をグローバルインスタンスとして定義し、ポインタを渡すことでポートを初期化します。
* @param[in] my_i2c_v 初期化するI2cConfig構造体へのポインタ
* @return int I2C_ERR_CODEとしたいが, if_listでintと統一されている。
* @note I2C通信ラッパーのクラスを使用する時は起動時に必ず実施してください。
* この関数を実行する前にI2cConfig構造体内の設定値を設定しておく必要があります。
*/
int ;
/**
* @brief I2cConfig構造体にて指定されたchからデータを受信します
* @param[in] my_i2c_v : 対象とするI2cConfig構造体へのポインタ
* @param[out] data_v : 受信データ格納先へのポインタ
* @param[in] buffer_size : 受信データ格納先のバッファサイズ、I2C通信による受信データ長よりも長い必要がある
* @retval 0: 受信データなし
* @retval 正: 受信データバイト数
* @retval 負: エラー. I2C_ERR_CODE に従う
* @note この関数内でI2C読み出し要求を送信しています
*/
int ;
/**
* @brief I2cConfig構造体にて指定されたchへデータを送信します
* @param[in] my_i2c_v : 対象とするI2cConfig構造体へのポインタ
* @param[in] data_v : 送信データ格納先へのポインタ
* @param[in] count : 送信データサイズ
* @return int: I2C_ERR_CODE に従う
*/
int ;
/**
* @brief 指定されたchを開きなおす
* @param[in] my_i2c_v 開きなおす際のポート設定
* @param[in] reason reopenする理由.0は正常操作を示す TODO: reasonのenumを作る?
* @return int: I2C_ERR_CODE に従う
*/
int ;
/**
* @brief stop_flagを設定する
* @param[in] stop_flag 設定するstop_flag
* @return なし
*/
void ;
/**
* @brief rx_lengthを設定する
* @param[in] rx_length 設定する受信データ長
* @return なし
*/
void ;