diff --git a/.gitmodules b/.gitmodules index dae431d4..7af82082 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,5 +1,5 @@ [submodule "etl"] - path = etl + path = thirdparty/etl url = https://github.com/ETLCPP/etl.git [submodule "arduino"] path = arduino @@ -10,3 +10,6 @@ [submodule "tmtc"] path = tmtc url = https://egit.irs.uni-stuttgart.de/eive/eive_tmtc.git +[submodule "thirdparty/lwgps"] + path = thirdparty/lwgps + url = https://github.com/rmspacefish/lwgps.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 2cde6b98..53689123 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,6 +15,7 @@ cmake_minimum_required(VERSION 3.13) set(CMAKE_SCRIPT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +option(ADD_ETL_LIB "Add ETL library" ON) if(NOT OS_FSFW) set(OS_FSFW host CACHE STRING "OS for the FSFW.") endif() @@ -37,14 +38,21 @@ set(CMAKE_CXX_STANDARD_REQUIRED True) # Set names and variables set(TARGET_NAME ${CMAKE_PROJECT_NAME}) set(LIB_FSFW_NAME fsfw) +set(LIB_ETL_NAME etl) set(LIB_CSP_NAME libcsp) +set(LIB_LWGPS_NAME lwgps) +set(THIRD_PARTY_FOLDER thirdparty) # Set path names set(FSFW_PATH fsfw) set(MISSION_PATH mission) -set(CSPLIB_PATH libcsp) set(TEST_PATH test/testtasks) set(LINUX_PATH linux) +set(COMMON_PATH common) + +set(CSP_LIB_PATH ${THIRD_PARTY_FOLDER}/libcsp) +set(ETL_LIB_PATH ${THIRD_PARTY_FOLDER}/etl) +set(LWGPS_LIB_PATH ${THIRD_PARTY_FOLDER}/lwgps) set(FSFW_WARNING_SHADOW_LOCAL_GCC OFF) set(ADD_LINUX_FILES FALSE) @@ -73,6 +81,8 @@ else() # Required by FSFW library set(FSFW_CONFIG_PATH "${BSP_PATH}/fsfwconfig") endif() +# Set for lwgps library +set(LWGPS_CONFIG_PATH "${COMMON_PATH}/config") ################################################################################ # Executable and Sources @@ -87,17 +97,23 @@ if(ROOT_CONFIG_FOLDER) endif() if(ADD_CSP_LIB) - add_subdirectory(${CSPLIB_PATH}) + add_subdirectory(${CSP_LIB_PATH}) +endif() + +if(ADD_ETL_LIB) + add_subdirectory(${ETL_LIB_PATH}) endif() if(ADD_LINUX_FILES) add_subdirectory(${LINUX_PATH}) endif() +add_subdirectory(${LWGPS_LIB_PATH}) add_subdirectory(${BSP_PATH}) add_subdirectory(${FSFW_PATH}) add_subdirectory(${MISSION_PATH}) add_subdirectory(${TEST_PATH}) +add_subdirectory(${COMMON_PATH}) ################################################################################ # Post-Sources preparation @@ -109,8 +125,15 @@ set_property(CACHE OS_FSFW PROPERTY STRINGS host linux) target_link_libraries(${TARGET_NAME} PRIVATE ${LIB_FSFW_NAME} ${LIB_OS_NAME} + ${LIB_LWGPS_NAME} ) +if(ADD_ETL_LIB) + target_link_libraries(${TARGET_NAME} PRIVATE + ${LIB_ETL_NAME} + ) +endif() + if(ADD_CSP_LIB) target_link_libraries(${TARGET_NAME} PRIVATE ${LIB_CSP_NAME} diff --git a/README.md b/README.md index 4d8c0ecf..6d38fd66 100644 --- a/README.md +++ b/README.md @@ -208,7 +208,16 @@ or ssh eive@192.168.199.227 ``` -To access the console of the Q7S run the following: +If the static IP address of the Q7S has already been set, +you can access it with ssh + +```sh +ssh root@192.168.133.10 +``` + +If this has not been done yet, you can access the serial +console of the Q7S like this to set it + ```sh picocom -b 115200 /dev/ttyUSB0 ``` diff --git a/bsp_hosted/InitMission.cpp b/bsp_hosted/InitMission.cpp index 5ed5775d..06bc5646 100644 --- a/bsp_hosted/InitMission.cpp +++ b/bsp_hosted/InitMission.cpp @@ -15,7 +15,6 @@ #include -// This is configured for linux without \cr #ifdef LINUX ServiceInterfaceStream sif::debug("DEBUG"); ServiceInterfaceStream sif::info("INFO"); @@ -31,8 +30,8 @@ ServiceInterfaceStream sif::error("ERROR", true, false, true); ObjectManagerIF *objectManager = nullptr; void initmission::initMission() { - sif::info << "Building global objects.." << std::endl; - /* Instantiate global object manager and also create all objects */ + sif::info << "Building global objects.." << std::endl; + /* Instantiate global object manager and also create all objects */ objectManager = new ObjectManager(ObjectFactory::produce); sif::info << "Initializing all objects.." << std::endl; objectManager->initialize(); @@ -41,117 +40,120 @@ void initmission::initMission() { initTasks(); } -void initmission::initTasks(){ - /* TMTC Distribution */ - PeriodicTaskIF* TmTcDistributor = TaskFactory::instance()-> - createPeriodicTask("DIST", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, - 0.100, nullptr); - ReturnValue_t result = TmTcDistributor->addComponent( - objects::CCSDS_PACKET_DISTRIBUTOR); - if(result!=HasReturnvaluesIF::RETURN_OK){ - sif::error << "Object add component failed" << std::endl; - } - result = TmTcDistributor->addComponent(objects::PUS_PACKET_DISTRIBUTOR); - if(result!=HasReturnvaluesIF::RETURN_OK){ - sif::error << "Object add component failed" << std::endl; - } - result = TmTcDistributor->addComponent(objects::TM_FUNNEL); +void initmission::initTasks() { + TaskFactory* factory = TaskFactory::instance(); + if(factory == nullptr) { + /* Should never happen ! */ + return; + } +#if OBSW_PRINT_MISSED_DEADLINES == 1 + void (*missedDeadlineFunc) (void) = TaskFactory::printMissedDeadline; +#else + void (*missedDeadlineFunc) (void) = nullptr; +#endif + + /* TMTC Distribution */ + PeriodicTaskIF* tmTcDistributor = factory->createPeriodicTask( + "DIST", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc); + ReturnValue_t result = tmTcDistributor->addComponent( + objects::CCSDS_PACKET_DISTRIBUTOR); + if(result != HasReturnvaluesIF::RETURN_OK){ + sif::error << "Object add component failed" << std::endl; + } + result = tmTcDistributor->addComponent(objects::PUS_PACKET_DISTRIBUTOR); + if(result != HasReturnvaluesIF::RETURN_OK){ + sif::error << "Object add component failed" << std::endl; + } + result = tmTcDistributor->addComponent(objects::TM_FUNNEL); if(result != HasReturnvaluesIF::RETURN_OK) { - sif::error << "Object add component failed" << std::endl; + sif::error << "Object add component failed" << std::endl; } /* UDP bridge */ - PeriodicTaskIF* UdpBridgeTask = TaskFactory::instance()->createPeriodicTask( - "UDP_UNIX_BRIDGE", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, - 0.2, nullptr); - result = UdpBridgeTask->addComponent(objects::UDP_BRIDGE); + PeriodicTaskIF* udpBridgeTask = factory->createPeriodicTask( + "UDP_UNIX_BRIDGE", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc); + result = udpBridgeTask->addComponent(objects::UDP_BRIDGE); if(result != HasReturnvaluesIF::RETURN_OK) { - sif::error << "Add component UDP Unix Bridge failed" << std::endl; + sif::error << "Add component UDP Unix Bridge failed" << std::endl; } - PeriodicTaskIF* UdpPollingTask = TaskFactory::instance()-> - createPeriodicTask("UDP_POLLING", 80, - PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, nullptr); - result = UdpPollingTask->addComponent(objects::UDP_POLLING_TASK); + PeriodicTaskIF* udpPollingTask = factory->createPeriodicTask( + "UDP_POLLING", 80, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc); + result = udpPollingTask->addComponent(objects::UDP_POLLING_TASK); if(result != HasReturnvaluesIF::RETURN_OK) { - sif::error << "Add component UDP Polling failed" << std::endl; + sif::error << "Add component UDP Polling failed" << std::endl; } - /* PUS Services */ - PeriodicTaskIF* PusVerification = TaskFactory::instance()-> - createPeriodicTask("PUS_VERIF_1", 40, - PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, nullptr); - result = PusVerification->addComponent(objects::PUS_SERVICE_1_VERIFICATION); - if(result != HasReturnvaluesIF::RETURN_OK){ - sif::error << "Object add component failed" << std::endl; - } + /* PUS Services */ + PeriodicTaskIF* pusVerification = factory->createPeriodicTask( + "PUS_VERIF", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc); + result = pusVerification->addComponent(objects::PUS_SERVICE_1_VERIFICATION); + if(result != HasReturnvaluesIF::RETURN_OK){ + sif::error << "Object add component failed" << std::endl; + } - PeriodicTaskIF* PusEvents = TaskFactory::instance()-> - createPeriodicTask("PUS_VERIF_1", 60, - PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, nullptr); - result = PusVerification->addComponent(objects::PUS_SERVICE_5_EVENT_REPORTING); - if(result != HasReturnvaluesIF::RETURN_OK){ - sif::error << "Object add component failed" << std::endl; - } + PeriodicTaskIF* pusEvents = factory->createPeriodicTask( + "PUS_EVENTS", 60, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc); + result = pusVerification->addComponent(objects::PUS_SERVICE_5_EVENT_REPORTING); + if(result != HasReturnvaluesIF::RETURN_OK){ + initmission::printAddObjectError("PUS5", objects::PUS_SERVICE_5_EVENT_REPORTING); + } - PeriodicTaskIF* PusHighPrio = TaskFactory::instance()-> - createPeriodicTask("PUS_HIGH_PRIO", 50, - PeriodicTaskIF::MINIMUM_STACK_SIZE, - 0.200, nullptr); - result = PusHighPrio->addComponent(objects::PUS_SERVICE_2_DEVICE_ACCESS); - if(result!=HasReturnvaluesIF::RETURN_OK){ - sif::error << "Object add component failed" << std::endl; - } - result = PusHighPrio->addComponent(objects::PUS_SERVICE_9_TIME_MGMT); - if(result!=HasReturnvaluesIF::RETURN_OK){ - sif::error << "Object add component failed" << std::endl; - } + PeriodicTaskIF* pusHighPrio = factory->createPeriodicTask( + "PUS_HIGH_PRIO", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc); + result = pusHighPrio->addComponent(objects::PUS_SERVICE_2_DEVICE_ACCESS); + if(result != HasReturnvaluesIF::RETURN_OK) { + initmission::printAddObjectError("PUS2", objects::PUS_SERVICE_2_DEVICE_ACCESS); + } + result = pusHighPrio->addComponent(objects::PUS_SERVICE_9_TIME_MGMT); + if(result != HasReturnvaluesIF::RETURN_OK) { + initmission::printAddObjectError("PUS9", objects::PUS_SERVICE_9_TIME_MGMT); + } - PeriodicTaskIF* PusMedPrio = TaskFactory::instance()-> - createPeriodicTask("PUS_HIGH_PRIO", 40, - PeriodicTaskIF::MINIMUM_STACK_SIZE, - 0.8, nullptr); - result = PusMedPrio->addComponent(objects::PUS_SERVICE_8_FUNCTION_MGMT); - if(result!=HasReturnvaluesIF::RETURN_OK){ - sif::error << "Object add component failed" << std::endl; - } - result = PusMedPrio->addComponent(objects::PUS_SERVICE_200_MODE_MGMT); - if(result!=HasReturnvaluesIF::RETURN_OK){ - sif::error << "Object add component failed" << std::endl; - } + PeriodicTaskIF* pusMedPrio = factory->createPeriodicTask( + "PUS_MED_PRIO", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.8, missedDeadlineFunc); + result = pusMedPrio->addComponent(objects::PUS_SERVICE_8_FUNCTION_MGMT); + if(result != HasReturnvaluesIF::RETURN_OK) { + initmission::printAddObjectError("PUS8", objects::PUS_SERVICE_8_FUNCTION_MGMT); + } + result = pusMedPrio->addComponent(objects::PUS_SERVICE_200_MODE_MGMT); + if(result != HasReturnvaluesIF::RETURN_OK) { + initmission::printAddObjectError("PUS200", objects::PUS_SERVICE_200_MODE_MGMT); + } + result = pusMedPrio->addComponent(objects::PUS_SERVICE_20_PARAMETERS); + if(result != HasReturnvaluesIF::RETURN_OK) { + initmission::printAddObjectError("PUS20", objects::PUS_SERVICE_20_PARAMETERS); + } - PeriodicTaskIF* PusLowPrio = TaskFactory::instance()-> - createPeriodicTask("PUSB", 30, PeriodicTaskIF::MINIMUM_STACK_SIZE, - 1.6, nullptr); - result = PusLowPrio->addComponent(objects::PUS_SERVICE_17_TEST); - if(result!=HasReturnvaluesIF::RETURN_OK){ - sif::error << "Object add component failed" << std::endl; - } + PeriodicTaskIF* pusLowPrio = factory->createPeriodicTask( + "PUS_LOW_PRIO", 30, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.6, missedDeadlineFunc); + result = pusLowPrio->addComponent(objects::PUS_SERVICE_17_TEST); + if(result != HasReturnvaluesIF::RETURN_OK) { + initmission::printAddObjectError("PUS17", objects::PUS_SERVICE_17_TEST); + } + PeriodicTaskIF* testTask = factory->createPeriodicTask( + "TEST_TASK", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc); +#if OBSW_ADD_TEST_CODE == 1 + result = testTask->addComponent(objects::TEST_TASK); + if(result != HasReturnvaluesIF::RETURN_OK) { + initmission::printAddObjectError("TEST_TASK", objects::TEST_TASK); + } +#endif /* OBSW_ADD_TEST_CODE == 1 */ + + sif::info << "Starting tasks.." << std::endl; + tmTcDistributor->startTask(); + udpBridgeTask->startTask(); + udpPollingTask->startTask(); + + pusVerification->startTask(); + pusEvents->startTask(); + pusHighPrio->startTask(); + pusMedPrio->startTask(); + pusLowPrio->startTask(); #if OBSW_ADD_TEST_CODE == 1 - FixedTimeslotTaskIF* TestTimeslotTask = TaskFactory::instance()-> - createFixedTimeslotTask("PST_TEST_TASK", 10, - PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.0, nullptr); - result = pst::pollingSequenceTestFunction(TestTimeslotTask); - if(result != HasReturnvaluesIF::RETURN_OK) { - sif::error << "InitMission::createTasks: Test PST initialization " - << "failed!" << std::endl; - } -#endif + testTask->startTask(); +#endif /* OBSW_ADD_TEST_CODE == 1 */ - //Main thread sleep - sif::info << "Starting tasks.." << std::endl; - TmTcDistributor->startTask(); - UdpBridgeTask->startTask(); - UdpPollingTask->startTask(); - - PusVerification->startTask(); - PusEvents->startTask(); - PusHighPrio->startTask(); - PusMedPrio->startTask(); - PusLowPrio->startTask(); -#if OBSW_ADD_TEST_CODE == 1 - TestTimeslotTask->startTask(); -#endif - sif::info << "Tasks started.." << std::endl; + sif::info << "Tasks started.." << std::endl; } diff --git a/bsp_hosted/fsfwconfig/OBSWConfig.h b/bsp_hosted/fsfwconfig/OBSWConfig.h index b784cd03..5996e3a2 100644 --- a/bsp_hosted/fsfwconfig/OBSWConfig.h +++ b/bsp_hosted/fsfwconfig/OBSWConfig.h @@ -6,7 +6,9 @@ #ifndef CONFIG_OBSWCONFIG_H_ #define CONFIG_OBSWCONFIG_H_ -#define OBSW_ADD_TEST_CODE 0 +#include "commonConfig.h" + +#define OBSW_ADD_TEST_CODE 1 /* These defines should be disabled for mission code but are useful for debugging. */ diff --git a/bsp_hosted/fsfwconfig/devices/gpioIds.h b/bsp_hosted/fsfwconfig/devices/gpioIds.h new file mode 100644 index 00000000..8963bd20 --- /dev/null +++ b/bsp_hosted/fsfwconfig/devices/gpioIds.h @@ -0,0 +1,35 @@ +#ifndef FSFWCONFIG_DEVICES_GPIOIDS_H_ +#define FSFWCONFIG_DEVICES_GPIOIDS_H_ + +#include + +namespace gpioIds { + enum gpioId_t { + HEATER_0, + HEATER_1, + HEATER_2, + HEATER_3, + HEATER_4, + HEATER_5, + HEATER_6, + HEATER_7, + DEPLSA1, + DEPLSA2, + + MGM_0_LIS3_CS, + MGM_1_RM3100_CS, + GYRO_0_ADIS_CS, + GYRO_1_L3G_CS, + GYRO_2_L3G_CS, + MGM_2_LIS3_CS, + MGM_3_RM3100_CS, + + TEST_ID_0, + TEST_ID_1 + }; +} + + + + +#endif /* FSFWCONFIG_DEVICES_GPIOIDS_H_ */ diff --git a/bsp_hosted/fsfwconfig/devices/powerSwitcherList.h b/bsp_hosted/fsfwconfig/devices/powerSwitcherList.h new file mode 100644 index 00000000..09bdf568 --- /dev/null +++ b/bsp_hosted/fsfwconfig/devices/powerSwitcherList.h @@ -0,0 +1,58 @@ +#ifndef FSFWCONFIG_DEVICES_POWERSWITCHERLIST_H_ +#define FSFWCONFIG_DEVICES_POWERSWITCHERLIST_H_ + +#include + +namespace pcduSwitches { + /* Switches are uint8_t datatype and go from 0 to 255 */ + enum switcherList { + Q7S, + PAYLOAD_PCDU_CH1, + RW, + TCS_BOARD_8V_HEATER_IN, + SUS_REDUNDANT, + DEPLOYMENT_MECHANISM, + PAYLOAD_PCDU_CH6, + ACS_BOARD_SIDE_B, + PAYLOAD_CAMERA, + TCS_BOARD_3V3, + SYRLINKS, + STAR_TRACKER, + MGT, + SUS_NOMINAL, + SOLAR_CELL_EXP, + PLOC, + ACS_BORAD_SIDE_A, + NUMBER_OF_SWITCHES + }; + + static const uint8_t ON = 1; + static const uint8_t OFF = 0; + + /* Output states after reboot of the PDUs */ + static const uint8_t INIT_STATE_Q7S = ON; + static const uint8_t INIT_STATE_PAYLOAD_PCDU_CH1 = OFF; + static const uint8_t INIT_STATE_RW = OFF; +#if TE0720 == 1 + /* Because the TE0720 is not connected to the PCDU, this switch is always on */ + static const uint8_t INIT_STATE_TCS_BOARD_8V_HEATER_IN = ON; +#else + static const uint8_t INIT_STATE_TCS_BOARD_8V_HEATER_IN = OFF; +#endif + static const uint8_t INIT_STATE_SUS_REDUNDANT = OFF; + static const uint8_t INIT_STATE_DEPLOYMENT_MECHANISM = OFF; + static const uint8_t INIT_STATE_PAYLOAD_PCDU_CH6 = OFF; + static const uint8_t INIT_STATE_ACS_BOARD_SIDE_B = OFF; + static const uint8_t INIT_STATE_PAYLOAD_CAMERA = OFF; + static const uint8_t INIT_STATE_TCS_BOARD_3V3 = OFF; + static const uint8_t INIT_STATE_SYRLINKS = OFF; + static const uint8_t INIT_STATE_STAR_TRACKER = OFF; + static const uint8_t INIT_STATE_MGT = OFF; + static const uint8_t INIT_STATE_SUS_NOMINAL = OFF; + static const uint8_t INIT_STATE_SOLAR_CELL_EXP = OFF; + static const uint8_t INIT_STATE_PLOC = OFF; + static const uint8_t INIT_STATE_ACS_BOARD_SIDE_A = OFF; +} + + +#endif /* FSFWCONFIG_DEVICES_POWERSWITCHERLIST_H_ */ diff --git a/bsp_hosted/fsfwconfig/objects/systemObjectList.h b/bsp_hosted/fsfwconfig/objects/systemObjectList.h index 05ed2c52..d7a1abd7 100644 --- a/bsp_hosted/fsfwconfig/objects/systemObjectList.h +++ b/bsp_hosted/fsfwconfig/objects/systemObjectList.h @@ -27,6 +27,21 @@ namespace objects { DUMMY_INTERFACE = 0xCAFECAFE, DUMMY_HANDLER = 0x4400AFFE, + /* 0x44 ('D') for device handlers */ + P60DOCK_HANDLER = 0x44000001, + PDU1_HANDLER = 0x44000002, + PDU2_HANDLER = 0x44000003, + ACU_HANDLER = 0x44000004, + TMP1075_HANDLER_1 = 0x44000005, + TMP1075_HANDLER_2 = 0x44000006, + MGM_0_LIS3_HANDLER = 0x4400007, + MGM_1_RM3100_HANDLER = 0x44000008, + MGM_2_LIS3_HANDLER = 0x44000009, + MGM_3_RM3100_HANDLER = 0x44000010, + GYRO_0_ADIS_HANDLER = 0x44000011, + GYRO_1_L3G_HANDLER = 0x44000012, + GYRO_2_L3G_HANDLER = 0x44000013, + /* 0x49 ('I') for Communication Interfaces **/ ARDUINO_COM_IF = 0x49000001 }; diff --git a/bsp_q7s/ObjectFactory.cpp b/bsp_q7s/ObjectFactory.cpp index 6a3b16bc..4c54e526 100644 --- a/bsp_q7s/ObjectFactory.cpp +++ b/bsp_q7s/ObjectFactory.cpp @@ -7,6 +7,7 @@ #include #include +#include #include #include @@ -15,7 +16,6 @@ #include #include #include -#include #include #include #include diff --git a/bsp_q7s/devices/CMakeLists.txt b/bsp_q7s/devices/CMakeLists.txt index c720706a..9e6fb793 100644 --- a/bsp_q7s/devices/CMakeLists.txt +++ b/bsp_q7s/devices/CMakeLists.txt @@ -1,3 +1,4 @@ target_sources(${TARGET_NAME} PRIVATE HeaterHandler.cpp + SolarArrayDeploymentHandler.cpp ) diff --git a/mission/devices/SolarArrayDeploymentHandler.cpp b/bsp_q7s/devices/SolarArrayDeploymentHandler.cpp similarity index 99% rename from mission/devices/SolarArrayDeploymentHandler.cpp rename to bsp_q7s/devices/SolarArrayDeploymentHandler.cpp index c114209b..80d941bf 100644 --- a/mission/devices/SolarArrayDeploymentHandler.cpp +++ b/bsp_q7s/devices/SolarArrayDeploymentHandler.cpp @@ -1,7 +1,8 @@ +#include "SolarArrayDeploymentHandler.h" + #include #include -#include #include #include diff --git a/mission/devices/SolarArrayDeploymentHandler.h b/bsp_q7s/devices/SolarArrayDeploymentHandler.h similarity index 100% rename from mission/devices/SolarArrayDeploymentHandler.h rename to bsp_q7s/devices/SolarArrayDeploymentHandler.h diff --git a/cmake/scripts/Host/create_cmake_debug_cfg.sh b/cmake/scripts/Host/create_cmake_debug_cfg.sh index ee7b441a..23c74de0 100644 --- a/cmake/scripts/Host/create_cmake_debug_cfg.sh +++ b/cmake/scripts/Host/create_cmake_debug_cfg.sh @@ -15,6 +15,7 @@ if [ "${counter}" -ge 5 ];then fi build_generator="" +build_dir="Debug-Host" os_fsfw="host" if [ "${OS}" = "Windows_NT" ]; then build_generator="MinGW Makefiles" @@ -23,4 +24,4 @@ else build_generator="Unix Makefiles" fi -python3 cmake_build_config.py -o "${os_fsfw}" -g "${build_generator}" -b "debug" +python3 cmake_build_config.py -o "${os_fsfw}" -g "${build_generator}" -b "debug" -l"${build_dir}" diff --git a/cmake/scripts/Host/create_cmake_release_cfg.sh b/cmake/scripts/Host/create_cmake_release_cfg.sh index 778cde3b..03378e98 100644 --- a/cmake/scripts/Host/create_cmake_release_cfg.sh +++ b/cmake/scripts/Host/create_cmake_release_cfg.sh @@ -16,6 +16,7 @@ fi build_generator="" os_fsfw="host" +build_dir="Debug-Release" if [ "${OS}" = "Windows_NT" ]; then build_generator="MinGW Makefiles" # Could be other OS but this works for now. @@ -23,4 +24,4 @@ else build_generator="Unix Makefiles" fi -python3 cmake_build_config.py -o "${os_fsfw}" -g "${build_generator}" -b "release" +python3 cmake_build_config.py -o "${os_fsfw}" -g "${build_generator}" -b "release" -l"${build_dir}" diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt new file mode 100644 index 00000000..9040988f --- /dev/null +++ b/common/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(config) diff --git a/common/config/CMakeLists.txt b/common/config/CMakeLists.txt new file mode 100644 index 00000000..f38f2c50 --- /dev/null +++ b/common/config/CMakeLists.txt @@ -0,0 +1,3 @@ +target_include_directories(${TARGET_NAME} PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR} +) \ No newline at end of file diff --git a/common/config/commonConfig.h b/common/config/commonConfig.h new file mode 100644 index 00000000..6c5cb4c4 --- /dev/null +++ b/common/config/commonConfig.h @@ -0,0 +1,7 @@ +#ifndef COMMON_CONFIG_COMMONCONFIG_H_ +#define COMMON_CONFIG_COMMONCONFIG_H_ + +#define OBSW_ADD_LWGPS_TEST 0 + + +#endif /* COMMON_CONFIG_COMMONCONFIG_H_ */ diff --git a/common/config/lwgps_opts.h b/common/config/lwgps_opts.h new file mode 100644 index 00000000..20632d6f --- /dev/null +++ b/common/config/lwgps_opts.h @@ -0,0 +1,44 @@ +/** + * \file lwgps_opts_template.h + * \brief LwGPS configuration file + */ + +/* + * Copyright (c) 2020 Tilen MAJERLE + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE + * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * This file is part of LwGPS - Lightweight GPS NMEA parser library. + * + * Author: Tilen MAJERLE + * Version: v2.1.0 + */ +#ifndef LWGPS_HDR_OPTS_H +#define LWGPS_HDR_OPTS_H + +/* Rename this file to "lwgps_opts.h" for your application */ + +/* + * Open "include/lwgps/lwgps_opt.h" and + * copy & replace here settings you want to change values + */ + +#endif /* LWGPS_HDR_OPTS_H */ diff --git a/fsfwconfig/OBSWConfig.h b/fsfwconfig/OBSWConfig.h index d4220b9e..f40fbec3 100644 --- a/fsfwconfig/OBSWConfig.h +++ b/fsfwconfig/OBSWConfig.h @@ -9,6 +9,7 @@ #ifdef RASPBERRY_PI #include #endif +#include "commonConfig.h" #include "OBSWVersion.h" /* These defines should be disabled for mission code but are useful for diff --git a/misc/eclipse/Host/eive-mingw-debug-cmake.launch b/misc/eclipse/Host/eive-mingw-debug-cmake.launch index 3552a26b..d31b97e9 100644 --- a/misc/eclipse/Host/eive-mingw-debug-cmake.launch +++ b/misc/eclipse/Host/eive-mingw-debug-cmake.launch @@ -4,7 +4,7 @@ - + @@ -18,7 +18,7 @@ - + diff --git a/mission/devices/CMakeLists.txt b/mission/devices/CMakeLists.txt index aec93c1c..a8205276 100644 --- a/mission/devices/CMakeLists.txt +++ b/mission/devices/CMakeLists.txt @@ -10,7 +10,6 @@ target_sources(${TARGET_NAME} PUBLIC PDU1Handler.cpp PDU2Handler.cpp ACUHandler.cpp - SolarArrayDeploymentHandler.cpp ) diff --git a/mission/devices/PCDUHandler.cpp b/mission/devices/PCDUHandler.cpp index 0b3b1459..8e2c1a39 100644 --- a/mission/devices/PCDUHandler.cpp +++ b/mission/devices/PCDUHandler.cpp @@ -1,9 +1,12 @@ #include "PCDUHandler.h" -#include +#include +#include + #include + #include #include -#include + PCDUHandler::PCDUHandler(object_id_t setObjectId, size_t cmdQueueSize) : SystemObject(setObjectId), poolManager(this, nullptr), pdu2HkTableDataset(this), pdu1HkTableDataset( diff --git a/mission/devices/PCDUHandler.h b/mission/devices/PCDUHandler.h index f6b49dc0..566e1d9c 100644 --- a/mission/devices/PCDUHandler.h +++ b/mission/devices/PCDUHandler.h @@ -1,6 +1,7 @@ #ifndef MISSION_DEVICES_PCDUHANDLER_H_ #define MISSION_DEVICES_PCDUHANDLER_H_ +#include #include #include #include @@ -9,7 +10,7 @@ #include #include #include -#include + /** * @brief The PCDUHandler provides a compact interface to handle all devices related to the diff --git a/mission/devices/PDU1Handler.cpp b/mission/devices/PDU1Handler.cpp index 92281f49..074a0b9f 100644 --- a/mission/devices/PDU1Handler.cpp +++ b/mission/devices/PDU1Handler.cpp @@ -1,6 +1,6 @@ #include "PDU1Handler.h" #include -#include +#include PDU1Handler::PDU1Handler(object_id_t objectId, object_id_t comIF, CookieIF * comCookie) : GomspaceDeviceHandler(objectId, comIF, comCookie, PDU::MAX_CONFIGTABLE_ADDRESS, diff --git a/mission/devices/PDU2Handler.cpp b/mission/devices/PDU2Handler.cpp index b442c12c..eaeb00bb 100644 --- a/mission/devices/PDU2Handler.cpp +++ b/mission/devices/PDU2Handler.cpp @@ -1,6 +1,6 @@ #include "PDU2Handler.h" #include -#include +#include PDU2Handler::PDU2Handler(object_id_t objectId, object_id_t comIF, CookieIF * comCookie) : GomspaceDeviceHandler(objectId, comIF, comCookie, PDU::MAX_CONFIGTABLE_ADDRESS, diff --git a/mission/devices/Tmp1075Handler.cpp b/mission/devices/Tmp1075Handler.cpp index f0d95a18..a84f5597 100644 --- a/mission/devices/Tmp1075Handler.cpp +++ b/mission/devices/Tmp1075Handler.cpp @@ -1,6 +1,6 @@ #include #include -#include +#include Tmp1075Handler::Tmp1075Handler(object_id_t objectId, object_id_t comIF, CookieIF * comCookie) : diff --git a/test/testtasks/TestTask.cpp b/test/testtasks/TestTask.cpp index 9a5018c5..57abc758 100644 --- a/test/testtasks/TestTask.cpp +++ b/test/testtasks/TestTask.cpp @@ -1,4 +1,6 @@ -#include +#include "TestTask.h" +#include + #include #include #include @@ -10,56 +12,99 @@ TestTask::TestTask(object_id_t objectId_): - SystemObject(objectId_), testMode(testModes::A) { - IPCStore = objectManager->get(objects::IPC_STORE); +SystemObject(objectId_), testMode(testModes::A) { + IPCStore = objectManager->get(objects::IPC_STORE); } TestTask::~TestTask() { } ReturnValue_t TestTask::performOperation(uint8_t operationCode) { - ReturnValue_t result = RETURN_OK; + ReturnValue_t result = RETURN_OK; - if(oneShotAction) { - /* Add code here which should only be run once */ - performOneShotAction(); - oneShotAction = false; - } + if(oneShotAction) { + /* Add code here which should only be run once */ + performOneShotAction(); + oneShotAction = false; + } - /* Add code here which should only be run once per performOperation */ - performPeriodicAction(); + /* Add code here which should only be run once per performOperation */ + performPeriodicAction(); - /* Add code here which should only be run on alternating cycles. */ - if(testMode == testModes::A) { - performActionA(); - testMode = testModes::B; - } - else if(testMode == testModes::B) { - performActionB(); - testMode = testModes::A; - } - return result; + /* Add code here which should only be run on alternating cycles. */ + if(testMode == testModes::A) { + performActionA(); + testMode = testModes::B; + } + else if(testMode == testModes::B) { + performActionB(); + testMode = testModes::A; + } + return result; } +#include +#include + +/** + * @brief Dummy data from GPS receiver. Will be replaced witgh hyperion data later. + */ +const char +gps_rx_data[] = "" + "$GPRMC,183729,A,3907.356,N,12102.482,W,000.0,360.0,080301,015.5,E*6F\r\n" + "$GPRMB,A,,,,,,,,,,,,V*71\r\n" + "$GPGGA,183730,3907.356,N,12102.482,W,1,05,1.6,646.4,M,-24.1,M,,*75\r\n" + "$GPGSA,A,3,02,,,07,,09,24,26,,,,,1.6,1.6,1.0*3D\r\n" + "$GPGSV,2,1,08,02,43,088,38,04,42,145,00,05,11,291,00,07,60,043,35*71\r\n" + "$GPGSV,2,2,08,08,02,145,00,09,46,303,47,24,16,178,32,26,18,231,43*77\r\n" + "$PGRME,22.0,M,52.9,M,51.0,M*14\r\n" + "$GPGLL,3907.360,N,12102.481,W,183730,A*33\r\n" + "$PGRMZ,2062,f,3*2D\r\n" + "$PGRMM,WGS84*06\r\n" + "$GPBOD,,T,,M,,*47\r\n" + "$GPRTE,1,1,c,0*07\r\n" + "$GPRMC,183731,A,3907.482,N,12102.436,W,000.0,360.0,080301,015.5,E*67\r\n" + "$GPRMB,A,,,,,,,,,,,,V*71\r\n"; + ReturnValue_t TestTask::performOneShotAction() { - /* Everything here will only be performed once. */ +#if OBSW_ADD_TEST_CODE == 1 + performLwgpsTest(); +#endif return HasReturnvaluesIF::RETURN_OK; } ReturnValue_t TestTask::performPeriodicAction() { - ReturnValue_t result = RETURN_OK; - return result; + ReturnValue_t result = RETURN_OK; + return result; } ReturnValue_t TestTask::performActionA() { - ReturnValue_t result = RETURN_OK; - /* Add periodically executed code here */ - return result; + ReturnValue_t result = RETURN_OK; + /* Add periodically executed code here */ + return result; } ReturnValue_t TestTask::performActionB() { - ReturnValue_t result = RETURN_OK; - /* Add periodically executed code here */ - return result; + ReturnValue_t result = RETURN_OK; + /* Add periodically executed code here */ + return result; +} + +void TestTask::performLwgpsTest() { + /* Everything here will only be performed once. */ + etl::vector testVec; + + lwgps_t gpsStruct; + sif::info << "Size of GPS struct: " << sizeof(gpsStruct) << std::endl; + lwgps_init(&gpsStruct); + + /* Process all input data */ + lwgps_process(&gpsStruct, gps_rx_data, strlen(gps_rx_data)); + + /* Print messages */ + printf("Valid status: %d\r\n", gpsStruct.is_valid); + printf("Latitude: %f degrees\r\n", gpsStruct.latitude); + printf("Longitude: %f degrees\r\n", gpsStruct.longitude); + printf("Altitude: %f meters\r\n", gpsStruct.altitude); } diff --git a/test/testtasks/TestTask.h b/test/testtasks/TestTask.h index fef1ff0e..e2e8db48 100644 --- a/test/testtasks/TestTask.h +++ b/test/testtasks/TestTask.h @@ -50,6 +50,8 @@ private: // Let's keep it simple for now. bool oneShotAction = true; StorageManagerIF* IPCStore; + + void performLwgpsTest(); }; diff --git a/etl b/thirdparty/etl similarity index 100% rename from etl rename to thirdparty/etl diff --git a/libcsp/CMakeLists.txt b/thirdparty/libcsp/CMakeLists.txt similarity index 100% rename from libcsp/CMakeLists.txt rename to thirdparty/libcsp/CMakeLists.txt diff --git a/libcsp/bindings/python/libcsp/__init__.py b/thirdparty/libcsp/bindings/python/libcsp/__init__.py similarity index 100% rename from libcsp/bindings/python/libcsp/__init__.py rename to thirdparty/libcsp/bindings/python/libcsp/__init__.py diff --git a/libcsp/doc/example.rst b/thirdparty/libcsp/doc/example.rst similarity index 100% rename from libcsp/doc/example.rst rename to thirdparty/libcsp/doc/example.rst diff --git a/libcsp/doc/history.rst b/thirdparty/libcsp/doc/history.rst similarity index 100% rename from libcsp/doc/history.rst rename to thirdparty/libcsp/doc/history.rst diff --git a/libcsp/doc/interfaces.rst b/thirdparty/libcsp/doc/interfaces.rst similarity index 100% rename from libcsp/doc/interfaces.rst rename to thirdparty/libcsp/doc/interfaces.rst diff --git a/libcsp/doc/libcsp.rst b/thirdparty/libcsp/doc/libcsp.rst similarity index 100% rename from libcsp/doc/libcsp.rst rename to thirdparty/libcsp/doc/libcsp.rst diff --git a/libcsp/doc/memory.rst b/thirdparty/libcsp/doc/memory.rst similarity index 100% rename from libcsp/doc/memory.rst rename to thirdparty/libcsp/doc/memory.rst diff --git a/libcsp/doc/mtu.rst b/thirdparty/libcsp/doc/mtu.rst similarity index 100% rename from libcsp/doc/mtu.rst rename to thirdparty/libcsp/doc/mtu.rst diff --git a/libcsp/doc/protocolstack.rst b/thirdparty/libcsp/doc/protocolstack.rst similarity index 100% rename from libcsp/doc/protocolstack.rst rename to thirdparty/libcsp/doc/protocolstack.rst diff --git a/libcsp/doc/structure.rst b/thirdparty/libcsp/doc/structure.rst similarity index 100% rename from libcsp/doc/structure.rst rename to thirdparty/libcsp/doc/structure.rst diff --git a/libcsp/doc/topology.rst b/thirdparty/libcsp/doc/topology.rst similarity index 100% rename from libcsp/doc/topology.rst rename to thirdparty/libcsp/doc/topology.rst diff --git a/libcsp/examples/csp_if_fifo.c b/thirdparty/libcsp/examples/csp_if_fifo.c similarity index 100% rename from libcsp/examples/csp_if_fifo.c rename to thirdparty/libcsp/examples/csp_if_fifo.c diff --git a/libcsp/examples/csp_if_fifo_windows.c b/thirdparty/libcsp/examples/csp_if_fifo_windows.c similarity index 100% rename from libcsp/examples/csp_if_fifo_windows.c rename to thirdparty/libcsp/examples/csp_if_fifo_windows.c diff --git a/libcsp/examples/kiss.c b/thirdparty/libcsp/examples/kiss.c similarity index 100% rename from libcsp/examples/kiss.c rename to thirdparty/libcsp/examples/kiss.c diff --git a/libcsp/examples/python_bindings_example_client.py b/thirdparty/libcsp/examples/python_bindings_example_client.py similarity index 100% rename from libcsp/examples/python_bindings_example_client.py rename to thirdparty/libcsp/examples/python_bindings_example_client.py diff --git a/libcsp/examples/python_bindings_example_client_can.py b/thirdparty/libcsp/examples/python_bindings_example_client_can.py similarity index 100% rename from libcsp/examples/python_bindings_example_client_can.py rename to thirdparty/libcsp/examples/python_bindings_example_client_can.py diff --git a/libcsp/examples/python_bindings_example_server.py b/thirdparty/libcsp/examples/python_bindings_example_server.py similarity index 100% rename from libcsp/examples/python_bindings_example_server.py rename to thirdparty/libcsp/examples/python_bindings_example_server.py diff --git a/libcsp/examples/simple.c b/thirdparty/libcsp/examples/simple.c similarity index 100% rename from libcsp/examples/simple.c rename to thirdparty/libcsp/examples/simple.c diff --git a/libcsp/examples/zmqproxy.c b/thirdparty/libcsp/examples/zmqproxy.c similarity index 100% rename from libcsp/examples/zmqproxy.c rename to thirdparty/libcsp/examples/zmqproxy.c diff --git a/libcsp/include/CMakeLists.txt b/thirdparty/libcsp/include/CMakeLists.txt similarity index 100% rename from libcsp/include/CMakeLists.txt rename to thirdparty/libcsp/include/CMakeLists.txt diff --git a/libcsp/include/csp/arch/csp_clock.h b/thirdparty/libcsp/include/csp/arch/csp_clock.h similarity index 100% rename from libcsp/include/csp/arch/csp_clock.h rename to thirdparty/libcsp/include/csp/arch/csp_clock.h diff --git a/libcsp/include/csp/arch/csp_malloc.h b/thirdparty/libcsp/include/csp/arch/csp_malloc.h similarity index 100% rename from libcsp/include/csp/arch/csp_malloc.h rename to thirdparty/libcsp/include/csp/arch/csp_malloc.h diff --git a/libcsp/include/csp/arch/csp_queue.h b/thirdparty/libcsp/include/csp/arch/csp_queue.h similarity index 100% rename from libcsp/include/csp/arch/csp_queue.h rename to thirdparty/libcsp/include/csp/arch/csp_queue.h diff --git a/libcsp/include/csp/arch/csp_semaphore.h b/thirdparty/libcsp/include/csp/arch/csp_semaphore.h similarity index 100% rename from libcsp/include/csp/arch/csp_semaphore.h rename to thirdparty/libcsp/include/csp/arch/csp_semaphore.h diff --git a/libcsp/include/csp/arch/csp_system.h b/thirdparty/libcsp/include/csp/arch/csp_system.h similarity index 100% rename from libcsp/include/csp/arch/csp_system.h rename to thirdparty/libcsp/include/csp/arch/csp_system.h diff --git a/libcsp/include/csp/arch/csp_thread.h b/thirdparty/libcsp/include/csp/arch/csp_thread.h similarity index 100% rename from libcsp/include/csp/arch/csp_thread.h rename to thirdparty/libcsp/include/csp/arch/csp_thread.h diff --git a/libcsp/include/csp/arch/csp_time.h b/thirdparty/libcsp/include/csp/arch/csp_time.h similarity index 100% rename from libcsp/include/csp/arch/csp_time.h rename to thirdparty/libcsp/include/csp/arch/csp_time.h diff --git a/libcsp/include/csp/arch/posix/pthread_queue.h b/thirdparty/libcsp/include/csp/arch/posix/pthread_queue.h similarity index 100% rename from libcsp/include/csp/arch/posix/pthread_queue.h rename to thirdparty/libcsp/include/csp/arch/posix/pthread_queue.h diff --git a/libcsp/include/csp/crypto/csp_hmac.h b/thirdparty/libcsp/include/csp/crypto/csp_hmac.h similarity index 100% rename from libcsp/include/csp/crypto/csp_hmac.h rename to thirdparty/libcsp/include/csp/crypto/csp_hmac.h diff --git a/libcsp/include/csp/crypto/csp_sha1.h b/thirdparty/libcsp/include/csp/crypto/csp_sha1.h similarity index 100% rename from libcsp/include/csp/crypto/csp_sha1.h rename to thirdparty/libcsp/include/csp/crypto/csp_sha1.h diff --git a/libcsp/include/csp/crypto/csp_xtea.h b/thirdparty/libcsp/include/csp/crypto/csp_xtea.h similarity index 100% rename from libcsp/include/csp/crypto/csp_xtea.h rename to thirdparty/libcsp/include/csp/crypto/csp_xtea.h diff --git a/libcsp/include/csp/csp.h b/thirdparty/libcsp/include/csp/csp.h similarity index 100% rename from libcsp/include/csp/csp.h rename to thirdparty/libcsp/include/csp/csp.h diff --git a/libcsp/include/csp/csp_autoconfig.h b/thirdparty/libcsp/include/csp/csp_autoconfig.h similarity index 100% rename from libcsp/include/csp/csp_autoconfig.h rename to thirdparty/libcsp/include/csp/csp_autoconfig.h diff --git a/libcsp/include/csp/csp_buffer.h b/thirdparty/libcsp/include/csp/csp_buffer.h similarity index 100% rename from libcsp/include/csp/csp_buffer.h rename to thirdparty/libcsp/include/csp/csp_buffer.h diff --git a/libcsp/include/csp/csp_cmp.h b/thirdparty/libcsp/include/csp/csp_cmp.h similarity index 100% rename from libcsp/include/csp/csp_cmp.h rename to thirdparty/libcsp/include/csp/csp_cmp.h diff --git a/libcsp/include/csp/csp_crc32.h b/thirdparty/libcsp/include/csp/csp_crc32.h similarity index 100% rename from libcsp/include/csp/csp_crc32.h rename to thirdparty/libcsp/include/csp/csp_crc32.h diff --git a/libcsp/include/csp/csp_debug.h b/thirdparty/libcsp/include/csp/csp_debug.h similarity index 100% rename from libcsp/include/csp/csp_debug.h rename to thirdparty/libcsp/include/csp/csp_debug.h diff --git a/libcsp/include/csp/csp_endian.h b/thirdparty/libcsp/include/csp/csp_endian.h similarity index 100% rename from libcsp/include/csp/csp_endian.h rename to thirdparty/libcsp/include/csp/csp_endian.h diff --git a/libcsp/include/csp/csp_error.h b/thirdparty/libcsp/include/csp/csp_error.h similarity index 100% rename from libcsp/include/csp/csp_error.h rename to thirdparty/libcsp/include/csp/csp_error.h diff --git a/libcsp/include/csp/csp_iflist.h b/thirdparty/libcsp/include/csp/csp_iflist.h similarity index 100% rename from libcsp/include/csp/csp_iflist.h rename to thirdparty/libcsp/include/csp/csp_iflist.h diff --git a/libcsp/include/csp/csp_interface.h b/thirdparty/libcsp/include/csp/csp_interface.h similarity index 100% rename from libcsp/include/csp/csp_interface.h rename to thirdparty/libcsp/include/csp/csp_interface.h diff --git a/libcsp/include/csp/csp_platform.h b/thirdparty/libcsp/include/csp/csp_platform.h similarity index 100% rename from libcsp/include/csp/csp_platform.h rename to thirdparty/libcsp/include/csp/csp_platform.h diff --git a/libcsp/include/csp/csp_rtable.h b/thirdparty/libcsp/include/csp/csp_rtable.h similarity index 100% rename from libcsp/include/csp/csp_rtable.h rename to thirdparty/libcsp/include/csp/csp_rtable.h diff --git a/libcsp/include/csp/csp_types.h b/thirdparty/libcsp/include/csp/csp_types.h similarity index 100% rename from libcsp/include/csp/csp_types.h rename to thirdparty/libcsp/include/csp/csp_types.h diff --git a/libcsp/include/csp/drivers/can_socketcan.h b/thirdparty/libcsp/include/csp/drivers/can_socketcan.h similarity index 100% rename from libcsp/include/csp/drivers/can_socketcan.h rename to thirdparty/libcsp/include/csp/drivers/can_socketcan.h diff --git a/libcsp/include/csp/drivers/i2c.h b/thirdparty/libcsp/include/csp/drivers/i2c.h similarity index 100% rename from libcsp/include/csp/drivers/i2c.h rename to thirdparty/libcsp/include/csp/drivers/i2c.h diff --git a/libcsp/include/csp/drivers/usart.h b/thirdparty/libcsp/include/csp/drivers/usart.h similarity index 100% rename from libcsp/include/csp/drivers/usart.h rename to thirdparty/libcsp/include/csp/drivers/usart.h diff --git a/libcsp/include/csp/interfaces/csp_if_can.h b/thirdparty/libcsp/include/csp/interfaces/csp_if_can.h similarity index 100% rename from libcsp/include/csp/interfaces/csp_if_can.h rename to thirdparty/libcsp/include/csp/interfaces/csp_if_can.h diff --git a/libcsp/include/csp/interfaces/csp_if_i2c.h b/thirdparty/libcsp/include/csp/interfaces/csp_if_i2c.h similarity index 100% rename from libcsp/include/csp/interfaces/csp_if_i2c.h rename to thirdparty/libcsp/include/csp/interfaces/csp_if_i2c.h diff --git a/libcsp/include/csp/interfaces/csp_if_kiss.h b/thirdparty/libcsp/include/csp/interfaces/csp_if_kiss.h similarity index 100% rename from libcsp/include/csp/interfaces/csp_if_kiss.h rename to thirdparty/libcsp/include/csp/interfaces/csp_if_kiss.h diff --git a/libcsp/include/csp/interfaces/csp_if_lo.h b/thirdparty/libcsp/include/csp/interfaces/csp_if_lo.h similarity index 100% rename from libcsp/include/csp/interfaces/csp_if_lo.h rename to thirdparty/libcsp/include/csp/interfaces/csp_if_lo.h diff --git a/libcsp/include/csp/interfaces/csp_if_zmqhub.h b/thirdparty/libcsp/include/csp/interfaces/csp_if_zmqhub.h similarity index 100% rename from libcsp/include/csp/interfaces/csp_if_zmqhub.h rename to thirdparty/libcsp/include/csp/interfaces/csp_if_zmqhub.h diff --git a/libcsp/libcsp.mk b/thirdparty/libcsp/libcsp.mk similarity index 100% rename from libcsp/libcsp.mk rename to thirdparty/libcsp/libcsp.mk diff --git a/libcsp/src/CMakeLists.txt b/thirdparty/libcsp/src/CMakeLists.txt similarity index 100% rename from libcsp/src/CMakeLists.txt rename to thirdparty/libcsp/src/CMakeLists.txt diff --git a/libcsp/src/arch/CMakeLists.txt b/thirdparty/libcsp/src/arch/CMakeLists.txt similarity index 100% rename from libcsp/src/arch/CMakeLists.txt rename to thirdparty/libcsp/src/arch/CMakeLists.txt diff --git a/libcsp/src/arch/freertos/csp_malloc.c b/thirdparty/libcsp/src/arch/freertos/csp_malloc.c similarity index 100% rename from libcsp/src/arch/freertos/csp_malloc.c rename to thirdparty/libcsp/src/arch/freertos/csp_malloc.c diff --git a/libcsp/src/arch/freertos/csp_queue.c b/thirdparty/libcsp/src/arch/freertos/csp_queue.c similarity index 100% rename from libcsp/src/arch/freertos/csp_queue.c rename to thirdparty/libcsp/src/arch/freertos/csp_queue.c diff --git a/libcsp/src/arch/freertos/csp_semaphore.c b/thirdparty/libcsp/src/arch/freertos/csp_semaphore.c similarity index 100% rename from libcsp/src/arch/freertos/csp_semaphore.c rename to thirdparty/libcsp/src/arch/freertos/csp_semaphore.c diff --git a/libcsp/src/arch/freertos/csp_system.c b/thirdparty/libcsp/src/arch/freertos/csp_system.c similarity index 100% rename from libcsp/src/arch/freertos/csp_system.c rename to thirdparty/libcsp/src/arch/freertos/csp_system.c diff --git a/libcsp/src/arch/freertos/csp_thread.c b/thirdparty/libcsp/src/arch/freertos/csp_thread.c similarity index 100% rename from libcsp/src/arch/freertos/csp_thread.c rename to thirdparty/libcsp/src/arch/freertos/csp_thread.c diff --git a/libcsp/src/arch/freertos/csp_time.c b/thirdparty/libcsp/src/arch/freertos/csp_time.c similarity index 100% rename from libcsp/src/arch/freertos/csp_time.c rename to thirdparty/libcsp/src/arch/freertos/csp_time.c diff --git a/libcsp/src/arch/macosx/csp_malloc.c b/thirdparty/libcsp/src/arch/macosx/csp_malloc.c similarity index 100% rename from libcsp/src/arch/macosx/csp_malloc.c rename to thirdparty/libcsp/src/arch/macosx/csp_malloc.c diff --git a/libcsp/src/arch/macosx/csp_queue.c b/thirdparty/libcsp/src/arch/macosx/csp_queue.c similarity index 100% rename from libcsp/src/arch/macosx/csp_queue.c rename to thirdparty/libcsp/src/arch/macosx/csp_queue.c diff --git a/libcsp/src/arch/macosx/csp_semaphore.c b/thirdparty/libcsp/src/arch/macosx/csp_semaphore.c similarity index 100% rename from libcsp/src/arch/macosx/csp_semaphore.c rename to thirdparty/libcsp/src/arch/macosx/csp_semaphore.c diff --git a/libcsp/src/arch/macosx/csp_system.c b/thirdparty/libcsp/src/arch/macosx/csp_system.c similarity index 100% rename from libcsp/src/arch/macosx/csp_system.c rename to thirdparty/libcsp/src/arch/macosx/csp_system.c diff --git a/libcsp/src/arch/macosx/csp_thread.c b/thirdparty/libcsp/src/arch/macosx/csp_thread.c similarity index 100% rename from libcsp/src/arch/macosx/csp_thread.c rename to thirdparty/libcsp/src/arch/macosx/csp_thread.c diff --git a/libcsp/src/arch/macosx/csp_time.c b/thirdparty/libcsp/src/arch/macosx/csp_time.c similarity index 100% rename from libcsp/src/arch/macosx/csp_time.c rename to thirdparty/libcsp/src/arch/macosx/csp_time.c diff --git a/libcsp/src/arch/macosx/pthread_queue.c b/thirdparty/libcsp/src/arch/macosx/pthread_queue.c similarity index 100% rename from libcsp/src/arch/macosx/pthread_queue.c rename to thirdparty/libcsp/src/arch/macosx/pthread_queue.c diff --git a/libcsp/src/arch/posix/CMakeLists.txt b/thirdparty/libcsp/src/arch/posix/CMakeLists.txt similarity index 100% rename from libcsp/src/arch/posix/CMakeLists.txt rename to thirdparty/libcsp/src/arch/posix/CMakeLists.txt diff --git a/libcsp/src/arch/posix/csp_malloc.c b/thirdparty/libcsp/src/arch/posix/csp_malloc.c similarity index 100% rename from libcsp/src/arch/posix/csp_malloc.c rename to thirdparty/libcsp/src/arch/posix/csp_malloc.c diff --git a/libcsp/src/arch/posix/csp_queue.c b/thirdparty/libcsp/src/arch/posix/csp_queue.c similarity index 100% rename from libcsp/src/arch/posix/csp_queue.c rename to thirdparty/libcsp/src/arch/posix/csp_queue.c diff --git a/libcsp/src/arch/posix/csp_semaphore.c b/thirdparty/libcsp/src/arch/posix/csp_semaphore.c similarity index 100% rename from libcsp/src/arch/posix/csp_semaphore.c rename to thirdparty/libcsp/src/arch/posix/csp_semaphore.c diff --git a/libcsp/src/arch/posix/csp_system.c b/thirdparty/libcsp/src/arch/posix/csp_system.c similarity index 100% rename from libcsp/src/arch/posix/csp_system.c rename to thirdparty/libcsp/src/arch/posix/csp_system.c diff --git a/libcsp/src/arch/posix/csp_thread.c b/thirdparty/libcsp/src/arch/posix/csp_thread.c similarity index 100% rename from libcsp/src/arch/posix/csp_thread.c rename to thirdparty/libcsp/src/arch/posix/csp_thread.c diff --git a/libcsp/src/arch/posix/csp_time.c b/thirdparty/libcsp/src/arch/posix/csp_time.c similarity index 100% rename from libcsp/src/arch/posix/csp_time.c rename to thirdparty/libcsp/src/arch/posix/csp_time.c diff --git a/libcsp/src/arch/posix/pthread_queue.c b/thirdparty/libcsp/src/arch/posix/pthread_queue.c similarity index 100% rename from libcsp/src/arch/posix/pthread_queue.c rename to thirdparty/libcsp/src/arch/posix/pthread_queue.c diff --git a/libcsp/src/arch/windows/README b/thirdparty/libcsp/src/arch/windows/README similarity index 100% rename from libcsp/src/arch/windows/README rename to thirdparty/libcsp/src/arch/windows/README diff --git a/libcsp/src/arch/windows/csp_malloc.c b/thirdparty/libcsp/src/arch/windows/csp_malloc.c similarity index 100% rename from libcsp/src/arch/windows/csp_malloc.c rename to thirdparty/libcsp/src/arch/windows/csp_malloc.c diff --git a/libcsp/src/arch/windows/csp_queue.c b/thirdparty/libcsp/src/arch/windows/csp_queue.c similarity index 100% rename from libcsp/src/arch/windows/csp_queue.c rename to thirdparty/libcsp/src/arch/windows/csp_queue.c diff --git a/libcsp/src/arch/windows/csp_semaphore.c b/thirdparty/libcsp/src/arch/windows/csp_semaphore.c similarity index 100% rename from libcsp/src/arch/windows/csp_semaphore.c rename to thirdparty/libcsp/src/arch/windows/csp_semaphore.c diff --git a/libcsp/src/arch/windows/csp_system.c b/thirdparty/libcsp/src/arch/windows/csp_system.c similarity index 100% rename from libcsp/src/arch/windows/csp_system.c rename to thirdparty/libcsp/src/arch/windows/csp_system.c diff --git a/libcsp/src/arch/windows/csp_thread.c b/thirdparty/libcsp/src/arch/windows/csp_thread.c similarity index 100% rename from libcsp/src/arch/windows/csp_thread.c rename to thirdparty/libcsp/src/arch/windows/csp_thread.c diff --git a/libcsp/src/arch/windows/csp_time.c b/thirdparty/libcsp/src/arch/windows/csp_time.c similarity index 100% rename from libcsp/src/arch/windows/csp_time.c rename to thirdparty/libcsp/src/arch/windows/csp_time.c diff --git a/libcsp/src/arch/windows/windows_glue.h b/thirdparty/libcsp/src/arch/windows/windows_glue.h similarity index 100% rename from libcsp/src/arch/windows/windows_glue.h rename to thirdparty/libcsp/src/arch/windows/windows_glue.h diff --git a/libcsp/src/arch/windows/windows_queue.c b/thirdparty/libcsp/src/arch/windows/windows_queue.c similarity index 100% rename from libcsp/src/arch/windows/windows_queue.c rename to thirdparty/libcsp/src/arch/windows/windows_queue.c diff --git a/libcsp/src/arch/windows/windows_queue.h b/thirdparty/libcsp/src/arch/windows/windows_queue.h similarity index 100% rename from libcsp/src/arch/windows/windows_queue.h rename to thirdparty/libcsp/src/arch/windows/windows_queue.h diff --git a/libcsp/src/bindings/python/pycsp.c b/thirdparty/libcsp/src/bindings/python/pycsp.c similarity index 100% rename from libcsp/src/bindings/python/pycsp.c rename to thirdparty/libcsp/src/bindings/python/pycsp.c diff --git a/libcsp/src/crypto/CMakeLists.txt b/thirdparty/libcsp/src/crypto/CMakeLists.txt similarity index 100% rename from libcsp/src/crypto/CMakeLists.txt rename to thirdparty/libcsp/src/crypto/CMakeLists.txt diff --git a/libcsp/src/crypto/csp_hmac.c b/thirdparty/libcsp/src/crypto/csp_hmac.c similarity index 100% rename from libcsp/src/crypto/csp_hmac.c rename to thirdparty/libcsp/src/crypto/csp_hmac.c diff --git a/libcsp/src/crypto/csp_sha1.c b/thirdparty/libcsp/src/crypto/csp_sha1.c similarity index 100% rename from libcsp/src/crypto/csp_sha1.c rename to thirdparty/libcsp/src/crypto/csp_sha1.c diff --git a/libcsp/src/crypto/csp_xtea.c b/thirdparty/libcsp/src/crypto/csp_xtea.c similarity index 100% rename from libcsp/src/crypto/csp_xtea.c rename to thirdparty/libcsp/src/crypto/csp_xtea.c diff --git a/libcsp/src/csp_bridge.c b/thirdparty/libcsp/src/csp_bridge.c similarity index 100% rename from libcsp/src/csp_bridge.c rename to thirdparty/libcsp/src/csp_bridge.c diff --git a/libcsp/src/csp_buffer.c b/thirdparty/libcsp/src/csp_buffer.c similarity index 100% rename from libcsp/src/csp_buffer.c rename to thirdparty/libcsp/src/csp_buffer.c diff --git a/libcsp/src/csp_conn.c b/thirdparty/libcsp/src/csp_conn.c similarity index 100% rename from libcsp/src/csp_conn.c rename to thirdparty/libcsp/src/csp_conn.c diff --git a/libcsp/src/csp_conn.h b/thirdparty/libcsp/src/csp_conn.h similarity index 100% rename from libcsp/src/csp_conn.h rename to thirdparty/libcsp/src/csp_conn.h diff --git a/libcsp/src/csp_crc32.c b/thirdparty/libcsp/src/csp_crc32.c similarity index 100% rename from libcsp/src/csp_crc32.c rename to thirdparty/libcsp/src/csp_crc32.c diff --git a/libcsp/src/csp_debug.c b/thirdparty/libcsp/src/csp_debug.c similarity index 100% rename from libcsp/src/csp_debug.c rename to thirdparty/libcsp/src/csp_debug.c diff --git a/libcsp/src/csp_dedup.c b/thirdparty/libcsp/src/csp_dedup.c similarity index 100% rename from libcsp/src/csp_dedup.c rename to thirdparty/libcsp/src/csp_dedup.c diff --git a/libcsp/src/csp_dedup.h b/thirdparty/libcsp/src/csp_dedup.h similarity index 100% rename from libcsp/src/csp_dedup.h rename to thirdparty/libcsp/src/csp_dedup.h diff --git a/libcsp/src/csp_endian.c b/thirdparty/libcsp/src/csp_endian.c similarity index 100% rename from libcsp/src/csp_endian.c rename to thirdparty/libcsp/src/csp_endian.c diff --git a/libcsp/src/csp_hex_dump.c b/thirdparty/libcsp/src/csp_hex_dump.c similarity index 100% rename from libcsp/src/csp_hex_dump.c rename to thirdparty/libcsp/src/csp_hex_dump.c diff --git a/libcsp/src/csp_iflist.c b/thirdparty/libcsp/src/csp_iflist.c similarity index 100% rename from libcsp/src/csp_iflist.c rename to thirdparty/libcsp/src/csp_iflist.c diff --git a/libcsp/src/csp_io.c b/thirdparty/libcsp/src/csp_io.c similarity index 100% rename from libcsp/src/csp_io.c rename to thirdparty/libcsp/src/csp_io.c diff --git a/libcsp/src/csp_io.h b/thirdparty/libcsp/src/csp_io.h similarity index 100% rename from libcsp/src/csp_io.h rename to thirdparty/libcsp/src/csp_io.h diff --git a/libcsp/src/csp_port.c b/thirdparty/libcsp/src/csp_port.c similarity index 100% rename from libcsp/src/csp_port.c rename to thirdparty/libcsp/src/csp_port.c diff --git a/libcsp/src/csp_port.h b/thirdparty/libcsp/src/csp_port.h similarity index 100% rename from libcsp/src/csp_port.h rename to thirdparty/libcsp/src/csp_port.h diff --git a/libcsp/src/csp_promisc.c b/thirdparty/libcsp/src/csp_promisc.c similarity index 100% rename from libcsp/src/csp_promisc.c rename to thirdparty/libcsp/src/csp_promisc.c diff --git a/libcsp/src/csp_promisc.h b/thirdparty/libcsp/src/csp_promisc.h similarity index 100% rename from libcsp/src/csp_promisc.h rename to thirdparty/libcsp/src/csp_promisc.h diff --git a/libcsp/src/csp_qfifo.c b/thirdparty/libcsp/src/csp_qfifo.c similarity index 100% rename from libcsp/src/csp_qfifo.c rename to thirdparty/libcsp/src/csp_qfifo.c diff --git a/libcsp/src/csp_qfifo.h b/thirdparty/libcsp/src/csp_qfifo.h similarity index 100% rename from libcsp/src/csp_qfifo.h rename to thirdparty/libcsp/src/csp_qfifo.h diff --git a/libcsp/src/csp_route.c b/thirdparty/libcsp/src/csp_route.c similarity index 100% rename from libcsp/src/csp_route.c rename to thirdparty/libcsp/src/csp_route.c diff --git a/libcsp/src/csp_route.h b/thirdparty/libcsp/src/csp_route.h similarity index 100% rename from libcsp/src/csp_route.h rename to thirdparty/libcsp/src/csp_route.h diff --git a/libcsp/src/csp_service_handler.c b/thirdparty/libcsp/src/csp_service_handler.c similarity index 100% rename from libcsp/src/csp_service_handler.c rename to thirdparty/libcsp/src/csp_service_handler.c diff --git a/libcsp/src/csp_services.c b/thirdparty/libcsp/src/csp_services.c similarity index 100% rename from libcsp/src/csp_services.c rename to thirdparty/libcsp/src/csp_services.c diff --git a/libcsp/src/csp_sfp.c b/thirdparty/libcsp/src/csp_sfp.c similarity index 100% rename from libcsp/src/csp_sfp.c rename to thirdparty/libcsp/src/csp_sfp.c diff --git a/libcsp/src/drivers/CMakeLists.txt b/thirdparty/libcsp/src/drivers/CMakeLists.txt similarity index 100% rename from libcsp/src/drivers/CMakeLists.txt rename to thirdparty/libcsp/src/drivers/CMakeLists.txt diff --git a/libcsp/src/drivers/can/CMakeLists.txt b/thirdparty/libcsp/src/drivers/can/CMakeLists.txt similarity index 100% rename from libcsp/src/drivers/can/CMakeLists.txt rename to thirdparty/libcsp/src/drivers/can/CMakeLists.txt diff --git a/libcsp/src/drivers/can/can_socketcan.c b/thirdparty/libcsp/src/drivers/can/can_socketcan.c similarity index 100% rename from libcsp/src/drivers/can/can_socketcan.c rename to thirdparty/libcsp/src/drivers/can/can_socketcan.c diff --git a/libcsp/src/drivers/usart/usart_linux.c b/thirdparty/libcsp/src/drivers/usart/usart_linux.c similarity index 100% rename from libcsp/src/drivers/usart/usart_linux.c rename to thirdparty/libcsp/src/drivers/usart/usart_linux.c diff --git a/libcsp/src/drivers/usart/usart_windows.c b/thirdparty/libcsp/src/drivers/usart/usart_windows.c similarity index 100% rename from libcsp/src/drivers/usart/usart_windows.c rename to thirdparty/libcsp/src/drivers/usart/usart_windows.c diff --git a/libcsp/src/interfaces/CMakeLists.txt b/thirdparty/libcsp/src/interfaces/CMakeLists.txt similarity index 100% rename from libcsp/src/interfaces/CMakeLists.txt rename to thirdparty/libcsp/src/interfaces/CMakeLists.txt diff --git a/libcsp/src/interfaces/csp_if_can.c b/thirdparty/libcsp/src/interfaces/csp_if_can.c similarity index 100% rename from libcsp/src/interfaces/csp_if_can.c rename to thirdparty/libcsp/src/interfaces/csp_if_can.c diff --git a/libcsp/src/interfaces/csp_if_can_pbuf.c b/thirdparty/libcsp/src/interfaces/csp_if_can_pbuf.c similarity index 100% rename from libcsp/src/interfaces/csp_if_can_pbuf.c rename to thirdparty/libcsp/src/interfaces/csp_if_can_pbuf.c diff --git a/libcsp/src/interfaces/csp_if_can_pbuf.h b/thirdparty/libcsp/src/interfaces/csp_if_can_pbuf.h similarity index 100% rename from libcsp/src/interfaces/csp_if_can_pbuf.h rename to thirdparty/libcsp/src/interfaces/csp_if_can_pbuf.h diff --git a/libcsp/src/interfaces/csp_if_i2c.c b/thirdparty/libcsp/src/interfaces/csp_if_i2c.c similarity index 100% rename from libcsp/src/interfaces/csp_if_i2c.c rename to thirdparty/libcsp/src/interfaces/csp_if_i2c.c diff --git a/libcsp/src/interfaces/csp_if_kiss.c b/thirdparty/libcsp/src/interfaces/csp_if_kiss.c similarity index 100% rename from libcsp/src/interfaces/csp_if_kiss.c rename to thirdparty/libcsp/src/interfaces/csp_if_kiss.c diff --git a/libcsp/src/interfaces/csp_if_lo.c b/thirdparty/libcsp/src/interfaces/csp_if_lo.c similarity index 100% rename from libcsp/src/interfaces/csp_if_lo.c rename to thirdparty/libcsp/src/interfaces/csp_if_lo.c diff --git a/libcsp/src/rtable/CMakeLists.txt b/thirdparty/libcsp/src/rtable/CMakeLists.txt similarity index 100% rename from libcsp/src/rtable/CMakeLists.txt rename to thirdparty/libcsp/src/rtable/CMakeLists.txt diff --git a/libcsp/src/rtable/csp_rtable_cidr.c b/thirdparty/libcsp/src/rtable/csp_rtable_cidr.c similarity index 100% rename from libcsp/src/rtable/csp_rtable_cidr.c rename to thirdparty/libcsp/src/rtable/csp_rtable_cidr.c diff --git a/libcsp/src/rtable/csp_rtable_static.c b/thirdparty/libcsp/src/rtable/csp_rtable_static.c similarity index 100% rename from libcsp/src/rtable/csp_rtable_static.c rename to thirdparty/libcsp/src/rtable/csp_rtable_static.c diff --git a/libcsp/src/transport/CMakeLists.txt b/thirdparty/libcsp/src/transport/CMakeLists.txt similarity index 100% rename from libcsp/src/transport/CMakeLists.txt rename to thirdparty/libcsp/src/transport/CMakeLists.txt diff --git a/libcsp/src/transport/csp_rdp.c b/thirdparty/libcsp/src/transport/csp_rdp.c similarity index 100% rename from libcsp/src/transport/csp_rdp.c rename to thirdparty/libcsp/src/transport/csp_rdp.c diff --git a/libcsp/src/transport/csp_transport.h b/thirdparty/libcsp/src/transport/csp_transport.h similarity index 100% rename from libcsp/src/transport/csp_transport.h rename to thirdparty/libcsp/src/transport/csp_transport.h diff --git a/libcsp/src/transport/csp_udp.c b/thirdparty/libcsp/src/transport/csp_udp.c similarity index 100% rename from libcsp/src/transport/csp_udp.c rename to thirdparty/libcsp/src/transport/csp_udp.c diff --git a/libcsp/utils/cfpsplit.py b/thirdparty/libcsp/utils/cfpsplit.py similarity index 100% rename from libcsp/utils/cfpsplit.py rename to thirdparty/libcsp/utils/cfpsplit.py diff --git a/libcsp/utils/cspsplit.py b/thirdparty/libcsp/utils/cspsplit.py similarity index 100% rename from libcsp/utils/cspsplit.py rename to thirdparty/libcsp/utils/cspsplit.py diff --git a/thirdparty/lwgps b/thirdparty/lwgps new file mode 160000 index 00000000..d276f972 --- /dev/null +++ b/thirdparty/lwgps @@ -0,0 +1 @@ +Subproject commit d276f9722d1311b552e7c99ee5b03a68487a0fc5 diff --git a/tmtc b/tmtc index 90c45ea0..d1899ef1 160000 --- a/tmtc +++ b/tmtc @@ -1 +1 @@ -Subproject commit 90c45ea0c77f04677322b3c8c9077db841fc3129 +Subproject commit d1899ef1816aa7531b142f87d8b9ea91ef4011fd