From 1980588e525a4b8ba57ebe2d5597d938c11ba42e Mon Sep 17 00:00:00 2001 From: Joseph Hickey Date: Fri, 7 Feb 2020 09:52:49 -0500 Subject: [PATCH 1/8] Fix #27: Remove CFDP PDU introspection from CI_LAB This code has numerous quality issues and has repeatedly been a maintenance problem, and also is of questionable usefulness. It was agreed in the CCB to drop this feature. --- fsw/src/ci_lab_app.c | 455 +--------------------------------------- fsw/src/ci_lab_app.h | 16 -- fsw/src/ci_lab_defs.h | 51 ----- fsw/src/ci_lab_events.h | 7 - fsw/src/ci_lab_msg.h | 47 +---- 5 files changed, 6 insertions(+), 570 deletions(-) delete mode 100644 fsw/src/ci_lab_defs.h diff --git a/fsw/src/ci_lab_app.c b/fsw/src/ci_lab_app.c index 88446a3..99fc84f 100644 --- a/fsw/src/ci_lab_app.c +++ b/fsw/src/ci_lab_app.c @@ -33,12 +33,9 @@ #include "ci_lab_perfids.h" #include "ci_lab_msgids.h" #include "ci_lab_msg.h" -#include "ci_lab_defs.h" #include "ci_lab_events.h" #include "ci_lab_version.h" -#include "cfe_platform_cfg.h" - /* ** CI global data... */ @@ -51,22 +48,6 @@ int CI_SocketID; struct sockaddr_in CI_SocketAddress; uint8 CI_IngestBuffer[CI_MAX_INGEST]; CFE_SB_Msg_t * CI_IngestPointer = (CFE_SB_Msg_t *)&CI_IngestBuffer[0]; -CFE_SB_MsgId_t PDUMessageID = 0; -bool adjustFileSize = false; -int PDUFileSizeAdjustment; -bool dropFileData = false; -int dropFileDataCnt; -bool dropEOF = false; -int dropEOFCnt; -bool dropFIN = false; -int dropFINCnt; -bool dropACK = false; -int dropACKCnt; -bool dropMetaData = false; -int dropMetaDataCnt; -bool dropNAK = false; -int dropNAKCnt; -bool corruptChecksum = false; static CFE_EVS_BinFilter_t CI_EventFilters[] = {/* Event ID mask */ {CI_SOCKETCREATE_ERR_EID, 0x0000}, {CI_SOCKETBIND_ERR_EID, 0x0000}, @@ -253,26 +234,6 @@ void CI_ProcessGroundCommand(void) CI_ResetCounters(); break; - case CI_MODIFY_PDU_FILESIZE_CC: - CI_ModifyFileSizeCmd(CIMsgPtr); - break; - - case CI_CORRUPT_PDU_CHECKSUM_CC: - CI_CorruptChecksumCmd(CIMsgPtr); - break; - - case CI_DROP_PDUS_CC: - CI_DropPDUCmd(CIMsgPtr); - break; - - case CI_CAPTURE_PDUS_CC: - CI_CapturePDUsCmd(CIMsgPtr); - break; - - case CI_STOP_PDU_CAPTURE_CC: - CI_StopPDUCaptureCmd(CIMsgPtr); - break; - /* default case already found during FC vs length test */ default: break; @@ -318,412 +279,11 @@ void CI_ResetCounters(void) CI_HkTelemetryPkt.IngestPackets = 0; CI_HkTelemetryPkt.IngestErrors = 0; - /* Status of packets ingested by CI task */ - CI_HkTelemetryPkt.FDPdusDropped = 0; - CI_HkTelemetryPkt.EOFPdusDropped = 0; - CI_HkTelemetryPkt.FINPdusDropped = 0; - CI_HkTelemetryPkt.ACKPdusDropped = 0; - CI_HkTelemetryPkt.MDPdusDropped = 0; - CI_HkTelemetryPkt.NAKPdusDropped = 0; - CI_HkTelemetryPkt.PDUsCaptured = 0; - CFE_EVS_SendEvent(CI_COMMANDRST_INF_EID, CFE_EVS_EventType_INFORMATION, "CI: RESET command"); return; } /* End of CI_ResetCounters() */ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ -/* */ -/* CI_ModifyFileSizeCmd() -- task ground command () */ -/* */ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ -void CI_ModifyFileSizeCmd(CFE_SB_MsgPtr_t msg) -{ - uint16 ExpectedLength = sizeof(CI_ModifyFileSizeCmd_t); - CI_ModifyFileSizeCmd_t *CmdPtr; - - /* - ** Verify command packet length... - */ - if (CI_VerifyCmdLength(msg, ExpectedLength)) - { - CmdPtr = ((CI_ModifyFileSizeCmd_t *)msg); - - /* Get the direction to modify */ - if (CmdPtr->Direction == PDU_SIZE_ADD) - PDUFileSizeAdjustment = CmdPtr->Amount; - else - PDUFileSizeAdjustment = 0 - CmdPtr->Amount; - - /* Set the flag to modify File Size */ - adjustFileSize = true; - - CI_HkTelemetryPkt.ci_command_count++; - CFE_EVS_SendEvent(CI_MOD_PDU_FILESIZE_CMD_EID, CFE_EVS_EventType_DEBUG, "CI: Modify PDU File Size\n"); - } - - return; - -} /* End of CI_ModifyFileSizeCmd() */ - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ -/* */ -/* CI_CorruptChecksumCmd() -- task ground command () */ -/* */ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ -void CI_CorruptChecksumCmd(CFE_SB_MsgPtr_t msg) -{ - uint16 ExpectedLength = sizeof(CI_NoArgsCmd_t); - - /* - ** Verify command packet length... - */ - if (CI_VerifyCmdLength(msg, ExpectedLength)) - { - /* Set the flag to modify File Size */ - corruptChecksum = true; - - CI_HkTelemetryPkt.ci_command_count++; - CFE_EVS_SendEvent(CI_CORRUPT_CHECKSUM_CMD_EID, CFE_EVS_EventType_DEBUG, "CI: Corrupt PDU Checksum\n"); - } - - return; - -} /* End of CI_CorruptChecksumCmd() */ - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ -/* */ -/* CI_DropPDUCmd() -- task ground command () */ -/* */ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ -void CI_DropPDUCmd(CFE_SB_MsgPtr_t msg) -{ - uint16 ExpectedLength = sizeof(CI_DropPDUCmd_t); - CI_DropPDUCmd_t *CmdPtr; - - /* - ** Verify command packet length... - */ - if (CI_VerifyCmdLength(msg, ExpectedLength)) - { - CmdPtr = ((CI_DropPDUCmd_t *)msg); - - /* Get the PDU Type */ - if (CmdPtr->PDUType == FILE_DATA_PDU) - { - dropFileData = true; - dropFileDataCnt = CmdPtr->PDUsToDrop; - } - else if (CmdPtr->PDUType == EOF_PDU) - { - dropEOF = true; - dropEOFCnt = CmdPtr->PDUsToDrop; - } - else if (CmdPtr->PDUType == FIN_PDU) - { - dropFIN = true; - dropFINCnt = CmdPtr->PDUsToDrop; - } - else if (CmdPtr->PDUType == ACK_PDU) - { - dropACK = true; - dropACKCnt = CmdPtr->PDUsToDrop; - } - else if (CmdPtr->PDUType == META_DATA_PDU) - { - dropMetaData = true; - dropMetaDataCnt = CmdPtr->PDUsToDrop; - } - else if (CmdPtr->PDUType == NAK_PDU) - { - dropNAK = true; - dropNAKCnt = CmdPtr->PDUsToDrop; - } - - CI_HkTelemetryPkt.ci_command_count++; - CFE_EVS_SendEvent(CI_DROP_PDU_CMD_EID, CFE_EVS_EventType_DEBUG, "CI: Drop PDU\n"); - } - - return; - -} /* End of CI_DropPDUCmd() */ - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ -/* */ -/* CI_CapturePDUsCmd() -- task ground command () */ -/* */ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ -void CI_CapturePDUsCmd(CFE_SB_MsgPtr_t msg) -{ - uint16 ExpectedLength = sizeof(CI_CapturePDUCmd_t); - CI_CapturePDUCmd_t *CmdPtr; - - /* - ** Verify command packet length... - */ - if (CI_VerifyCmdLength(msg, ExpectedLength)) - { - CmdPtr = ((CI_CapturePDUCmd_t *)msg); - - if (CmdPtr->PDUMsgID <= CFE_PLATFORM_SB_HIGHEST_VALID_MSGID) - { - /* Save the messageID in a global variable */ - PDUMessageID = CmdPtr->PDUMsgID; - - CI_HkTelemetryPkt.ci_command_count++; - CFE_EVS_SendEvent(CI_CAPTUREPDU_CMD_EID, CFE_EVS_EventType_DEBUG, - "CI: PDU Capture initialized for 0x%04X\n", CmdPtr->PDUMsgID); - } - else - { - CI_HkTelemetryPkt.ci_command_error_count++; - CFE_EVS_SendEvent(CI_INVALID_MSGID_ERR_EID, CFE_EVS_EventType_ERROR, "CI: Invalid PDU MsgID: 0x%04x\n", - CmdPtr->PDUMsgID); - } - } - - return; - -} /* End of CI_CapturePDUsCmd() */ - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ -/* */ -/* CI_StopPDUCaptureCmd() -- task ground command () */ -/* */ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ -void CI_StopPDUCaptureCmd(CFE_SB_MsgPtr_t msg) -{ - uint16 ExpectedLength = sizeof(CI_NoArgsCmd_t); - - /* - ** Verify command packet length... - */ - if (CI_VerifyCmdLength(msg, ExpectedLength)) - { - if (PDUMessageID != 0) - { - CI_HkTelemetryPkt.ci_command_count++; - CFE_EVS_SendEvent(CI_STOP_PDUCAPTURE_CMD_EID, CFE_EVS_EventType_DEBUG, - "CI: PDU Capture stopped for 0x%04X\n", PDUMessageID); - - /* Set the global data back to there initial values */ - PDUMessageID = 0; - adjustFileSize = false; - PDUFileSizeAdjustment = 0; - dropFileData = false; - dropFileDataCnt = 0; - dropEOF = false; - dropEOFCnt = 0; - dropFIN = false; - dropFINCnt = 0; - dropACK = false; - dropACKCnt = 0; - dropMetaData = false; - dropMetaDataCnt = 0; - dropNAK = false; - dropNAKCnt = 0; - corruptChecksum = false; - } - else - { - CI_HkTelemetryPkt.ci_command_error_count++; - CFE_EVS_SendEvent(CI_NOCAPTURE_ERR_EID, CFE_EVS_EventType_ERROR, "CI: PDU Capture is not enabled\n"); - } - } - - return; - -} /* End of CI_StopPDUCaptureCmd() */ - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ -/* */ -/* CI_ProcessPDU() -- */ -/* */ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ -void CI_ProcessPDU(void) -{ - CF_PDU_Hdr_t * PduHdrPtr; - uint8 * PduDataPtr; - uint8 * IncomingPduPtr; - uint8 PduData0; - uint8 EntityIdBytes, TransSeqBytes, PduHdrBytes; - CFE_SB_MsgId_t MessageID = CFE_SB_GetMsgId(CI_IngestPointer); - bool sendToSB = false; - uint32 * checkSumPtr; - uint32 * fileSizePtr; - - if (MessageID == PDUMessageID) - { - IncomingPduPtr = ((uint8 *)CI_IngestPointer); - if (CFE_TST(MessageID, 12) != 0) - { - IncomingPduPtr += CFE_SB_CMD_HDR_SIZE; - } - else - { - IncomingPduPtr += CFE_SB_TLM_HDR_SIZE; - } - - PduHdrPtr = (CF_PDU_Hdr_t *)IncomingPduPtr; - - /* calculate size of incoming pdu to ensure we don't overflow the buf */ - EntityIdBytes = ((PduHdrPtr->Octet4 >> 4) & 0x07) + 1; - TransSeqBytes = (PduHdrPtr->Octet4 & 0x07) + 1; - PduHdrBytes = 4 + (EntityIdBytes * 2) + TransSeqBytes; - - /* OS_printf("CI: Captured PDU with length = %d\n",PduHdrPtr->PDataLen); */ - - CI_HkTelemetryPkt.PDUsCaptured++; - - /* Check if a File Data PDU was rcv'd */ - if (CFE_TST(PduHdrPtr->Octet1, 4)) - { - OS_printf("CI: File Data PDU rcv'd\n"); - if ((dropFileData == true) && (dropFileDataCnt > 0)) - { - dropFileDataCnt--; - OS_printf("CI: File Data PDU dropped\n"); - CI_HkTelemetryPkt.FDPdusDropped++; - } - else - { - sendToSB = true; - dropFileData = false; - } - } - else - { - /* Not a File Data PDU */ - PduDataPtr = (uint8 *)PduHdrPtr + PduHdrBytes; - PduData0 = *PduDataPtr; - - OS_printf("CI: PDU Data Type = %d\n", PduData0); - switch (PduData0) - { - case 4: - OS_printf("CI: EOF PDU rcv'd\n"); - if ((dropEOF == true) && (dropEOFCnt > 0)) - { - dropEOFCnt--; - OS_printf("CI: EOF PDU dropped\n"); - CI_HkTelemetryPkt.EOFPdusDropped++; - } - else - { - sendToSB = true; - dropEOF = false; - } - - PduDataPtr += 2; - checkSumPtr = (uint32 *)PduDataPtr; - fileSizePtr = checkSumPtr + 1; - - if (corruptChecksum == true) - { - OS_printf("CI: good checksum = %x\n", (unsigned int)*checkSumPtr); - /* Corrupt the checksum */ - *checkSumPtr = 0x12345678; - OS_printf("CI: corrupted checksum = %x\n", (unsigned int)*checkSumPtr); - corruptChecksum = false; - } - - if (adjustFileSize == true) - { - OS_printf("CI: good file size = %d\n", (int)*fileSizePtr); - /* Adjust the file size */ - *fileSizePtr += PDUFileSizeAdjustment; - OS_printf("CI: adjusted file size = %d\n", (int)*fileSizePtr); - adjustFileSize = false; - } - - break; - - case 5: - OS_printf("CI: FIN PDU rcv'd\n"); - if ((dropFIN == true) && (dropFINCnt > 0)) - { - dropFINCnt--; - OS_printf("CI: FIN PDU dropped\n"); - CI_HkTelemetryPkt.FINPdusDropped++; - } - else - { - sendToSB = true; - dropFIN = false; - } - - break; - - case 6: - OS_printf("CI: ACK PDU rcv'd\n"); - if ((dropACK == true) && (dropACKCnt > 0)) - { - dropACKCnt--; - OS_printf("CI: ACK PDU dropped\n"); - CI_HkTelemetryPkt.ACKPdusDropped++; - } - else - { - sendToSB = true; - dropACK = false; - } - - break; - - case 7: - OS_printf("CI: Meta Data PDU rcv'd\n"); - if ((dropMetaData == true) && (dropMetaDataCnt > 0)) - { - dropMetaDataCnt--; - OS_printf("CI: Meta Data PDU dropped\n"); - CI_HkTelemetryPkt.MDPdusDropped++; - } - else - { - sendToSB = true; - dropMetaData = false; - } - - break; - - case 8: - OS_printf("CI: NAK PDU rcv'd\n"); - if ((dropNAK == true) && (dropNAKCnt > 0)) - { - dropNAKCnt--; - OS_printf("CI: NAK PDU dropped\n"); - CI_HkTelemetryPkt.NAKPdusDropped++; - } - else - { - sendToSB = true; - dropNAK = false; - } - - break; - - default: - break; - } - } - } - else - { - sendToSB = true; - } - - if (sendToSB == true) - { - CFE_ES_PerfLogEntry(CI_SOCKET_RCV_PERF_ID); - CI_HkTelemetryPkt.IngestPackets++; - CFE_SB_SendMsg(CI_IngestPointer); - CFE_ES_PerfLogExit(CI_SOCKET_RCV_PERF_ID); - } - - return; - -} /* End of CI_ProcessPDU() */ - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ /* */ /* CI_ReadUpLink() -- */ @@ -750,17 +310,10 @@ void CI_ReadUpLink(void) { if (status <= CI_MAX_INGEST) { - if (PDUMessageID != 0) - { - CI_ProcessPDU(); - } - else - { - CFE_ES_PerfLogEntry(CI_SOCKET_RCV_PERF_ID); - CI_HkTelemetryPkt.IngestPackets++; - CFE_SB_SendMsg(CI_IngestPointer); - CFE_ES_PerfLogExit(CI_SOCKET_RCV_PERF_ID); - } + CFE_ES_PerfLogEntry(CI_SOCKET_RCV_PERF_ID); + CI_HkTelemetryPkt.IngestPackets++; + CFE_SB_SendMsg(CI_IngestPointer); + CFE_ES_PerfLogExit(CI_SOCKET_RCV_PERF_ID); } else { diff --git a/fsw/src/ci_lab_app.h b/fsw/src/ci_lab_app.h index 6638fcd..ff8507e 100644 --- a/fsw/src/ci_lab_app.h +++ b/fsw/src/ci_lab_app.h @@ -54,16 +54,6 @@ /************************************************************************ ** Type Definitions *************************************************************************/ -typedef struct -{ - uint8 Octet1; - uint16 PDataLen; - uint8 Octet4; - uint16 SrcEntityId; - uint32 TransSeqNum; - uint16 DstEntityId; - -} OS_PACK CF_PDU_Hdr_t; /****************************************************************************/ /* @@ -78,12 +68,6 @@ void CI_ProcessCommandPacket(void); void CI_ProcessGroundCommand(void); void CI_ReportHousekeeping(void); void CI_ResetCounters(void); -void CI_ModifyFileSizeCmd(CFE_SB_MsgPtr_t msg); -void CI_CorruptChecksumCmd(CFE_SB_MsgPtr_t msg); -void CI_DropPDUCmd(CFE_SB_MsgPtr_t msg); -void CI_CapturePDUsCmd(CFE_SB_MsgPtr_t msg); -void CI_StopPDUCaptureCmd(CFE_SB_MsgPtr_t msg); -void CI_ProcessPDU(void); void CI_ReadUpLink(void); bool CI_VerifyCmdLength(CFE_SB_MsgPtr_t msg, uint16 ExpectedLength); diff --git a/fsw/src/ci_lab_defs.h b/fsw/src/ci_lab_defs.h deleted file mode 100644 index 155b612..0000000 --- a/fsw/src/ci_lab_defs.h +++ /dev/null @@ -1,51 +0,0 @@ -/******************************************************************************* -** -** GSC-18128-1, "Core Flight Executive Version 6.7" -** -** Copyright (c) 2006-2019 United States Government as represented by -** the Administrator of the National Aeronautics and Space Administration. -** All Rights Reserved. -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -** -** File: ci_lab_defs.h -** -** Purpose: -** Define CI Lab Definitions that other apps may need to use -** -** Notes: -** -*******************************************************************************/ -#ifndef _ci_lab_defs_h_ -#define _ci_lab_defs_h_ - -/* -** Definitions -*/ -/* File Size Command argument values */ -#define PDU_SIZE_ADD 0 -#define PDU_SIZE_SUBTRACT 1 - -/* PDU Type argument values */ -#define FILE_DATA_PDU 0 -#define EOF_PDU 1 -#define FIN_PDU 2 -#define ACK_PDU 3 -#define META_DATA_PDU 4 -#define NAK_PDU 5 - -#endif /* _ci_lab_defs_h_ */ - -/************************/ -/* End of File Comment */ -/************************/ diff --git a/fsw/src/ci_lab_events.h b/fsw/src/ci_lab_events.h index d75fee1..acc47f4 100644 --- a/fsw/src/ci_lab_events.h +++ b/fsw/src/ci_lab_events.h @@ -38,13 +38,6 @@ #define CI_COMMANDRST_INF_EID 6 #define CI_INGEST_INF_EID 7 #define CI_INGEST_ERR_EID 8 -#define CI_MOD_PDU_FILESIZE_CMD_EID 9 -#define CI_CORRUPT_CHECKSUM_CMD_EID 10 -#define CI_DROP_PDU_CMD_EID 11 -#define CI_CAPTUREPDU_CMD_EID 12 -#define CI_INVALID_MSGID_ERR_EID 13 -#define CI_STOP_PDUCAPTURE_CMD_EID 14 -#define CI_NOCAPTURE_ERR_EID 15 #define CI_LEN_ERR_EID 16 #endif /* _ci_lab_events_h_ */ diff --git a/fsw/src/ci_lab_msg.h b/fsw/src/ci_lab_msg.h index e9c19fd..7f64fd7 100644 --- a/fsw/src/ci_lab_msg.h +++ b/fsw/src/ci_lab_msg.h @@ -34,11 +34,6 @@ */ #define CI_NOOP_CC 0 #define CI_RESET_COUNTERS_CC 1 -#define CI_MODIFY_PDU_FILESIZE_CC 2 -#define CI_CORRUPT_PDU_CHECKSUM_CC 3 -#define CI_DROP_PDUS_CC 4 -#define CI_CAPTURE_PDUS_CC 5 -#define CI_STOP_PDU_CAPTURE_CC 6 /*************************************************************************/ /* @@ -50,38 +45,6 @@ typedef struct } CI_NoArgsCmd_t; -/* -** Type definition (Capture PDUs command structure) -*/ -typedef struct -{ - uint8 CmdHeader[CFE_SB_CMD_HDR_SIZE]; - CFE_SB_MsgId_t PDUMsgID; /* Message ID of the downlinked PDUs to capture */ - -} CI_CapturePDUCmd_t; - -/* -** Type definition (Modify PDU file size command structure) -*/ -typedef struct -{ - uint8 CmdHeader[CFE_SB_CMD_HDR_SIZE]; - uint16 Direction; /* Add or Subtract */ - uint16 Amount; /* The value to add or subtract from the file size*/ - -} CI_ModifyFileSizeCmd_t; - -/* -** Type definition (Drop PDU command structure) -*/ -typedef struct -{ - uint8 CmdHeader[CFE_SB_CMD_HDR_SIZE]; - uint8 PDUType; /* The Type of PDU to capture and drop */ - uint8 PDUsToDrop; /* The # of rcvd PDUs of the type to drop */ - -} CI_DropPDUCmd_t; - /*************************************************************************/ /* ** Type definition (CI_Lab housekeeping)... @@ -94,16 +57,10 @@ typedef struct uint8 ci_command_count; uint8 ci_xsums_enabled; uint8 SocketConnected; - uint8 FDPdusDropped; - uint8 EOFPdusDropped; - uint8 FINPdusDropped; - uint8 ACKPdusDropped; - uint8 MDPdusDropped; - uint8 NAKPdusDropped; - uint8 spare[2]; + uint8 Spare1[8]; uint32 IngestPackets; uint32 IngestErrors; - uint32 PDUsCaptured; + uint32 Spare2; } OS_PACK ci_hk_tlm_t; From 1f1c1789d49f1ee7151bdfbb7d8b70e51821bbf8 Mon Sep 17 00:00:00 2001 From: Joseph Hickey Date: Fri, 7 Feb 2020 12:09:42 -0500 Subject: [PATCH 2/8] Fix #23: Use OSAL Socket API for bind/receive This removes the need to use BSD socket calls directly within CI_LAB --- fsw/src/ci_lab_app.c | 64 +++++++++++++++++++++----------------------- fsw/src/ci_lab_app.h | 1 - 2 files changed, 31 insertions(+), 34 deletions(-) diff --git a/fsw/src/ci_lab_app.c b/fsw/src/ci_lab_app.c index 99fc84f..2457f75 100644 --- a/fsw/src/ci_lab_app.c +++ b/fsw/src/ci_lab_app.c @@ -44,10 +44,20 @@ bool CI_SocketConnected = false; ci_hk_tlm_t CI_HkTelemetryPkt; CFE_SB_PipeId_t CI_CommandPipe; CFE_SB_MsgPtr_t CIMsgPtr; -int CI_SocketID; -struct sockaddr_in CI_SocketAddress; -uint8 CI_IngestBuffer[CI_MAX_INGEST]; -CFE_SB_Msg_t * CI_IngestPointer = (CFE_SB_Msg_t *)&CI_IngestBuffer[0]; +uint32 CI_SocketID; +OS_SockAddr_t CI_SocketAddress; + +/* + * Declaring the CI_IngestBuffer as a union + * ensures it is aligned appropriately to + * store a CFE_SB_Msg_t type. + */ +union +{ + CFE_SB_Msg_t MsgHdr; + uint8 bytes[CI_MAX_INGEST]; + uint16 hwords[2]; +} CI_IngestBuffer; static CFE_EVS_BinFilter_t CI_EventFilters[] = {/* Event ID mask */ {CI_SOCKETCREATE_ERR_EID, 0x0000}, {CI_SOCKETBIND_ERR_EID, 0x0000}, @@ -110,7 +120,7 @@ void CI_Lab_AppMain(void) void CI_delete_callback(void) { OS_printf("CI delete callback -- Closing CI Network socket.\n"); - close(CI_SocketID); + OS_close(CI_SocketID); } /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ @@ -120,6 +130,8 @@ void CI_delete_callback(void) /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ void CI_TaskInit(void) { + int32 status; + CFE_ES_RegisterApp(); CFE_EVS_Register(CI_EventFilters, sizeof(CI_EventFilters) / sizeof(CFE_EVS_BinFilter_t), @@ -129,32 +141,25 @@ void CI_TaskInit(void) CFE_SB_Subscribe(CI_LAB_CMD_MID, CI_CommandPipe); CFE_SB_Subscribe(CI_LAB_SEND_HK_MID, CI_CommandPipe); - if ((CI_SocketID = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) + status = OS_SocketOpen(&CI_SocketID, OS_SocketDomain_INET, OS_SocketType_DATAGRAM); + if (status != OS_SUCCESS) { - CFE_EVS_SendEvent(CI_SOCKETCREATE_ERR_EID, CFE_EVS_EventType_ERROR, "CI: create socket failed = %d", errno); + CFE_EVS_SendEvent(CI_SOCKETCREATE_ERR_EID,CFE_EVS_EventType_ERROR,"CI: create socket failed = %d", (int)status); } else { - memset(&CI_SocketAddress, 0, sizeof(CI_SocketAddress)); - CI_SocketAddress.sin_family = AF_INET; - CI_SocketAddress.sin_addr.s_addr = htonl(INADDR_ANY); - CI_SocketAddress.sin_port = htons(cfgCI_PORT); + OS_SocketAddrInit(&CI_SocketAddress, OS_SocketDomain_INET); + OS_SocketAddrSetPort(&CI_SocketAddress, cfgCI_PORT); - if ((bind(CI_SocketID, (struct sockaddr *)&CI_SocketAddress, sizeof(CI_SocketAddress)) < 0)) + status = OS_SocketBind(CI_SocketID, &CI_SocketAddress); + + if ( status != OS_SUCCESS ) { - CFE_EVS_SendEvent(CI_SOCKETBIND_ERR_EID, CFE_EVS_EventType_ERROR, "CI: bind socket failed = %d", errno); + CFE_EVS_SendEvent(CI_SOCKETBIND_ERR_EID,CFE_EVS_EventType_ERROR,"CI: bind socket failed = %d", (int)status); } else { CI_SocketConnected = true; -#ifdef _HAVE_FCNTL_ - /* - ** Set the socket to non-blocking - ** This is not available to vxWorks, so it has to be - ** Conditionally compiled in - */ - fcntl(CI_SocketID, F_SETFL, O_NONBLOCK); -#endif } } @@ -291,20 +296,13 @@ void CI_ResetCounters(void) /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ void CI_ReadUpLink(void) { - socklen_t addr_len; - int i; - int status; - - addr_len = sizeof(CI_SocketAddress); - - memset(&CI_SocketAddress, 0, sizeof(CI_SocketAddress)); + int i; + int32 status; for (i = 0; i <= 10; i++) { - status = recvfrom(CI_SocketID, (char *)&CI_IngestBuffer[0], sizeof(CI_IngestBuffer), MSG_DONTWAIT, - (struct sockaddr *)&CI_SocketAddress, &addr_len); - - if ((status < 0) && (errno == EWOULDBLOCK)) + status = OS_SocketRecvFrom(CI_SocketID, CI_IngestBuffer.bytes, sizeof(CI_IngestBuffer), &CI_SocketAddress, OS_CHECK); + if (status < 0) break; /* no (more) messages */ else { @@ -312,7 +310,7 @@ void CI_ReadUpLink(void) { CFE_ES_PerfLogEntry(CI_SOCKET_RCV_PERF_ID); CI_HkTelemetryPkt.IngestPackets++; - CFE_SB_SendMsg(CI_IngestPointer); + CFE_SB_SendMsg(&CI_IngestBuffer.MsgHdr); CFE_ES_PerfLogExit(CI_SOCKET_RCV_PERF_ID); } else diff --git a/fsw/src/ci_lab_app.h b/fsw/src/ci_lab_app.h index ff8507e..bacd926 100644 --- a/fsw/src/ci_lab_app.h +++ b/fsw/src/ci_lab_app.h @@ -31,7 +31,6 @@ /* ** Required header files... */ -#include "network_includes.h" #include "common_types.h" #include "cfe_error.h" #include "cfe_evs.h" From 484412c7736cd2ee659f090e8c295c6056b31cdd Mon Sep 17 00:00:00 2001 From: Joseph Hickey Date: Fri, 7 Feb 2020 12:35:07 -0500 Subject: [PATCH 3/8] Fix #34: Follow recommended patterns for message handling Make the patterns in CI better match the patterns used in other modules (CFE core, Sample App, etc) - Separate each command into a separate handler function - Each command handler accepts a const pointer to the full message - Put Telemetry payload into a separate "Payload" sub-structure - Use naming conventions defined in conventions document Note the payload name changes only affect the FSW internal usage, the payload format for the ground system is not changed. --- fsw/src/ci_lab_app.c | 98 ++++++++++++++++++++++++++++++++------------ fsw/src/ci_lab_app.h | 5 +-- fsw/src/ci_lab_msg.h | 25 ++++++++--- 3 files changed, 93 insertions(+), 35 deletions(-) diff --git a/fsw/src/ci_lab_app.c b/fsw/src/ci_lab_app.c index 2457f75..9aa542f 100644 --- a/fsw/src/ci_lab_app.c +++ b/fsw/src/ci_lab_app.c @@ -65,6 +65,17 @@ static CFE_EVS_BinFilter_t CI_EventFilters[] = {/* Event ID mask */ {CI_COMMANDNOP_INF_EID, 0x0000}, {CI_COMMANDRST_INF_EID, 0x0000}, {CI_INGEST_INF_EID, 0x0000}, {CI_INGEST_ERR_EID, 0x0000}}; +/* + * Individual message handler function prototypes + * + * Per the recommended code pattern, these should accept a const pointer + * to a structure type which matches the message, and return an int32 + * where CFE_SUCCESS (0) indicates successful handling of the message. + */ +int32 CI_NoopCmd(const CI_NoopCmd_t *data); +int32 CI_ResetCountersCmd(const CI_ResetCountersCmd_t *data); +int32 CI_ReportHousekeeping(const CCSDS_CommandPacket_t *data); + /** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* CI_Lab_AppMain() -- Application entry point and main process loop */ /* Purpose: This is the Main task event loop for the Command Ingest Task */ @@ -201,11 +212,11 @@ void CI_ProcessCommandPacket(void) break; case CI_LAB_SEND_HK_MID: - CI_ReportHousekeeping(); + CI_ReportHousekeeping((const CCSDS_CommandPacket_t *)CIMsgPtr); break; default: - CI_HkTelemetryPkt.ci_command_error_count++; + CI_HkTelemetryPkt.Payload.CommandErrorCounter++; CFE_EVS_SendEvent(CI_COMMAND_ERR_EID, CFE_EVS_EventType_ERROR, "CI: invalid command packet,MID = 0x%x", MsgId); break; @@ -231,12 +242,11 @@ void CI_ProcessGroundCommand(void) switch (CommandCode) { case CI_NOOP_CC: - CI_HkTelemetryPkt.ci_command_count++; - CFE_EVS_SendEvent(CI_COMMANDNOP_INF_EID, CFE_EVS_EventType_INFORMATION, "CI: NOOP command"); + CI_NoopCmd((const CI_NoopCmd_t *)CIMsgPtr); break; case CI_RESET_COUNTERS_CC: - CI_ResetCounters(); + CI_ResetCountersCmd((const CI_ResetCountersCmd_t *)CIMsgPtr); break; /* default case already found during FC vs length test */ @@ -248,6 +258,38 @@ void CI_ProcessGroundCommand(void) } /* End of CI_ProcessGroundCommand() */ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/* Name: CI_NoopCmd */ +/* */ +/* Purpose: */ +/* Handle NOOP command packets */ +/* */ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +int32 CI_NoopCmd(const CI_NoopCmd_t *data) +{ + /* Does everything the name implies */ + CI_HkTelemetryPkt.Payload.CommandCounter++; + + CFE_EVS_SendEvent(CI_COMMANDNOP_INF_EID, CFE_EVS_EventType_INFORMATION, "CI: NOOP command"); + + return CFE_SUCCESS; +} + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/* Name: CI_ResetCountersCmd */ +/* */ +/* Purpose: */ +/* Handle ResetCounters command packets */ +/* */ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +int32 CI_ResetCountersCmd(const CI_ResetCountersCmd_t *data) +{ + CFE_EVS_SendEvent(CI_LAB_COMMANDRST_INF_EID, CFE_EVS_EventType_INFORMATION, "CI: RESET command"); + CI_ResetCounters(); + return CFE_SUCCESS; +} + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ /* Name: CI_ReportHousekeeping */ /* */ @@ -257,12 +299,12 @@ void CI_ProcessGroundCommand(void) /* telemetry, packetize it and send it to the housekeeping task via */ /* the software bus */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -void CI_ReportHousekeeping(void) +int32 CI_ReportHousekeeping(const CCSDS_CommandPacket_t *data) { - CI_HkTelemetryPkt.SocketConnected = CI_SocketConnected; + CI_HkTelemetryPkt.Payload.SocketConnected = CI_SocketConnected; CFE_SB_TimeStampMsg((CFE_SB_Msg_t *)&CI_HkTelemetryPkt); CFE_SB_SendMsg((CFE_SB_Msg_t *)&CI_HkTelemetryPkt); - return; + return CFE_SUCCESS; } /* End of CI_ReportHousekeeping() */ @@ -277,14 +319,13 @@ void CI_ReportHousekeeping(void) void CI_ResetCounters(void) { /* Status of commands processed by CI task */ - CI_HkTelemetryPkt.ci_command_count = 0; - CI_HkTelemetryPkt.ci_command_error_count = 0; + CI_HkTelemetryPkt.Payload.CommandCounter = 0; + CI_HkTelemetryPkt.Payload.CommandErrorCounter = 0; /* Status of packets ingested by CI task */ - CI_HkTelemetryPkt.IngestPackets = 0; - CI_HkTelemetryPkt.IngestErrors = 0; + CI_HkTelemetryPkt.Payload.IngestPackets = 0; + CI_HkTelemetryPkt.Payload.IngestErrors = 0; - CFE_EVS_SendEvent(CI_COMMANDRST_INF_EID, CFE_EVS_EventType_INFORMATION, "CI: RESET command"); return; } /* End of CI_ResetCounters() */ @@ -302,21 +343,24 @@ void CI_ReadUpLink(void) for (i = 0; i <= 10; i++) { status = OS_SocketRecvFrom(CI_SocketID, CI_IngestBuffer.bytes, sizeof(CI_IngestBuffer), &CI_SocketAddress, OS_CHECK); - if (status < 0) - break; /* no (more) messages */ + if (status >= ((int32)CFE_SB_CMD_HDR_SIZE) && + status <= ((int32)CI_MAX_INGEST)) + { + CFE_ES_PerfLogEntry(CI_SOCKET_RCV_PERF_ID); + CI_HkTelemetryPkt.Payload.IngestPackets++; + status = CFE_SB_SendMsg(&CI_IngestBuffer.MsgHdr); + CFE_ES_PerfLogExit(CI_SOCKET_RCV_PERF_ID); + } + else if (status > 0) + { + /* bad size, report as ingest error */ + CI_HkTelemetryPkt.Payload.IngestErrors++; + CFE_EVS_SendEvent(CI_INGEST_ERR_EID,CFE_EVS_EventType_ERROR, "CI: L%d, cmd %0x %0x dropped, bad length=%d\n", __LINE__, + CI_IngestBuffer.hwords[0], CI_IngestBuffer.hwords[1], (int)status); + } else { - if (status <= CI_MAX_INGEST) - { - CFE_ES_PerfLogEntry(CI_SOCKET_RCV_PERF_ID); - CI_HkTelemetryPkt.IngestPackets++; - CFE_SB_SendMsg(&CI_IngestBuffer.MsgHdr); - CFE_ES_PerfLogExit(CI_SOCKET_RCV_PERF_ID); - } - else - { - CI_HkTelemetryPkt.IngestErrors++; - } + break; /* no (more) messages */ } } @@ -346,7 +390,7 @@ bool CI_VerifyCmdLength(CFE_SB_MsgPtr_t msg, uint16 ExpectedLength) "Invalid msg length: ID = 0x%X, CC = %d, Len = %d, Expected = %d", MessageID, CommandCode, ActualLength, ExpectedLength); result = false; - CI_HkTelemetryPkt.ci_command_error_count++; + CI_HkTelemetryPkt.Payload.CommandErrorCounter++; } return (result); diff --git a/fsw/src/ci_lab_app.h b/fsw/src/ci_lab_app.h index bacd926..a95ed39 100644 --- a/fsw/src/ci_lab_app.h +++ b/fsw/src/ci_lab_app.h @@ -58,14 +58,13 @@ /* ** Local function prototypes... ** -** Note: Except for the entry point (CI_task_main), these +** Note: Except for the entry point (CI_Lab_AppMain), these ** functions are not called from any other source module. */ -void CI_task_main(void); +void CI_Lab_AppMain(void); void CI_TaskInit(void); void CI_ProcessCommandPacket(void); void CI_ProcessGroundCommand(void); -void CI_ReportHousekeeping(void); void CI_ResetCounters(void); void CI_ReadUpLink(void); diff --git a/fsw/src/ci_lab_msg.h b/fsw/src/ci_lab_msg.h index 7f64fd7..533f74a 100644 --- a/fsw/src/ci_lab_msg.h +++ b/fsw/src/ci_lab_msg.h @@ -45,23 +45,38 @@ typedef struct } CI_NoArgsCmd_t; +/* + * Neither the Noop nor ResetCounters command + * have any payload, but should still "reserve" a unique + * structure type to employ a consistent handler pattern. + * + * This matches the pattern in CFE core and other modules. + */ +typedef CI_NoArgsCmd_t CI_NoopCmd_t; +typedef CI_NoArgsCmd_t CI_ResetCountersCmd_t; + + /*************************************************************************/ /* ** Type definition (CI_Lab housekeeping)... */ typedef struct { - - uint8 TlmHeader[CFE_SB_TLM_HDR_SIZE]; - uint8 ci_command_error_count; - uint8 ci_command_count; - uint8 ci_xsums_enabled; + uint8 CommandErrorCounter; + uint8 CommandCounter; + uint8 EnableChecksums; uint8 SocketConnected; uint8 Spare1[8]; uint32 IngestPackets; uint32 IngestErrors; uint32 Spare2; +} CI_HkTlm_Payload_t; + +typedef struct +{ + uint8 TlmHeader[CFE_SB_TLM_HDR_SIZE]; + CI_HkTlm_Payload_t Payload; } OS_PACK ci_hk_tlm_t; #define CI_LAB_HK_TLM_LNGTH sizeof(ci_hk_tlm_t) From a9c51f15da5fe9de5df02294eff7a69912c49d5d Mon Sep 17 00:00:00 2001 From: Joseph Hickey Date: Fri, 7 Feb 2020 20:14:58 -0500 Subject: [PATCH 4/8] Fix #36: Add CI_LAB namespace to all identifiers Add a global structure called "CI_LAB_Global" for all globals, getting them out of the global namespace. All other identifiers that remain in the global namespace should be prefixed consistently with CI_LAB_ to match the name of the app. --- fsw/mission_inc/ci_lab_perfids.h | 4 +- fsw/src/ci_lab_app.c | 217 +++++++++++++++++-------------- fsw/src/ci_lab_app.h | 20 +-- fsw/src/ci_lab_events.h | 20 +-- fsw/src/ci_lab_msg.h | 22 ++-- 5 files changed, 150 insertions(+), 133 deletions(-) diff --git a/fsw/mission_inc/ci_lab_perfids.h b/fsw/mission_inc/ci_lab_perfids.h index a9552cd..a9bdeae 100644 --- a/fsw/mission_inc/ci_lab_perfids.h +++ b/fsw/mission_inc/ci_lab_perfids.h @@ -29,8 +29,8 @@ #ifndef _ci_lab_perfids_h_ #define _ci_lab_perfids_h_ -#define CI_MAIN_TASK_PERF_ID 32 -#define CI_SOCKET_RCV_PERF_ID 33 +#define CI_LAB_MAIN_TASK_PERF_ID 32 +#define CI_LAB_SOCKET_RCV_PERF_ID 33 #endif /* _ci_lab_perfids_h_ */ diff --git a/fsw/src/ci_lab_app.c b/fsw/src/ci_lab_app.c index 9aa542f..1e951ac 100644 --- a/fsw/src/ci_lab_app.c +++ b/fsw/src/ci_lab_app.c @@ -40,30 +40,45 @@ ** CI global data... */ -bool CI_SocketConnected = false; -ci_hk_tlm_t CI_HkTelemetryPkt; -CFE_SB_PipeId_t CI_CommandPipe; -CFE_SB_MsgPtr_t CIMsgPtr; -uint32 CI_SocketID; -OS_SockAddr_t CI_SocketAddress; - /* - * Declaring the CI_IngestBuffer as a union + * Declaring the CI_LAB_IngestBuffer as a union * ensures it is aligned appropriately to * store a CFE_SB_Msg_t type. */ -union +typedef union { CFE_SB_Msg_t MsgHdr; - uint8 bytes[CI_MAX_INGEST]; + uint8 bytes[CI_LAB_MAX_INGEST]; uint16 hwords[2]; -} CI_IngestBuffer; +} CI_LAB_IngestBuffer_t; + +typedef union +{ + CFE_SB_Msg_t MsgHdr; + CI_LAB_HkTlm_t HkTlm; +} CI_LAB_HkTlm_Buffer_t; + +typedef struct +{ + bool SocketConnected; + CFE_SB_PipeId_t CommandPipe; + CFE_SB_MsgPtr_t MsgPtr; + uint32 SocketID; + OS_SockAddr_t SocketAddress; + + CI_LAB_HkTlm_Buffer_t HkBuffer; + CI_LAB_IngestBuffer_t IngestBuffer; +} CI_LAB_GlobalData_t; + + +CI_LAB_GlobalData_t CI_LAB_Global; + +static CFE_EVS_BinFilter_t CI_LAB_EventFilters[] = {/* Event ID mask */ + {CI_LAB_SOCKETCREATE_ERR_EID, 0x0000}, {CI_LAB_SOCKETBIND_ERR_EID, 0x0000}, + {CI_LAB_STARTUP_INF_EID, 0x0000}, {CI_LAB_COMMAND_ERR_EID, 0x0000}, + {CI_LAB_COMMANDNOP_INF_EID, 0x0000}, {CI_LAB_COMMANDRST_INF_EID, 0x0000}, + {CI_LAB_INGEST_INF_EID, 0x0000}, {CI_LAB_INGEST_ERR_EID, 0x0000}}; -static CFE_EVS_BinFilter_t CI_EventFilters[] = {/* Event ID mask */ - {CI_SOCKETCREATE_ERR_EID, 0x0000}, {CI_SOCKETBIND_ERR_EID, 0x0000}, - {CI_STARTUP_INF_EID, 0x0000}, {CI_COMMAND_ERR_EID, 0x0000}, - {CI_COMMANDNOP_INF_EID, 0x0000}, {CI_COMMANDRST_INF_EID, 0x0000}, - {CI_INGEST_INF_EID, 0x0000}, {CI_INGEST_ERR_EID, 0x0000}}; /* * Individual message handler function prototypes @@ -72,9 +87,9 @@ static CFE_EVS_BinFilter_t CI_EventFilters[] = {/* Event ID mask */ * to a structure type which matches the message, and return an int32 * where CFE_SUCCESS (0) indicates successful handling of the message. */ -int32 CI_NoopCmd(const CI_NoopCmd_t *data); -int32 CI_ResetCountersCmd(const CI_ResetCountersCmd_t *data); -int32 CI_ReportHousekeeping(const CCSDS_CommandPacket_t *data); +int32 CI_LAB_Noop(const CI_LAB_Noop_t *data); +int32 CI_LAB_ResetCounters(const CI_LAB_ResetCounters_t *data); +int32 CI_LAB_ReportHousekeeping(const CCSDS_CommandPacket_t *data); /** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* CI_Lab_AppMain() -- Application entry point and main process loop */ @@ -91,31 +106,31 @@ void CI_Lab_AppMain(void) int32 status; uint32 RunStatus = CFE_ES_RunStatus_APP_RUN; - CFE_ES_PerfLogEntry(CI_MAIN_TASK_PERF_ID); + CFE_ES_PerfLogEntry(CI_LAB_MAIN_TASK_PERF_ID); - CI_TaskInit(); + CI_LAB_TaskInit(); /* ** CI Runloop */ while (CFE_ES_RunLoop(&RunStatus) == true) { - CFE_ES_PerfLogExit(CI_MAIN_TASK_PERF_ID); + CFE_ES_PerfLogExit(CI_LAB_MAIN_TASK_PERF_ID); /* Pend on receipt of command packet -- timeout set to 500 millisecs */ - status = CFE_SB_RcvMsg(&CIMsgPtr, CI_CommandPipe, 500); + status = CFE_SB_RcvMsg(&CI_LAB_Global.MsgPtr, CI_LAB_Global.CommandPipe, 500); - CFE_ES_PerfLogEntry(CI_MAIN_TASK_PERF_ID); + CFE_ES_PerfLogEntry(CI_LAB_MAIN_TASK_PERF_ID); if (status == CFE_SUCCESS) { - CI_ProcessCommandPacket(); + CI_LAB_ProcessCommandPacket(); } /* Regardless of packet vs timeout, always process uplink queue */ - if (CI_SocketConnected) + if (CI_LAB_Global.SocketConnected) { - CI_ReadUpLink(); + CI_LAB_ReadUpLink(); } } @@ -128,68 +143,70 @@ void CI_Lab_AppMain(void) ** This function will be called in the event that the CI app is killed. ** It will close the network socket for CI */ -void CI_delete_callback(void) +void CI_LAB_delete_callback(void) { OS_printf("CI delete callback -- Closing CI Network socket.\n"); - OS_close(CI_SocketID); + OS_close(CI_LAB_Global.SocketID); } /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* */ -/* CI_TaskInit() -- CI initialization */ +/* CI_LAB_TaskInit() -- CI initialization */ /* */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ -void CI_TaskInit(void) +void CI_LAB_TaskInit(void) { int32 status; + memset(&CI_LAB_Global, 0, sizeof(CI_LAB_Global)); + CFE_ES_RegisterApp(); - CFE_EVS_Register(CI_EventFilters, sizeof(CI_EventFilters) / sizeof(CFE_EVS_BinFilter_t), + CFE_EVS_Register(CI_LAB_EventFilters, sizeof(CI_LAB_EventFilters) / sizeof(CFE_EVS_BinFilter_t), CFE_EVS_EventFilter_BINARY); - CFE_SB_CreatePipe(&CI_CommandPipe, CI_PIPE_DEPTH, "CI_LAB_CMD_PIPE"); - CFE_SB_Subscribe(CI_LAB_CMD_MID, CI_CommandPipe); - CFE_SB_Subscribe(CI_LAB_SEND_HK_MID, CI_CommandPipe); + CFE_SB_CreatePipe(&CI_LAB_Global.CommandPipe, CI_LAB_PIPE_DEPTH, "CI_LAB_CMD_PIPE"); + CFE_SB_Subscribe(CI_LAB_CMD_MID, CI_LAB_Global.CommandPipe); + CFE_SB_Subscribe(CI_LAB_SEND_HK_MID, CI_LAB_Global.CommandPipe); - status = OS_SocketOpen(&CI_SocketID, OS_SocketDomain_INET, OS_SocketType_DATAGRAM); + status = OS_SocketOpen(&CI_LAB_Global.SocketID, OS_SocketDomain_INET, OS_SocketType_DATAGRAM); if (status != OS_SUCCESS) { - CFE_EVS_SendEvent(CI_SOCKETCREATE_ERR_EID,CFE_EVS_EventType_ERROR,"CI: create socket failed = %d", (int)status); + CFE_EVS_SendEvent(CI_LAB_SOCKETCREATE_ERR_EID,CFE_EVS_EventType_ERROR,"CI: create socket failed = %d", (int)status); } else { - OS_SocketAddrInit(&CI_SocketAddress, OS_SocketDomain_INET); - OS_SocketAddrSetPort(&CI_SocketAddress, cfgCI_PORT); + OS_SocketAddrInit(&CI_LAB_Global.SocketAddress, OS_SocketDomain_INET); + OS_SocketAddrSetPort(&CI_LAB_Global.SocketAddress, cfgCI_LAB_PORT); - status = OS_SocketBind(CI_SocketID, &CI_SocketAddress); + status = OS_SocketBind(CI_LAB_Global.SocketID, &CI_LAB_Global.SocketAddress); if ( status != OS_SUCCESS ) { - CFE_EVS_SendEvent(CI_SOCKETBIND_ERR_EID,CFE_EVS_EventType_ERROR,"CI: bind socket failed = %d", (int)status); + CFE_EVS_SendEvent(CI_LAB_SOCKETBIND_ERR_EID,CFE_EVS_EventType_ERROR,"CI: bind socket failed = %d", (int)status); } else { - CI_SocketConnected = true; + CI_LAB_Global.SocketConnected = true; } } - CI_ResetCounters(); + CI_LAB_ResetCounters_Internal(); /* ** Install the delete handler */ - OS_TaskInstallDeleteHandler(&CI_delete_callback); + OS_TaskInstallDeleteHandler(&CI_LAB_delete_callback); - CFE_SB_InitMsg(&CI_HkTelemetryPkt, CI_LAB_HK_TLM_MID, CI_LAB_HK_TLM_LNGTH, true); + CFE_SB_InitMsg(&CI_LAB_Global.HkBuffer.HkTlm, CI_LAB_HK_TLM_MID, CI_LAB_HK_TLM_LNGTH, true); - CFE_EVS_SendEvent(CI_STARTUP_INF_EID, CFE_EVS_EventType_INFORMATION, "CI Lab Initialized. Version %d.%d.%d.%d", + CFE_EVS_SendEvent(CI_LAB_STARTUP_INF_EID, CFE_EVS_EventType_INFORMATION, "CI Lab Initialized. Version %d.%d.%d.%d", CI_LAB_MAJOR_VERSION, CI_LAB_MINOR_VERSION, CI_LAB_REVISION, CI_LAB_MISSION_REV); -} /* End of CI_TaskInit() */ +} /* End of CI_LAB_TaskInit() */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ -/* Name: CI_ProcessCommandPacket */ +/* Name: CI_LAB_ProcessCommandPacket */ /* */ /* Purpose: */ /* This routine will process any packet that is received on the CI command*/ @@ -200,53 +217,53 @@ void CI_TaskInit(void) /* 3. Request for housekeeping telemetry packet (from HS task) */ /* */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -void CI_ProcessCommandPacket(void) +void CI_LAB_ProcessCommandPacket(void) { CFE_SB_MsgId_t MsgId; - MsgId = CFE_SB_GetMsgId(CIMsgPtr); + MsgId = CFE_SB_GetMsgId(CI_LAB_Global.MsgPtr); switch (MsgId) { case CI_LAB_CMD_MID: - CI_ProcessGroundCommand(); + CI_LAB_ProcessGroundCommand(); break; case CI_LAB_SEND_HK_MID: - CI_ReportHousekeeping((const CCSDS_CommandPacket_t *)CIMsgPtr); + CI_LAB_ReportHousekeeping((const CCSDS_CommandPacket_t *)CI_LAB_Global.MsgPtr); break; default: - CI_HkTelemetryPkt.Payload.CommandErrorCounter++; - CFE_EVS_SendEvent(CI_COMMAND_ERR_EID, CFE_EVS_EventType_ERROR, "CI: invalid command packet,MID = 0x%x", + CI_LAB_Global.HkBuffer.HkTlm.Payload.CommandErrorCounter++; + CFE_EVS_SendEvent(CI_LAB_COMMAND_ERR_EID, CFE_EVS_EventType_ERROR, "CI: invalid command packet,MID = 0x%x", MsgId); break; } return; -} /* End CI_ProcessCommandPacket */ +} /* End CI_LAB_ProcessCommandPacket */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ /* */ -/* CI_ProcessGroundCommand() -- CI ground commands */ +/* CI_LAB_ProcessGroundCommand() -- CI ground commands */ /* */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ -void CI_ProcessGroundCommand(void) +void CI_LAB_ProcessGroundCommand(void) { uint16 CommandCode; - CommandCode = CFE_SB_GetCmdCode(CIMsgPtr); + CommandCode = CFE_SB_GetCmdCode(CI_LAB_Global.MsgPtr); /* Process "known" CI task ground commands */ switch (CommandCode) { - case CI_NOOP_CC: - CI_NoopCmd((const CI_NoopCmd_t *)CIMsgPtr); + case CI_LAB_NOOP_CC: + CI_LAB_Noop((const CI_LAB_Noop_t *)CI_LAB_Global.MsgPtr); break; - case CI_RESET_COUNTERS_CC: - CI_ResetCountersCmd((const CI_ResetCountersCmd_t *)CIMsgPtr); + case CI_LAB_RESET_COUNTERS_CC: + CI_LAB_ResetCounters((const CI_LAB_ResetCounters_t *)CI_LAB_Global.MsgPtr); break; /* default case already found during FC vs length test */ @@ -256,42 +273,42 @@ void CI_ProcessGroundCommand(void) return; -} /* End of CI_ProcessGroundCommand() */ +} /* End of CI_LAB_ProcessGroundCommand() */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -/* Name: CI_NoopCmd */ +/* Name: CI_LAB_Noop */ /* */ /* Purpose: */ /* Handle NOOP command packets */ /* */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -int32 CI_NoopCmd(const CI_NoopCmd_t *data) +int32 CI_LAB_Noop(const CI_LAB_Noop_t *data) { /* Does everything the name implies */ - CI_HkTelemetryPkt.Payload.CommandCounter++; + CI_LAB_Global.HkBuffer.HkTlm.Payload.CommandCounter++; - CFE_EVS_SendEvent(CI_COMMANDNOP_INF_EID, CFE_EVS_EventType_INFORMATION, "CI: NOOP command"); + CFE_EVS_SendEvent(CI_LAB_COMMANDNOP_INF_EID, CFE_EVS_EventType_INFORMATION, "CI: NOOP command"); return CFE_SUCCESS; } /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -/* Name: CI_ResetCountersCmd */ +/* Name: CI_LAB_ResetCounters */ /* */ /* Purpose: */ /* Handle ResetCounters command packets */ /* */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -int32 CI_ResetCountersCmd(const CI_ResetCountersCmd_t *data) +int32 CI_LAB_ResetCounters(const CI_LAB_ResetCounters_t *data) { CFE_EVS_SendEvent(CI_LAB_COMMANDRST_INF_EID, CFE_EVS_EventType_INFORMATION, "CI: RESET command"); - CI_ResetCounters(); + CI_LAB_ResetCounters_Internal(); return CFE_SUCCESS; } /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ -/* Name: CI_ReportHousekeeping */ +/* Name: CI_LAB_ReportHousekeeping */ /* */ /* Purpose: */ /* This function is triggered in response to a task telemetry request */ @@ -299,64 +316,64 @@ int32 CI_ResetCountersCmd(const CI_ResetCountersCmd_t *data) /* telemetry, packetize it and send it to the housekeeping task via */ /* the software bus */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -int32 CI_ReportHousekeeping(const CCSDS_CommandPacket_t *data) +int32 CI_LAB_ReportHousekeeping(const CCSDS_CommandPacket_t *data) { - CI_HkTelemetryPkt.Payload.SocketConnected = CI_SocketConnected; - CFE_SB_TimeStampMsg((CFE_SB_Msg_t *)&CI_HkTelemetryPkt); - CFE_SB_SendMsg((CFE_SB_Msg_t *)&CI_HkTelemetryPkt); + CI_LAB_Global.HkBuffer.HkTlm.Payload.SocketConnected = CI_LAB_Global.SocketConnected; + CFE_SB_TimeStampMsg(&CI_LAB_Global.HkBuffer.MsgHdr); + CFE_SB_SendMsg(&CI_LAB_Global.HkBuffer.MsgHdr); return CFE_SUCCESS; -} /* End of CI_ReportHousekeeping() */ +} /* End of CI_LAB_ReportHousekeeping() */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ -/* Name: CI_ResetCounters */ +/* Name: CI_LAB_ResetCounters */ /* */ /* Purpose: */ /* This function resets all the global counter variables that are */ /* part of the task telemetry. */ /* */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -void CI_ResetCounters(void) +void CI_LAB_ResetCounters_Internal(void) { /* Status of commands processed by CI task */ - CI_HkTelemetryPkt.Payload.CommandCounter = 0; - CI_HkTelemetryPkt.Payload.CommandErrorCounter = 0; + CI_LAB_Global.HkBuffer.HkTlm.Payload.CommandCounter = 0; + CI_LAB_Global.HkBuffer.HkTlm.Payload.CommandErrorCounter = 0; /* Status of packets ingested by CI task */ - CI_HkTelemetryPkt.Payload.IngestPackets = 0; - CI_HkTelemetryPkt.Payload.IngestErrors = 0; + CI_LAB_Global.HkBuffer.HkTlm.Payload.IngestPackets = 0; + CI_LAB_Global.HkBuffer.HkTlm.Payload.IngestErrors = 0; return; -} /* End of CI_ResetCounters() */ +} /* End of CI_LAB_ResetCounters() */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ /* */ -/* CI_ReadUpLink() -- */ +/* CI_LAB_ReadUpLink() -- */ /* */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ -void CI_ReadUpLink(void) +void CI_LAB_ReadUpLink(void) { int i; int32 status; for (i = 0; i <= 10; i++) { - status = OS_SocketRecvFrom(CI_SocketID, CI_IngestBuffer.bytes, sizeof(CI_IngestBuffer), &CI_SocketAddress, OS_CHECK); + status = OS_SocketRecvFrom(CI_LAB_Global.SocketID, CI_LAB_Global.IngestBuffer.bytes, sizeof(CI_LAB_Global.IngestBuffer), &CI_LAB_Global.SocketAddress, OS_CHECK); if (status >= ((int32)CFE_SB_CMD_HDR_SIZE) && - status <= ((int32)CI_MAX_INGEST)) + status <= ((int32)CI_LAB_MAX_INGEST)) { - CFE_ES_PerfLogEntry(CI_SOCKET_RCV_PERF_ID); - CI_HkTelemetryPkt.Payload.IngestPackets++; - status = CFE_SB_SendMsg(&CI_IngestBuffer.MsgHdr); - CFE_ES_PerfLogExit(CI_SOCKET_RCV_PERF_ID); + CFE_ES_PerfLogEntry(CI_LAB_SOCKET_RCV_PERF_ID); + CI_LAB_Global.HkBuffer.HkTlm.Payload.IngestPackets++; + status = CFE_SB_SendMsg(&CI_LAB_Global.IngestBuffer.MsgHdr); + CFE_ES_PerfLogExit(CI_LAB_SOCKET_RCV_PERF_ID); } else if (status > 0) { /* bad size, report as ingest error */ - CI_HkTelemetryPkt.Payload.IngestErrors++; - CFE_EVS_SendEvent(CI_INGEST_ERR_EID,CFE_EVS_EventType_ERROR, "CI: L%d, cmd %0x %0x dropped, bad length=%d\n", __LINE__, - CI_IngestBuffer.hwords[0], CI_IngestBuffer.hwords[1], (int)status); + CI_LAB_Global.HkBuffer.HkTlm.Payload.IngestErrors++; + CFE_EVS_SendEvent(CI_LAB_INGEST_ERR_EID,CFE_EVS_EventType_ERROR, "CI: L%d, cmd %0x %0x dropped, bad length=%d\n", __LINE__, + CI_LAB_Global.IngestBuffer.hwords[0], CI_LAB_Global.IngestBuffer.hwords[1], (int)status); } else { @@ -366,14 +383,14 @@ void CI_ReadUpLink(void) return; -} /* End of CI_ReadUpLink() */ +} /* End of CI_LAB_ReadUpLink() */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ /* */ -/* CI_VerifyCmdLength() -- Verify command packet length */ +/* CI_LAB_VerifyCmdLength() -- Verify command packet length */ /* */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ -bool CI_VerifyCmdLength(CFE_SB_MsgPtr_t msg, uint16 ExpectedLength) +bool CI_LAB_VerifyCmdLength(CFE_SB_MsgPtr_t msg, uint16 ExpectedLength) { bool result = true; uint16 ActualLength = CFE_SB_GetTotalMsgLength(msg); @@ -386,13 +403,13 @@ bool CI_VerifyCmdLength(CFE_SB_MsgPtr_t msg, uint16 ExpectedLength) CFE_SB_MsgId_t MessageID = CFE_SB_GetMsgId(msg); uint16 CommandCode = CFE_SB_GetCmdCode(msg); - CFE_EVS_SendEvent(CI_LEN_ERR_EID, CFE_EVS_EventType_ERROR, + CFE_EVS_SendEvent(CI_LAB_LEN_ERR_EID, CFE_EVS_EventType_ERROR, "Invalid msg length: ID = 0x%X, CC = %d, Len = %d, Expected = %d", MessageID, CommandCode, ActualLength, ExpectedLength); result = false; - CI_HkTelemetryPkt.Payload.CommandErrorCounter++; + CI_LAB_Global.HkBuffer.HkTlm.Payload.CommandErrorCounter++; } return (result); -} /* End of CI_VerifyCmdLength() */ +} /* End of CI_LAB_VerifyCmdLength() */ diff --git a/fsw/src/ci_lab_app.h b/fsw/src/ci_lab_app.h index a95ed39..8c169c2 100644 --- a/fsw/src/ci_lab_app.h +++ b/fsw/src/ci_lab_app.h @@ -46,9 +46,9 @@ /****************************************************************************/ -#define cfgCI_PORT 1234 -#define CI_MAX_INGEST 768 -#define CI_PIPE_DEPTH 32 +#define cfgCI_LAB_PORT 1234 +#define CI_LAB_MAX_INGEST 768 +#define CI_LAB_PIPE_DEPTH 32 /************************************************************************ ** Type Definitions @@ -58,16 +58,16 @@ /* ** Local function prototypes... ** -** Note: Except for the entry point (CI_Lab_AppMain), these +** Note: Except for the entry point (CI_LAB_AppMain), these ** functions are not called from any other source module. */ void CI_Lab_AppMain(void); -void CI_TaskInit(void); -void CI_ProcessCommandPacket(void); -void CI_ProcessGroundCommand(void); -void CI_ResetCounters(void); -void CI_ReadUpLink(void); +void CI_LAB_TaskInit(void); +void CI_LAB_ProcessCommandPacket(void); +void CI_LAB_ProcessGroundCommand(void); +void CI_LAB_ResetCounters_Internal(void); +void CI_LAB_ReadUpLink(void); -bool CI_VerifyCmdLength(CFE_SB_MsgPtr_t msg, uint16 ExpectedLength); +bool CI_LAB_VerifyCmdLength(CFE_SB_MsgPtr_t msg, uint16 ExpectedLength); #endif /* _ci_lab_app_h_ */ diff --git a/fsw/src/ci_lab_events.h b/fsw/src/ci_lab_events.h index acc47f4..1b3b77f 100644 --- a/fsw/src/ci_lab_events.h +++ b/fsw/src/ci_lab_events.h @@ -29,16 +29,16 @@ #ifndef _ci_lab_events_h_ #define _ci_lab_events_h_ -#define CI_RESERVED_EID 0 -#define CI_SOCKETCREATE_ERR_EID 1 -#define CI_SOCKETBIND_ERR_EID 2 -#define CI_STARTUP_INF_EID 3 -#define CI_COMMAND_ERR_EID 4 -#define CI_COMMANDNOP_INF_EID 5 -#define CI_COMMANDRST_INF_EID 6 -#define CI_INGEST_INF_EID 7 -#define CI_INGEST_ERR_EID 8 -#define CI_LEN_ERR_EID 16 +#define CI_LAB_RESERVED_EID 0 +#define CI_LAB_SOCKETCREATE_ERR_EID 1 +#define CI_LAB_SOCKETBIND_ERR_EID 2 +#define CI_LAB_STARTUP_INF_EID 3 +#define CI_LAB_COMMAND_ERR_EID 4 +#define CI_LAB_COMMANDNOP_INF_EID 5 +#define CI_LAB_COMMANDRST_INF_EID 6 +#define CI_LAB_INGEST_INF_EID 7 +#define CI_LAB_INGEST_ERR_EID 8 +#define CI_LAB_LEN_ERR_EID 16 #endif /* _ci_lab_events_h_ */ diff --git a/fsw/src/ci_lab_msg.h b/fsw/src/ci_lab_msg.h index 533f74a..c238214 100644 --- a/fsw/src/ci_lab_msg.h +++ b/fsw/src/ci_lab_msg.h @@ -30,10 +30,10 @@ #define _ci_lab_msg_h_ /* -** CI_Lab command codes +** CI_LAB_Lab command codes */ -#define CI_NOOP_CC 0 -#define CI_RESET_COUNTERS_CC 1 +#define CI_LAB_NOOP_CC 0 +#define CI_LAB_RESET_COUNTERS_CC 1 /*************************************************************************/ /* @@ -43,7 +43,7 @@ typedef struct { uint8 CmdHeader[CFE_SB_CMD_HDR_SIZE]; -} CI_NoArgsCmd_t; +} CI_LAB_NoArgsCmd_t; /* * Neither the Noop nor ResetCounters command @@ -52,13 +52,13 @@ typedef struct * * This matches the pattern in CFE core and other modules. */ -typedef CI_NoArgsCmd_t CI_NoopCmd_t; -typedef CI_NoArgsCmd_t CI_ResetCountersCmd_t; +typedef CI_LAB_NoArgsCmd_t CI_LAB_Noop_t; +typedef CI_LAB_NoArgsCmd_t CI_LAB_ResetCounters_t; /*************************************************************************/ /* -** Type definition (CI_Lab housekeeping)... +** Type definition (CI_LAB_Lab housekeeping)... */ typedef struct { @@ -71,15 +71,15 @@ typedef struct uint32 IngestErrors; uint32 Spare2; -} CI_HkTlm_Payload_t; +} CI_LAB_HkTlm_Payload_t; typedef struct { uint8 TlmHeader[CFE_SB_TLM_HDR_SIZE]; - CI_HkTlm_Payload_t Payload; -} OS_PACK ci_hk_tlm_t; + CI_LAB_HkTlm_Payload_t Payload; +} OS_PACK CI_LAB_HkTlm_t; -#define CI_LAB_HK_TLM_LNGTH sizeof(ci_hk_tlm_t) +#define CI_LAB_HK_TLM_LNGTH sizeof(CI_LAB_HkTlm_t) #endif /* _ci_lab_msg_h_ */ From 07a70779365f24b7d4afafde6a711426f46f093a Mon Sep 17 00:00:00 2001 From: Joseph Hickey Date: Mon, 9 Mar 2020 11:20:25 -0400 Subject: [PATCH 5/8] Update #35, Fix comment on function header --- fsw/src/ci_lab_app.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fsw/src/ci_lab_app.c b/fsw/src/ci_lab_app.c index 1e951ac..6ad2ca7 100644 --- a/fsw/src/ci_lab_app.c +++ b/fsw/src/ci_lab_app.c @@ -326,7 +326,7 @@ int32 CI_LAB_ReportHousekeeping(const CCSDS_CommandPacket_t *data) } /* End of CI_LAB_ReportHousekeeping() */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ -/* Name: CI_LAB_ResetCounters */ +/* Name: CI_LAB_ResetCounters_Internal */ /* */ /* Purpose: */ /* This function resets all the global counter variables that are */ From 9e2abf39f01ffebdae7025b9621e4bf9dcb5a060 Mon Sep 17 00:00:00 2001 From: "Gerardo E. Cruz-Ortiz" <59618057+astrogeco@users.noreply.github.com> Date: Tue, 10 Mar 2020 11:41:10 -0400 Subject: [PATCH 6/8] Fix clang-format 10 apt-get repository --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 04a2ffb..115991f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ before_install: - cppcheck --version # for clang-format 10 - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - - sudo add-apt-repository 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic main' + - sudo add-apt-repository 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-10 main' - sudo apt-get update - sudo apt-get install clang-format-10 - clang-format-10 --version From 6cf5a57f5995710345b2a5411d11af2b2d7f80ee Mon Sep 17 00:00:00 2001 From: "Gerardo E. Cruz-Ortiz" <59618057+astrogeco@users.noreply.github.com> Date: Tue, 10 Mar 2020 13:26:51 -0400 Subject: [PATCH 7/8] Fix travis ci keys Remove deprecated sudo key Add os key Fix language key formatting --- .travis.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 115991f..b9516a8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,6 @@ +os: linux dist: bionic -sudo: required -language: - - c +language: c compiler: - gcc addons: From e61830ffc259c9468e4fc7f39fa232f1b3a678ac Mon Sep 17 00:00:00 2001 From: Joseph Hickey Date: Tue, 10 Mar 2020 14:56:58 -0400 Subject: [PATCH 8/8] Update #40, rerun clang-format on CI_LAB FSW code --- fsw/src/ci_lab_app.c | 64 ++++++++++++++++++++--------------------- fsw/src/ci_lab_events.h | 20 ++++++------- fsw/src/ci_lab_msg.h | 11 ++++--- 3 files changed, 47 insertions(+), 48 deletions(-) diff --git a/fsw/src/ci_lab_app.c b/fsw/src/ci_lab_app.c index 6ad2ca7..ca8f53b 100644 --- a/fsw/src/ci_lab_app.c +++ b/fsw/src/ci_lab_app.c @@ -42,43 +42,41 @@ /* * Declaring the CI_LAB_IngestBuffer as a union - * ensures it is aligned appropriately to + * ensures it is aligned appropriately to * store a CFE_SB_Msg_t type. */ typedef union { - CFE_SB_Msg_t MsgHdr; - uint8 bytes[CI_LAB_MAX_INGEST]; - uint16 hwords[2]; + CFE_SB_Msg_t MsgHdr; + uint8 bytes[CI_LAB_MAX_INGEST]; + uint16 hwords[2]; } CI_LAB_IngestBuffer_t; typedef union { - CFE_SB_Msg_t MsgHdr; - CI_LAB_HkTlm_t HkTlm; + CFE_SB_Msg_t MsgHdr; + CI_LAB_HkTlm_t HkTlm; } CI_LAB_HkTlm_Buffer_t; typedef struct { - bool SocketConnected; - CFE_SB_PipeId_t CommandPipe; - CFE_SB_MsgPtr_t MsgPtr; - uint32 SocketID; - OS_SockAddr_t SocketAddress; - - CI_LAB_HkTlm_Buffer_t HkBuffer; - CI_LAB_IngestBuffer_t IngestBuffer; + bool SocketConnected; + CFE_SB_PipeId_t CommandPipe; + CFE_SB_MsgPtr_t MsgPtr; + uint32 SocketID; + OS_SockAddr_t SocketAddress; + + CI_LAB_HkTlm_Buffer_t HkBuffer; + CI_LAB_IngestBuffer_t IngestBuffer; } CI_LAB_GlobalData_t; - CI_LAB_GlobalData_t CI_LAB_Global; -static CFE_EVS_BinFilter_t CI_LAB_EventFilters[] = {/* Event ID mask */ - {CI_LAB_SOCKETCREATE_ERR_EID, 0x0000}, {CI_LAB_SOCKETBIND_ERR_EID, 0x0000}, - {CI_LAB_STARTUP_INF_EID, 0x0000}, {CI_LAB_COMMAND_ERR_EID, 0x0000}, - {CI_LAB_COMMANDNOP_INF_EID, 0x0000}, {CI_LAB_COMMANDRST_INF_EID, 0x0000}, - {CI_LAB_INGEST_INF_EID, 0x0000}, {CI_LAB_INGEST_ERR_EID, 0x0000}}; - +static CFE_EVS_BinFilter_t CI_LAB_EventFilters[] = + {/* Event ID mask */ + {CI_LAB_SOCKETCREATE_ERR_EID, 0x0000}, {CI_LAB_SOCKETBIND_ERR_EID, 0x0000}, {CI_LAB_STARTUP_INF_EID, 0x0000}, + {CI_LAB_COMMAND_ERR_EID, 0x0000}, {CI_LAB_COMMANDNOP_INF_EID, 0x0000}, {CI_LAB_COMMANDRST_INF_EID, 0x0000}, + {CI_LAB_INGEST_INF_EID, 0x0000}, {CI_LAB_INGEST_ERR_EID, 0x0000}}; /* * Individual message handler function prototypes @@ -172,7 +170,8 @@ void CI_LAB_TaskInit(void) status = OS_SocketOpen(&CI_LAB_Global.SocketID, OS_SocketDomain_INET, OS_SocketType_DATAGRAM); if (status != OS_SUCCESS) { - CFE_EVS_SendEvent(CI_LAB_SOCKETCREATE_ERR_EID,CFE_EVS_EventType_ERROR,"CI: create socket failed = %d", (int)status); + CFE_EVS_SendEvent(CI_LAB_SOCKETCREATE_ERR_EID, CFE_EVS_EventType_ERROR, "CI: create socket failed = %d", + (int)status); } else { @@ -181,9 +180,10 @@ void CI_LAB_TaskInit(void) status = OS_SocketBind(CI_LAB_Global.SocketID, &CI_LAB_Global.SocketAddress); - if ( status != OS_SUCCESS ) + if (status != OS_SUCCESS) { - CFE_EVS_SendEvent(CI_LAB_SOCKETBIND_ERR_EID,CFE_EVS_EventType_ERROR,"CI: bind socket failed = %d", (int)status); + CFE_EVS_SendEvent(CI_LAB_SOCKETBIND_ERR_EID, CFE_EVS_EventType_ERROR, "CI: bind socket failed = %d", + (int)status); } else { @@ -292,7 +292,6 @@ int32 CI_LAB_Noop(const CI_LAB_Noop_t *data) return CFE_SUCCESS; } - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* Name: CI_LAB_ResetCounters */ /* */ @@ -336,7 +335,7 @@ int32 CI_LAB_ReportHousekeeping(const CCSDS_CommandPacket_t *data) void CI_LAB_ResetCounters_Internal(void) { /* Status of commands processed by CI task */ - CI_LAB_Global.HkBuffer.HkTlm.Payload.CommandCounter = 0; + CI_LAB_Global.HkBuffer.HkTlm.Payload.CommandCounter = 0; CI_LAB_Global.HkBuffer.HkTlm.Payload.CommandErrorCounter = 0; /* Status of packets ingested by CI task */ @@ -354,14 +353,14 @@ void CI_LAB_ResetCounters_Internal(void) /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ void CI_LAB_ReadUpLink(void) { - int i; + int i; int32 status; for (i = 0; i <= 10; i++) { - status = OS_SocketRecvFrom(CI_LAB_Global.SocketID, CI_LAB_Global.IngestBuffer.bytes, sizeof(CI_LAB_Global.IngestBuffer), &CI_LAB_Global.SocketAddress, OS_CHECK); - if (status >= ((int32)CFE_SB_CMD_HDR_SIZE) && - status <= ((int32)CI_LAB_MAX_INGEST)) + status = OS_SocketRecvFrom(CI_LAB_Global.SocketID, CI_LAB_Global.IngestBuffer.bytes, + sizeof(CI_LAB_Global.IngestBuffer), &CI_LAB_Global.SocketAddress, OS_CHECK); + if (status >= ((int32)CFE_SB_CMD_HDR_SIZE) && status <= ((int32)CI_LAB_MAX_INGEST)) { CFE_ES_PerfLogEntry(CI_LAB_SOCKET_RCV_PERF_ID); CI_LAB_Global.HkBuffer.HkTlm.Payload.IngestPackets++; @@ -372,8 +371,9 @@ void CI_LAB_ReadUpLink(void) { /* bad size, report as ingest error */ CI_LAB_Global.HkBuffer.HkTlm.Payload.IngestErrors++; - CFE_EVS_SendEvent(CI_LAB_INGEST_ERR_EID,CFE_EVS_EventType_ERROR, "CI: L%d, cmd %0x %0x dropped, bad length=%d\n", __LINE__, - CI_LAB_Global.IngestBuffer.hwords[0], CI_LAB_Global.IngestBuffer.hwords[1], (int)status); + CFE_EVS_SendEvent(CI_LAB_INGEST_ERR_EID, CFE_EVS_EventType_ERROR, + "CI: L%d, cmd %0x %0x dropped, bad length=%d\n", __LINE__, + CI_LAB_Global.IngestBuffer.hwords[0], CI_LAB_Global.IngestBuffer.hwords[1], (int)status); } else { diff --git a/fsw/src/ci_lab_events.h b/fsw/src/ci_lab_events.h index 1b3b77f..bb57812 100644 --- a/fsw/src/ci_lab_events.h +++ b/fsw/src/ci_lab_events.h @@ -29,16 +29,16 @@ #ifndef _ci_lab_events_h_ #define _ci_lab_events_h_ -#define CI_LAB_RESERVED_EID 0 -#define CI_LAB_SOCKETCREATE_ERR_EID 1 -#define CI_LAB_SOCKETBIND_ERR_EID 2 -#define CI_LAB_STARTUP_INF_EID 3 -#define CI_LAB_COMMAND_ERR_EID 4 -#define CI_LAB_COMMANDNOP_INF_EID 5 -#define CI_LAB_COMMANDRST_INF_EID 6 -#define CI_LAB_INGEST_INF_EID 7 -#define CI_LAB_INGEST_ERR_EID 8 -#define CI_LAB_LEN_ERR_EID 16 +#define CI_LAB_RESERVED_EID 0 +#define CI_LAB_SOCKETCREATE_ERR_EID 1 +#define CI_LAB_SOCKETBIND_ERR_EID 2 +#define CI_LAB_STARTUP_INF_EID 3 +#define CI_LAB_COMMAND_ERR_EID 4 +#define CI_LAB_COMMANDNOP_INF_EID 5 +#define CI_LAB_COMMANDRST_INF_EID 6 +#define CI_LAB_INGEST_INF_EID 7 +#define CI_LAB_INGEST_ERR_EID 8 +#define CI_LAB_LEN_ERR_EID 16 #endif /* _ci_lab_events_h_ */ diff --git a/fsw/src/ci_lab_msg.h b/fsw/src/ci_lab_msg.h index c238214..971a7ff 100644 --- a/fsw/src/ci_lab_msg.h +++ b/fsw/src/ci_lab_msg.h @@ -32,8 +32,8 @@ /* ** CI_LAB_Lab command codes */ -#define CI_LAB_NOOP_CC 0 -#define CI_LAB_RESET_COUNTERS_CC 1 +#define CI_LAB_NOOP_CC 0 +#define CI_LAB_RESET_COUNTERS_CC 1 /*************************************************************************/ /* @@ -52,9 +52,8 @@ typedef struct * * This matches the pattern in CFE core and other modules. */ -typedef CI_LAB_NoArgsCmd_t CI_LAB_Noop_t; -typedef CI_LAB_NoArgsCmd_t CI_LAB_ResetCounters_t; - +typedef CI_LAB_NoArgsCmd_t CI_LAB_Noop_t; +typedef CI_LAB_NoArgsCmd_t CI_LAB_ResetCounters_t; /*************************************************************************/ /* @@ -75,7 +74,7 @@ typedef struct typedef struct { - uint8 TlmHeader[CFE_SB_TLM_HDR_SIZE]; + uint8 TlmHeader[CFE_SB_TLM_HDR_SIZE]; CI_LAB_HkTlm_Payload_t Payload; } OS_PACK CI_LAB_HkTlm_t;