From a7a15990e6bb14dee5fa9654c4a991b0668b4ac2 Mon Sep 17 00:00:00 2001 From: Thomas Brain Date: Fri, 8 Nov 2019 13:40:28 -0600 Subject: [PATCH] Updates to SCH message table approach. Abstracted CCSDS header info from the generic message component. Allows CCSDS v1 and v2 compatibility. Also, allows changes to CCSDS v2 bit configurations without a table source file change. --- CMakeLists.txt | 6 + fsw/platform_inc/sch_msgids.h | 2 +- fsw/platform_inc/sch_platform_cfg.h | 2 +- fsw/src/sch_app.c | 39 +++- fsw/src/sch_tbldefs.h | 6 +- fsw/tables/sch_def_msgtbl.c | 300 ++++++++++++++-------------- 6 files changed, 192 insertions(+), 163 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 84ff242..8ac19b4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,8 +4,14 @@ project(CFS_SCH C) include_directories(fsw/public_inc) include_directories(fsw/mission_inc) include_directories(fsw/platform_inc) +include_directories(fsw/src) aux_source_directory(fsw/src APP_SRC_FILES) # Create the app module add_cfe_app(sch ${APP_SRC_FILES}) + +# Create the app tables if the parent build has the add_cfe_tables command +if (COMMAND add_cfe_tables) + add_cfe_tables(sch fsw/tables/sch_def_schtbl.c fsw/tables/sch_def_msgtbl.c) +endif(COMMAND add_cfe_tables) diff --git a/fsw/platform_inc/sch_msgids.h b/fsw/platform_inc/sch_msgids.h index f6b1007..cd76a90 100644 --- a/fsw/platform_inc/sch_msgids.h +++ b/fsw/platform_inc/sch_msgids.h @@ -25,7 +25,7 @@ ***************************/ #define SCH_CMD_MID 0x1895 /**< \brief SCH Ground Commands Message ID */ #define SCH_SEND_HK_MID 0x1896 /**< \brief SCH Send Housekeeping Message ID */ -#define SCH_UNUSED_MID 0x1897 /**< \brief SCH MDT Unused Message Message ID */ +#define SCH_UNUSED_MID (CFE_SB_HIGHEST_VALID_MSGID+1) /**< \brief SCH MDT Unused Message Message ID */ /* #define SCH_SPARE1 0x1898 #define SCH_SPARE2 0x1899 diff --git a/fsw/platform_inc/sch_platform_cfg.h b/fsw/platform_inc/sch_platform_cfg.h index 9ac2fc6..9938485 100644 --- a/fsw/platform_inc/sch_platform_cfg.h +++ b/fsw/platform_inc/sch_platform_cfg.h @@ -110,7 +110,7 @@ ** Must be at least large enough to hold the smallest possible message header * ** (see #CFE_SB_TLM_HDR_SIZE and #CFE_SB_CMD_HDR_SIZE) */ -#define SCH_MAX_MSG_WORDS 64 /* max message length (in words) */ +#define SCH_MAX_MSG_WORDS 62 /* max message length (in words) */ /* diff --git a/fsw/src/sch_app.c b/fsw/src/sch_app.c index 3b3b6e4..fa5cb44 100644 --- a/fsw/src/sch_app.c +++ b/fsw/src/sch_app.c @@ -45,6 +45,8 @@ #include "sch_verify.h" #include "cfe_platform_cfg.h" /* for CFE_SB_HIGHEST_VALID_MSGID */ +uint8 CFE_SB_GetPktType(CFE_SB_MsgId_t MsgId); + /************************************************************************* ** ** Macro definitions @@ -1166,7 +1168,8 @@ int32 SCH_ValidateMessageData(void *TableData) uint16 *MessageBuffer; uint16 *UserDataPtr; - uint16 MessageLength; + uint16 PayloadLength; + uint16 CmdCode; CFE_SB_MsgId_t MessageID; CFE_SB_MsgId_t MaxValue = (CFE_SB_MsgId_t) SCH_MDT_MAX_MSG_ID; CFE_SB_MsgId_t MinValue = (CFE_SB_MsgId_t) SCH_MDT_MIN_MSG_ID; @@ -1184,8 +1187,9 @@ int32 SCH_ValidateMessageData(void *TableData) BufferIndex = 0; MessageBuffer = &TableArray[TableIndex].MessageBuffer[0]; - MessageID = CFE_SB_GetMsgId((CFE_SB_MsgPtr_t) MessageBuffer); - MessageLength = CFE_SB_GetTotalMsgLength((CFE_SB_MsgPtr_t) MessageBuffer); + MessageID = TableArray[TableIndex].mid; + CmdCode = TableArray[TableIndex].cmdCode; + PayloadLength = TableArray[TableIndex].payloadLength; if (MessageID == SCH_UNUSED_MID) { @@ -1193,8 +1197,8 @@ int32 SCH_ValidateMessageData(void *TableData) ** If message ID is unused, then look for junk in user data portion */ UnusedCount++; - UserDataPtr = (uint16 *)CFE_SB_GetUserData((CFE_SB_MsgPtr_t) MessageBuffer); - while (UserDataPtr < &TableArray[TableIndex+1].MessageBuffer[0]) + UserDataPtr = &MessageBuffer[0]; + while (UserDataPtr <= &TableArray[TableIndex].MessageBuffer[SCH_MAX_MSG_WORDS-1]) { if (*UserDataPtr != SCH_UNUSED) { @@ -1212,16 +1216,31 @@ int32 SCH_ValidateMessageData(void *TableData) /* ** If message ID is valid, then check message length */ - if ((MessageLength > (SCH_MAX_MSG_WORDS * 2)) || - (MessageLength < (SCH_MIN_MSG_WORDS * 2)) || - ((MessageLength & 1) != 0)) + if (PayloadLength > SCH_MAX_MSG_WORDS*2) { EntryResult = SCH_MDT_INVALID_LENGTH; BadCount++; } else { - GoodCount++; + GoodCount++; + // Populate the CCSDS header and move the message content into the proper user data space. + uint16 TempBuffer[SCH_MAX_MSG_WORDS]; + if(PayloadLength > 0) { + CFE_PSP_MemCpy( TempBuffer, MessageBuffer, PayloadLength ); + } + + if ( CFE_SB_GetPktType( MessageID ) == 1 ) + { + CFE_SB_InitMsg( MessageBuffer, MessageID, sizeof(CCSDS_CommandPacket_t) + PayloadLength, TRUE ); + CFE_SB_SetCmdCode( (CFE_SB_MsgPtr_t) MessageBuffer, CmdCode ); + CFE_PSP_MemCpy( MessageBuffer + sizeof(CCSDS_CommandPacket_t), TempBuffer, PayloadLength ); + } + else + { + CFE_SB_InitMsg( MessageBuffer, MessageID, sizeof(CCSDS_TelemetryPacket_t) + PayloadLength, TRUE ); + CFE_PSP_MemCpy( MessageBuffer + sizeof(CCSDS_TelemetryPacket_t), TempBuffer, PayloadLength ); + } } } else @@ -1239,7 +1258,7 @@ int32 SCH_ValidateMessageData(void *TableData) CFE_EVS_SendEvent(SCH_MESSAGE_TBL_ERR_EID, CFE_EVS_ERROR, "Message tbl verify err - idx[%d] mid[0x%X] len[%d] buf[%d]", - (int)TableIndex, MessageID, MessageLength, (int)BufferIndex); + (int)TableIndex, MessageID, PayloadLength, (int)BufferIndex); } } diff --git a/fsw/src/sch_tbldefs.h b/fsw/src/sch_tbldefs.h index 9c16393..1b15e1f 100644 --- a/fsw/src/sch_tbldefs.h +++ b/fsw/src/sch_tbldefs.h @@ -53,7 +53,11 @@ typedef struct */ typedef struct { - uint16 MessageBuffer[SCH_MAX_MSG_WORDS]; /**< \brief Packed Messages */ + + CFE_SB_MsgId_t mid; /**< \brief MID to send */ + uint16 cmdCode; /**< \brief Specifies the command code if relevant. */ + uint16 payloadLength; /**< \brief Message length of any user payload. */ + uint16 MessageBuffer[SCH_MAX_MSG_WORDS]; /**< \brief User payload content byte-stream. */ } SCH_MessageEntry_t; diff --git a/fsw/tables/sch_def_msgtbl.c b/fsw/tables/sch_def_msgtbl.c index bb8d511..87b0a6e 100644 --- a/fsw/tables/sch_def_msgtbl.c +++ b/fsw/tables/sch_def_msgtbl.c @@ -76,7 +76,7 @@ ** Entry 0 -- reserved (DO NOT USE) ** ** Several Entries in this default table provide example messages for a default -** system. These messages can be uncommented, and the CFE_MAKE_BIG16(SCH_UNUSED_MID) entry just +** system. These messages can be uncommented, and the SCH_UNUSED_MID entry just ** below them can be deleted to enable them. */ @@ -89,307 +89,307 @@ SCH_MessageEntry_t SCH_DefaultMessageTable[SCH_MAX_MESSAGES] = ** DO NOT USE -- entry #0 reserved for "unused" command ID - DO NOT USE */ /* command ID #0 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* ** cFE housekeeping request messages */ /* command ID #1 - Executive Services HK Request */ - { { CFE_MAKE_BIG16(CFE_ES_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, + { CFE_ES_SEND_HK_MID }, /* command ID #2 - Event Services HK Request */ - { { CFE_MAKE_BIG16(CFE_EVS_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, + { CFE_EVS_SEND_HK_MID }, /* command ID #3 - Software Bus HK Request */ - { { CFE_MAKE_BIG16(CFE_SB_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, + { CFE_SB_SEND_HK_MID }, /* command ID #4 - Time Services HK Request */ - { { CFE_MAKE_BIG16(CFE_TIME_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, + { CFE_TIME_SEND_HK_MID }, /* command ID #5 - Table Services HK Request */ - { { CFE_MAKE_BIG16(CFE_TBL_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, + { CFE_TBL_SEND_HK_MID }, /* ** CFS housekeeping request messages */ /* command ID #6 - Checksum HK Request */ -/*{ { CFE_MAKE_BIG16(CS_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, +/*{ CS_SEND_HK_MID }, */ + { SCH_UNUSED_MID }, /* command ID #7 - Data Store HK Request */ -/*{ { CFE_MAKE_BIG16(DS_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, +/*{ DS_SEND_HK_MID }, */ + { SCH_UNUSED_MID }, /* command ID #8 - File Manager HK Request */ -/*{ { CFE_MAKE_BIG16(FM_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, +/*{ FM_SEND_HK_MID }, */ + { SCH_UNUSED_MID }, /* command ID #9 - Housekeeping HK Request */ -/*{ { CFE_MAKE_BIG16(HK_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, +/*{ HK_SEND_HK_MID }, */ + { SCH_UNUSED_MID }, /* command ID #10 - Health & Safety HK Request */ -/*{ { CFE_MAKE_BIG16(HS_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, +/*{ HS_SEND_HK_MID }, */ + { SCH_UNUSED_MID }, /* command ID #11 - Limit Checker HK Request */ -/*{ { CFE_MAKE_BIG16(LC_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, +/*{ LC_SEND_HK_MID }, */ + { SCH_UNUSED_MID }, /* command ID #12 - Memory Dwell HK Request */ -/*{ { CFE_MAKE_BIG16(MD_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, +/*{ MD_SEND_HK_MID }, */ + { SCH_UNUSED_MID }, /* command ID #13 - Memory Manager HK Request */ -/*{ { CFE_MAKE_BIG16(MM_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, +/*{ MM_SEND_HK_MID }, */ + { SCH_UNUSED_MID }, /* command ID #14 - Stored Command HK Request */ -/*{ { CFE_MAKE_BIG16(SC_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, - /* command ID #15 - Scheduler HK Request */ - { { CFE_MAKE_BIG16(SCH_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, +/*{ SC_SEND_HK_MID }, */ + { SCH_UNUSED_MID }, + /* command ID #15 */ + { SCH_SEND_HK_MID }, /* ** CFS routine messages */ /* command ID #16 - HK Send Combined Housekeeping Msg #1 */ -/*{ { CFE_MAKE_BIG16(HK_SEND_COMBINED_PKT_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0003), 0x0000, HK_COMBINED_PKT1_MID } }, */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, +/*{ HK_SEND_COMBINED_PKT_MID, 0, 2, {HK_COMBINED_PKT1_MID} }, */ + { SCH_UNUSED_MID }, /* command ID #17 - HK Send Combined Housekeeping Msg #2 */ -/*{ { CFE_MAKE_BIG16(HK_SEND_COMBINED_PKT_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0003), 0x0000, HK_COMBINED_PKT2_MID } }, */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, +/*{ HK_SEND_COMBINED_PKT_MID, 0, 2, {HK_COMBINED_PKT2_MID} }, */ + { SCH_UNUSED_MID }, /* command ID #18 - HK Send Combined Housekeeping Msg #3 */ -/*{ { CFE_MAKE_BIG16(HK_SEND_COMBINED_PKT_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0003), 0x0000, HK_COMBINED_PKT3_MID } }, */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, +/*{ HK_SEND_COMBINED_PKT_MID, 0, 2, {HK_COMBINED_PKT3_MID} }, */ + { SCH_UNUSED_MID }, /* command ID #19 - HK Send Combined Housekeeping Msg #4 */ -/*{ { CFE_MAKE_BIG16(HK_SEND_COMBINED_PKT_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0003), 0x0000, HK_COMBINED_PKT4_MID } }, */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, +/*{ HK_SEND_COMBINED_PKT_MID, 0, 2, {HK_COMBINED_PKT4_MID} }, */ + { SCH_UNUSED_MID }, /* command ID #20 - CS Background Cycle */ -/*{ { CFE_MAKE_BIG16(CS_BACKGROUND_CYCLE_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, +/*{ CS_BACKGROUND_CYCLE_MID }, */ + { SCH_UNUSED_MID }, /* command ID #21 - SC 1 Hz Wakeup */ -/*{ { CFE_MAKE_BIG16(SC_1HZ_WAKEUP_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, +/*{ SC_1HZ_WAKEUP_MID }, */ + { SCH_UNUSED_MID }, /* command ID #22 - LC Sample Action Points */ -/*{ { CFE_MAKE_BIG16(LC_SAMPLE_AP_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0005), 0x0000, LC_ALL_ACTIONPOINTS, 0x0000 } }, */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, +/*{ LC_SAMPLE_AP_MID, 0, 4, {LC_ALL_ACTIONPOINTS} }, */ + { SCH_UNUSED_MID }, /* command ID #23 - DS 1 HZ Wakeup */ -/*{ { CFE_MAKE_BIG16(DS_1HZ_WAKEUP_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, +/*{ DS_1HZ_WAKEUP_MID }, */ + { SCH_UNUSED_MID }, /* command ID #24 - MD Wakeup */ -/*{ { CFE_MAKE_BIG16(MD_WAKEUP_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, +/*{ MD_WAKEUP_MID }, */ + { SCH_UNUSED_MID }, /* command ID #25 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #26 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #27 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #28 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #29 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* ** Mission Defined Messages */ /* command ID #30 - Command Ingest HK Request Example */ -/*{ { CFE_MAKE_BIG16(CI_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, +/*{ CI_SEND_HK_MID }, */ + { SCH_UNUSED_MID }, /* command ID #31 - Telemetry Output HK Request Example */ -/*{ { CFE_MAKE_BIG16(TO_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, +/*{ TO_SEND_HK_MID }, */ + { SCH_UNUSED_MID }, /* command ID #32 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #33 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #34 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #35 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #36 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #37 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #38 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #39 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #40 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #41 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #42 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #43 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #44 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #45 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #46 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #47 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #48 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #49 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #50 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #51 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #52 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #53 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #54 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #55 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #56 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #57 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #58 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #59 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #60 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #61 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #62 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #63 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #64 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #65 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #66 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #67 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #68 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #69 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #70 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #71 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #72 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #73 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #74 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #75 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #76 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #77 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #78 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #79 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #80 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #81 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #82 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #83 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #84 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #85 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #86 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #87 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #88 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #89 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #90 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #91 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #92 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #93 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #94 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #95 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #96 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #97 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #98 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #99 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #100 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #101 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #102 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #103 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #104 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #105 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #106 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #107 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #108 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #109 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #110 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #111 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #112 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #113 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #114 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #115 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #116 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #117 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #118 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #119 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #120 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #121 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #122 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #123 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #124 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #125 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #126 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + { SCH_UNUSED_MID }, /* command ID #127 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } } + { SCH_UNUSED_MID } };