AG903ライブラリリファレンス
内容インデックスホーム
前へ上へ次へ
AG903_I2CMgrGetHandle 関数

I2Cハンドル取得

Syntax
C++
int32_t AG903_I2CMgrGetHandle(uint8_t ch, AG903_I2CMgrHandle** handle);
引数 
説明 
uint8_t ch 
[in] I2Cチャネル番号(0~1) 
AG903_I2CMgrHandle** handle 
[out] 該当のI2Cハンドル 

ハンドル取得結果

返値の詳細 
説明 
正常終了 
-AG903_EINVAL 
引数異常 
-AG903_EBUSY 
ハンドル使用中(空き不足) 

指定したCHのハンドルを取得します。

CH毎のハンドル数と処理のキューイング数は以下で定義します。 

AG903_I2C_HANDLE_NUM , AG903_I2C_QUENUM 

AG903_I2C_HANDLE_NUM<= AG903_I2C_QUENUMとして、ハンドル数に対して十分なキュー数を設定して下さい。

1: int32_t AG903_I2CMgrGetHandle(uint8_t ch, AG903_I2CMgrHandle** handle) 2: { 3: int32_t retval = AG903_ENONE; 4: uint32_t loop; 5: 6: if( (AG903_I2C_CH_NUM <= ch) || 7: (NULL == handle) ) { 8: return -AG903_EINVAL; 9: } 10: 11: for(loop=0; loop<AG903_I2C_HANDLE_NUM; loop++) { 12: if(false == I2cHandleStat[ch][loop].lock) { 13: I2cHandleStat[ch][loop].lock = true; 14: break; 15: } 16: } 17: if(AG903_I2C_HANDLE_NUM <= loop) { 18: return -AG903_EBUSY; 19: } 20: 21: I2cHandleStat[ch][loop].stat = AG903_I2C_HANDLE_IDLE; 22: I2cHandleStat[ch][loop].clbk = NULL; 23: 24: (*handle) = (AG903_I2CMgrHandle*)&I2cHandleStat[ch][loop]; 25: 26: return retval; 27: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.