Skip to content

Commit

Permalink
Fix #28, Opaque CFE_SB_MsgId_t values
Browse files Browse the repository at this point in the history
Do not assume CFE_SB_MsgId_t is implicitly integral in nature.
When an integer value is required for printing or backward
compatibility, use the explicit conversion routine to
get this.
  • Loading branch information
jphickey committed Apr 8, 2020
1 parent 545710c commit f2e853f
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 44 deletions.
14 changes: 10 additions & 4 deletions fsw/platform_inc/to_lab_msgids.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,17 @@
#define _to_lab_msgids_h_


#define TO_LAB_CMD_MID 0x1880
#define TO_LAB_SEND_HK_MID 0x1881
#define TO_LAB_CMD_MID_VALUE 0x1880
#define TO_LAB_SEND_HK_MID_VALUE 0x1881
#define TO_LAB_HK_TLM_MID_VALUE 0x0880
#define TO_LAB_DATA_TYPES_MID_VALUE 0x0881

#define TO_LAB_CMD_MID CFE_SB_MSGID_LITERAL(TO_LAB_CMD_MID_VALUE )
#define TO_LAB_SEND_HK_MID CFE_SB_MSGID_LITERAL(TO_LAB_SEND_HK_MID_VALUE )
#define TO_LAB_HK_TLM_MID CFE_SB_MSGID_LITERAL(TO_LAB_HK_TLM_MID_VALUE )
#define TO_LAB_DATA_TYPES_MID CFE_SB_MSGID_LITERAL(TO_LAB_DATA_TYPES_MID_VALUE)


#define TO_LAB_HK_TLM_MID 0x0880
#define TO_LAB_DATA_TYPES_MID 0x0881

#endif /* _to_lab_msgids_h_ */

Expand Down
34 changes: 18 additions & 16 deletions fsw/platform_inc/to_lab_sub_table.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,13 @@

static TO_subscription_t TO_SubTable[] =
{
#ifdef jphfix
/* CFS App Subscriptions */
{TO_LAB_HK_TLM_MID, {0,0}, 4},
{TO_LAB_DATA_TYPES_MID, {0,0}, 4},
{CI_LAB_HK_TLM_MID, {0,0}, 4},
{SAMPLE_APP_HK_TLM_MID, {0,0}, 4},
{CFE_SB_MSGID_WRAP_VALUE(TO_LAB_HK_TLM_MID_VALUE), {0,0}, 4},
{CFE_SB_MSGID_WRAP_VALUE(TO_LAB_DATA_TYPES_MID_VALUE), {0,0}, 4},
{CFE_SB_MSGID_WRAP_VALUE(CI_LAB_HK_TLM_MID_VALUE), {0,0}, 4},
{CFE_SB_MSGID_WRAP_VALUE(SAMPLE_APP_HK_TLM_MID_VALUE), {0,0}, 4},
#endif

#if 0
/* Add these if needed */
Expand All @@ -65,18 +67,18 @@ static TO_subscription_t TO_SubTable[] =
#endif

/* cFE Core subscriptions */
{CFE_ES_HK_TLM_MID, {0,0}, 4},
{CFE_EVS_HK_TLM_MID, {0,0}, 4},
{CFE_SB_HK_TLM_MID, {0,0}, 4},
{CFE_TBL_HK_TLM_MID, {0,0}, 4},
{CFE_TIME_HK_TLM_MID, {0,0}, 4},
{CFE_TIME_DIAG_TLM_MID, {0,0}, 4},
{CFE_SB_STATS_TLM_MID, {0,0}, 4},
{CFE_TBL_REG_TLM_MID, {0,0}, 4},
{CFE_EVS_LONG_EVENT_MSG_MID, {0,0}, 32},
{CFE_ES_SHELL_TLM_MID, {0,0}, 32},
{CFE_ES_APP_TLM_MID, {0,0}, 4},
{CFE_ES_MEMSTATS_TLM_MID, {0,0}, 4},
{CFE_SB_MSGID_WRAP_VALUE(CFE_ES_HK_TLM_MID_VALUE), {0,0}, 4},
{CFE_SB_MSGID_WRAP_VALUE(CFE_EVS_HK_TLM_MID_VALUE), {0,0}, 4},
{CFE_SB_MSGID_WRAP_VALUE(CFE_SB_HK_TLM_MID_VALUE), {0,0}, 4},
{CFE_SB_MSGID_WRAP_VALUE(CFE_TBL_HK_TLM_MID_VALUE), {0,0}, 4},
{CFE_SB_MSGID_WRAP_VALUE(CFE_TIME_HK_TLM_MID_VALUE), {0,0}, 4},
{CFE_SB_MSGID_WRAP_VALUE(CFE_TIME_DIAG_TLM_MID_VALUE), {0,0}, 4},
{CFE_SB_MSGID_WRAP_VALUE(CFE_SB_STATS_TLM_MID_VALUE), {0,0}, 4},
{CFE_SB_MSGID_WRAP_VALUE(CFE_TBL_REG_TLM_MID_VALUE), {0,0}, 4},
{CFE_SB_MSGID_WRAP_VALUE(CFE_EVS_LONG_EVENT_MSG_MID_VALUE), {0,0}, 32},
{CFE_SB_MSGID_WRAP_VALUE(CFE_ES_SHELL_TLM_MID_VALUE), {0,0}, 32},
{CFE_SB_MSGID_WRAP_VALUE(CFE_ES_APP_TLM_MID_VALUE), {0,0}, 4},
{CFE_SB_MSGID_WRAP_VALUE(CFE_ES_MEMSTATS_TLM_MID_VALUE), {0,0}, 4},

{TO_UNUSED, {0,0}, 0},
{TO_UNUSED, {0,0}, 0},
Expand Down
49 changes: 26 additions & 23 deletions fsw/src/to_lab_app.c
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ void TO_LAB_init(void)
/* Subscriptions for TLM pipe*/
for (i=0; (i < (sizeof(TO_SubTable)/sizeof(TO_subscription_t))); i++)
{
if(TO_SubTable[i].Stream != TO_UNUSED )
if(CFE_SB_IsValidMsgId(TO_SubTable[i].Stream))
status = CFE_SB_SubscribeEx(TO_SubTable[i].Stream,
TO_LAB_Global.Tlm_pipe,
TO_SubTable[i].Flags,
Expand All @@ -223,7 +223,7 @@ void TO_LAB_init(void)
if (status != CFE_SUCCESS)
CFE_EVS_SendEvent(TO_SUBSCRIBE_ERR_EID,CFE_EVS_EventType_ERROR,
"L%d TO Can't subscribe to stream 0x%x status %i", __LINE__,
TO_SubTable[i].Stream,(int)status);
CFE_SB_MsgIdToValue(TO_SubTable[i].Stream),(int)status);
}

/*
Expand Down Expand Up @@ -286,22 +286,22 @@ void TO_LAB_process_commands(void)

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

case TO_LAB_SEND_HK_MID:
TO_LAB_SendHousekeeping((const CCSDS_CommandPacket_t *)MsgPtr);
break;

default:
CFE_EVS_SendEvent(TO_MSGID_ERR_EID,CFE_EVS_EventType_ERROR,
"L%d TO: Invalid Msg ID Rcvd 0x%x",__LINE__,MsgId);
break;
TO_LAB_exec_local_command(MsgPtr);
}
else if (CFE_SB_MsgId_Equal(MsgId, TO_LAB_SEND_HK_MID))
{
TO_LAB_SendHousekeeping((const CCSDS_CommandPacket_t *)MsgPtr);
}
else
{
CFE_EVS_SendEvent(TO_MSGID_ERR_EID,CFE_EVS_EventType_ERROR,
"L%d TO: Invalid Msg ID Rcvd 0x%x",__LINE__,
CFE_SB_MsgIdToValue(MsgId));
}
break;

default:
/* Exit command processing loop if no message received. */
return;
Expand Down Expand Up @@ -483,11 +483,12 @@ int32 TO_LAB_AddPacket(const TO_LAB_AddPacket_t *data)
if(status != CFE_SUCCESS)
CFE_EVS_SendEvent(TO_ADDPKT_ERR_EID,CFE_EVS_EventType_ERROR,
"L%d TO Can't subscribe 0x%x status %i",__LINE__,
pCmd->Stream, (int)status);
(unsigned int)CFE_SB_MsgIdToValue(pCmd->Stream),
(int)status);
else
CFE_EVS_SendEvent(TO_ADDPKT_INF_EID,CFE_EVS_EventType_INFORMATION,
"L%d TO AddPkt 0x%x, QoS %d.%d, limit %d",__LINE__,
pCmd->Stream,
(unsigned int)CFE_SB_MsgIdToValue(pCmd->Stream),
pCmd->Flags.Priority,
pCmd->Flags.Reliability,
pCmd->BufLimit);
Expand All @@ -510,10 +511,12 @@ int32 TO_LAB_RemovePacket(const TO_LAB_RemovePacket_t *data)
if(status != CFE_SUCCESS)
CFE_EVS_SendEvent(TO_REMOVEPKT_ERR_EID,CFE_EVS_EventType_ERROR,
"L%d TO Can't Unsubscribe to Stream 0x%x on pipe %d, status %i",__LINE__,
pCmd->Stream, TO_LAB_Global.Tlm_pipe, (int)status);
(unsigned int)CFE_SB_MsgIdToValue(pCmd->Stream),
TO_LAB_Global.Tlm_pipe, (int)status);
else
CFE_EVS_SendEvent(TO_REMOVEPKT_INF_EID,CFE_EVS_EventType_INFORMATION,
"L%d TO RemovePkt 0x%x",__LINE__, pCmd->Stream);
"L%d TO RemovePkt 0x%x",__LINE__,
(unsigned int)CFE_SB_MsgIdToValue(pCmd->Stream));
++TO_LAB_Global.HkBuf.HkTlm.Payload.CommandCounter;
return CFE_SUCCESS;
} /* End of TO_LAB_RemovePacket() */
Expand All @@ -530,14 +533,14 @@ int32 TO_LAB_RemoveAll(const TO_LAB_RemoveAll_t *data)

for (i=0; (i < (sizeof(TO_SubTable)/sizeof(TO_subscription_t))); i++)
{
if (TO_SubTable[i].Stream != TO_UNUSED )
if (CFE_SB_IsValidMsgId(TO_SubTable[i].Stream))
{
status = CFE_SB_Unsubscribe(TO_SubTable[i].Stream, TO_LAB_Global.Tlm_pipe);

if(status != CFE_SUCCESS)
CFE_EVS_SendEvent(TO_REMOVEALLPTKS_ERR_EID,CFE_EVS_EventType_ERROR,
"L%d TO Can't Unsubscribe to stream 0x%x status %i", __LINE__,
TO_SubTable[i].Stream, (int)status);
CFE_SB_MsgIdToValue(TO_SubTable[i].Stream), (int)status);
}
}

Expand All @@ -546,13 +549,13 @@ int32 TO_LAB_RemoveAll(const TO_LAB_RemoveAll_t *data)
if(status != CFE_SUCCESS)
CFE_EVS_SendEvent(TO_REMOVECMDTO_ERR_EID,CFE_EVS_EventType_ERROR,
"L%d TO Can't Unsubscribe to cmd stream 0x%x status %i", __LINE__,
TO_LAB_CMD_MID, (int)status);
CFE_SB_MsgIdToValue(TO_LAB_CMD_MID), (int)status);

status = CFE_SB_Unsubscribe(TO_LAB_SEND_HK_MID, TO_LAB_Global.Cmd_pipe);
if (status != CFE_SUCCESS)
CFE_EVS_SendEvent(TO_REMOVEHKTO_ERR_EID,CFE_EVS_EventType_ERROR,
"L%d TO Can't Unsubscribe to cmd stream 0x%x status %i", __LINE__,
TO_LAB_CMD_MID, (int)status);
CFE_SB_MsgIdToValue(TO_LAB_CMD_MID), (int)status);

CFE_EVS_SendEvent(TO_REMOVEALLPKTS_INF_EID,CFE_EVS_EventType_INFORMATION,
"L%d TO Unsubscribed to all Commands and Telemetry", __LINE__);
Expand Down
2 changes: 1 addition & 1 deletion fsw/src/to_lab_app.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
/*****************************************************************************/

#define TO_TASK_MSEC 500 /* run at 2 Hz */
#define TO_UNUSED 0
#define TO_UNUSED CFE_SB_MSGID_RESERVED

#define cfgTLM_ADDR "192.168.1.81"
#define cfgTLM_PORT 1235
Expand Down

0 comments on commit f2e853f

Please sign in to comment.