Modified messaging code after code review.
[processor-sdk/performance-audio-sr.git] / pasdk / test_dsp / framework / aspMsg_master.c
index 6a84fb9deeaed72dfb54013b97a4ffde5f730ea2..94744243842fef0d79ea8d988224abab2145c7ea 100644 (file)
@@ -175,18 +175,13 @@ Int AspMsgMaster_init(
 Int AspMsgSend(UInt32 sndCmd, UInt32 ackCmd, char *sndMsgBuf, char *ackMsgBuf)
 {
     ASP_Msg* pAspMsg;                   /* Messaging */
-    Int status, retVal;
-
-    // Init return vallue - no error in messaging operation, even though there
-    // may be error in returned (acknowledgement) message.
-    retVal = ASP_MSG_NO_ERR;
+    Int status;
 
     // allocate message
     pAspMsg = (ASP_Msg *)MessageQ_alloc(hAspMsgMaster->heapId, hAspMsgMaster->msgSize);
     if (pAspMsg == NULL) {
         TRACE_TERSE0("MessageQ_alloc() failure.");
-        SW_BREAKPOINT; // temporary
-        retVal = ASP_MSG_ERR_QUEUE_ALLOC;
+        return (ASP_MSG_ERR_QUEUE_ALLOC);
     }
 
     // set the return address in the message header and fill in message payload
@@ -196,24 +191,26 @@ Int AspMsgSend(UInt32 sndCmd, UInt32 ackCmd, char *sndMsgBuf, char *ackMsgBuf)
     pAspMsg->messageId = hAspMsgMaster->messageId & ~(1<<31);
     pAspMsg->expectResp = TRUE;
 
+    // copy the message provided by caller
     if(sndMsgBuf != NULL) {
-        memcpy(pAspMsg->buf, sndMsgBuf, ASP_MSG_BUF_LEN);
+        memcpy(pAspMsg->buf, sndMsgBuf, ASP_MSG_BUF_LEN*sizeof(char));
     }
 
     // send the message
     TRACE_TERSE3("ASP message: procId=%d, cmd=%d, messageId=0x%04x", pAspMsg->procId, pAspMsg->cmd, pAspMsg->messageId);
     status = MessageQ_put(hAspMsgMaster->slaveQue, (MessageQ_Msg)pAspMsg);
     if (status != MessageQ_S_SUCCESS) {
-        SW_BREAKPOINT;
-        retVal = ASP_MSG_ERR_QUEUE_PUT;
+        TRACE_TERSE0("MessageQ_put() failure.");
+        MessageQ_free((MessageQ_Msg)pAspMsg);
+        return (ASP_MSG_ERR_QUEUE_PUT);
     }
 
     // wait for complete message from slave
     status = MessageQ_get(hAspMsgMaster->masterQue, (MessageQ_Msg *)&pAspMsg, MessageQ_FOREVER);
     if (status != MessageQ_S_SUCCESS) {
         TRACE_TERSE0("MessageQ_get() failure.");
-        SW_BREAKPOINT; // temporary
-        retVal = ASP_MSG_ERR_QUEUE_GET;
+        MessageQ_free((MessageQ_Msg)pAspMsg);
+        return (ASP_MSG_ERR_QUEUE_GET);
     }
 
     // check if returned message is valid
@@ -221,24 +218,27 @@ Int AspMsgSend(UInt32 sndCmd, UInt32 ackCmd, char *sndMsgBuf, char *ackMsgBuf)
         (pAspMsg->cmd != ackCmd) ||
         (pAspMsg->messageId != (hAspMsgMaster->messageId | ((UInt32)1<<31)))) {
         TRACE_TERSE3("ERROR: ASP message: procId=%d, cmd=%d, messageId=0x%04x", pAspMsg->procId, pAspMsg->cmd, pAspMsg->messageId);
-        SW_BREAKPOINT;
-        retVal = ASP_MSG_ERR_ACKNOWLEDGE;
+        MessageQ_free((MessageQ_Msg)pAspMsg);
+        return(ASP_MSG_ERR_ACKNOWLEDGE);
     }
 
     hAspMsgMaster->messageId = (hAspMsgMaster->messageId + 1) & ~(1<<31);
     TRACE_TERSE3("ASP message: procId=%d, cmd=%d, messageId=0x%04x", pAspMsg->procId, pAspMsg->cmd, pAspMsg->messageId);
 
+    // get the returned message
     if(ackMsgBuf != NULL) {
-        memcpy(ackMsgBuf, pAspMsg->buf, ASP_MSG_BUF_LEN);
+        memcpy(ackMsgBuf, pAspMsg->buf, ASP_MSG_BUF_LEN*sizeof(char));
     }
 
-    /* free the message */
+    // free the message 
     status = MessageQ_free((MessageQ_Msg)pAspMsg);
     if (status != MessageQ_S_SUCCESS) {
-        SW_BREAKPOINT;
-        retVal = ASP_MSG_ERR_QUEUE_FREE;
+        TRACE_TERSE0("MessageQ_free() failure.");
+        return (ASP_MSG_ERR_QUEUE_FREE);
     }
 
-    return retVal;
+    // No error in messaging operation, even though there
+    // may be error in returned (acknowledgement) message.
+    return (ASP_MSG_NO_ERR);
 } /* AspMsgSend */