1: int32_t AG903_I2CMgrMasterWrite(
AG903_I2CMgrHandle* handle,
AG903_I2CMgrWriteParam* param)
2: {
3: AG903_I2CMgrQue que;
4: int32_t retval =
AG903_ENONE;
5: int32_t result;
6: uint32_t hdlnum;
7: uint8_t ch;
8:
9: result = I2CMgr_CheckHandle(handle, &ch, &hdlnum);
10:
if(
AG903_ENONE != result) {
11:
return -
AG903_EINVAL;
12: }
13:
if(NULL == param) {
14:
return -
AG903_EINVAL;
15: }
16:
if( (NULL == param->buf) ||
17: (0 == param->size) ) {
18:
return -
AG903_EINVAL;
19: }
20:
if(0xFF00 & param->addr) {
21:
if( (
AG903_I2C_10BITADDR_SIG != (param->addr>>11)) ||
22: (0x0100 & param->addr) ) {
23:
return -
AG903_EINVAL;
24: }
25: }
26:
else {
27:
if(0x0001 & param->addr) {
28:
return -
AG903_EINVAL;
29: }
30: }
31:
32: que.proc = AG903_I2C_PROC_MASTER_WRITE;
33: que.hdlnum = hdlnum;
34: que.arg.wr = (*param);
35: retval = I2CMgr_SetQue(ch, &que);
36:
if(
AG903_ENONE == retval) {
37: I2cHandleStat[ch][hdlnum].stat = AG903_I2C_HANDLE_QUEUING;
38: I2CMgr_MainProcess(ch);
39: }
40:
41:
return retval;
42: }