IX_STATUS ixNpeMhSendMessageSend ( IxNpeMhNpeId npeId, IxNpeMhMessage message, UINT32 maxSendRetries) { IX_STATUS status; IX_NPEMH_TRACE0 (IX_NPEMH_FN_ENTRY_EXIT, "Entering " "ixNpeMhSendMessageSend\n"); /* update statistical info */ ixNpeMhSendStats[npeId].sends++; /* check if the NPE's inFIFO is full - if so return an error */ if (ixNpeMhSendInFifoIsFull (npeId, maxSendRetries)) { IX_NPEMH_TRACE0 (IX_NPEMH_WARNING, "NPE's inFIFO is full\n"); return IX_FAIL; } /* write the message to the NPE's inFIFO */ status = ixNpeMhConfigInFifoWrite (npeId, message); IX_NPEMH_TRACE0 (IX_NPEMH_FN_ENTRY_EXIT, "Exiting " "ixNpeMhSendMessageSend\n"); return status; }
IX_STATUS ixNpeMhSendMessageWithResponseSend ( IxNpeMhNpeId npeId, IxNpeMhMessage message, IxNpeMhMessageId solicitedMessageId, IxNpeMhCallback solicitedCallback, UINT32 maxSendRetries) { IX_STATUS status = IX_SUCCESS; IX_NPEMH_TRACE0 (IX_NPEMH_FN_ENTRY_EXIT, "Entering " "ixNpeMhSendMessageWithResponseSend\n"); /* update statistical info */ ixNpeMhSendStats[npeId].sendWithResponses++; /* sr: this sleep will call the receive routine (no interrupts used!!!) */ ixOsalSleep (IX_NPEMH_INFIFO_RETRY_DELAY_US); /* check if the NPE's inFIFO is full - if so return an error */ if (ixNpeMhSendInFifoIsFull (npeId, maxSendRetries)) { IX_NPEMH_TRACE0 (IX_NPEMH_WARNING, "NPE's inFIFO is full\n"); return IX_FAIL; } /* save the solicited callback */ status = ixNpeMhSolicitedCbMgrCallbackSave ( npeId, solicitedMessageId, solicitedCallback); if (status != IX_SUCCESS) { IX_NPEMH_ERROR_REPORT ("Failed to save solicited callback\n"); /* update statistical info */ ixNpeMhSendStats[npeId].callbackFulls++; return status; } /* write the message to the NPE's inFIFO */ status = ixNpeMhConfigInFifoWrite (npeId, message); IX_NPEMH_TRACE0 (IX_NPEMH_FN_ENTRY_EXIT, "Exiting " "ixNpeMhSendMessageWithResponseSend\n"); return status; }