Skip to content

Commit b00e0d5

Browse files
committed
WIP nasa#62 - alignment updates started
1 parent aa805af commit b00e0d5

File tree

3 files changed

+44
-44
lines changed

3 files changed

+44
-44
lines changed

fsw/src/ci_lab_app.c

+39-37
Original file line numberDiff line numberDiff line change
@@ -47,26 +47,19 @@
4747
*/
4848
typedef union
4949
{
50-
CFE_MSG_Message_t MsgHdr;
50+
CFE_MSG_Message_t Msg;
5151
uint8 bytes[CI_LAB_MAX_INGEST];
5252
uint16 hwords[2];
5353
} CI_LAB_IngestBuffer_t;
5454

55-
typedef union
56-
{
57-
CFE_MSG_Message_t MsgHdr;
58-
CI_LAB_HkTlm_t HkTlm;
59-
} CI_LAB_HkTlm_Buffer_t;
60-
6155
typedef struct
6256
{
6357
bool SocketConnected;
6458
CFE_SB_PipeId_t CommandPipe;
65-
CFE_MSG_Message_t *MsgPtr;
6659
osal_id_t SocketID;
6760
OS_SockAddr_t SocketAddress;
6861

69-
CI_LAB_HkTlm_Buffer_t HkBuffer;
62+
CI_LAB_HkTlm_t HkTlm;
7063
CI_LAB_IngestBuffer_t IngestBuffer;
7164
} CI_LAB_GlobalData_t;
7265

@@ -87,7 +80,9 @@ static CFE_EVS_BinFilter_t CI_LAB_EventFilters[] =
8780
*/
8881
int32 CI_LAB_Noop(const CI_LAB_Noop_t *data);
8982
int32 CI_LAB_ResetCounters(const CI_LAB_ResetCounters_t *data);
90-
int32 CI_LAB_ReportHousekeeping(const CFE_SB_CmdHdr_t *data);
83+
84+
/* Housekeeping message handler */
85+
int32 CI_LAB_ReportHousekeeping(const CFE_MSG_CommandHeader_t *data);
9186

9287
/** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
9388
/* CI_Lab_AppMain() -- Application entry point and main process loop */
@@ -101,8 +96,9 @@ int32 CI_LAB_ReportHousekeeping(const CFE_SB_CmdHdr_t *data);
10196
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/
10297
void CI_Lab_AppMain(void)
10398
{
104-
int32 status;
105-
uint32 RunStatus = CFE_ES_RunStatus_APP_RUN;
99+
int32 status;
100+
uint32 RunStatus = CFE_ES_RunStatus_APP_RUN;
101+
CFE_SB_Buffer_t *SBBufPtr;
106102

107103
CFE_ES_PerfLogEntry(CI_LAB_MAIN_TASK_PERF_ID);
108104

@@ -116,13 +112,13 @@ void CI_Lab_AppMain(void)
116112
CFE_ES_PerfLogExit(CI_LAB_MAIN_TASK_PERF_ID);
117113

118114
/* Pend on receipt of command packet -- timeout set to 500 millisecs */
119-
status = CFE_SB_RcvMsg(&CI_LAB_Global.MsgPtr, CI_LAB_Global.CommandPipe, 500);
115+
status = CFE_SB_RcvMsg(&SBBufPtr, CI_LAB_Global.CommandPipe, 500);
120116

121117
CFE_ES_PerfLogEntry(CI_LAB_MAIN_TASK_PERF_ID);
122118

123119
if (status == CFE_SUCCESS)
124120
{
125-
CI_LAB_ProcessCommandPacket();
121+
CI_LAB_ProcessCommandPacket(SBBufPtr);
126122
}
127123

128124
/* Regardless of packet vs timeout, always process uplink queue */
@@ -201,7 +197,7 @@ void CI_LAB_TaskInit(void)
201197
*/
202198
OS_TaskInstallDeleteHandler(&CI_LAB_delete_callback);
203199

204-
CFE_MSG_Init(&CI_LAB_Global.HkBuffer.HkTlm.TlmHeader.BaseMsg, CI_LAB_HK_TLM_MID, CI_LAB_HK_TLM_LNGTH);
200+
CFE_MSG_Init(&CI_LAB_Global.HkTlm.TlmHeader.Msg, CI_LAB_HK_TLM_MID, sizeof(CI_LAB_Global.HkTlm));
205201

206202
CFE_EVS_SendEvent(CI_LAB_STARTUP_INF_EID, CFE_EVS_EventType_INFORMATION, "CI Lab Initialized.%s",
207203
CI_LAB_VERSION_STRING);
@@ -220,24 +216,24 @@ void CI_LAB_TaskInit(void)
220216
/* 3. Request for housekeeping telemetry packet (from HS task) */
221217
/* */
222218
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
223-
void CI_LAB_ProcessCommandPacket(void)
219+
void CI_LAB_ProcessCommandPacket(CFE_SB_Buffer_t *SBBufPtr)
224220
{
225221
CFE_SB_MsgId_t MsgId = CFE_SB_INVALID_MSG_ID;
226222

227-
CFE_MSG_GetMsgId(CI_LAB_Global.MsgPtr, &MsgId);
223+
CFE_MSG_GetMsgId(&SBBufPtr->Msg, &MsgId);
228224

229225
switch (CFE_SB_MsgIdToValue(MsgId))
230226
{
231227
case CI_LAB_CMD_MID:
232-
CI_LAB_ProcessGroundCommand();
228+
CI_LAB_ProcessGroundCommand(SBBufPtr);
233229
break;
234230

235231
case CI_LAB_SEND_HK_MID:
236-
CI_LAB_ReportHousekeeping((const CFE_SB_CmdHdr_t *)CI_LAB_Global.MsgPtr);
232+
CI_LAB_ReportHousekeeping((const CFE_MSG_CommandHeader_t *)SBBufPtr);
237233
break;
238234

239235
default:
240-
CI_LAB_Global.HkBuffer.HkTlm.Payload.CommandErrorCounter++;
236+
CI_LAB_Global.HkTlm.Payload.CommandErrorCounter++;
241237
CFE_EVS_SendEvent(CI_LAB_COMMAND_ERR_EID, CFE_EVS_EventType_ERROR, "CI: invalid command packet,MID = 0x%x",
242238
(unsigned int)CFE_SB_MsgIdToValue(MsgId));
243239
break;
@@ -253,21 +249,27 @@ void CI_LAB_ProcessCommandPacket(void)
253249
/* */
254250
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/
255251

256-
void CI_LAB_ProcessGroundCommand(void)
252+
void CI_LAB_ProcessGroundCommand(CFE_SB_Buffer_t *SBBufPtr)
257253
{
258254
CFE_MSG_FcnCode_t CommandCode = 0;
259255

260-
CFE_MSG_GetFcnCode(CI_LAB_Global.MsgPtr, &CommandCode);
256+
CFE_MSG_GetFcnCode(&SBBufPtr->Msg, &CommandCode);
261257

262258
/* Process "known" CI task ground commands */
263259
switch (CommandCode)
264260
{
265261
case CI_LAB_NOOP_CC:
266-
CI_LAB_Noop((const CI_LAB_Noop_t *)CI_LAB_Global.MsgPtr);
262+
if (CI_LAB_VerifyCmdLength(&SBBufPtr->Msg, sizeof(CI_LAB_Noop_t)))
263+
{
264+
CI_LAB_Noop((const CI_LAB_Noop_t *)SBBufPtr);
265+
}
267266
break;
268267

269268
case CI_LAB_RESET_COUNTERS_CC:
270-
CI_LAB_ResetCounters((const CI_LAB_ResetCounters_t *)CI_LAB_Global.MsgPtr);
269+
if (CI_LAB_VerifyCmdLength(&SBBufPtr->Msg, sizeof(CI_LAB_ResetCounters_t)))
270+
{
271+
CI_LAB_ResetCounters((const CI_LAB_ResetCounters_t *)SBBufPtr);
272+
}
271273
break;
272274

273275
/* default case already found during FC vs length test */
@@ -289,7 +291,7 @@ void CI_LAB_ProcessGroundCommand(void)
289291
int32 CI_LAB_Noop(const CI_LAB_Noop_t *data)
290292
{
291293
/* Does everything the name implies */
292-
CI_LAB_Global.HkBuffer.HkTlm.Payload.CommandCounter++;
294+
CI_LAB_Global.HkTlm.Payload.CommandCounter++;
293295

294296
CFE_EVS_SendEvent(CI_LAB_COMMANDNOP_INF_EID, CFE_EVS_EventType_INFORMATION, "CI: NOOP command");
295297

@@ -319,11 +321,11 @@ int32 CI_LAB_ResetCounters(const CI_LAB_ResetCounters_t *data)
319321
/* telemetry, packetize it and send it to the housekeeping task via */
320322
/* the software bus */
321323
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
322-
int32 CI_LAB_ReportHousekeeping(const CFE_SB_CmdHdr_t *data)
324+
int32 CI_LAB_ReportHousekeeping(const CFE_MSG_CommandHeader_t *data)
323325
{
324-
CI_LAB_Global.HkBuffer.HkTlm.Payload.SocketConnected = CI_LAB_Global.SocketConnected;
325-
CFE_SB_TimeStampMsg(&CI_LAB_Global.HkBuffer.MsgHdr);
326-
CFE_SB_SendMsg(&CI_LAB_Global.HkBuffer.MsgHdr);
326+
CI_LAB_Global.HkTlm.Payload.SocketConnected = CI_LAB_Global.SocketConnected;
327+
CFE_SB_TimeStampMsg(&CI_LAB_Global.HkTlm.TlmHeader.Msg);
328+
CFE_SB_TransmitMsg(&CI_LAB_Global.HkTlm.TlmHeader.Msg, true);
327329
return CFE_SUCCESS;
328330

329331
} /* End of CI_LAB_ReportHousekeeping() */
@@ -339,12 +341,12 @@ int32 CI_LAB_ReportHousekeeping(const CFE_SB_CmdHdr_t *data)
339341
void CI_LAB_ResetCounters_Internal(void)
340342
{
341343
/* Status of commands processed by CI task */
342-
CI_LAB_Global.HkBuffer.HkTlm.Payload.CommandCounter = 0;
343-
CI_LAB_Global.HkBuffer.HkTlm.Payload.CommandErrorCounter = 0;
344+
CI_LAB_Global.HkTlm.Payload.CommandCounter = 0;
345+
CI_LAB_Global.HkTlm.Payload.CommandErrorCounter = 0;
344346

345347
/* Status of packets ingested by CI task */
346-
CI_LAB_Global.HkBuffer.HkTlm.Payload.IngestPackets = 0;
347-
CI_LAB_Global.HkBuffer.HkTlm.Payload.IngestErrors = 0;
348+
CI_LAB_Global.HkTlm.Payload.IngestPackets = 0;
349+
CI_LAB_Global.HkTlm.Payload.IngestErrors = 0;
348350

349351
return;
350352

@@ -367,14 +369,14 @@ void CI_LAB_ReadUpLink(void)
367369
if (status >= ((int32)CFE_SB_CMD_HDR_SIZE) && status <= ((int32)CI_LAB_MAX_INGEST))
368370
{
369371
CFE_ES_PerfLogEntry(CI_LAB_SOCKET_RCV_PERF_ID);
370-
CI_LAB_Global.HkBuffer.HkTlm.Payload.IngestPackets++;
371-
status = CFE_SB_SendMsg(&CI_LAB_Global.IngestBuffer.MsgHdr);
372+
CI_LAB_Global.HkTlm.Payload.IngestPackets++;
373+
status = CFE_SB_TransmitMsg(&CI_LAB_Global.IngestBuffer.Msg, false);
372374
CFE_ES_PerfLogExit(CI_LAB_SOCKET_RCV_PERF_ID);
373375
}
374376
else if (status > 0)
375377
{
376378
/* bad size, report as ingest error */
377-
CI_LAB_Global.HkBuffer.HkTlm.Payload.IngestErrors++;
379+
CI_LAB_Global.HkTlm.Payload.IngestErrors++;
378380
CFE_EVS_SendEvent(CI_LAB_INGEST_ERR_EID, CFE_EVS_EventType_ERROR,
379381
"CI: L%d, cmd %0x %0x dropped, bad length=%d\n", __LINE__,
380382
CI_LAB_Global.IngestBuffer.hwords[0], CI_LAB_Global.IngestBuffer.hwords[1], (int)status);
@@ -416,7 +418,7 @@ bool CI_LAB_VerifyCmdLength(CFE_MSG_Message_t *MsgPtr, CFE_MSG_Size_t ExpectedLe
416418
(unsigned int)CFE_SB_MsgIdToValue(MsgId), (unsigned int)FcnCode, (unsigned int)ActualLength,
417419
(unsigned int)ExpectedLength);
418420
result = false;
419-
CI_LAB_Global.HkBuffer.HkTlm.Payload.CommandErrorCounter++;
421+
CI_LAB_Global.HkTlm.Payload.CommandErrorCounter++;
420422
}
421423

422424
return (result);

fsw/src/ci_lab_app.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@
6363
*/
6464
void CI_Lab_AppMain(void);
6565
void CI_LAB_TaskInit(void);
66-
void CI_LAB_ProcessCommandPacket(void);
67-
void CI_LAB_ProcessGroundCommand(void);
66+
void CI_LAB_ProcessCommandPacket(CFE_SB_Buffer_t *SBBufPtr);
67+
void CI_LAB_ProcessGroundCommand(CFE_SB_Buffer_t *SBBufPtr);
6868
void CI_LAB_ResetCounters_Internal(void);
6969
void CI_LAB_ReadUpLink(void);
7070

fsw/src/ci_lab_msg.h

+3-5
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
*/
4242
typedef struct
4343
{
44-
uint8 CmdHeader[CFE_SB_CMD_HDR_SIZE];
44+
CFE_MSG_CommandHeader_t CmdHeader;
4545

4646
} CI_LAB_NoArgsCmd_t;
4747

@@ -74,12 +74,10 @@ typedef struct
7474

7575
typedef struct
7676
{
77-
CFE_SB_TlmHdr_t TlmHeader;
78-
CI_LAB_HkTlm_Payload_t Payload;
77+
CFE_MSG_TelemetryHeader_t TlmHeader;
78+
CI_LAB_HkTlm_Payload_t Payload;
7979
} CI_LAB_HkTlm_t;
8080

81-
#define CI_LAB_HK_TLM_LNGTH sizeof(CI_LAB_HkTlm_t)
82-
8381
#endif /* _ci_lab_msg_h_ */
8482

8583
/************************/

0 commit comments

Comments
 (0)