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

コマンドバッファ設定

Syntax
C++
int32_t AG903_OSPMgrSetCommandBuf(AG903_OSPMgrHandle * handle, AG903_OSPCmdBuf * param, bool init);
引数 
説明 
AG903_OSPMgrHandle * handle 
[in] OSPハンドル 
AG903_OSPCmdBuf * param 
[in] コマンドバッファパラメータ 
bool init 
[in] コマンドバッファ初期化指定(true:初期化) 

エラーコード

返値の詳細 
説明 
正常終了 
-AG903_EINVAL 
パラメータ異常 

コマンドバッファを登録します.

コマンド必要数に応じたコマンドバッファをアプリケーションで確保して下さい. 

このコマンドバッファはハンドルを開放するまで確保し続けて下さい. また直接アクセスしないで下さい. 

コマンドバッファはコマンドのためのサイズ(1コマンド32バイト)+32バイト以上確保して下さい. 

paramのsizeは4バイトを1単位として指定して下さい.

1: int32_t AG903_OSPMgrSetCommandBuf(AG903_OSPMgrHandle *handle, AG903_OSPCmdBuf *param, bool init) 2: { 3: int32_t rc = AG903_ENONE; 4: uint8_t ch; 5: OSPCmdDesc *desc; 6: 7: if(NULL == handle || NULL == param) { 8: rc = -AG903_EINVAL; 9: } 10: 11: rc = OSPMgrCheckHandle(handle, &ch); 12: 13: if (rc == AG903_ENONE) { 14: if ((AG903_OSP_BUFMODE_NUM <= param->mode) || (NULL == param->addr) || (0 == param->size)) { 15: 16: rc = -AG903_EINVAL; 17: } 18: } 19: 20: if (rc == AG903_ENONE) { 21: 37: OspChStat[ch].cmdbuf = (void*)param->addr; 38: desc = (OSPCmdDesc*)param->addr; 39: desc->Buf = param->addr + sizeof(OSPCmdDesc) / sizeof(uint32_t); 40: desc->BufLen = (param->size - sizeof(OSPCmdDesc)) / sizeof(uint32_t); 41: desc->CurLen = 0; 42: desc->WrBuf = desc->Buf; 43: desc->RdBuf = desc->Buf; 44: desc->BuffMode = param->mode; 45: if(true == init) { 46: AG903_OSPMgrClearCommand(handle); 47: } 48: } 49: 50: return rc; 51: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.