+ if (NULL == my->unicens) return;
+ Ucs_ReportTimeout(my->unicens);
+}
+
+bool UCSI_SendAmsMessage(UCSI_Data_t *my, uint16_t msgId, uint16_t targetAddress, uint8_t *pPayload, uint32_t payloadLen)
+{
+ Ucs_AmsTx_Msg_t *msg;
+ Ucs_Return_t result;
+ assert(MAGIC == my->magic);
+ if (NULL == my->unicens) return false;
+ msg = Ucs_AmsTx_AllocMsg(my->unicens, payloadLen);
+ if (NULL == msg) return false;
+ if (0 != payloadLen)
+ {
+ assert(NULL != msg->data_ptr);
+ memcpy(msg->data_ptr, pPayload, payloadLen);
+ }
+ msg->custom_info_ptr = NULL;
+ msg->data_size = payloadLen;
+ msg->destination_address = targetAddress;
+ msg->llrbc = 10;
+ msg->msg_id = msgId;
+ result = Ucs_AmsTx_SendMsg(my->unicens, msg, NULL);
+ if (UCS_RET_SUCCESS != result)
+ Ucs_AmsTx_FreeUnusedMsg(my->unicens, msg);
+ return UCS_RET_SUCCESS == result;
+}
+
+bool UCSI_GetAmsMessage(UCSI_Data_t *my, uint16_t *pMsgId, uint16_t *pSourceAddress, uint8_t **pPayload, uint32_t *pPayloadLen)
+{
+ Ucs_AmsRx_Msg_t *msg;
+ assert(MAGIC == my->magic);
+ if (NULL == my->unicens || NULL == pPayload || NULL == pPayloadLen) return false;
+ msg = Ucs_AmsRx_PeekMsg(my->unicens);
+ if (NULL == msg) return false;
+ *pMsgId = msg->msg_id;
+ *pSourceAddress = msg->source_address;
+ *pPayload = msg->data_ptr;
+ *pPayloadLen = msg->data_size;
+ return true;
+}
+
+void UCSI_ReleaseAmsMessage(UCSI_Data_t *my)
+{
+ assert(MAGIC == my->magic);
+ if (NULL == my->unicens) return;
+ Ucs_AmsRx_ReleaseMsg(my->unicens);
+}
+
+bool UCSI_SetRouteActive(UCSI_Data_t *my, uint16_t routeId, bool isActive)
+{
+ uint16_t i;
+ UnicensCmdEntry_t entry;
+ assert(MAGIC == my->magic);
+ if (NULL == my || NULL == my->uniInitData.mgr.routes_list_ptr) return false;
+ for (i = 0; i < my->uniInitData.mgr.routes_list_size; i++)
+ {
+ Ucs_Rm_Route_t *route = &my->uniInitData.mgr.routes_list_ptr[i];
+ if (route->route_id != routeId)
+ continue;
+ entry.cmd = UnicensCmd_RmSetRoute;
+ entry.val.RmSetRoute.routePtr = route;
+ entry.val.RmSetRoute.isActive = isActive;
+ return EnqueueCommand(my, &entry);
+ }
+ return false;