(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);
}
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);
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);
}
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)
{
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);