Esempio n. 1
0
/******************************************************************************
** Function: ProcessCommands
**
*/
static void ProcessCommands(void)
{

   int32           Status;
   CFE_SB_Msg_t*   CmdMsgPtr;
   CFE_SB_MsgId_t  MsgId;

   Status = CFE_SB_RcvMsg(&CmdMsgPtr, LabTlm.CmdPipe, CFE_SB_POLL);

   if (Status == CFE_SUCCESS)
   {

      MsgId = CFE_SB_GetMsgId(CmdMsgPtr);

      switch (MsgId)
      {
         case LABTLM_CMD_MID:
            CMDMGR_DispatchFunc(CmdMsgPtr);
            break;

         case LABTLM_SEND_HK_MID:
            LABTLM_SendHousekeepingPkt();
            break;

         default:
            CFE_EVS_SendEvent(LABTLM_INVALID_MID_ERR_EID, CFE_EVS_ERROR,
                              "Received invalid command packet,MID = 0x%4X",MsgId);

            break;

      } /* End Msgid switch */

   } /* End if SB received a packet */

} /* End ProcessCommands() */
Esempio n. 2
0
/* * * * * * * * * * * * * * * * * * * * * * * *  * * * * * * *  * *  * * * * * *  * * * */
void CI_ProcessCommandPacket(void)
{

    CFE_SB_MsgId_t  MsgId;

    MsgId = CFE_SB_GetMsgId(CIMsgPtr);

    switch (MsgId)
    {
        case CI_CMD_MID:
            CI_ProcessGroundCommand();
            break;

        case CI_SEND_HK_MID:
            CI_ReportHousekeeping();
            break;

        default:
            CI_HkTelemetryPkt.ci_command_error_count++;
            CFE_EVS_SendEvent(CI_COMMAND_ERR_EID,CFE_EVS_ERROR,"CI: invalid command packet,MID = 0x%x",
                              MsgId);
            break;
    }

    return;

} /* End CI_ProcessCommandPacket */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void TO_process_commands(void)
{
    CFE_SB_Msg_t    *MsgPtr;
    CFE_SB_MsgId_t  MsgId;

    while(1)
    {
       switch (CFE_SB_RcvMsg(&MsgPtr, TO_Cmd_pipe, CFE_SB_POLL))
       {
          case CFE_SUCCESS:

               MsgId = CFE_SB_GetMsgId(MsgPtr);
               /* For SB return statuses that imply a message: process it. */
               switch (MsgId)
               {
                  case TO_LAB_CMD_MID:
                       TO_exec_local_command(MsgPtr);
                       break;

                  case TO_LAB_SEND_HK_MID:
                       TO_output_status();
                       break;

                  default:
                       CFE_EVS_SendEvent(TO_MSGID_ERR_EID,CFE_EVS_ERROR, "L%d TO: Invalid Msg ID Rcvd 0x%x",__LINE__,MsgId);
                       break;
               }
               break;
            default:
               /* Exit command processing loop if no message received. */
               return;
       }
    }
} /* End of TO_process_commands() */
Esempio n. 4
0
void TO_ProcessCmdMsg(void)
{
    CFE_SB_Msg_t    *MsgPtr;
    CFE_SB_MsgId_t  MsgId;

    while(1)    /* While loop to execute until all commands received */
    {
       /* Check for message on cmd pipe and process */
       switch (CFE_SB_RcvMsg(&MsgPtr, TO_AppData.CmdPipe, CFE_SB_POLL))
       {
          case CFE_SUCCESS:

               MsgId = CFE_SB_GetMsgId(MsgPtr);

               switch (MsgId)
               {
                  case TO_CMD_MID:
                	   /* Call Command Exec Function */
                       TO_CmdExec(MsgPtr);
                       break;

                  default:
                       CFE_EVS_SendEvent(TO_MSGID_ERR_EID,CFE_EVS_ERROR,
                    		         "TO: Cmd Pipe Invalid Msg ID Rcvd 0x%x",
                    		         MsgId);
                       break;
               }
               break;
            default:
               /* Exit command processing loop if no message received. */
               return;
       }
    }
}
Esempio n. 5
0
void TO_ProcessSchMsg(void)
{
	CFE_SB_MsgId_t  MsgId;

	MsgId = CFE_SB_GetMsgId(TO_AppData.MsgPtr);
    switch (MsgId)
    {
    	case TO_SEND_TLM_MID:
    	{
    		/* Ouput Telemetry */
    		TO_SendTlm_t *msg = (TO_SendTlm_t *)TO_AppData.MsgPtr;
            TO_ForwardTelemetry(msg->PrioMask);
            break;
    	}

        case TO_SEND_HK_MID:
    	{
             TO_OutputStatus();

             break;
    	}

        default:
    	{
             CFE_EVS_SendEvent(TO_MSGID_ERR_EID,CFE_EVS_ERROR,
            		           "TO: Sch Pipe Invalid Msg ID Rcvd 0x%x",MsgId);
             break;
    	}
    }
}
Esempio n. 6
0
/* * * * * * * * * * * * * * * * * * * * * * * *  * * * * * * *  * *  * * * * */
void $APPLICATION_NAME$_ProcessCommandPacket(void)
{
    CFE_SB_MsgId_t  MsgId;

    MsgId = CFE_SB_GetMsgId($APPLICATION_NAME$_MsgPtr);

    switch (MsgId)
    {
        case $APPLICATION_NAME$_APP_CMD_MID:
            $APPLICATION_NAME$_ProcessGroundCommand();
            break;

        case $APPLICATION_NAME$_APP_SEND_HK_MID:
            $APPLICATION_NAME$_ReportHousekeeping();
            break;

        default:
            $APPLICATION_NAME$_HkTelemetryPkt.$application_name$_command_error_count++;
            CFE_EVS_SendEvent($APPLICATION_NAME$_COMMAND_ERR_EID,CFE_EVS_ERROR,
			"$Application Name$: invalid command packet,MID = 0x%x", MsgId);
            break;
    }

    return;

} /* End $APPLICATION_NAME$_ProcessCommandPacket */
Esempio n. 7
0
void TT_AppPipe(CFE_SB_MsgPtr_t msg)
{
    CFE_SB_MsgId_t MessageID;
    uint16 CommandCode;

    MessageID = CFE_SB_GetMsgId(msg);
    switch (MessageID)
    {
        /*
        ** Housekeeping telemetry request...
        */
        case CFE_TT_SEND_HK_MID:
            TT_HousekeepingCmd(msg);
            break;

        /*
        ** TT ground commands...
        */
        case CFE_TT_CMD_MID:

            CommandCode = CFE_SB_GetCmdCode(msg);
            switch (CommandCode)
            {
                case TT_NOOP_CC:
                    TT_NoopCmd(msg);
                    break;

                case TT_RESET_CC:
                    TT_ResetCmd(msg);
                    break;

                default:
                    CFE_EVS_SendEvent(TT_CC1_ERR_EID, CFE_EVS_ERROR,
                     "Invalid ground command code: ID = 0x%X, CC = %d",
                                      MessageID, CommandCode);
                    break;
            }
            break;

        default:

            CFE_EVS_SendEvent(TT_MID_ERR_EID, CFE_EVS_ERROR,
                             "Invalid command pipe message ID: 0x%X",
                              MessageID);
            break;
    }

    return;

} /* End of TT_AppPipe() */
Esempio n. 8
0
boolean THRSIM_VerifyCmdLength(CFE_SB_MsgPtr_t Msg, uint16 ExpectedLength) {
    boolean result = TRUE;
    uint16  ActualLength = CFE_SB_GetTotalMsgLength(Msg);

    if (ExpectedLength != ActualLength) {
        CFE_SB_MsgId_t MessageId = CFE_SB_GetMsgId(Msg);
        uint16 CommandCode = CFE_SB_GetCmdCode(Msg);

        CFE_EVS_SendEvent(THRSIM_MSGLEN_ERR_EID, CFE_EVS_ERROR, "Invalid cmd length: MID = 0x%04X, CC = %02u, Exp Len = %u, Len = %u", MessageId, CommandCode, ExpectedLength, ActualLength);
        result = FALSE;
        THRSIM_AppData.HkPacket.error_count++;
    }
    return result;
}
Esempio n. 9
0
boolean Ut_CFE_SB_PacketSent(uint16 MessageID)
{
    UtListNode_t        *CurrentNode;
    CFE_SB_Msg_t        *MessagePtr;

    CurrentNode = UtList_First(&MsgQueue);
    while (CurrentNode) {
        MessagePtr = CurrentNode->Data;
        if (MessageID == CFE_SB_GetMsgId(MessagePtr)) {
            return(TRUE);
        }
        CurrentNode = CurrentNode->Next;
    }
    return(FALSE);
}
Esempio n. 10
0
uint32 Ut_CFE_SB_GetMsgCount(uint16 MessageID)
{
    UtListNode_t        *CurrentNode;
    CFE_SB_Msg_t        *MessagePtr;
    uint32               MessageCount = 0;

    CurrentNode = UtList_First(&MsgQueue);
    while (CurrentNode) {
        MessagePtr = CurrentNode->Data;
        if (MessageID == CFE_SB_GetMsgId(MessagePtr)) {
            MessageCount++;
        }
        CurrentNode = CurrentNode->Next;
    }
    return(MessageCount);
}
Esempio n. 11
0
void THRSIM_AppPipe(void) {
    CFE_SB_MsgId_t MsgId = CFE_SB_GetMsgId(THRSIM_AppData.MsgPtr);

    switch (MsgId) {
        case THRSIM_CMD_MID:
            THRSIM_ProcessGroundCommand();
            break;
        case THRSIM_SEND_HK_MID:
            THRSIM_ReportHousekeeping();
            break;
        case THRSIM_TICK_MID:
            THRSIM_GetValveStates();
            break;
        default:
            CFE_EVS_SendEvent(THRSIM_MSGID_ERR_EID, CFE_EVS_ERROR, "Received invalid MsgId 0x%04X", MsgId);
            THRSIM_AppData.HkPacket.error_count++;
            break;
    }
}
Esempio n. 12
0
void *Ut_CFE_SB_FindPacket(uint16 MessageID, uint32 MessageNumber)
{
    UtListNode_t        *CurrentNode;
    CFE_SB_Msg_t        *MessagePtr;
    uint32               MessageCount = 0;

    CurrentNode = UtList_First(&MsgQueue);
    while (CurrentNode) {
        MessagePtr = CurrentNode->Data;
        if (MessageID == CFE_SB_GetMsgId(MessagePtr)) {
            MessageCount++;
            if (MessageCount == MessageNumber) {
                return(CurrentNode->Data);
            }
        }
        CurrentNode = CurrentNode->Next;
    }
    return(NULL);
}
Esempio n. 13
0
void SIMCI_AppPipe(void) {
    CFE_SB_MsgId_t  MsgId;
    MsgId = CFE_SB_GetMsgId(SIMCI_AppData.MsgPtr);

    switch (MsgId)
    {
        case SIMCI_CMD_MID:
            SIMCI_ProcessGroundCommand();
            break;

        case SIMCI_SEND_HK_MID:
            SIMCI_ReportHousekeeping();
            break;

        default:
            SIMCI_AppData.HkPacket.error_count++;
            CFE_EVS_SendEvent(SIMCI_MSGID_ERR_EID, CFE_EVS_ERROR, "SIMCI: received invalid MID=0x%08X", MsgId);
            break;
    }
}
Esempio n. 14
0
boolean TT_VerifyCmdLength(CFE_SB_MsgPtr_t msg, uint16 ExpectedLength)
{
    boolean result = TRUE;
    uint16 ActualLength = CFE_SB_GetTotalMsgLength(msg);

    /*
    ** Verify the command packet length...
    */
    if (ExpectedLength != ActualLength)
    {
        CFE_SB_MsgId_t MessageID = CFE_SB_GetMsgId(msg);
        uint16 CommandCode = CFE_SB_GetCmdCode(msg);

        CFE_EVS_SendEvent(TT_LEN_ERR_EID, CFE_EVS_ERROR,
           "TT: Invalid cmd pkt: ID = 0x%X,  CC = %d, Len = %d",
                          MessageID, CommandCode, ActualLength);
        result = FALSE;
        TT4_AppData.ErrCount++;
    }

    return(result);

} /* End of TT_VerifyCmdLength() */
Esempio n. 15
0
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/
boolean $APPLICATION_NAME$_VerifyCmdLength(CFE_SB_MsgPtr_t msg, uint16 ExpectedLength)
{     
    boolean result = TRUE;

    uint16 ActualLength = CFE_SB_GetTotalMsgLength(msg);

    /*
    ** Verify the command packet length.
    */
    if (ExpectedLength != ActualLength)
    {
        CFE_SB_MsgId_t MessageID   = CFE_SB_GetMsgId(msg);
        uint16         CommandCode = CFE_SB_GetCmdCode(msg);

        CFE_EVS_SendEvent($APPLICATION_NAME$_LEN_ERR_EID, CFE_EVS_ERROR,
           "Invalid msg length: ID = 0x%X,  CC = %d, Len = %d, Expected = %d",
              MessageID, CommandCode, ActualLength, ExpectedLength);
        result = FALSE;
        $APPLICATION_NAME$_HkTelemetryPkt.$application_name$_command_error_count++;
    }

    return(result);

} /* End of $APPLICATION_NAME$_VerifyCmdLength() */
Esempio n. 16
0
int32 SCH_AppPipe(CFE_SB_MsgPtr_t MessagePtr)
{
    int32           Result = CFE_SUCCESS;
    CFE_SB_MsgId_t  MessageID = 0;
    uint16          CommandCode = 0;

    MessageID = CFE_SB_GetMsgId(MessagePtr);
    switch (MessageID)
    {
        /*
        ** Housekeeping telemetry request
        */
        case SCH_SEND_HK_MID:
            Result = SCH_HousekeepingCmd(MessagePtr);
            break;

        /*
        ** SCH ground commands
        */
        case SCH_CMD_MID:

            CommandCode = CFE_SB_GetCmdCode(MessagePtr);
            switch (CommandCode)
            {
                case SCH_NOOP_CC:
                    SCH_NoopCmd(MessagePtr);
                    break;

                case SCH_RESET_CC:
                    SCH_ResetCmd(MessagePtr);
                    break;

                case SCH_ENABLE_CC:
                    SCH_EnableCmd(MessagePtr);
                    break;

                case SCH_DISABLE_CC:
                    SCH_DisableCmd(MessagePtr);
                    break;

                case SCH_ENABLE_GROUP_CC:
                    SCH_EnableGroupCmd(MessagePtr);
                    break;

                case SCH_DISABLE_GROUP_CC:
                    SCH_DisableGroupCmd(MessagePtr);
                    break;

                case SCH_ENABLE_SYNC_CC:
                    SCH_EnableSyncCmd(MessagePtr);
                    break;

                case SCH_SEND_DIAG_TLM_CC:
                    SCH_SendDiagTlmCmd(MessagePtr);
                    break;

                /*
                ** SCH ground commands with unknown command codes...
                */
                default:
                    CFE_EVS_SendEvent(SCH_CC_ERR_EID, CFE_EVS_ERROR,
                                      "Invalid command code: ID = 0x%04X, CC = %d",
                                      MessageID, CommandCode);

                    SCH_AppData.ErrCounter++;
                    break;
            }
            break;

        /*
        ** Unknown message ID's
        */
        default:
            CFE_EVS_SendEvent(SCH_MD_ERR_EID, CFE_EVS_ERROR,
                              "Msg with Invalid message ID Rcvd -- ID = 0x%04X",
                              MessageID);
            break;
    }

    return(Result);

} /* End of SCH_AppPipe() */
void CFE_TIME_TaskPipe(CFE_SB_MsgPtr_t MessagePtr)
{
    CFE_SB_MsgId_t MessageID;
    uint16 CommandCode;

    MessageID = CFE_SB_GetMsgId(MessagePtr);
    switch (MessageID)
    {
        /*
        ** Housekeeping telemetry request...
        */
        case CFE_TIME_SEND_HK_MID:
            CFE_TIME_HousekeepingCmd();
            break;

        /*
        ** Time at the tone "signal"...
        */
        case CFE_TIME_TONE_CMD_MID:
            CFE_TIME_ToneSignalCmd();
            break;

        /*
        ** Time at the tone "data"...
        */
        case CFE_TIME_DATA_CMD_MID:
            CFE_TIME_ToneDataCmd(MessagePtr);
            break;

        /*
        ** Simulate time at the tone "signal"...
        */
        #if (CFE_TIME_CFG_FAKE_TONE == TRUE)
        case CFE_TIME_FAKE_CMD_MID:
            CFE_TIME_FakeToneCmd();
            break;
        #endif

        /*
        ** Request for time at the tone "data"...
        */
        #if (CFE_TIME_CFG_SERVER == TRUE)
          #if (CFE_TIME_CFG_SOURCE != TRUE)
            #if (CFE_TIME_CFG_FAKE_TONE != TRUE)
        case CFE_TIME_SEND_CMD_MID:
            CFE_TIME_ToneSendCmd();
            break;
            #endif
          #endif
        #endif

        /*
        ** Time task ground commands...
        */
        case CFE_TIME_CMD_MID:

            CommandCode = CFE_SB_GetCmdCode(MessagePtr);
            switch (CommandCode)
            {
                case CFE_TIME_NOOP_CC:
                    CFE_TIME_NoopCmd();
                    break;

                case CFE_TIME_RESET_CC:
                    CFE_TIME_ResetCmd();
                    break;

                case CFE_TIME_DIAG_TLM_CC:
                    CFE_TIME_DiagCmd();
                    break;

                case CFE_TIME_SET_STATE_CC:
                    CFE_TIME_SetStateCmd(MessagePtr);
                    break;

                case CFE_TIME_SET_SOURCE_CC:
                    CFE_TIME_SetSourceCmd(MessagePtr);
                    break;

                case CFE_TIME_SET_SIGNAL_CC:
                    CFE_TIME_SetSignalCmd(MessagePtr);
                    break;

                /*
                ** Time Clients process "tone delay" commands...
                */
                case CFE_TIME_ADD_DELAY_CC:
                    CFE_TIME_SetDelayCmd(MessagePtr, (int16) CFE_TIME_ADD_ADJUST);
                    break;

                case CFE_TIME_SUB_DELAY_CC:
                    CFE_TIME_SetDelayCmd(MessagePtr, (int16) CFE_TIME_SUB_ADJUST);
                    break;

                /*
                ** Time Servers process "set time" commands...
                */
                case CFE_TIME_SET_TIME_CC:
                    CFE_TIME_SetTimeCmd(MessagePtr);
                    break;

                case CFE_TIME_SET_MET_CC:
                    CFE_TIME_SetMETCmd(MessagePtr);
                    break;

                case CFE_TIME_SET_STCF_CC:
                    CFE_TIME_SetSTCFCmd(MessagePtr);
                    break;

                case CFE_TIME_SET_LEAPS_CC:
                    CFE_TIME_SetLeapsCmd(MessagePtr);
                    break;

                case CFE_TIME_ADD_ADJUST_CC:
                    CFE_TIME_AdjustCmd(MessagePtr, (int16) CFE_TIME_ADD_ADJUST);
                    break;

                case CFE_TIME_SUB_ADJUST_CC:
                    CFE_TIME_AdjustCmd(MessagePtr,  (int16) CFE_TIME_SUB_ADJUST);
                    break;

                case CFE_TIME_ADD_1HZADJ_CC:
                    CFE_TIME_1HzAdjCmd(MessagePtr, (int16) CFE_TIME_ADD_ADJUST);
                    break;

                case CFE_TIME_SUB_1HZADJ_CC:
                    CFE_TIME_1HzAdjCmd(MessagePtr, (int16) CFE_TIME_SUB_ADJUST);
                    break;

                default:

                    CFE_TIME_TaskData.ErrCounter++;
                    CFE_EVS_SendEvent(CFE_TIME_CC_ERR_EID, CFE_EVS_ERROR,
                             "Invalid command code -- ID = 0x%X, CC = %d",
                                      MessageID, CommandCode);
                    break;
            } /* switch (CFE_TIME_CMD_MID -- command code)*/
            break;

        default:

            /*
            ** Note: we only increment the command error counter when
            **    processing CFE_TIME_CMD_MID commands...
            */
            CFE_EVS_SendEvent(CFE_TIME_ID_ERR_EID, CFE_EVS_ERROR,
                             "Invalid message ID -- ID = 0x%X",
                              MessageID);
            break;

    } /* switch (message ID) */

    return;

} /* End of CFE_TIME_TaskPipe() */
Esempio n. 18
0
void CFE_TBL_TaskPipe(CFE_SB_Msg_t *MessagePtr)
{
    CFE_SB_MsgId_t       MessageID = CFE_SB_GetMsgId(MessagePtr);
    uint16               CommandCode = CFE_SB_GetCmdCode(MessagePtr);
    int16                CmdIndx;
    uint32               ActualLength;
    CFE_TBL_CmdProcRet_t CmdStatus = CFE_TBL_INC_ERR_CTR; /* Assume a failed command */

    /* Search the Command Handler Table for a matching message */
    CmdIndx = CFE_TBL_SearchCmdHndlrTbl(MessageID, CommandCode);

    /* Check to see if a matching command was found */
    if (CmdIndx >= 0)
    {
        /* Verify Message Length before processing */
        ActualLength = CFE_SB_GetTotalMsgLength(MessagePtr);
        if (ActualLength == CFE_TBL_CmdHandlerTbl[CmdIndx].ExpectedLength)
        {
            /* All checks have passed, call the appropriate message handler */
            CmdStatus = (CFE_TBL_CmdHandlerTbl[CmdIndx].MsgProcFuncPtr)(MessagePtr);
        }
        else /* Bad Message Length */
        {
            CFE_EVS_SendEvent( CFE_TBL_LEN_ERR_EID, CFE_EVS_ERROR,
                               "Invalid msg length -- ID = 0x%04X, CC = %d, Len = %d (!= %d)",
                               MessageID, CommandCode, ActualLength,
                               CFE_TBL_CmdHandlerTbl[CmdIndx].ExpectedLength );
        }

        /* Only update command counters when message has a command code */
        if (CFE_TBL_CmdHandlerTbl[CmdIndx].MsgTypes == CFE_TBL_CMD_MSGTYPE)
        {
            if (CmdStatus == CFE_TBL_INC_CMD_CTR)
            {
                CFE_TBL_TaskData.CmdCounter++;
            }
            else if (CmdStatus == CFE_TBL_INC_ERR_CTR)
            {
                CFE_TBL_TaskData.ErrCounter++;
            }
        }
    }
    else
    {
        /* Determine whether event message should be */
        /* "Bad Command Code" or "Bad Message ID"    */
        if (CmdIndx == CFE_TBL_BAD_CMD_CODE)
        {
            CFE_EVS_SendEvent(CFE_TBL_CC1_ERR_EID, CFE_EVS_ERROR,
                              "Invalid command code -- ID = 0x%04X, CC = %d",
                              MessageID, CommandCode);

            /* Update the command error counter */
            CFE_TBL_TaskData.ErrCounter++;
        }
        else  /* CmdIndx == CFE_TBL_BAD_MSG_ID */
        {
            CFE_EVS_SendEvent(CFE_TBL_MID_ERR_EID, CFE_EVS_ERROR,
                             "Invalid message ID -- ID = 0x%04X",
                              MessageID);
            /*
            ** Note: we only increment the command error counter when
            **    processing messages with command codes
            */
        }
    }

    return;

} /* End of CFE_TBL_TaskPipe() */
/* Only doing subset of total messages;
** NOTE: Currently does EVS, TIME
*/
int32 CFE_SB_SendMsg(CFE_SB_Msg_t *MsgPtr)
{
    int32            status = CFE_SUCCESS;
    boolean          flag = FALSE;
    CFE_EVS_Packet_t *packet;
#ifdef UT_VERBOSE
    int              i;
    CFE_EVS_TlmPkt_t *tlmpkt;
#endif

    if (SBSendMsgRtn.count > 0)
    {
        SBSendMsgRtn.count--;

        if (SBSendMsgRtn.count == 0)
        {
            status = SBSendMsgRtn.value;
            flag = TRUE;
        }
    }

    if (flag == FALSE)
    {
        /* Process message per type */
        switch (CFE_SB_GetMsgId(MsgPtr))
        {
            case CFE_EVS_EVENT_MSG_MID:

                packet = (CFE_EVS_Packet_t *) MsgPtr;
                SendMsgEventIDRtn.value = packet->PacketID.EventID;
#ifdef UT_VERBOSE
                SNPRINTF(cMsg, UT_MAX_MESSAGE_LENGTH,
"  CFE_SB_SendMsg called: type CFE_EVS_EVENT_MSG_MID\n  %lu/%lu/%s %u:%s",
                        packet->PacketID.SpacecraftID,
                        packet->PacketID.ProcessorID,
                        packet->PacketID.AppName,
                        packet->PacketID.EventID,
                        packet->Message);
                UT_Text(cMsg);
#endif

                if (*packet->Message != '\0')
                {
                    SendMsgEventIDRtn.count++;
                }

                break;

            case CFE_EVS_HK_TLM_MID:

                SendMsgEventIDRtn.value = CFE_EVS_HK_TLM_MID;
#ifdef UT_VERBOSE
                tlmpkt = (CFE_EVS_TlmPkt_t *) MsgPtr;
                SNPRINTF(cMsg, UT_MAX_MESSAGE_LENGTH,
                         "  CFE_SB_SendMsg: type CFE_EVS_HK_TLM_MID\n"
                           "   CommandCounter = %d\n"
                           "   CommandErrCounter = %d\n"
                           "   MessageFormatMode = %d\n"
                           "   MessageSendCounter = %d\n"
                           "   MessageTruncCounter = %d\n"
                           "   UnregisteredAppCounter = %d\n"
                           "   OutputPort = %d\n   LogFullFlag = %d\n"
                           "   LogMode = %d\n   LogOverflowCounter = %d",
                         tlmpkt->CommandCounter, tlmpkt->CommandErrCounter,
                         tlmpkt->MessageFormatMode, tlmpkt->MessageSendCounter,
                         tlmpkt->MessageTruncCounter,
                         tlmpkt->UnregisteredAppCounter, tlmpkt->OutputPort,
                         tlmpkt->LogFullFlag, tlmpkt->LogMode,
                         tlmpkt->LogOverflowCounter);
                UT_Text(cMsg);

                for (i = 0; i < CFE_ES_MAX_APPLICATIONS; i++)
                {
                    SNPRINTF(cMsg, UT_MAX_MESSAGE_LENGTH,
                             "   AppID = %lu\n    AppEnableStatus = %d\n    "
                               "AppMessageSentCounter = %d",
                             tlmpkt->AppData[i].AppID,
                             tlmpkt->AppData[i].AppEnableStatus,
                             tlmpkt->AppData[i].AppMessageSentCounter);
                    UT_Text(cMsg);
               }
#endif
                break;

            case CFE_TIME_DIAG_TLM_MID:

                SendMsgEventIDRtn.value = CFE_TIME_DIAG_TLM_MID;
#ifdef UT_VERBOSE
                SNPRINTF(cMsg, UT_MAX_MESSAGE_LENGTH,
                         "Incomplete TIME command: %d",
                         CFE_SB_GetMsgId(MsgPtr));
                UT_Text(cMsg);
#endif
                break;

            case CFE_TIME_HK_TLM_MID:

                SendMsgEventIDRtn.value = CFE_TIME_HK_TLM_MID;
#ifdef UT_VERBOSE
                SNPRINTF(cMsg, UT_MAX_MESSAGE_LENGTH,
                         "Incomplete TIME housekeeping command: %d",
                         CFE_SB_GetMsgId(MsgPtr));
                UT_Text(cMsg);
#endif
                break;

            default:
                /* Process the message with subsystem specific call */
                UT_ProcessSBMsg(MsgPtr);
                break;
        }
    }

    return status;
}