From 482b77ff051a395210d2bd14a9f901b6222215c8 Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Tue, 20 Oct 2020 17:38:41 +0200 Subject: [PATCH 01/19] added defaultcfg config folder --- defaultcfg/FSFWConfig.h | 41 +++ defaultcfg/README.md | 6 + defaultcfg/config.mk | 17 ++ defaultcfg/config/FSFWConfig.h | 41 +++ defaultcfg/config/OBSWConfig.h | 14 + .../config/devices/logicalAddresses.cpp | 5 + defaultcfg/config/devices/logicalAddresses.h | 18 ++ .../config/devices/powerSwitcherList.cpp | 4 + defaultcfg/config/devices/powerSwitcherList.h | 12 + defaultcfg/config/events/subsystemIdRanges.h | 18 ++ defaultcfg/config/ipc/missionMessageTypes.cpp | 11 + defaultcfg/config/ipc/missionMessageTypes.h | 21 ++ defaultcfg/config/objects/Factory.cpp | 57 ++++ defaultcfg/config/objects/Factory.h | 20 ++ defaultcfg/config/objects/systemObjectList.h | 138 +++++++++ .../config/objects/translateObjects.cpp | 271 ++++++++++++++++++ defaultcfg/config/objects/translateObjects.h | 9 + .../PollingSequenceFactory.cpp | 23 ++ .../pollingsequence/PollingSequenceFactory.h | 32 +++ defaultcfg/config/returnvalues/classIds.h | 16 ++ defaultcfg/config/tmtc/apid.h | 18 ++ defaultcfg/config/tmtc/pusIds.h | 23 ++ defaultcfg/config/version.h | 9 + defaultcfg/version.h | 11 + 24 files changed, 835 insertions(+) create mode 100644 defaultcfg/FSFWConfig.h create mode 100644 defaultcfg/README.md create mode 100644 defaultcfg/config.mk create mode 100644 defaultcfg/config/FSFWConfig.h create mode 100644 defaultcfg/config/OBSWConfig.h create mode 100644 defaultcfg/config/devices/logicalAddresses.cpp create mode 100644 defaultcfg/config/devices/logicalAddresses.h create mode 100644 defaultcfg/config/devices/powerSwitcherList.cpp create mode 100644 defaultcfg/config/devices/powerSwitcherList.h create mode 100644 defaultcfg/config/events/subsystemIdRanges.h create mode 100644 defaultcfg/config/ipc/missionMessageTypes.cpp create mode 100644 defaultcfg/config/ipc/missionMessageTypes.h create mode 100644 defaultcfg/config/objects/Factory.cpp create mode 100644 defaultcfg/config/objects/Factory.h create mode 100644 defaultcfg/config/objects/systemObjectList.h create mode 100644 defaultcfg/config/objects/translateObjects.cpp create mode 100644 defaultcfg/config/objects/translateObjects.h create mode 100644 defaultcfg/config/pollingsequence/PollingSequenceFactory.cpp create mode 100644 defaultcfg/config/pollingsequence/PollingSequenceFactory.h create mode 100644 defaultcfg/config/returnvalues/classIds.h create mode 100644 defaultcfg/config/tmtc/apid.h create mode 100644 defaultcfg/config/tmtc/pusIds.h create mode 100644 defaultcfg/config/version.h create mode 100644 defaultcfg/version.h diff --git a/defaultcfg/FSFWConfig.h b/defaultcfg/FSFWConfig.h new file mode 100644 index 00000000..2001f306 --- /dev/null +++ b/defaultcfg/FSFWConfig.h @@ -0,0 +1,41 @@ +#ifndef CONFIG_FSFWCONFIG_H_ +#define CONFIG_FSFWCONFIG_H_ + +#include "version.h" + +//! Used to determine whether C++ ostreams are used +//! Those can lead to code bloat. +#define FSFW_CPP_OSTREAM_ENABLED 1 + +//! Reduced printout to further decrese code size +//! Be careful, this also turns off most diagnostic prinouts! +#define FSFW_REDUCED_PRINTOUT 0 + +//! Can be used to enable debugging printouts for developing the FSFW +#define FSFW_DEBUGGING 0 + +//! Defines the FIFO depth of each commanding service base which +//! also determines how many commands a CSB service can handle in one cycle +//! simulataneously. This will increase the required RAM for +//! each CSB service ! +#define FSFW_CSB_FIFO_DEPTH 6 + +//! If -DDEBUG is supplied in the build defines, there will be +//! additional output which requires the translation files translateObjects +//! and translateEvents (and their compiles source files) +#ifdef DEBUG +#define FSFW_DEBUG_OUTPUT 1 +//! Specify whether info events are printed too. +#define FSFW_DEBUG_INFO 1 +#include +#include +#else +#define FSFW_DEBUG_OUTPUT 0 +#endif + +//! When using the newlib nano library, C99 support for stdio facilities +//! will not be provided. This define should be set to 1 if this is the case. +#define FSFW_NO_C99_IO 1 + + +#endif /* CONFIG_FSFWCONFIG_H_ */ diff --git a/defaultcfg/README.md b/defaultcfg/README.md new file mode 100644 index 00000000..8446cda4 --- /dev/null +++ b/defaultcfg/README.md @@ -0,0 +1,6 @@ +# How to setup configuration folder for FSFW + +It is recommended to copy the content of the defaultcfg folder +into a config folder which is in the same directory as the Flight +Software Framework submodule. After that, the config.mk folder should be +included by the primary Makefile with CURRENTPATH set correctly. diff --git a/defaultcfg/config.mk b/defaultcfg/config.mk new file mode 100644 index 00000000..fcf3b799 --- /dev/null +++ b/defaultcfg/config.mk @@ -0,0 +1,17 @@ +CXXSRC += $(wildcard $(CURRENTPATH)/config/ipc/*.cpp) +CXXSRC += $(wildcard $(CURRENTPATH)/config/objects/*.cpp) +CXXSRC += $(wildcard $(CURRENTPATH)/config/pollingsequence/*.cpp) +CXXSRC += $(wildcard $(CURRENTPATH)/config/events/*.cpp) +CXXSRC += $(wildcard $(CURRENTPATH)/config/tmtc/*.cpp) +CXXSRC += $(wildcard $(CURRENTPATH)/config/devices/*.cpp) + +INCLUDES += $(CURRENTPATH) +INCLUDES += $(CURRENTPATH)/config/ +INCLUDES += $(CURRENTPATH)/config/objects +INCLUDES += $(CURRENTPATH)/config/returnvalues +INCLUDES += $(CURRENTPATH)/config/tmtc +INCLUDES += $(CURRENTPATH)/config/events +INCLUDES += $(CURRENTPATH)/config/devices +INCLUDES += $(CURRENTPATH)/config/pollingsequence +INCLUDES += $(CURRENTPATH)/config/ipc +INCLUDES += $(CURRENTPATH)/config/ diff --git a/defaultcfg/config/FSFWConfig.h b/defaultcfg/config/FSFWConfig.h new file mode 100644 index 00000000..2001f306 --- /dev/null +++ b/defaultcfg/config/FSFWConfig.h @@ -0,0 +1,41 @@ +#ifndef CONFIG_FSFWCONFIG_H_ +#define CONFIG_FSFWCONFIG_H_ + +#include "version.h" + +//! Used to determine whether C++ ostreams are used +//! Those can lead to code bloat. +#define FSFW_CPP_OSTREAM_ENABLED 1 + +//! Reduced printout to further decrese code size +//! Be careful, this also turns off most diagnostic prinouts! +#define FSFW_REDUCED_PRINTOUT 0 + +//! Can be used to enable debugging printouts for developing the FSFW +#define FSFW_DEBUGGING 0 + +//! Defines the FIFO depth of each commanding service base which +//! also determines how many commands a CSB service can handle in one cycle +//! simulataneously. This will increase the required RAM for +//! each CSB service ! +#define FSFW_CSB_FIFO_DEPTH 6 + +//! If -DDEBUG is supplied in the build defines, there will be +//! additional output which requires the translation files translateObjects +//! and translateEvents (and their compiles source files) +#ifdef DEBUG +#define FSFW_DEBUG_OUTPUT 1 +//! Specify whether info events are printed too. +#define FSFW_DEBUG_INFO 1 +#include +#include +#else +#define FSFW_DEBUG_OUTPUT 0 +#endif + +//! When using the newlib nano library, C99 support for stdio facilities +//! will not be provided. This define should be set to 1 if this is the case. +#define FSFW_NO_C99_IO 1 + + +#endif /* CONFIG_FSFWCONFIG_H_ */ diff --git a/defaultcfg/config/OBSWConfig.h b/defaultcfg/config/OBSWConfig.h new file mode 100644 index 00000000..d186da7d --- /dev/null +++ b/defaultcfg/config/OBSWConfig.h @@ -0,0 +1,14 @@ +#ifndef CONFIG_OBSWCONFIG_H_ +#define CONFIG_OBSWCONFIG_H_ + +#ifdef __cplusplus +namespace config { +#endif + +/* Add mission configuration flags here */ + +#ifdef __cplusplus +} +#endif + +#endif /* CONFIG_OBSWCONFIG_H_ */ diff --git a/defaultcfg/config/devices/logicalAddresses.cpp b/defaultcfg/config/devices/logicalAddresses.cpp new file mode 100644 index 00000000..c7ce314d --- /dev/null +++ b/defaultcfg/config/devices/logicalAddresses.cpp @@ -0,0 +1,5 @@ +#include "logicalAddresses.h" + + + + diff --git a/defaultcfg/config/devices/logicalAddresses.h b/defaultcfg/config/devices/logicalAddresses.h new file mode 100644 index 00000000..174fa788 --- /dev/null +++ b/defaultcfg/config/devices/logicalAddresses.h @@ -0,0 +1,18 @@ +#ifndef CONFIG_DEVICES_LOGICALADDRESSES_H_ +#define CONFIG_DEVICES_LOGICALADDRESSES_H_ + +#include +#include +#include + +/** + * Can be used for addresses for physical devices like I2C adresses. + */ +namespace addresses { + /* Logical addresses have uint32_t datatype */ + enum logicalAddresses: address_t { + }; +} + + +#endif /* CONFIG_DEVICES_LOGICALADDRESSES_H_ */ diff --git a/defaultcfg/config/devices/powerSwitcherList.cpp b/defaultcfg/config/devices/powerSwitcherList.cpp new file mode 100644 index 00000000..343f78d0 --- /dev/null +++ b/defaultcfg/config/devices/powerSwitcherList.cpp @@ -0,0 +1,4 @@ +#include "powerSwitcherList.h" + + + diff --git a/defaultcfg/config/devices/powerSwitcherList.h b/defaultcfg/config/devices/powerSwitcherList.h new file mode 100644 index 00000000..86ddea57 --- /dev/null +++ b/defaultcfg/config/devices/powerSwitcherList.h @@ -0,0 +1,12 @@ +#ifndef CONFIG_DEVICES_POWERSWITCHERLIST_H_ +#define CONFIG_DEVICES_POWERSWITCHERLIST_H_ + +namespace switches { + /* Switches are uint8_t datatype and go from 0 to 255 */ + enum switcherList { + }; + +} + + +#endif /* CONFIG_DEVICES_POWERSWITCHERLIST_H_ */ diff --git a/defaultcfg/config/events/subsystemIdRanges.h b/defaultcfg/config/events/subsystemIdRanges.h new file mode 100644 index 00000000..24eee819 --- /dev/null +++ b/defaultcfg/config/events/subsystemIdRanges.h @@ -0,0 +1,18 @@ +#ifndef CONFIG_EVENTS_SUBSYSTEMIDRANGES_H_ +#define CONFIG_EVENTS_SUBSYSTEMIDRANGES_H_ + +#include +#include + +/** + * @brief Custom subsystem IDs can be added here + * @details + * Subsystem IDs are used to create unique events. + */ +namespace SUBSYSTEM_ID { +enum: uint8_t { + SUBSYSTEM_ID_START = FW_SUBSYSTEM_ID_RANGE, +}; +} + +#endif /* CONFIG_EVENTS_SUBSYSTEMIDRANGES_H_ */ diff --git a/defaultcfg/config/ipc/missionMessageTypes.cpp b/defaultcfg/config/ipc/missionMessageTypes.cpp new file mode 100644 index 00000000..e2edbf9c --- /dev/null +++ b/defaultcfg/config/ipc/missionMessageTypes.cpp @@ -0,0 +1,11 @@ +#include +#include + +void messagetypes::clearMissionMessage(CommandMessage* message) { + switch(message->getMessageType()) { + default: + break; + } +} + + diff --git a/defaultcfg/config/ipc/missionMessageTypes.h b/defaultcfg/config/ipc/missionMessageTypes.h new file mode 100644 index 00000000..8b2e2fcc --- /dev/null +++ b/defaultcfg/config/ipc/missionMessageTypes.h @@ -0,0 +1,21 @@ +#ifndef CONFIG_IPC_MISSIONMESSAGETYPES_H_ +#define CONFIG_IPC_MISSIONMESSAGETYPES_H_ + +#include +#include + +/** + * Custom command messages are specified here. + * Most messages needed to use FSFW are already located in + * + * @param message Generic Command Message + */ +namespace messagetypes { +enum CustomMessageTypes { + MISSION_MESSAGE_TYPE_START = FW_MESSAGES_COUNT +}; + +void clearMissionMessage(CommandMessage* message); +} + +#endif /* CONFIG_IPC_MISSIONMESSAGETYPES_H_ */ diff --git a/defaultcfg/config/objects/Factory.cpp b/defaultcfg/config/objects/Factory.cpp new file mode 100644 index 00000000..ea187a5e --- /dev/null +++ b/defaultcfg/config/objects/Factory.cpp @@ -0,0 +1,57 @@ +#include "Factory.h" + +/* Config */ +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + + +#include + + +/** + * Build tasks by using SystemObject Interface (Interface). + * Header files of all tasks must be included + * Please note that an object has to implement the system object interface + * if the nterface validity is checked or retrieved later by using the + * get(object_id) function from the ObjectManagerIF. + * + * Framework objects are created first. + * + * @ingroup init + */ +void Factory::produce(void) { + setStaticFrameworkObjectIds(); + new EventManager(objects::EVENT_MANAGER); + new HealthTable(objects::HEALTH_TABLE); + //new InternalErrorReporter(objects::INTERNAL_ERROR_REPORTER); +} + +void Factory::setStaticFrameworkObjectIds() { + PusServiceBase::packetSource = objects::PUS_PACKET_DISTRIBUTOR; + PusServiceBase::packetDestination = objects::TM_FUNNEL; + + CommandingServiceBase::defaultPacketSource = objects::PUS_PACKET_DISTRIBUTOR; + CommandingServiceBase::defaultPacketDestination = objects::TM_FUNNEL; + + VerificationReporter::messageReceiver = objects::PUS_SERVICE_1_VERIFICATION; + + DeviceHandlerBase::powerSwitcherId = objects::NO_OBJECT; + DeviceHandlerBase::rawDataReceiverId = objects::PUS_SERVICE_2_DEVICE_ACCESS; + + DeviceHandlerFailureIsolation::powerConfirmationId = objects::NO_OBJECT; + + TmPacketStored::timeStamperId = objects::PUS_TIME; + TmFunnel::downlinkDestination = objects::NO_OBJECT; +} + diff --git a/defaultcfg/config/objects/Factory.h b/defaultcfg/config/objects/Factory.h new file mode 100644 index 00000000..8b99ae99 --- /dev/null +++ b/defaultcfg/config/objects/Factory.h @@ -0,0 +1,20 @@ +#ifndef FACTORY_H_ +#define FACTORY_H_ + +#include +#include + +namespace Factory { + size_t calculateStorage(uint8_t numberOfPools, uint16_t* numberOfElements, + uint16_t* sizeOfElements); + /** + * @brief Creates all SystemObject elements which are persistent + * during execution. + */ + void produce(); + void setStaticFrameworkObjectIds(); + +} + + +#endif /* FACTORY_H_ */ diff --git a/defaultcfg/config/objects/systemObjectList.h b/defaultcfg/config/objects/systemObjectList.h new file mode 100644 index 00000000..2448efbd --- /dev/null +++ b/defaultcfg/config/objects/systemObjectList.h @@ -0,0 +1,138 @@ +#ifndef CONFIG_OBJECTS_SYSTEMOBJECTLIST_H_ +#define CONFIG_OBJECTS_SYSTEMOBJECTLIST_H_ + +#include + +// The objects will be instantiated in the ID order +namespace objects { + enum sourceObjects: uint32_t { + /* First Byte 0x50-0x52 reserved for PUS Services **/ + CCSDS_PACKET_DISTRIBUTOR = 0x50000100, + PUS_PACKET_DISTRIBUTOR = 0x50000200, + /* UDP ID must come after CCSDS Distributor **/ + UDP_TMTC_BRIDGE = 0x50000300, + EMAC_POLLING_TASK = 0x50000400, + SERIAL_TMTC_BRIDGE = 0x50000500, + SERIAL_RING_BUFFER = 0x50000550, + SERIAL_POLLING_TASK = 0x50000600, + + PUS_SERVICE_6_MEM_MGMT = 0x51000500, + PUS_SERVICE_20_PARAM_MGMT = 0x51002000, + PUS_SERVICE_23_FILE_MGMT = 0x51002300, + PUS_SERVICE_201_HEALTH = 0x51020100, + + PUS_TIME = 0x52000001, + TM_FUNNEL = 0x52000002, + FREERTOS_TASK_MONITOR = 0x53000003, + + CORE_CONTROLLER = 0x40001000, + SYSTEM_STATE_TASK = 0x40001005, + THERMAL_CONTROLLER = 0x40002000, + RS485_CONTROLLER = 0x40005000, + + /* 0x44 ('D') for Device Handlers **/ + /* Second Byte: ComIF -> 0x00: UART,0x10 SPI,0x20: I2C,30: GPIO,40: PWM */ + /* Third Byte: Device ID */ + PCDU_HANDLER = 0x44003200, + GPS0_HANDLER = 0x44101F00, + GPS1_HANDLER = 0x44202000, + + DLR_PVCH = 0x44104000, + GYRO1 = 0x44105000, + DLR_IRAS = 0x44106000, + + /* fourth byte decoder output ID */ + + // Devices connected to decoder 1 + SPI_Test_PT1000 = 0x44115400, + SPI_Test_Gyro = 0x44115500, + PT1000_Syrlinks_DEC1_O1 = 0x44115401, + PT1000_Camera_DEC1_O2 = 0x44115402, + PT1000_SuS1_DEC1_O3 = 0x44115404, + PT1000_SuS2_DEC1_O4 = 0x44115405, + PT1000_SuS3_DEC1_O5 = 0x44115406, + PT1000_PVHC_DEC1_O6 = 0x44115407, + + // Devices connected to decoder 2 + PT1000_CCSDS1_DEC2 = 0x44125401, + PT1000_MGT1_DEC2 = 0x44125403, + PT1000_SuS4_DEC2 = 0x44125404, + PT1000_SuS5_DEC2 = 0x44125405, + PT1000_SuS6_DEC2 = 0x44125406, + PT1000_PVCH_DEC2 = 0x44125407, + SuS_ADC1_DEC2 = 0x44020108, + + // Devices connected to decoder 3 + PT1000_Iridium_DEC3 = 0x44130301, + PT1000_CCSDS2_DEC3 = 0x44130302, + PT1000_SuS7_DEC3 = 0x44130305, + PT1000_SuS8_DEC3 = 0x44130306, + PT1000_PVCH_DEC3 = 0x44130307, + GYRO2 = 0x44130308, + + // Devices connected to decoder 4 + PT1000_PLOC_DEC4 = 0x44145401, + PT1000_SuS9_DEC4 = 0x44145404, + PT1000_SuS10_DEC4 = 0x44145405, + PT1000_PVHC_DEC4 = 0x44145406, + SuS_ADC_DEC4 = 0x44145407, + + /* 0x49 ('I') for Communication Interfaces **/ + DUMMY_ECHO_COM_IF = 0x4900AFFE, + DUMMY_GPS_COM_IF = 0x49001F00, + RS232_DEVICE_COM_IF = 0x49005200, + I2C_DEVICE_COM_IF = 0x49005300, + GPIO_DEVICE_COM_IF = 0x49005400, + SPI_DEVICE_COM_IF = 0x49005600, + //SPI_POLLING_TASK = 0x49005410, + + /* 0x4d ('M') for Memory Handlers **/ + SD_CARD_HANDLER = 0x4D0073AD, + FRAM_HANDLER = 0x4D008000, + SOFTWARE_IMAGE_HANDLER = 0x4D009000, + + /* Board Specific */ + AT91_I2C_TEST_TASK = 0x12345678, + AT91_UART0_TEST_TASK = 0x87654321, + AT91_UART2_TEST_TASK = 0x000123336, + AT91_SPI_TEST_TASK = 0x66666666, + STM32_TEST_TASK = 0x77777777, + LED_TASK = 0x12345777, + + /* Test Task */ + ARDUINO_0 = 0x01010100, + ARDUINO_1 = 0x01010101, + ARDUINO_2 = 0x01010102, + ARDUINO_3 = 0x01010103, + ARDUINO_4 = 0x01010104, + TEST_TASK = 0x42694269, + DUMMY_HANDLER = 0x4400AFFE, + TC_INJECTOR = 0x99000001 + }; +} + +#endif /* BSP_CONFIG_OBJECTS_SYSTEMOBJECTLIST_H_ */ + + +/** + ▄ ▄ + ▌▒█ ▄▀▒▌ + ▌▒▒█ ▄▀▒▒▒▐ + ▐▄▀▒▒▀▀▀▀▄▄▄▀▒▒▒▒▒▐ + ▄▄▀▒░▒▒▒▒▒▒▒▒▒█▒▒▄█▒▐ + ▄▀▒▒▒░░░▒▒▒░░░▒▒▒▀██▀▒▌ + ▐▒▒▒▄▄▒▒▒▒░░░▒▒▒▒▒▒▒▀▄▒▒▌ + ▌░░▌█▀▒▒▒▒▒▄▀█▄▒▒▒▒▒▒▒█▒▐ + ▐░░░▒▒▒▒▒▒▒▒▌██▀▒▒░░░▒▒▒▀▄▌ + ▌░▒▄██▄▒▒▒▒▒▒▒▒▒░░░░░░▒▒▒▒▌ + ▌▒▀▐▄█▄█▌▄░▀▒▒░░░░░░░░░░▒▒▒▐ + ▐▒▒▐▀▐▀▒░▄▄▒▄▒▒▒▒▒▒░▒░▒░▒▒▒▒▌ + ▐▒▒▒▀▀▄▄▒▒▒▄▒▒▒▒▒▒▒▒░▒░▒░▒▒▐ + ▌▒▒▒▒▒▒▀▀▀▒▒▒▒▒▒░▒░▒░▒░▒▒▒▌ + ▐▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒░▒░▒▒▄▒▒▐ + ▀▄▒▒▒▒▒▒▒▒▒▒▒░▒░▒░▒▄▒▒▒▒▌ + ▀▄▒▒▒▒▒▒▒▒▒▒▄▄▄▀▒▒▒▒▄▀ + ▀▄▄▄▄▄▄▀▀▀▒▒▒▒▒▄▄▀ + ▒▒▒▒▒▒▒▒▒▒▀▀ +*/ + diff --git a/defaultcfg/config/objects/translateObjects.cpp b/defaultcfg/config/objects/translateObjects.cpp new file mode 100644 index 00000000..73cd02bf --- /dev/null +++ b/defaultcfg/config/objects/translateObjects.cpp @@ -0,0 +1,271 @@ +/** + * @brief Auto-generated object translation file. Contains 86 translations. + * Generated on: 2020-08-25 00:57:14 + **/ +#include "translateObjects.h" + +const char *AT91_UART2_TEST_TASK_STRING = "AT91_UART2_TEST_TASK"; +const char *ARDUINO_0_STRING = "ARDUINO_0"; +const char *ARDUINO_1_STRING = "ARDUINO_1"; +const char *ARDUINO_2_STRING = "ARDUINO_2"; +const char *ARDUINO_3_STRING = "ARDUINO_3"; +const char *ARDUINO_4_STRING = "ARDUINO_4"; +const char *AT91_I2C_TEST_TASK_STRING = "AT91_I2C_TEST_TASK"; +const char *LED_TASK_STRING = "LED_TASK"; +const char *TEST_TASK_STRING = "TEST_TASK"; +const char *PCDU_HANDLER_STRING = "PCDU_HANDLER"; +const char *DUMMY_HANDLER_STRING = "DUMMY_HANDLER"; +const char *SuS_ADC1_DEC2_STRING = "SuS_ADC1_DEC2"; +const char *GPS0_HANDLER_STRING = "GPS0_HANDLER"; +const char *DLR_PVCH_STRING = "DLR_PVCH"; +const char *GYRO1_STRING = "GYRO1"; +const char *DLR_IRAS_STRING = "DLR_IRAS"; +const char *SPI_Test_PT1000_STRING = "SPI_Test_PT1000"; +const char *PT1000_Syrlinks_DEC1_O1_STRING = "PT1000_Syrlinks_DEC1_O1"; +const char *PT1000_Camera_DEC1_O2_STRING = "PT1000_Camera_DEC1_O2"; +const char *PT1000_SuS1_DEC1_O3_STRING = "PT1000_SuS1_DEC1_O3"; +const char *PT1000_SuS2_DEC1_O4_STRING = "PT1000_SuS2_DEC1_O4"; +const char *PT1000_SuS3_DEC1_O5_STRING = "PT1000_SuS3_DEC1_O5"; +const char *PT1000_PVHC_DEC1_O6_STRING = "PT1000_PVHC_DEC1_O6"; +const char *SPI_Test_Gyro_STRING = "SPI_Test_Gyro"; +const char *PT1000_CCSDS1_DEC2_STRING = "PT1000_CCSDS1_DEC2"; +const char *PT1000_MGT1_DEC2_STRING = "PT1000_MGT1_DEC2"; +const char *PT1000_SuS4_DEC2_STRING = "PT1000_SuS4_DEC2"; +const char *PT1000_SuS5_DEC2_STRING = "PT1000_SuS5_DEC2"; +const char *PT1000_SuS6_DEC2_STRING = "PT1000_SuS6_DEC2"; +const char *PT1000_PVCH_DEC2_STRING = "PT1000_PVCH_DEC2"; +const char *PT1000_Iridium_DEC3_STRING = "PT1000_Iridium_DEC3"; +const char *PT1000_CCSDS2_DEC3_STRING = "PT1000_CCSDS2_DEC3"; +const char *PT1000_SuS7_DEC3_STRING = "PT1000_SuS7_DEC3"; +const char *PT1000_SuS8_DEC3_STRING = "PT1000_SuS8_DEC3"; +const char *PT1000_PVCH_DEC3_STRING = "PT1000_PVCH_DEC3"; +const char *GYRO2_STRING = "GYRO2"; +const char *PT1000_PLOC_DEC4_STRING = "PT1000_PLOC_DEC4"; +const char *PT1000_SuS9_DEC4_STRING = "PT1000_SuS9_DEC4"; +const char *PT1000_SuS10_DEC4_STRING = "PT1000_SuS10_DEC4"; +const char *PT1000_PVHC_DEC4_STRING = "PT1000_PVHC_DEC4"; +const char *SuS_ADC_DEC4_STRING = "SuS_ADC_DEC4"; +const char *GPS1_HANDLER_STRING = "GPS1_HANDLER"; +const char *DUMMY_GPS_COM_IF_STRING = "DUMMY_GPS_COM_IF"; +const char *RS232_DEVICE_COM_IF_STRING = "RS232_DEVICE_COM_IF"; +const char *I2C_DEVICE_COM_IF_STRING = "I2C_DEVICE_COM_IF"; +const char *GPIO_DEVICE_COM_IF_STRING = "GPIO_DEVICE_COM_IF"; +const char *SPI_POLLING_TASK_STRING = "SPI_POLLING_TASK"; +const char *SPI_DEVICE_COM_IF_STRING = "SPI_DEVICE_COM_IF"; +const char *DUMMY_ECHO_COM_IF_STRING = "DUMMY_ECHO_COM_IF"; +const char *SD_CARD_HANDLER_STRING = "SD_CARD_HANDLER"; +const char *CCSDS_PACKET_DISTRIBUTOR_STRING = "CCSDS_PACKET_DISTRIBUTOR"; +const char *PUS_PACKET_DISTRIBUTOR_STRING = "PUS_PACKET_DISTRIBUTOR"; +const char *UDP_TMTC_BRIDGE_STRING = "UDP_TMTC_BRIDGE"; +const char *EMAC_POLLING_TASK_STRING = "EMAC_POLLING_TASK"; +const char *SERIAL_TMTC_BRIDGE_STRING = "SERIAL_TMTC_BRIDGE"; +const char *SERIAL_RING_BUFFER_STRING = "SERIAL_RING_BUFFER"; +const char *SERIAL_POLLING_TASK_STRING = "SERIAL_POLLING_TASK"; +const char *PUS_SERVICE_1_STRING = "PUS_SERVICE_1"; +const char *PUS_SERVICE_2_STRING = "PUS_SERVICE_2"; +const char *PUS_SERVICE_3_STRING = "PUS_SERVICE_3"; +const char *PUS_SERVICE_3_PSB_STRING = "PUS_SERVICE_3_PSB"; +const char *PUS_SERVICE_5_STRING = "PUS_SERVICE_5"; +const char *PUS_SERVICE_6_STRING = "PUS_SERVICE_6"; +const char *PUS_SERVICE_8_STRING = "PUS_SERVICE_8"; +const char *PUS_SERVICE_9_STRING = "PUS_SERVICE_9"; +const char *PUS_SERVICE_17_STRING = "PUS_SERVICE_17"; +const char *PUS_SERVICE_20_STRING = "PUS_SERVICE_20"; +const char *PUS_SERVICE_23_STRING = "PUS_SERVICE_23"; +const char *PUS_SERVICE_200_STRING = "PUS_SERVICE_200"; +const char *PUS_SERVICE_201_STRING = "PUS_SERVICE_201"; +const char *PUS_TIME_STRING = "PUS_TIME"; +const char *PUS_FUNNEL_STRING = "PUS_FUNNEL"; +const char *FREERTOS_TASK_MONITOR_STRING = "FREERTOS_TASK_MONITOR"; +const char *HEALTH_TABLE_STRING = "HEALTH_TABLE"; +const char *MODE_STORE_STRING = "MODE_STORE"; +const char *EVENT_MANAGER_STRING = "EVENT_MANAGER"; +const char *INTERNAL_ERROR_REPORTER_STRING = "INTERNAL_ERROR_REPORTER"; +const char *TC_STORE_STRING = "TC_STORE"; +const char *TM_STORE_STRING = "TM_STORE"; +const char *IPC_STORE_STRING = "IPC_STORE"; +const char *AT91_SPI_TEST_TASK_STRING = "AT91_SPI_TEST_TASK"; +const char *STM32_TEST_TASK_STRING = "STM32_TEST_TASK"; +const char *AT91_UART0_TEST_TASK_STRING = "AT91_UART0_TEST_TASK"; +const char *TC_INJECTOR_STRING = "TC_INJECTOR"; +const char *NO_OBJECT_STRING = "NO_OBJECT"; + +const char* translateObject(object_id_t object){ + switch((object&0xFFFFFFFF)){ + case 0x000123336: + return AT91_UART2_TEST_TASK_STRING; + case 0x01010100: + return ARDUINO_0_STRING; + case 0x01010101: + return ARDUINO_1_STRING; + case 0x01010102: + return ARDUINO_2_STRING; + case 0x01010103: + return ARDUINO_3_STRING; + case 0x01010104: + return ARDUINO_4_STRING; + case 0x12345678: + return AT91_I2C_TEST_TASK_STRING; + case 0x12345777: + return LED_TASK_STRING; + case 0x42694269: + return TEST_TASK_STRING; + case 0x44003200: + return PCDU_HANDLER_STRING; + case 0x4400AFFE: + return DUMMY_HANDLER_STRING; + case 0x44020108: + return SuS_ADC1_DEC2_STRING; + case 0x44101F00: + return GPS0_HANDLER_STRING; + case 0x44104000: + return DLR_PVCH_STRING; + case 0x44105000: + return GYRO1_STRING; + case 0x44106000: + return DLR_IRAS_STRING; + case 0x44115400: + return SPI_Test_PT1000_STRING; + case 0x44115401: + return PT1000_Syrlinks_DEC1_O1_STRING; + case 0x44115402: + return PT1000_Camera_DEC1_O2_STRING; + case 0x44115404: + return PT1000_SuS1_DEC1_O3_STRING; + case 0x44115405: + return PT1000_SuS2_DEC1_O4_STRING; + case 0x44115406: + return PT1000_SuS3_DEC1_O5_STRING; + case 0x44115407: + return PT1000_PVHC_DEC1_O6_STRING; + case 0x44115500: + return SPI_Test_Gyro_STRING; + case 0x44125401: + return PT1000_CCSDS1_DEC2_STRING; + case 0x44125403: + return PT1000_MGT1_DEC2_STRING; + case 0x44125404: + return PT1000_SuS4_DEC2_STRING; + case 0x44125405: + return PT1000_SuS5_DEC2_STRING; + case 0x44125406: + return PT1000_SuS6_DEC2_STRING; + case 0x44125407: + return PT1000_PVCH_DEC2_STRING; + case 0x44130301: + return PT1000_Iridium_DEC3_STRING; + case 0x44130302: + return PT1000_CCSDS2_DEC3_STRING; + case 0x44130305: + return PT1000_SuS7_DEC3_STRING; + case 0x44130306: + return PT1000_SuS8_DEC3_STRING; + case 0x44130307: + return PT1000_PVCH_DEC3_STRING; + case 0x44130308: + return GYRO2_STRING; + case 0x44145401: + return PT1000_PLOC_DEC4_STRING; + case 0x44145404: + return PT1000_SuS9_DEC4_STRING; + case 0x44145405: + return PT1000_SuS10_DEC4_STRING; + case 0x44145406: + return PT1000_PVHC_DEC4_STRING; + case 0x44145407: + return SuS_ADC_DEC4_STRING; + case 0x44202000: + return GPS1_HANDLER_STRING; + case 0x49001F00: + return DUMMY_GPS_COM_IF_STRING; + case 0x49005200: + return RS232_DEVICE_COM_IF_STRING; + case 0x49005300: + return I2C_DEVICE_COM_IF_STRING; + case 0x49005400: + return GPIO_DEVICE_COM_IF_STRING; + case 0x49005410: + return SPI_POLLING_TASK_STRING; + case 0x49005600: + return SPI_DEVICE_COM_IF_STRING; + case 0x4900AFFE: + return DUMMY_ECHO_COM_IF_STRING; + case 0x4D0073AD: + return SD_CARD_HANDLER_STRING; + case 0x50000100: + return CCSDS_PACKET_DISTRIBUTOR_STRING; + case 0x50000200: + return PUS_PACKET_DISTRIBUTOR_STRING; + case 0x50000300: + return UDP_TMTC_BRIDGE_STRING; + case 0x50000400: + return EMAC_POLLING_TASK_STRING; + case 0x50000500: + return SERIAL_TMTC_BRIDGE_STRING; + case 0x50000550: + return SERIAL_RING_BUFFER_STRING; + case 0x50000600: + return SERIAL_POLLING_TASK_STRING; + case 0x51000100: + return PUS_SERVICE_1_STRING; + case 0x51000200: + return PUS_SERVICE_2_STRING; + case 0x51000300: + return PUS_SERVICE_3_STRING; + case 0x51000310: + return PUS_SERVICE_3_PSB_STRING; + case 0x51000400: + return PUS_SERVICE_5_STRING; + case 0x51000500: + return PUS_SERVICE_6_STRING; + case 0x51000800: + return PUS_SERVICE_8_STRING; + case 0x51000900: + return PUS_SERVICE_9_STRING; + case 0x51001700: + return PUS_SERVICE_17_STRING; + case 0x51002000: + return PUS_SERVICE_20_STRING; + case 0x51002300: + return PUS_SERVICE_23_STRING; + case 0x51020000: + return PUS_SERVICE_200_STRING; + case 0x51020100: + return PUS_SERVICE_201_STRING; + case 0x52000001: + return PUS_TIME_STRING; + case 0x52000002: + return PUS_FUNNEL_STRING; + case 0x53000000: + return PUS_SERVICE_1_STRING; + case 0x53000003: + return FREERTOS_TASK_MONITOR_STRING; + case 0x53010000: + return HEALTH_TABLE_STRING; + case 0x53010100: + return MODE_STORE_STRING; + case 0x53030000: + return EVENT_MANAGER_STRING; + case 0x53040000: + return INTERNAL_ERROR_REPORTER_STRING; + case 0x534f0100: + return TC_STORE_STRING; + case 0x534f0200: + return TM_STORE_STRING; + case 0x534f0300: + return IPC_STORE_STRING; + case 0x66666666: + return AT91_SPI_TEST_TASK_STRING; + case 0x77777777: + return STM32_TEST_TASK_STRING; + case 0x87654321: + return AT91_UART0_TEST_TASK_STRING; + case 0x99000001: + return TC_INJECTOR_STRING; + case 0xFFFFFFFF: + return NO_OBJECT_STRING; + default: + return "UNKNOWN_OBJECT"; + } + return 0; +} diff --git a/defaultcfg/config/objects/translateObjects.h b/defaultcfg/config/objects/translateObjects.h new file mode 100644 index 00000000..5b656940 --- /dev/null +++ b/defaultcfg/config/objects/translateObjects.h @@ -0,0 +1,9 @@ +#ifndef CONFIG_OBJECTS_TRANSLATEOBJECTS_H_ +#define CONFIG_OBJECTS_TRANSLATEOBJECTS_H_ + +#include + +const char* translateObject(object_id_t object); + + +#endif /* CONFIG_OBJECTS_TRANSLATEOBJECTS_H_ */ diff --git a/defaultcfg/config/pollingsequence/PollingSequenceFactory.cpp b/defaultcfg/config/pollingsequence/PollingSequenceFactory.cpp new file mode 100644 index 00000000..f836a746 --- /dev/null +++ b/defaultcfg/config/pollingsequence/PollingSequenceFactory.cpp @@ -0,0 +1,23 @@ +#include "PollingSequenceFactory.h" + +#include +#include +#include + +ReturnValue_t pst::pollingSequenceInitDefault( + FixedTimeslotTaskIF *thisSequence) { + /* Length of a communication cycle */ + uint32_t length = thisSequence->getPeriodMs(); + + /* Add polling sequence table here */ + + if (thisSequence->checkSequence() == HasReturnvaluesIF::RETURN_OK) { + return HasReturnvaluesIF::RETURN_OK; + } + else { + sif::error << "pst::pollingSequenceInitDefault: Sequence invalid!" + << std::endl; + return HasReturnvaluesIF::RETURN_FAILED; + } +} + diff --git a/defaultcfg/config/pollingsequence/PollingSequenceFactory.h b/defaultcfg/config/pollingsequence/PollingSequenceFactory.h new file mode 100644 index 00000000..c5d41b7d --- /dev/null +++ b/defaultcfg/config/pollingsequence/PollingSequenceFactory.h @@ -0,0 +1,32 @@ +#ifndef POLLINGSEQUENCEFACTORY_H_ +#define POLLINGSEQUENCEFACTORY_H_ + +#include + +class FixedTimeslotTaskIF; + +/** + * All device handlers are scheduled by adding them into Polling Sequence Tables (PST) + * to satisfy stricter timing requirements of device communication, + * A device handler has four different communication steps: + * 1. DeviceHandlerIF::SEND_WRITE -> Send write via interface + * 2. DeviceHandlerIF::GET_WRITE -> Get confirmation for write + * 3. DeviceHandlerIF::SEND_READ -> Send read request + * 4. DeviceHandlerIF::GET_READ -> Read from interface + * The PST specifies precisely when the respective ComIF functions are called + * during the communication cycle time. + * The task is created using the FixedTimeslotTaskIF, + * which utilises the underlying Operating System Abstraction Layer (OSAL) + * + * @param thisSequence FixedTimeslotTaskIF * object is passed inside the Factory class when creating the PST + * @return + */ +namespace pst { + +/* Default PST */ +ReturnValue_t pollingSequenceInitDefault(FixedTimeslotTaskIF *thisSequence); + + +} + +#endif /* POLLINGSEQUENCEINIT_H_ */ diff --git a/defaultcfg/config/returnvalues/classIds.h b/defaultcfg/config/returnvalues/classIds.h new file mode 100644 index 00000000..606cc60b --- /dev/null +++ b/defaultcfg/config/returnvalues/classIds.h @@ -0,0 +1,16 @@ +#ifndef CONFIG_RETURNVALUES_CLASSIDS_H_ +#define CONFIG_RETURNVALUES_CLASSIDS_H_ + +#include + +/** + * @brief CLASS_ID defintions which are required for custom returnvalues. + */ +namespace CLASS_ID { +enum { + MISSION_CLASS_ID_START = FW_CLASS_ID_COUNT, +}; +} + + +#endif /* CONFIG_RETURNVALUES_CLASSIDS_H_ */ diff --git a/defaultcfg/config/tmtc/apid.h b/defaultcfg/config/tmtc/apid.h new file mode 100644 index 00000000..c0231bca --- /dev/null +++ b/defaultcfg/config/tmtc/apid.h @@ -0,0 +1,18 @@ +#ifndef CONFIG_TMTC_APID_H_ +#define CONFIG_TMTC_APID_H_ + +#include + +/** + * Application Process Definition: entity, uniquely identified by an + * application process ID (APID), capable of generating telemetry source + * packets and receiving telecommand packets. + * + * Chose APID(s) for mission and define it here. + */ +namespace apid { + static const uint16_t DEFAULT_APID = 0x00; +} + + +#endif /* CONFIG_TMTC_APID_H_ */ diff --git a/defaultcfg/config/tmtc/pusIds.h b/defaultcfg/config/tmtc/pusIds.h new file mode 100644 index 00000000..cc0db9f0 --- /dev/null +++ b/defaultcfg/config/tmtc/pusIds.h @@ -0,0 +1,23 @@ +#ifndef CONFIG_TMTC_PUSIDS_HPP_ +#define CONFIG_TMTC_PUSIDS_HPP_ + +namespace pus { +enum Ids: uint8_t { + PUS_SERVICE_1 = 1, + PUS_SERVICE_2 = 2, + PUS_SERVICE_3 = 3, + PUS_SERVICE_5 = 5, + PUS_SERVICE_6 = 6, + PUS_SERVICE_8 = 8, + PUS_SERVICE_9 = 9, + PUS_SERVICE_11 = 11, + PUS_SERVICE_17 = 17, + PUS_SERVICE_19 = 19, + PUS_SERVICE_20 = 20, + PUS_SERVICE_23 = 23, + PUS_SERVICE_200 = 200, + PUS_SERVICE_201 = 201, +}; +}; + +#endif /* CONFIG_TMTC_PUSIDS_HPP_ */ diff --git a/defaultcfg/config/version.h b/defaultcfg/config/version.h new file mode 100644 index 00000000..3c60317c --- /dev/null +++ b/defaultcfg/config/version.h @@ -0,0 +1,9 @@ +#ifndef CONFIG_VERSION_H_ +#define CONFIG_VERSION_H_ + +/* OBSW versioning can be specified in this file */ + +#define OBSW_VERSION 0 +#define OBSW_SUBVERSION 0 + +#endif /* CONFIG_VERSION_H_ */ diff --git a/defaultcfg/version.h b/defaultcfg/version.h new file mode 100644 index 00000000..b3ef8318 --- /dev/null +++ b/defaultcfg/version.h @@ -0,0 +1,11 @@ +#ifndef FSFW_DEFAULTCFG_VERSION_H_ +#define FSFW_DEFAULTCFG_VERSION_H_ + +static const char* FSFW_VERSION_NAME = "fsfw"; + +#define FSFW_VERSION 0 +#define FSFW_SUBVERSION 0 + + + +#endif /* FSFW_DEFAULTCFG_VERSION_H_ */ From 247c9f29479289b29475799fb4b74c07d553fb41 Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Tue, 20 Oct 2020 17:39:11 +0200 Subject: [PATCH 02/19] added readme --- README.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 00000000..fc86fca7 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +Flight Software Framework (FSFW) +====== + +I want to be written! From 1940a2acf02f9f36872163fff3d08bccfb132858 Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Tue, 20 Oct 2020 17:44:27 +0200 Subject: [PATCH 03/19] some fixes --- defaultcfg/config/objects/systemObjectList.h | 130 +-------- .../config/objects/translateObjects.cpp | 271 ------------------ defaultcfg/config/objects/translateObjects.h | 9 - 3 files changed, 4 insertions(+), 406 deletions(-) delete mode 100644 defaultcfg/config/objects/translateObjects.cpp delete mode 100644 defaultcfg/config/objects/translateObjects.h diff --git a/defaultcfg/config/objects/systemObjectList.h b/defaultcfg/config/objects/systemObjectList.h index 2448efbd..f4292f6d 100644 --- a/defaultcfg/config/objects/systemObjectList.h +++ b/defaultcfg/config/objects/systemObjectList.h @@ -2,137 +2,15 @@ #define CONFIG_OBJECTS_SYSTEMOBJECTLIST_H_ #include +#include // The objects will be instantiated in the ID order namespace objects { enum sourceObjects: uint32_t { - /* First Byte 0x50-0x52 reserved for PUS Services **/ - CCSDS_PACKET_DISTRIBUTOR = 0x50000100, - PUS_PACKET_DISTRIBUTOR = 0x50000200, - /* UDP ID must come after CCSDS Distributor **/ - UDP_TMTC_BRIDGE = 0x50000300, - EMAC_POLLING_TASK = 0x50000400, - SERIAL_TMTC_BRIDGE = 0x50000500, - SERIAL_RING_BUFFER = 0x50000550, - SERIAL_POLLING_TASK = 0x50000600, - - PUS_SERVICE_6_MEM_MGMT = 0x51000500, - PUS_SERVICE_20_PARAM_MGMT = 0x51002000, - PUS_SERVICE_23_FILE_MGMT = 0x51002300, - PUS_SERVICE_201_HEALTH = 0x51020100, - - PUS_TIME = 0x52000001, - TM_FUNNEL = 0x52000002, - FREERTOS_TASK_MONITOR = 0x53000003, - - CORE_CONTROLLER = 0x40001000, - SYSTEM_STATE_TASK = 0x40001005, - THERMAL_CONTROLLER = 0x40002000, - RS485_CONTROLLER = 0x40005000, - - /* 0x44 ('D') for Device Handlers **/ - /* Second Byte: ComIF -> 0x00: UART,0x10 SPI,0x20: I2C,30: GPIO,40: PWM */ - /* Third Byte: Device ID */ - PCDU_HANDLER = 0x44003200, - GPS0_HANDLER = 0x44101F00, - GPS1_HANDLER = 0x44202000, - - DLR_PVCH = 0x44104000, - GYRO1 = 0x44105000, - DLR_IRAS = 0x44106000, - - /* fourth byte decoder output ID */ - - // Devices connected to decoder 1 - SPI_Test_PT1000 = 0x44115400, - SPI_Test_Gyro = 0x44115500, - PT1000_Syrlinks_DEC1_O1 = 0x44115401, - PT1000_Camera_DEC1_O2 = 0x44115402, - PT1000_SuS1_DEC1_O3 = 0x44115404, - PT1000_SuS2_DEC1_O4 = 0x44115405, - PT1000_SuS3_DEC1_O5 = 0x44115406, - PT1000_PVHC_DEC1_O6 = 0x44115407, - - // Devices connected to decoder 2 - PT1000_CCSDS1_DEC2 = 0x44125401, - PT1000_MGT1_DEC2 = 0x44125403, - PT1000_SuS4_DEC2 = 0x44125404, - PT1000_SuS5_DEC2 = 0x44125405, - PT1000_SuS6_DEC2 = 0x44125406, - PT1000_PVCH_DEC2 = 0x44125407, - SuS_ADC1_DEC2 = 0x44020108, - - // Devices connected to decoder 3 - PT1000_Iridium_DEC3 = 0x44130301, - PT1000_CCSDS2_DEC3 = 0x44130302, - PT1000_SuS7_DEC3 = 0x44130305, - PT1000_SuS8_DEC3 = 0x44130306, - PT1000_PVCH_DEC3 = 0x44130307, - GYRO2 = 0x44130308, - - // Devices connected to decoder 4 - PT1000_PLOC_DEC4 = 0x44145401, - PT1000_SuS9_DEC4 = 0x44145404, - PT1000_SuS10_DEC4 = 0x44145405, - PT1000_PVHC_DEC4 = 0x44145406, - SuS_ADC_DEC4 = 0x44145407, - - /* 0x49 ('I') for Communication Interfaces **/ - DUMMY_ECHO_COM_IF = 0x4900AFFE, - DUMMY_GPS_COM_IF = 0x49001F00, - RS232_DEVICE_COM_IF = 0x49005200, - I2C_DEVICE_COM_IF = 0x49005300, - GPIO_DEVICE_COM_IF = 0x49005400, - SPI_DEVICE_COM_IF = 0x49005600, - //SPI_POLLING_TASK = 0x49005410, - - /* 0x4d ('M') for Memory Handlers **/ - SD_CARD_HANDLER = 0x4D0073AD, - FRAM_HANDLER = 0x4D008000, - SOFTWARE_IMAGE_HANDLER = 0x4D009000, - - /* Board Specific */ - AT91_I2C_TEST_TASK = 0x12345678, - AT91_UART0_TEST_TASK = 0x87654321, - AT91_UART2_TEST_TASK = 0x000123336, - AT91_SPI_TEST_TASK = 0x66666666, - STM32_TEST_TASK = 0x77777777, - LED_TASK = 0x12345777, - - /* Test Task */ - ARDUINO_0 = 0x01010100, - ARDUINO_1 = 0x01010101, - ARDUINO_2 = 0x01010102, - ARDUINO_3 = 0x01010103, - ARDUINO_4 = 0x01010104, - TEST_TASK = 0x42694269, - DUMMY_HANDLER = 0x4400AFFE, - TC_INJECTOR = 0x99000001 + /* All addresses between start and end are reserved for the FSFW */ + FSFW_CONFIG_RESERVED_START = PUS_SERVICE_1_VERIFICATION, + FSFW_CONFIG_RESERVED_END = TM_STORE }; } #endif /* BSP_CONFIG_OBJECTS_SYSTEMOBJECTLIST_H_ */ - - -/** - ▄ ▄ - ▌▒█ ▄▀▒▌ - ▌▒▒█ ▄▀▒▒▒▐ - ▐▄▀▒▒▀▀▀▀▄▄▄▀▒▒▒▒▒▐ - ▄▄▀▒░▒▒▒▒▒▒▒▒▒█▒▒▄█▒▐ - ▄▀▒▒▒░░░▒▒▒░░░▒▒▒▀██▀▒▌ - ▐▒▒▒▄▄▒▒▒▒░░░▒▒▒▒▒▒▒▀▄▒▒▌ - ▌░░▌█▀▒▒▒▒▒▄▀█▄▒▒▒▒▒▒▒█▒▐ - ▐░░░▒▒▒▒▒▒▒▒▌██▀▒▒░░░▒▒▒▀▄▌ - ▌░▒▄██▄▒▒▒▒▒▒▒▒▒░░░░░░▒▒▒▒▌ - ▌▒▀▐▄█▄█▌▄░▀▒▒░░░░░░░░░░▒▒▒▐ - ▐▒▒▐▀▐▀▒░▄▄▒▄▒▒▒▒▒▒░▒░▒░▒▒▒▒▌ - ▐▒▒▒▀▀▄▄▒▒▒▄▒▒▒▒▒▒▒▒░▒░▒░▒▒▐ - ▌▒▒▒▒▒▒▀▀▀▒▒▒▒▒▒░▒░▒░▒░▒▒▒▌ - ▐▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒░▒░▒▒▄▒▒▐ - ▀▄▒▒▒▒▒▒▒▒▒▒▒░▒░▒░▒▄▒▒▒▒▌ - ▀▄▒▒▒▒▒▒▒▒▒▒▄▄▄▀▒▒▒▒▄▀ - ▀▄▄▄▄▄▄▀▀▀▒▒▒▒▒▄▄▀ - ▒▒▒▒▒▒▒▒▒▒▀▀ -*/ - diff --git a/defaultcfg/config/objects/translateObjects.cpp b/defaultcfg/config/objects/translateObjects.cpp deleted file mode 100644 index 73cd02bf..00000000 --- a/defaultcfg/config/objects/translateObjects.cpp +++ /dev/null @@ -1,271 +0,0 @@ -/** - * @brief Auto-generated object translation file. Contains 86 translations. - * Generated on: 2020-08-25 00:57:14 - **/ -#include "translateObjects.h" - -const char *AT91_UART2_TEST_TASK_STRING = "AT91_UART2_TEST_TASK"; -const char *ARDUINO_0_STRING = "ARDUINO_0"; -const char *ARDUINO_1_STRING = "ARDUINO_1"; -const char *ARDUINO_2_STRING = "ARDUINO_2"; -const char *ARDUINO_3_STRING = "ARDUINO_3"; -const char *ARDUINO_4_STRING = "ARDUINO_4"; -const char *AT91_I2C_TEST_TASK_STRING = "AT91_I2C_TEST_TASK"; -const char *LED_TASK_STRING = "LED_TASK"; -const char *TEST_TASK_STRING = "TEST_TASK"; -const char *PCDU_HANDLER_STRING = "PCDU_HANDLER"; -const char *DUMMY_HANDLER_STRING = "DUMMY_HANDLER"; -const char *SuS_ADC1_DEC2_STRING = "SuS_ADC1_DEC2"; -const char *GPS0_HANDLER_STRING = "GPS0_HANDLER"; -const char *DLR_PVCH_STRING = "DLR_PVCH"; -const char *GYRO1_STRING = "GYRO1"; -const char *DLR_IRAS_STRING = "DLR_IRAS"; -const char *SPI_Test_PT1000_STRING = "SPI_Test_PT1000"; -const char *PT1000_Syrlinks_DEC1_O1_STRING = "PT1000_Syrlinks_DEC1_O1"; -const char *PT1000_Camera_DEC1_O2_STRING = "PT1000_Camera_DEC1_O2"; -const char *PT1000_SuS1_DEC1_O3_STRING = "PT1000_SuS1_DEC1_O3"; -const char *PT1000_SuS2_DEC1_O4_STRING = "PT1000_SuS2_DEC1_O4"; -const char *PT1000_SuS3_DEC1_O5_STRING = "PT1000_SuS3_DEC1_O5"; -const char *PT1000_PVHC_DEC1_O6_STRING = "PT1000_PVHC_DEC1_O6"; -const char *SPI_Test_Gyro_STRING = "SPI_Test_Gyro"; -const char *PT1000_CCSDS1_DEC2_STRING = "PT1000_CCSDS1_DEC2"; -const char *PT1000_MGT1_DEC2_STRING = "PT1000_MGT1_DEC2"; -const char *PT1000_SuS4_DEC2_STRING = "PT1000_SuS4_DEC2"; -const char *PT1000_SuS5_DEC2_STRING = "PT1000_SuS5_DEC2"; -const char *PT1000_SuS6_DEC2_STRING = "PT1000_SuS6_DEC2"; -const char *PT1000_PVCH_DEC2_STRING = "PT1000_PVCH_DEC2"; -const char *PT1000_Iridium_DEC3_STRING = "PT1000_Iridium_DEC3"; -const char *PT1000_CCSDS2_DEC3_STRING = "PT1000_CCSDS2_DEC3"; -const char *PT1000_SuS7_DEC3_STRING = "PT1000_SuS7_DEC3"; -const char *PT1000_SuS8_DEC3_STRING = "PT1000_SuS8_DEC3"; -const char *PT1000_PVCH_DEC3_STRING = "PT1000_PVCH_DEC3"; -const char *GYRO2_STRING = "GYRO2"; -const char *PT1000_PLOC_DEC4_STRING = "PT1000_PLOC_DEC4"; -const char *PT1000_SuS9_DEC4_STRING = "PT1000_SuS9_DEC4"; -const char *PT1000_SuS10_DEC4_STRING = "PT1000_SuS10_DEC4"; -const char *PT1000_PVHC_DEC4_STRING = "PT1000_PVHC_DEC4"; -const char *SuS_ADC_DEC4_STRING = "SuS_ADC_DEC4"; -const char *GPS1_HANDLER_STRING = "GPS1_HANDLER"; -const char *DUMMY_GPS_COM_IF_STRING = "DUMMY_GPS_COM_IF"; -const char *RS232_DEVICE_COM_IF_STRING = "RS232_DEVICE_COM_IF"; -const char *I2C_DEVICE_COM_IF_STRING = "I2C_DEVICE_COM_IF"; -const char *GPIO_DEVICE_COM_IF_STRING = "GPIO_DEVICE_COM_IF"; -const char *SPI_POLLING_TASK_STRING = "SPI_POLLING_TASK"; -const char *SPI_DEVICE_COM_IF_STRING = "SPI_DEVICE_COM_IF"; -const char *DUMMY_ECHO_COM_IF_STRING = "DUMMY_ECHO_COM_IF"; -const char *SD_CARD_HANDLER_STRING = "SD_CARD_HANDLER"; -const char *CCSDS_PACKET_DISTRIBUTOR_STRING = "CCSDS_PACKET_DISTRIBUTOR"; -const char *PUS_PACKET_DISTRIBUTOR_STRING = "PUS_PACKET_DISTRIBUTOR"; -const char *UDP_TMTC_BRIDGE_STRING = "UDP_TMTC_BRIDGE"; -const char *EMAC_POLLING_TASK_STRING = "EMAC_POLLING_TASK"; -const char *SERIAL_TMTC_BRIDGE_STRING = "SERIAL_TMTC_BRIDGE"; -const char *SERIAL_RING_BUFFER_STRING = "SERIAL_RING_BUFFER"; -const char *SERIAL_POLLING_TASK_STRING = "SERIAL_POLLING_TASK"; -const char *PUS_SERVICE_1_STRING = "PUS_SERVICE_1"; -const char *PUS_SERVICE_2_STRING = "PUS_SERVICE_2"; -const char *PUS_SERVICE_3_STRING = "PUS_SERVICE_3"; -const char *PUS_SERVICE_3_PSB_STRING = "PUS_SERVICE_3_PSB"; -const char *PUS_SERVICE_5_STRING = "PUS_SERVICE_5"; -const char *PUS_SERVICE_6_STRING = "PUS_SERVICE_6"; -const char *PUS_SERVICE_8_STRING = "PUS_SERVICE_8"; -const char *PUS_SERVICE_9_STRING = "PUS_SERVICE_9"; -const char *PUS_SERVICE_17_STRING = "PUS_SERVICE_17"; -const char *PUS_SERVICE_20_STRING = "PUS_SERVICE_20"; -const char *PUS_SERVICE_23_STRING = "PUS_SERVICE_23"; -const char *PUS_SERVICE_200_STRING = "PUS_SERVICE_200"; -const char *PUS_SERVICE_201_STRING = "PUS_SERVICE_201"; -const char *PUS_TIME_STRING = "PUS_TIME"; -const char *PUS_FUNNEL_STRING = "PUS_FUNNEL"; -const char *FREERTOS_TASK_MONITOR_STRING = "FREERTOS_TASK_MONITOR"; -const char *HEALTH_TABLE_STRING = "HEALTH_TABLE"; -const char *MODE_STORE_STRING = "MODE_STORE"; -const char *EVENT_MANAGER_STRING = "EVENT_MANAGER"; -const char *INTERNAL_ERROR_REPORTER_STRING = "INTERNAL_ERROR_REPORTER"; -const char *TC_STORE_STRING = "TC_STORE"; -const char *TM_STORE_STRING = "TM_STORE"; -const char *IPC_STORE_STRING = "IPC_STORE"; -const char *AT91_SPI_TEST_TASK_STRING = "AT91_SPI_TEST_TASK"; -const char *STM32_TEST_TASK_STRING = "STM32_TEST_TASK"; -const char *AT91_UART0_TEST_TASK_STRING = "AT91_UART0_TEST_TASK"; -const char *TC_INJECTOR_STRING = "TC_INJECTOR"; -const char *NO_OBJECT_STRING = "NO_OBJECT"; - -const char* translateObject(object_id_t object){ - switch((object&0xFFFFFFFF)){ - case 0x000123336: - return AT91_UART2_TEST_TASK_STRING; - case 0x01010100: - return ARDUINO_0_STRING; - case 0x01010101: - return ARDUINO_1_STRING; - case 0x01010102: - return ARDUINO_2_STRING; - case 0x01010103: - return ARDUINO_3_STRING; - case 0x01010104: - return ARDUINO_4_STRING; - case 0x12345678: - return AT91_I2C_TEST_TASK_STRING; - case 0x12345777: - return LED_TASK_STRING; - case 0x42694269: - return TEST_TASK_STRING; - case 0x44003200: - return PCDU_HANDLER_STRING; - case 0x4400AFFE: - return DUMMY_HANDLER_STRING; - case 0x44020108: - return SuS_ADC1_DEC2_STRING; - case 0x44101F00: - return GPS0_HANDLER_STRING; - case 0x44104000: - return DLR_PVCH_STRING; - case 0x44105000: - return GYRO1_STRING; - case 0x44106000: - return DLR_IRAS_STRING; - case 0x44115400: - return SPI_Test_PT1000_STRING; - case 0x44115401: - return PT1000_Syrlinks_DEC1_O1_STRING; - case 0x44115402: - return PT1000_Camera_DEC1_O2_STRING; - case 0x44115404: - return PT1000_SuS1_DEC1_O3_STRING; - case 0x44115405: - return PT1000_SuS2_DEC1_O4_STRING; - case 0x44115406: - return PT1000_SuS3_DEC1_O5_STRING; - case 0x44115407: - return PT1000_PVHC_DEC1_O6_STRING; - case 0x44115500: - return SPI_Test_Gyro_STRING; - case 0x44125401: - return PT1000_CCSDS1_DEC2_STRING; - case 0x44125403: - return PT1000_MGT1_DEC2_STRING; - case 0x44125404: - return PT1000_SuS4_DEC2_STRING; - case 0x44125405: - return PT1000_SuS5_DEC2_STRING; - case 0x44125406: - return PT1000_SuS6_DEC2_STRING; - case 0x44125407: - return PT1000_PVCH_DEC2_STRING; - case 0x44130301: - return PT1000_Iridium_DEC3_STRING; - case 0x44130302: - return PT1000_CCSDS2_DEC3_STRING; - case 0x44130305: - return PT1000_SuS7_DEC3_STRING; - case 0x44130306: - return PT1000_SuS8_DEC3_STRING; - case 0x44130307: - return PT1000_PVCH_DEC3_STRING; - case 0x44130308: - return GYRO2_STRING; - case 0x44145401: - return PT1000_PLOC_DEC4_STRING; - case 0x44145404: - return PT1000_SuS9_DEC4_STRING; - case 0x44145405: - return PT1000_SuS10_DEC4_STRING; - case 0x44145406: - return PT1000_PVHC_DEC4_STRING; - case 0x44145407: - return SuS_ADC_DEC4_STRING; - case 0x44202000: - return GPS1_HANDLER_STRING; - case 0x49001F00: - return DUMMY_GPS_COM_IF_STRING; - case 0x49005200: - return RS232_DEVICE_COM_IF_STRING; - case 0x49005300: - return I2C_DEVICE_COM_IF_STRING; - case 0x49005400: - return GPIO_DEVICE_COM_IF_STRING; - case 0x49005410: - return SPI_POLLING_TASK_STRING; - case 0x49005600: - return SPI_DEVICE_COM_IF_STRING; - case 0x4900AFFE: - return DUMMY_ECHO_COM_IF_STRING; - case 0x4D0073AD: - return SD_CARD_HANDLER_STRING; - case 0x50000100: - return CCSDS_PACKET_DISTRIBUTOR_STRING; - case 0x50000200: - return PUS_PACKET_DISTRIBUTOR_STRING; - case 0x50000300: - return UDP_TMTC_BRIDGE_STRING; - case 0x50000400: - return EMAC_POLLING_TASK_STRING; - case 0x50000500: - return SERIAL_TMTC_BRIDGE_STRING; - case 0x50000550: - return SERIAL_RING_BUFFER_STRING; - case 0x50000600: - return SERIAL_POLLING_TASK_STRING; - case 0x51000100: - return PUS_SERVICE_1_STRING; - case 0x51000200: - return PUS_SERVICE_2_STRING; - case 0x51000300: - return PUS_SERVICE_3_STRING; - case 0x51000310: - return PUS_SERVICE_3_PSB_STRING; - case 0x51000400: - return PUS_SERVICE_5_STRING; - case 0x51000500: - return PUS_SERVICE_6_STRING; - case 0x51000800: - return PUS_SERVICE_8_STRING; - case 0x51000900: - return PUS_SERVICE_9_STRING; - case 0x51001700: - return PUS_SERVICE_17_STRING; - case 0x51002000: - return PUS_SERVICE_20_STRING; - case 0x51002300: - return PUS_SERVICE_23_STRING; - case 0x51020000: - return PUS_SERVICE_200_STRING; - case 0x51020100: - return PUS_SERVICE_201_STRING; - case 0x52000001: - return PUS_TIME_STRING; - case 0x52000002: - return PUS_FUNNEL_STRING; - case 0x53000000: - return PUS_SERVICE_1_STRING; - case 0x53000003: - return FREERTOS_TASK_MONITOR_STRING; - case 0x53010000: - return HEALTH_TABLE_STRING; - case 0x53010100: - return MODE_STORE_STRING; - case 0x53030000: - return EVENT_MANAGER_STRING; - case 0x53040000: - return INTERNAL_ERROR_REPORTER_STRING; - case 0x534f0100: - return TC_STORE_STRING; - case 0x534f0200: - return TM_STORE_STRING; - case 0x534f0300: - return IPC_STORE_STRING; - case 0x66666666: - return AT91_SPI_TEST_TASK_STRING; - case 0x77777777: - return STM32_TEST_TASK_STRING; - case 0x87654321: - return AT91_UART0_TEST_TASK_STRING; - case 0x99000001: - return TC_INJECTOR_STRING; - case 0xFFFFFFFF: - return NO_OBJECT_STRING; - default: - return "UNKNOWN_OBJECT"; - } - return 0; -} diff --git a/defaultcfg/config/objects/translateObjects.h b/defaultcfg/config/objects/translateObjects.h deleted file mode 100644 index 5b656940..00000000 --- a/defaultcfg/config/objects/translateObjects.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef CONFIG_OBJECTS_TRANSLATEOBJECTS_H_ -#define CONFIG_OBJECTS_TRANSLATEOBJECTS_H_ - -#include - -const char* translateObject(object_id_t object); - - -#endif /* CONFIG_OBJECTS_TRANSLATEOBJECTS_H_ */ From e4d323683d478118ea4f59d1ace3f684fa37793d Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Tue, 20 Oct 2020 17:47:52 +0200 Subject: [PATCH 04/19] readme fix --- defaultcfg/config/objects/Factory.cpp | 31 ++++++++++++--------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/defaultcfg/config/objects/Factory.cpp b/defaultcfg/config/objects/Factory.cpp index ea187a5e..51dd6130 100644 --- a/defaultcfg/config/objects/Factory.cpp +++ b/defaultcfg/config/objects/Factory.cpp @@ -1,11 +1,9 @@ #include "Factory.h" - -/* Config */ -#include -#include -#include -#include -#include +#include "../tmtc/apid.h" +#include "../tmtc/pusIds.h" +#include "../objects/systemObjectList.h" +#include "../devices/logicalAddresses.h" +#include "../devices/powerSwitcherList.h" #include #include @@ -13,21 +11,20 @@ #include #include #include -#include - #include - /** - * Build tasks by using SystemObject Interface (Interface). - * Header files of all tasks must be included - * Please note that an object has to implement the system object interface - * if the nterface validity is checked or retrieved later by using the - * get(object_id) function from the ObjectManagerIF. + * This class should be used to create all system objects required for + * the on-board software, using the object ID list from the configuration + * folder. + * + * The objects are registered in the internal object manager automatically. + * This is used later to add objects to tasks. + * + * This file also sets static framework IDs. * * Framework objects are created first. - * * @ingroup init */ void Factory::produce(void) { @@ -52,6 +49,6 @@ void Factory::setStaticFrameworkObjectIds() { DeviceHandlerFailureIsolation::powerConfirmationId = objects::NO_OBJECT; TmPacketStored::timeStamperId = objects::PUS_TIME; - TmFunnel::downlinkDestination = objects::NO_OBJECT; + //TmFunnel::downlinkDestination = objects::NO_OBJECT; } From ede00dfdcc5f4bb5b90093b473b84013b6cc1d83 Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Tue, 20 Oct 2020 17:50:10 +0200 Subject: [PATCH 05/19] double files removed, versioning files renamed --- defaultcfg/version.h => FSFWVersion.h | 0 defaultcfg/FSFWConfig.h | 41 ------------------- .../config/{version.h => OBSWVersion.h} | 0 3 files changed, 41 deletions(-) rename defaultcfg/version.h => FSFWVersion.h (100%) delete mode 100644 defaultcfg/FSFWConfig.h rename defaultcfg/config/{version.h => OBSWVersion.h} (100%) diff --git a/defaultcfg/version.h b/FSFWVersion.h similarity index 100% rename from defaultcfg/version.h rename to FSFWVersion.h diff --git a/defaultcfg/FSFWConfig.h b/defaultcfg/FSFWConfig.h deleted file mode 100644 index 2001f306..00000000 --- a/defaultcfg/FSFWConfig.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef CONFIG_FSFWCONFIG_H_ -#define CONFIG_FSFWCONFIG_H_ - -#include "version.h" - -//! Used to determine whether C++ ostreams are used -//! Those can lead to code bloat. -#define FSFW_CPP_OSTREAM_ENABLED 1 - -//! Reduced printout to further decrese code size -//! Be careful, this also turns off most diagnostic prinouts! -#define FSFW_REDUCED_PRINTOUT 0 - -//! Can be used to enable debugging printouts for developing the FSFW -#define FSFW_DEBUGGING 0 - -//! Defines the FIFO depth of each commanding service base which -//! also determines how many commands a CSB service can handle in one cycle -//! simulataneously. This will increase the required RAM for -//! each CSB service ! -#define FSFW_CSB_FIFO_DEPTH 6 - -//! If -DDEBUG is supplied in the build defines, there will be -//! additional output which requires the translation files translateObjects -//! and translateEvents (and their compiles source files) -#ifdef DEBUG -#define FSFW_DEBUG_OUTPUT 1 -//! Specify whether info events are printed too. -#define FSFW_DEBUG_INFO 1 -#include -#include -#else -#define FSFW_DEBUG_OUTPUT 0 -#endif - -//! When using the newlib nano library, C99 support for stdio facilities -//! will not be provided. This define should be set to 1 if this is the case. -#define FSFW_NO_C99_IO 1 - - -#endif /* CONFIG_FSFWCONFIG_H_ */ diff --git a/defaultcfg/config/version.h b/defaultcfg/config/OBSWVersion.h similarity index 100% rename from defaultcfg/config/version.h rename to defaultcfg/config/OBSWVersion.h From 29a796ebdb85ca62ab6d90ec5519d561a51de40a Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Tue, 20 Oct 2020 17:51:13 +0200 Subject: [PATCH 06/19] include names fixed --- defaultcfg/config/FSFWConfig.h | 2 +- defaultcfg/config/OBSWConfig.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/defaultcfg/config/FSFWConfig.h b/defaultcfg/config/FSFWConfig.h index 2001f306..cfe89864 100644 --- a/defaultcfg/config/FSFWConfig.h +++ b/defaultcfg/config/FSFWConfig.h @@ -1,7 +1,7 @@ #ifndef CONFIG_FSFWCONFIG_H_ #define CONFIG_FSFWCONFIG_H_ -#include "version.h" +#include //! Used to determine whether C++ ostreams are used //! Those can lead to code bloat. diff --git a/defaultcfg/config/OBSWConfig.h b/defaultcfg/config/OBSWConfig.h index d186da7d..a9f57638 100644 --- a/defaultcfg/config/OBSWConfig.h +++ b/defaultcfg/config/OBSWConfig.h @@ -1,6 +1,8 @@ #ifndef CONFIG_OBSWCONFIG_H_ #define CONFIG_OBSWCONFIG_H_ +#include "OBSWVersion.h" + #ifdef __cplusplus namespace config { #endif From 6cce062d622a126a7eca831b3f3070bfdc6c6f21 Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Tue, 20 Oct 2020 17:52:43 +0200 Subject: [PATCH 07/19] some more fixes --- defaultcfg/config/objects/Factory.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/defaultcfg/config/objects/Factory.h b/defaultcfg/config/objects/Factory.h index 8b99ae99..fe55deff 100644 --- a/defaultcfg/config/objects/Factory.h +++ b/defaultcfg/config/objects/Factory.h @@ -5,15 +5,12 @@ #include namespace Factory { - size_t calculateStorage(uint8_t numberOfPools, uint16_t* numberOfElements, - uint16_t* sizeOfElements); /** * @brief Creates all SystemObject elements which are persistent * during execution. */ void produce(); void setStaticFrameworkObjectIds(); - } From 4dd79b349515ca0606d2fa7d5c29089c3b56da5c Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Thu, 29 Oct 2020 15:16:16 +0100 Subject: [PATCH 08/19] not static anymore --- FSFWVersion.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FSFWVersion.h b/FSFWVersion.h index b3ef8318..dcb592dc 100644 --- a/FSFWVersion.h +++ b/FSFWVersion.h @@ -1,7 +1,7 @@ #ifndef FSFW_DEFAULTCFG_VERSION_H_ #define FSFW_DEFAULTCFG_VERSION_H_ -static const char* FSFW_VERSION_NAME = "fsfw"; +const char* const FSFW_VERSION_NAME = "fsfw"; #define FSFW_VERSION 0 #define FSFW_SUBVERSION 0 From 27e0b9cf380a778e425c08e3c9c77ec7cc521a08 Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Thu, 29 Oct 2020 15:17:13 +0100 Subject: [PATCH 09/19] default FIFO depth is 5 now --- defaultcfg/config/FSFWConfig.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defaultcfg/config/FSFWConfig.h b/defaultcfg/config/FSFWConfig.h index cfe89864..a5aaa125 100644 --- a/defaultcfg/config/FSFWConfig.h +++ b/defaultcfg/config/FSFWConfig.h @@ -18,7 +18,7 @@ //! also determines how many commands a CSB service can handle in one cycle //! simulataneously. This will increase the required RAM for //! each CSB service ! -#define FSFW_CSB_FIFO_DEPTH 6 +#define FSFW_CSB_FIFO_DEPTH 4 //! If -DDEBUG is supplied in the build defines, there will be //! additional output which requires the translation files translateObjects From 64c341b5f686cbd7921b75e879017c93b94dcf6e Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Thu, 29 Oct 2020 15:17:33 +0100 Subject: [PATCH 10/19] now really five --- defaultcfg/config/FSFWConfig.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defaultcfg/config/FSFWConfig.h b/defaultcfg/config/FSFWConfig.h index a5aaa125..945992df 100644 --- a/defaultcfg/config/FSFWConfig.h +++ b/defaultcfg/config/FSFWConfig.h @@ -18,7 +18,7 @@ //! also determines how many commands a CSB service can handle in one cycle //! simulataneously. This will increase the required RAM for //! each CSB service ! -#define FSFW_CSB_FIFO_DEPTH 4 +#define FSFW_CSB_FIFO_DEPTH 5 //! If -DDEBUG is supplied in the build defines, there will be //! additional output which requires the translation files translateObjects From 9af5855ece0310e53c33a81ba2409b909ebbee98 Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Thu, 29 Oct 2020 15:23:14 +0100 Subject: [PATCH 11/19] event stuff added --- defaultcfg/config/FSFWConfig.h | 8 ++++++++ events/EventManager.cpp | 1 - 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/defaultcfg/config/FSFWConfig.h b/defaultcfg/config/FSFWConfig.h index 945992df..67c04225 100644 --- a/defaultcfg/config/FSFWConfig.h +++ b/defaultcfg/config/FSFWConfig.h @@ -2,6 +2,7 @@ #define CONFIG_FSFWCONFIG_H_ #include +#include //! Used to determine whether C++ ostreams are used //! Those can lead to code bloat. @@ -37,5 +38,12 @@ //! will not be provided. This define should be set to 1 if this is the case. #define FSFW_NO_C99_IO 1 +namespace fsfwconfig { +//! Configure the allocated pool sizes for the event manager. +static constexpr size_t FSFW_EVENTMGMR_MATCHTREE_NODES = 240; +static constexpr size_t FSFW_EVENTMGMT_EVENTIDMATCHERS = 120; +static constexpr size_t FSFW_EVENTMGMR_RANGEMATCHERS = 120; +} + #endif /* CONFIG_FSFWCONFIG_H_ */ diff --git a/events/EventManager.cpp b/events/EventManager.cpp index e71951e3..3bce53eb 100644 --- a/events/EventManager.cpp +++ b/events/EventManager.cpp @@ -12,7 +12,6 @@ const uint16_t EventManager::POOL_SIZES[N_POOLS] = { // objects registering for certain events. // Each listener requires 1 or 2 EventIdMatcher and 1 or 2 ReportRangeMatcher. // So a good guess is 75 to a max of 100 pools required for each, which fits well. -// SHOULDDO: Shouldn't this be in the config folder and passed via ctor? const uint16_t EventManager::N_ELEMENTS[N_POOLS] = { 240, 120, 120 }; EventManager::EventManager(object_id_t setObjectId) : From 78896323b6a67e995508592c0a313917a2e72e7a Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Thu, 29 Oct 2020 17:09:43 +0100 Subject: [PATCH 12/19] fsfw config update --- defaultcfg/config/FSFWConfig.h | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/defaultcfg/config/FSFWConfig.h b/defaultcfg/config/FSFWConfig.h index 67c04225..ea724a64 100644 --- a/defaultcfg/config/FSFWConfig.h +++ b/defaultcfg/config/FSFWConfig.h @@ -12,6 +12,10 @@ //! Be careful, this also turns off most diagnostic prinouts! #define FSFW_REDUCED_PRINTOUT 0 +//! Default timestamp size. The default timestamp will be an eight byte CDC +//! short timestamp. +#define FSFW_MISSION_TIMESTAMP_SIZE 8 + //! Can be used to enable debugging printouts for developing the FSFW #define FSFW_DEBUGGING 0 @@ -19,12 +23,14 @@ //! also determines how many commands a CSB service can handle in one cycle //! simulataneously. This will increase the required RAM for //! each CSB service ! -#define FSFW_CSB_FIFO_DEPTH 5 +#define FSFW_CSB_FIFO_DEPTH 6 -//! If -DDEBUG is supplied in the build defines, there will be +//! If FSFW_OBJ_EVENT_TRANSLATION is set to one, //! additional output which requires the translation files translateObjects -//! and translateEvents (and their compiles source files) -#ifdef DEBUG +//! and translateEvents (and their compiled source files) +#define FSFW_OBJ_EVENT_TRANSLATION 0 + +#if FSFW_OBJ_EVENT_TRANSLATION == 1 #define FSFW_DEBUG_OUTPUT 1 //! Specify whether info events are printed too. #define FSFW_DEBUG_INFO 1 @@ -45,5 +51,4 @@ static constexpr size_t FSFW_EVENTMGMT_EVENTIDMATCHERS = 120; static constexpr size_t FSFW_EVENTMGMR_RANGEMATCHERS = 120; } - #endif /* CONFIG_FSFWCONFIG_H_ */ From f5b0589f792408bbac2a16e1a0394d6997191abe Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Thu, 29 Oct 2020 17:28:33 +0100 Subject: [PATCH 13/19] event manager update --- events/EventManager.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/events/EventManager.cpp b/events/EventManager.cpp index 3bce53eb..f60a8a66 100644 --- a/events/EventManager.cpp +++ b/events/EventManager.cpp @@ -1,5 +1,7 @@ #include "EventManager.h" #include "EventMessage.h" +#include + #include "../serviceinterface/ServiceInterfaceStream.h" #include "../ipc/QueueFactory.h" #include "../ipc/MutexFactory.h" @@ -12,7 +14,10 @@ const uint16_t EventManager::POOL_SIZES[N_POOLS] = { // objects registering for certain events. // Each listener requires 1 or 2 EventIdMatcher and 1 or 2 ReportRangeMatcher. // So a good guess is 75 to a max of 100 pools required for each, which fits well. -const uint16_t EventManager::N_ELEMENTS[N_POOLS] = { 240, 120, 120 }; +const uint16_t EventManager::N_ELEMENTS[N_POOLS] = { + fsfwconfig::FSFW_EVENTMGMR_MATCHTREE_NODES , + fsfwconfig::FSFW_EVENTMGMT_EVENTIDMATCHERS, + fsfwconfig::FSFW_EVENTMGMR_RANGEMATCHERS }; EventManager::EventManager(object_id_t setObjectId) : SystemObject(setObjectId), From 9b5e9409656fcd7b5c32fdbdb73fe55de5804aaa Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Thu, 29 Oct 2020 17:32:07 +0100 Subject: [PATCH 14/19] config make fix --- defaultcfg/{ => config}/config.mk | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) rename defaultcfg/{ => config}/config.mk (50%) diff --git a/defaultcfg/config.mk b/defaultcfg/config/config.mk similarity index 50% rename from defaultcfg/config.mk rename to defaultcfg/config/config.mk index fcf3b799..c9584114 100644 --- a/defaultcfg/config.mk +++ b/defaultcfg/config/config.mk @@ -6,12 +6,10 @@ CXXSRC += $(wildcard $(CURRENTPATH)/config/tmtc/*.cpp) CXXSRC += $(wildcard $(CURRENTPATH)/config/devices/*.cpp) INCLUDES += $(CURRENTPATH) -INCLUDES += $(CURRENTPATH)/config/ -INCLUDES += $(CURRENTPATH)/config/objects -INCLUDES += $(CURRENTPATH)/config/returnvalues -INCLUDES += $(CURRENTPATH)/config/tmtc -INCLUDES += $(CURRENTPATH)/config/events -INCLUDES += $(CURRENTPATH)/config/devices -INCLUDES += $(CURRENTPATH)/config/pollingsequence -INCLUDES += $(CURRENTPATH)/config/ipc -INCLUDES += $(CURRENTPATH)/config/ +INCLUDES += $(CURRENTPATH)/objects +INCLUDES += $(CURRENTPATH)/returnvalues +INCLUDES += $(CURRENTPATH)/tmtc +INCLUDES += $(CURRENTPATH)/events +INCLUDES += $(CURRENTPATH)/devices +INCLUDES += $(CURRENTPATH)/pollingsequence +INCLUDES += $(CURRENTPATH)/ipc From af4c6f1d45fd9a42f5f0a189765671c6b89d9b21 Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Thu, 29 Oct 2020 17:33:40 +0100 Subject: [PATCH 15/19] config mk update --- defaultcfg/config/config.mk | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/defaultcfg/config/config.mk b/defaultcfg/config/config.mk index c9584114..51543eba 100644 --- a/defaultcfg/config/config.mk +++ b/defaultcfg/config/config.mk @@ -1,9 +1,9 @@ -CXXSRC += $(wildcard $(CURRENTPATH)/config/ipc/*.cpp) -CXXSRC += $(wildcard $(CURRENTPATH)/config/objects/*.cpp) -CXXSRC += $(wildcard $(CURRENTPATH)/config/pollingsequence/*.cpp) -CXXSRC += $(wildcard $(CURRENTPATH)/config/events/*.cpp) -CXXSRC += $(wildcard $(CURRENTPATH)/config/tmtc/*.cpp) -CXXSRC += $(wildcard $(CURRENTPATH)/config/devices/*.cpp) +CXXSRC += $(wildcard $(CURRENTPATH)/ipc/*.cpp) +CXXSRC += $(wildcard $(CURRENTPATH)/objects/*.cpp) +CXXSRC += $(wildcard $(CURRENTPATH)/pollingsequence/*.cpp) +CXXSRC += $(wildcard $(CURRENTPATH)/events/*.cpp) +CXXSRC += $(wildcard $(CURRENTPATH)/tmtc/*.cpp) +CXXSRC += $(wildcard $(CURRENTPATH)/devices/*.cpp) INCLUDES += $(CURRENTPATH) INCLUDES += $(CURRENTPATH)/objects From a5cf510ae9d90b79499e0355861adbb49eaf7191 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Fri, 30 Oct 2020 13:31:07 +0100 Subject: [PATCH 16/19] host osal fixes --- osal/host/QueueFactory.cpp | 7 ++++++- timemanager/CCSDSTime.cpp | 19 +++++++++++-------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/osal/host/QueueFactory.cpp b/osal/host/QueueFactory.cpp index da3fea55..1a679c96 100644 --- a/osal/host/QueueFactory.cpp +++ b/osal/host/QueueFactory.cpp @@ -1,6 +1,11 @@ + +#include "MessageQueue.h" + +#include "../../ipc/MessageQueueSenderIF.h" +#include "../../ipc/MessageQueueMessageIF.h" #include "../../ipc/QueueFactory.h" -#include "../../osal/host/MessageQueue.h" #include "../../serviceinterface/ServiceInterfaceStream.h" + #include QueueFactory* QueueFactory::factoryInstance = nullptr; diff --git a/timemanager/CCSDSTime.cpp b/timemanager/CCSDSTime.cpp index f99f8fbb..f137e030 100644 --- a/timemanager/CCSDSTime.cpp +++ b/timemanager/CCSDSTime.cpp @@ -1,8 +1,9 @@ -#include "../timemanager/CCSDSTime.h" +#include "CCSDSTime.h" + #include #include #include - +#include CCSDSTime::CCSDSTime() { } @@ -158,15 +159,16 @@ ReturnValue_t CCSDSTime::convertFromASCII(Clock::TimeOfDay_t* to, const uint8_t* } // Newlib nano can't parse uint8, see SCNu8 documentation and https://sourceware.org/newlib/README // Suggestion: use uint16 all the time. This should work on all systems. -#ifdef NEWLIB_NANO_NO_C99_IO +#if FSFW_NO_C99_IO == 1 uint16_t year; uint16_t month; uint16_t day; uint16_t hour; uint16_t minute; float second; - int count = sscanf((char *) from, "%4" SCNu16 "-%2" SCNu16 "-%2" SCNu16 "T%2" SCNu16 ":%2" SCNu16 ":%fZ", &year, - &month, &day, &hour, &minute, &second); + int count = sscanf((char *) from, "%4" SCNu16 "-%2" SCNu16 "-%2" SCNu16 "T%" + "2" SCNu16 ":%2" SCNu16 ":%fZ", &year, &month, &day, &hour, + &minute, &second); if (count == 6) { to->year = year; to->month = month; @@ -179,12 +181,13 @@ ReturnValue_t CCSDSTime::convertFromASCII(Clock::TimeOfDay_t* to, const uint8_t* } // try Code B (yyyy-ddd) - count = sscanf((char *) from, "%4" SCNu16 "-%3" SCNu16 "T%2" SCNu16 ":%2" SCNu16 ":%fZ", &year, &day, - &hour, &minute, &second); + count = sscanf((char *) from, "%4" SCNu16 "-%3" SCNu16 "T%2" SCNu16 ":%" + "2" SCNu16 ":%fZ", &year, &day, &hour, &minute, &second); if (count == 5) { uint8_t tempDay; ReturnValue_t result = CCSDSTime::convertDaysOfYear(day, year, - reinterpret_cast(&month), reinterpret_cast(&tempDay)); + reinterpret_cast(&month), + reinterpret_cast(&tempDay)); if (result != RETURN_OK) { return RETURN_FAILED; } From 82a2f3ec617df97d04761e7788866759a7ac5203 Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Fri, 30 Oct 2020 14:21:31 +0100 Subject: [PATCH 17/19] testcfg fix --- unittest/testcfg/Makefile-FSFW-Tests | 2 +- unittest/testcfg/cdatapool/dataPoolInit.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/unittest/testcfg/Makefile-FSFW-Tests b/unittest/testcfg/Makefile-FSFW-Tests index d43a6edc..2017d2bd 100644 --- a/unittest/testcfg/Makefile-FSFW-Tests +++ b/unittest/testcfg/Makefile-FSFW-Tests @@ -1,5 +1,5 @@ #------------------------------------------------------------------------------- -# Makefile for FSFW Test +# Makefile for FSFW Test #------------------------------------------------------------------------------- # User-modifiable options #------------------------------------------------------------------------------- diff --git a/unittest/testcfg/cdatapool/dataPoolInit.h b/unittest/testcfg/cdatapool/dataPoolInit.h index 23a3d01f..9425d767 100644 --- a/unittest/testcfg/cdatapool/dataPoolInit.h +++ b/unittest/testcfg/cdatapool/dataPoolInit.h @@ -1,7 +1,7 @@ #ifndef HOSTED_CONFIG_CDATAPOOL_DATAPOOLINIT_H_ #define HOSTED_CONFIG_CDATAPOOL_DATAPOOLINIT_H_ -#include +#include #include #include #include From 5d0f96c3a14023dc9b714d0a75fdad8a91e77477 Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Fri, 30 Oct 2020 14:42:42 +0100 Subject: [PATCH 18/19] reamde update --- unittest/README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/unittest/README.md b/unittest/README.md index e628d43e..8a787c07 100644 --- a/unittest/README.md +++ b/unittest/README.md @@ -7,6 +7,16 @@ The makefile with default settings creates the unit test binary which can be run in the terminal or in eclipse. ### Instructions + +To run the fsfw unittests in the project, perform following steps: + +1. Copy the testcfg folder the project root (folder containing the FSFW). +2. There is a makefile inside the testcfg folder which can be used to have + a starting point to compile the unit tests. Copy that Makefile to the project + root +3. Create a folder named catch2 (can have other name which requires Makefile + adaption) and copy the Catch2 header files there (NOTE: CMake support + not enabled yet!) ### Eclipse CDT settings From 77fd2cb871dcedec159bf1ae6b7014362c26814f Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Mon, 2 Nov 2020 14:53:44 +0100 Subject: [PATCH 19/19] mission timestmap size is uint8 now --- defaultcfg/config/FSFWConfig.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/defaultcfg/config/FSFWConfig.h b/defaultcfg/config/FSFWConfig.h index ea724a64..ea86152c 100644 --- a/defaultcfg/config/FSFWConfig.h +++ b/defaultcfg/config/FSFWConfig.h @@ -12,10 +12,6 @@ //! Be careful, this also turns off most diagnostic prinouts! #define FSFW_REDUCED_PRINTOUT 0 -//! Default timestamp size. The default timestamp will be an eight byte CDC -//! short timestamp. -#define FSFW_MISSION_TIMESTAMP_SIZE 8 - //! Can be used to enable debugging printouts for developing the FSFW #define FSFW_DEBUGGING 0 @@ -45,6 +41,10 @@ #define FSFW_NO_C99_IO 1 namespace fsfwconfig { +//! Default timestamp size. The default timestamp will be an eight byte CDC +//! short timestamp. +static constexpr uint8_t FSFW_MISSION_TIMESTAMP_SIZE = 8; + //! Configure the allocated pool sizes for the event manager. static constexpr size_t FSFW_EVENTMGMR_MATCHTREE_NODES = 240; static constexpr size_t FSFW_EVENTMGMT_EVENTIDMATCHERS = 120;