/************************************************************************/\r
\r
#define COMPILETIME_CHECK(cond) (void)sizeof(int[2 * !!(cond) - 1])\r
-#define RETURN_ASSERT(result) { assert(false); return result; }\r
+#define RETURN_ASSERT(result) { UcsXml_CB_OnError("Assertion in file=%s, line=%d", 2, __FILE__, __LINE__); return result; }\r
#define MISC_HB(value) ((uint8_t)((uint16_t)(value) >> 8))\r
#define MISC_LB(value) ((uint8_t)((uint16_t)(value) & (uint16_t)0xFF))\r
\r
\r
struct UcsXmlScript\r
{\r
+ bool inUse;\r
char scriptName[32];\r
Ucs_Rm_Node_t *node;\r
struct UcsXmlScript *next;\r
return val;\r
ERROR:\r
if (Parse_MemoryError == result)\r
- UcsXml_CB_OnError("XML error, aborting..", 0);\r
+ UcsXml_CB_OnError("XML memory error, aborting..", 0);\r
else\r
- UcsXml_CB_OnError("Allocation error, aborting..", 0);\r
+ UcsXml_CB_OnError("XML parsing error, aborting..", 0);\r
assert(false);\r
if (!tree)\r
mxmlDelete(tree);\r
/*Iterate all scripts. No scripts at all is allowed*/\r
if(GetElement(tree, SCRIPT, true, &sub, false))\r
{\r
+ bool found = true;\r
+ struct UcsXmlScript *scrlist = priv->pScrLst;\r
while(sub)\r
{\r
result = ParseScript(sub, priv);\r
if(!GetElement(sub, SCRIPT, false, &sub, false))\r
break;\r
}\r
+ /* Check if all scripts where referenced */\r
+ while(NULL != scrlist)\r
+ {\r
+ if (!scrlist->inUse)\r
+ {\r
+ UcsXml_CB_OnError("Script not defined:'%s', used by node=0x%X", 1, scrlist->scriptName, scrlist->node->signature_ptr->node_address);\r
+ found = false;\r
+ }\r
+ scrlist = scrlist->next;\r
+ }\r
+ if (!found)\r
+ RETURN_ASSERT(Parse_XmlError);\r
}\r
return result;\r
}\r
/*Connect in and out socket once they are created*/\r
if (priv->conData.inSocket && priv->conData.outSocket)\r
{\r
+ bool mostIsInput;\r
bool mostIsOutput;\r
Ucs_Rm_EndPoint_t *ep;\r
struct UcsXmlRoute *route;\r
ep = MCalloc(&priv->objList, 1, sizeof(Ucs_Rm_EndPoint_t));\r
if (NULL == ep) RETURN_ASSERT(Parse_MemoryError);\r
\r
+ mostIsInput = (UCS_XRM_RC_TYPE_MOST_SOCKET == *((Ucs_Xrm_ResourceType_t *)priv->conData.inSocket));\r
mostIsOutput = (UCS_XRM_RC_TYPE_MOST_SOCKET == *((Ucs_Xrm_ResourceType_t *)priv->conData.outSocket));\r
+ if (!mostIsInput && !mostIsOutput)\r
+ {\r
+ UcsXml_CB_OnError("At least one MOST socket required per connection", 0);\r
+ RETURN_ASSERT(Parse_XmlError);\r
+ }\r
ep->endpoint_type = mostIsOutput ? UCS_RM_EP_SOURCE : UCS_RM_EP_SINK;\r
ep->jobs_list_ptr = GetJobList(*jobList, &priv->objList);\r
if(NULL == ep->jobs_list_ptr) RETURN_ASSERT(Parse_MemoryError);\r
if (Parse_Success != result) return result;\r
} else {\r
UcsXml_CB_OnError("Unknown script action:'%s'", 1, txt);\r
- /*RETURN_ASSERT(Parse_XmlError);*/\r
+ RETURN_ASSERT(Parse_XmlError);\r
}\r
if (!GetElementArray(act, ALL_SCRIPTS, &txt, &act))\r
break;\r
Ucs_Rm_Node_t *node = scrlist->node;\r
node->script_list_ptr = script;\r
node->script_list_size = actCnt;\r
+ scrlist->inUse = true;\r
found = true;\r
}\r
scrlist = scrlist->next;\r
speed = 0;\r
else if (0 == strcmp(txt, I2C_SPEED_FAST))\r
speed = 1;\r
- else RETURN_ASSERT(Parse_XmlError);\r
+ else\r
+ {\r
+ UcsXml_CB_OnError("Invalid I2C speed:'%s'", 1, txt);\r
+ RETURN_ASSERT(Parse_XmlError);\r
+ }\r
req = scr->send_cmd;\r
res = scr->exp_result;\r
req->InstId = res->InstId = 1;\r
mode = 1;\r
else if (0 == strcmp(txt, I2C_WRITE_MODE_BURST))\r
mode = 2;\r
+ else\r
+ {\r
+ UcsXml_CB_OnError("Invalid I2C mode:'%s'", 1, txt);\r
+ RETURN_ASSERT(Parse_XmlError);\r
+ }\r
} else {\r
mode = 0;\r
}\r
}\r
sourceRoute = sourceRoute->next;\r
}\r
- assert(routeAmount == ucs->routesSize);\r
+ if (routeAmount != ucs->routesSize)\r
+ {\r
+ UcsXml_CB_OnError("At least one sink (num=%d) is not connected, because of wrong Route name!", 2, (routeAmount - ucs->routesSize));\r
+ RETURN_ASSERT(Parse_XmlError);\r
+ }\r
\r
#ifdef DEBUG\r
/* Third perform checks when running in debug mode*/\r
#include <stdlib.h>\r
#include <string.h>\r
#include <assert.h>\r
+#include "UcsXml.h"\r
#include "UcsXml_Private.h"\r
\r
static const char* USB_PHY_STANDARD = "Standard";\r
static const char* VAL_FALSE = "false";\r
*/\r
\r
-#define ASSERT_FALSE() { assert(false); return false; }\r
-#define CHECK_POINTER(PTR) if (NULL == PTR) { ASSERT_FALSE(); }\r
+#define ASSERT_FALSE(func, par) { UcsXml_CB_OnError("Parameter error in attribute=%s value=%s, file=%s, line=%d", 4, func, par, __FILE__, __LINE__); return false; }\r
+#define CHECK_POINTER(PTR) if (NULL == PTR) { ASSERT_FALSE(PTR, "NULL pointer"); }\r
\r
static int32_t Str2Int(const char *val)\r
{\r
soc->data_type = UCS_MOST_SCKT_DISC_FRAME_PHASE;\r
break;\r
default:\r
- ASSERT_FALSE();\r
+ ASSERT_FALSE("GetMostSocket->dataType", "");\r
}\r
return true;\r
}\r
port->physical_layer = UCS_USB_PHY_LAYER_STANDARD;\r
else if (0 == strcmp(USB_PHY_HSIC, param->physicalLayer))\r
port->physical_layer = UCS_USB_PHY_LAYER_HSCI;\r
- else ASSERT_FALSE();\r
+ else ASSERT_FALSE("GetUsbPort->physical_layer", param->physicalLayer);\r
return true;\r
}\r
\r
soc->data_type = UCS_USB_SCKT_IPC_PACKET;\r
break;\r
default:\r
- ASSERT_FALSE();\r
+ ASSERT_FALSE("GetUsbSocket->dataType", "");\r
}\r
soc->end_point_addr = (uint8_t)Str2Int(param->endpointAddress);\r
soc->frames_per_transfer = (uint16_t)Str2Int(param->framesPerTrans);\r
port->clock_config = UCS_MLB_CLK_CFG_6144_FS;\r
else if (0 == strcmp(param->clockConfig, CLOCK_8192FS))\r
port->clock_config = UCS_MLB_CLK_CFG_8192_FS;\r
- else ASSERT_FALSE();\r
+ else ASSERT_FALSE("GetMlbPort->clockConfig", param->clockConfig);\r
return true;\r
}\r
\r
soc->data_type = UCS_MLB_SCKT_IPC_PACKET;\r
break;\r
default:\r
- ASSERT_FALSE();\r
+ ASSERT_FALSE("GetMlbSocket->dataType", "");\r
}\r
soc->channel_address = (uint16_t)Str2Int(param->channelAddress);\r
soc->mlb_port_obj_ptr = param->mlbPort;\r
port->clock_config = UCS_STREAM_PORT_CLK_CFG_512FS;\r
else if (0 == strcmp(param->clockConfig, CLOCK_WILDCARD))\r
port->clock_config = UCS_STREAM_PORT_CLK_CFG_WILD;\r
- else ASSERT_FALSE();\r
+ else ASSERT_FALSE("GetStrmPort->clockConfig", param->clockConfig);\r
} else {\r
port->clock_config = UCS_STREAM_PORT_CLK_CFG_WILD;\r
}\r
port->data_alignment = UCS_STREAM_PORT_ALGN_RIGHT24BIT;\r
else if (0 == strcmp(param->dataAlignment, STRM_ALIGN_SEQUENTIAL))\r
port->data_alignment = UCS_STREAM_PORT_ALGN_SEQ;\r
- else ASSERT_FALSE();\r
+ else ASSERT_FALSE("GetStrmPort->dataAlignment", param->dataAlignment);\r
return true;\r
}\r
\r
soc->data_type = UCS_STREAM_PORT_SCKT_SYNC_DATA;\r
break;\r
default:\r
- ASSERT_FALSE();\r
+ ASSERT_FALSE("GetStrmSocket->dataType", "");\r
}\r
soc->bandwidth = param->bandwidth;\r
if (0 == strcmp(param->streamPin, I2S_PIN_SRXA0))\r
soc->stream_port_obj_ptr = param->streamPortB;\r
return true;\r
}\r
- else ASSERT_FALSE();\r
+ else ASSERT_FALSE("GetStrmSocket->streamPin", param->streamPin);\r
return true;\r
}\r
\r
con->mute_mode = UCS_SYNC_MUTE_MODE_NO_MUTING;\r
else if (0 == strcmp(param->muteMode, MUTE_SIGNAL))\r
con->mute_mode = UCS_SYNC_MUTE_MODE_MUTE_SIGNAL;\r
- else ASSERT_FALSE();\r
+ else ASSERT_FALSE("GetSyncCon->mute_mode", param->muteMode);\r
if (param->optional_offset)\r
con->offset = (uint16_t)Str2Int(param->optional_offset);\r
else\r
con->isoc_packet_size = UCS_ISOC_PCKT_SIZE_206;\r
break;\r
default:\r
- ASSERT_FALSE();\r
+ ASSERT_FALSE("GetAvpCon->isoc_packet_size", "");\r
}\r
} else {\r
con->isoc_packet_size = UCS_ISOC_PCKT_SIZE_188;\r