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: }