X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=ucs2-interface%2Fucs_lib_interf.c;h=9e7167de59e4ea22b3b681a6237cd11e5e291d8c;hb=8d6b081e847a2098b183683edb3fa097890790f5;hp=3eda07fb649bef8b77b92a85e693b8bcbeeb72bc;hpb=4d190f69cc90143c4de1b0d474cbf552fa165b78;p=apps%2Fagl-service-unicens.git diff --git a/ucs2-interface/ucs_lib_interf.c b/ucs2-interface/ucs_lib_interf.c index 3eda07f..9e7167d 100644 --- a/ucs2-interface/ucs_lib_interf.c +++ b/ucs2-interface/ucs_lib_interf.c @@ -222,8 +222,11 @@ void UCSI_Service(UCSI_Data_t *my) (e->val.I2CWrite.isBurst ? UCS_I2C_BURST_MODE : UCS_I2C_DEFAULT_MODE), e->val.I2CWrite.blockCount, e->val.I2CWrite.slaveAddr, e->val.I2CWrite.timeout, e->val.I2CWrite.dataLen, e->val.I2CWrite.data, OnUcsI2CWrite)) popEntry = false; - else - UCSI_CB_OnUserMessage(my->tag, true, "Ucs_Gpio_CreatePort failed", 0); + else { + UCSI_CB_OnUserMessage(my->tag, true, "Ucs_I2c_WritePort failed", 0); + assert(e->val.I2CWrite.result_fptr != NULL); + e->val.I2CWrite.result_fptr(NULL /*processing error*/, e->val.I2CWrite.request_ptr); + } break; default: assert(false); @@ -308,7 +311,8 @@ bool UCSI_SetRouteActive(UCSI_Data_t *my, uint16_t routeId, bool isActive) } bool UCSI_I2CWrite(UCSI_Data_t *my, uint16_t targetAddress, bool isBurst, uint8_t blockCount, - uint8_t slaveAddr, uint16_t timeout, uint8_t dataLen, uint8_t *pData) + uint8_t slaveAddr, uint16_t timeout, uint8_t dataLen, uint8_t *pData, + Ucsi_ResultCb_t result_fptr, void *request_ptr) { UnicensCmdEntry_t entry; assert(MAGIC == my->magic); @@ -321,6 +325,8 @@ bool UCSI_I2CWrite(UCSI_Data_t *my, uint16_t targetAddress, bool isBurst, uint8_ entry.val.I2CWrite.slaveAddr = slaveAddr; entry.val.I2CWrite.timeout = timeout; entry.val.I2CWrite.dataLen = dataLen; + entry.val.I2CWrite.result_fptr = result_fptr; + entry.val.I2CWrite.request_ptr = request_ptr; memcpy(entry.val.I2CWrite.data, pData, dataLen); return EnqueueCommand(my, &entry); } @@ -778,6 +784,8 @@ static void OnUcsMgrReport(Ucs_MgrReport_t code, uint16_t node_address, Ucs_Rm_N UCSI_CB_OnUserMessage(my->tag, true, "Node=%X: unknown code", 1, node_address); break; } + + UCSI_CB_OnMgrReport(my->tag, code, node_address, node_ptr); } static void OnUcsNsRun(Ucs_Rm_Node_t * node_ptr, Ucs_Ns_ResultCode_t result, void *ucs_user_ptr) @@ -823,6 +831,16 @@ static void OnUcsI2CWrite(uint16_t node_address, uint16_t i2c_port_handle, { UCSI_Data_t *my = (UCSI_Data_t *)user_ptr; assert(MAGIC == my->magic); + + if ((my->currentCmd->cmd == UnicensCmd_I2CWrite) + && (my->currentCmd->val.I2CWrite.result_fptr)) { + + my->currentCmd->val.I2CWrite.result_fptr(&result.code, my->currentCmd->val.I2CWrite.request_ptr); + } + else { + assert(false); + } + OnCommandExecuted(my, UnicensCmd_I2CWrite); if (UCS_I2C_RES_SUCCESS != result.code) UCSI_CB_OnUserMessage(my->tag, true, "Remote I2C Write to node=0x%X failed", 1, node_address);