void CI_ProcessGroundCommand(void) { uint16 CommandCode; CommandCode = CFE_SB_GetCmdCode(CIMsgPtr); /* Process "known" CI task ground commands */ switch (CommandCode) { case CI_NO_OPERATION_CC: CI_HkTelemetryPkt.ci_command_count++; CFE_EVS_SendEvent(CI_COMMANDNOP_INF_EID,CFE_EVS_INFORMATION, "CI: NOP command"); break; case CI_RESET_COUNTERS_CC: CI_ResetCounters(); CFE_EVS_SendEvent(CI_COMMANDRST_INF_EID,CFE_EVS_INFORMATION, "CI: RESET command"); break; /* default case already found during FC vs length test */ default: break; } return; } /* End of CI_ProcessGroundCommand() */
void $APPLICATION_NAME$_ProcessGroundCommand(void) { uint16 CommandCode; CommandCode = CFE_SB_GetCmdCode($APPLICATION_NAME$_MsgPtr); /* Process "known" $Application Name$ app ground commands */ switch (CommandCode) { case $APPLICATION_NAME$_APP_NOOP_CC: $APPLICATION_NAME$_HkTelemetryPkt.$application_name$_command_count++; CFE_EVS_SendEvent($APPLICATION_NAME$_COMMANDNOP_INF_EID,CFE_EVS_INFORMATION, "$Application Name$: NOOP command"); break; case $APPLICATION_NAME$_APP_RESET_COUNTERS_CC: $APPLICATION_NAME$_ResetCounters(); break; /* default case already found during FC vs length test */ default: break; } return; } /* End of $APPLICATION_NAME$_ProcessGroundCommand() */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ int32 HS_CustomCommands(CFE_SB_MsgPtr_t MessagePtr) { int32 Status = CFE_SUCCESS; uint16 CommandCode = 0; CommandCode = CFE_SB_GetCmdCode(MessagePtr); switch (CommandCode) { case HS_REPORT_DIAG_CC: HS_UtilDiagReport(); break; case HS_SET_UTIL_PARAMS_CC: HS_SetUtilParamsCmd(MessagePtr); break; case HS_SET_UTIL_DIAG_CC: HS_SetUtilDiagCmd(MessagePtr); break; default: Status = !CFE_SUCCESS; break; } /* end CommandCode switch */ return Status; } /* End of HS_CustomCommands() */
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() */
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; }
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ void TO_exec_local_command(CFE_SB_MsgPtr_t cmd) { uint16 CommandCode; boolean valid = TRUE; CommandCode = CFE_SB_GetCmdCode(cmd); switch (CommandCode) { case TO_NOP_CC: CFE_EVS_SendEvent(TO_NOOP_INF_EID,CFE_EVS_INFORMATION, "No-op command"); break; case TO_RESET_STATUS_CC: TO_reset_status(); --to_hk_status.command_counter; break; case TO_SEND_DATA_TYPES_CC: TO_output_data_types_packet(); break; case TO_ADD_PKT_CC: TO_AddPkt((TO_ADD_PKT_t *)cmd); break; case TO_REMOVE_PKT_CC: TO_RemovePkt( (TO_REMOVE_PKT_t *)cmd); break; case TO_REMOVE_ALL_PKT_CC: TO_RemoveAllPkt(); break; case TO_OUTPUT_ENABLE_CC: TO_StartSending( (TO_OUTPUT_ENABLE_PKT_t *)cmd ); downlink_on = TRUE; break; default: CFE_EVS_SendEvent(TO_FNCODE_ERR_EID,CFE_EVS_ERROR, "L%d TO: Invalid Function Code Rcvd In Ground Command 0x%x",__LINE__, CommandCode); valid = FALSE; } if (valid) ++to_hk_status.command_counter; else ++to_hk_status.command_error_counter; } /* End of TO_exec_local_command() */
void THRSIM_ProcessGroundCommand(void) { uint16 ExpectedLength = sizeof(THRSIM_NoArgsCmd_t); if (THRSIM_VerifyCmdLength(THRSIM_AppData.MsgPtr, ExpectedLength)) { uint16 CommandCode = CFE_SB_GetCmdCode(THRSIM_AppData.MsgPtr); switch (CommandCode) { case THRSIM_NOOP_CC: THRSIM_AppData.HkPacket.command_count++; CFE_EVS_SendEvent(THRSIM_NOOP_INF_EID, CFE_EVS_INFORMATION, "NOOP command"); break; case THRSIM_RESETCTRS_CC: THRSIM_ResetCounters(); break; default: THRSIM_AppData.HkPacket.error_count++; CFE_EVS_SendEvent(THRSIM_CC1_ERR_EID, CFE_EVS_ERROR, "Invalid command code %u", CommandCode); break; } } }
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() */
void SIMCI_ProcessGroundCommand(void) { uint16 CommandCode; CommandCode = CFE_SB_GetCmdCode(SIMCI_AppData.MsgPtr); switch (CommandCode) { case SIMCI_NOOP_CC: SIMCI_AppData.HkPacket.command_count++; CFE_EVS_SendEvent(SIMCI_NOOP_INF_EID, CFE_EVS_INFORMATION, "SIMCI: NOOP command"); break; case SIMCI_RESETCTRS_CC: SIMCI_ResetCounters(); CFE_EVS_SendEvent(SIMCI_COMMANDRST_INF_EID,CFE_EVS_INFORMATION, "SIMCI: RESET command"); break; default: SIMCI_AppData.HkPacket.error_count++; CFE_EVS_SendEvent(SIMCI_CC1_ERR_EID, CFE_EVS_ERROR, "SIMCI: received invalid command code, CC=%02u", CommandCode); break; } }
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ 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() */
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() */
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() */
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() */