fixed conflicts
This commit is contained in:
commit
4823496b58
@ -14,7 +14,7 @@ cmake_minimum_required(VERSION 3.13)
|
|||||||
set(CMAKE_SCRIPT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
set(CMAKE_SCRIPT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||||
|
|
||||||
if(TGT_BSP MATCHES "arm/q7s")
|
if(TGT_BSP MATCHES "arm/q7s")
|
||||||
option(EIVE_BUILD_WATCHDOG "Compile the OBSW watchdog insted" OFF)
|
option(EIVE_BUILD_WATCHDOG "Compile the OBSW watchdog instead" OFF)
|
||||||
option(BUILD_Q7S_SIMPLE_MODE OFF "Simple mode with a minimal main function")
|
option(BUILD_Q7S_SIMPLE_MODE OFF "Simple mode with a minimal main function")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -104,7 +104,7 @@ pre_source_hw_os_config()
|
|||||||
|
|
||||||
if(TGT_BSP)
|
if(TGT_BSP)
|
||||||
if(TGT_BSP MATCHES "arm/q7s" OR TGT_BSP MATCHES "arm/raspberrypi"
|
if(TGT_BSP MATCHES "arm/q7s" OR TGT_BSP MATCHES "arm/raspberrypi"
|
||||||
OR TGT_BSP MATCHES "arm/beagleboneblack"
|
OR TGT_BSP MATCHES "arm/beagleboneblack" OR TGT_BSP MATCHES "arm/egse"
|
||||||
)
|
)
|
||||||
set(FSFW_CONFIG_PATH "linux/fsfwconfig")
|
set(FSFW_CONFIG_PATH "linux/fsfwconfig")
|
||||||
if(NOT BUILD_Q7S_SIMPLE_MODE)
|
if(NOT BUILD_Q7S_SIMPLE_MODE)
|
||||||
@ -120,6 +120,12 @@ if(TGT_BSP)
|
|||||||
set(FSFW_HAL_ADD_RASPBERRY_PI ON)
|
set(FSFW_HAL_ADD_RASPBERRY_PI ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(TGT_BSP MATCHES "arm/egse")
|
||||||
|
# Used by configure file
|
||||||
|
set(EGSE ON)
|
||||||
|
set(FSFW_HAL_LINUX_ADD_LIBGPIOD OFF)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(TGT_BSP MATCHES "arm/beagleboneblack")
|
if(TGT_BSP MATCHES "arm/beagleboneblack")
|
||||||
# Used by configure file
|
# Used by configure file
|
||||||
set(BEAGLEBONEBLACK ON)
|
set(BEAGLEBONEBLACK ON)
|
||||||
@ -146,7 +152,7 @@ if(NOT EIVE_BUILD_WATCHDOG)
|
|||||||
configure_file(${FSFW_CONFIG_PATH}/OBSWConfig.h.in OBSWConfig.h)
|
configure_file(${FSFW_CONFIG_PATH}/OBSWConfig.h.in OBSWConfig.h)
|
||||||
if(TGT_BSP MATCHES "arm/q7s")
|
if(TGT_BSP MATCHES "arm/q7s")
|
||||||
configure_file(${BSP_PATH}/boardconfig/q7sConfig.h.in q7sConfig.h)
|
configure_file(${BSP_PATH}/boardconfig/q7sConfig.h.in q7sConfig.h)
|
||||||
elseif(TGT_BSP MATCHES "arm/raspberrypi")
|
elseif(TGT_BSP MATCHES "arm/raspberrypi" OR TGT_BSP MATCHES "arm/egse")
|
||||||
configure_file(${BSP_PATH}/boardconfig/rpiConfig.h.in rpiConfig.h)
|
configure_file(${BSP_PATH}/boardconfig/rpiConfig.h.in rpiConfig.h)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
@ -258,6 +264,12 @@ target_link_libraries(${TARGET_NAME} PRIVATE
|
|||||||
${LIB_CXX_FS}
|
${LIB_CXX_FS}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if(TGT_BSP MATCHES "arm/egse")
|
||||||
|
target_link_libraries(${TARGET_NAME} PRIVATE
|
||||||
|
${LIB_ARCSEC}
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Add include paths for all sources.
|
# Add include paths for all sources.
|
||||||
target_include_directories(${TARGET_NAME} PRIVATE
|
target_include_directories(${TARGET_NAME} PRIVATE
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
@ -266,7 +278,7 @@ target_include_directories(${TARGET_NAME} PRIVATE
|
|||||||
${LIB_ARCSEC_PATH}
|
${LIB_ARCSEC_PATH}
|
||||||
)
|
)
|
||||||
|
|
||||||
if(TGT_BSP MATCHES "arm/q7s")
|
if(TGT_BSP MATCHES "arm/q7s" OR TGT_BSP MATCHES "arm/egse")
|
||||||
target_include_directories(${TARGET_NAME} PRIVATE
|
target_include_directories(${TARGET_NAME} PRIVATE
|
||||||
${ARCSEC_LIB_PATH}
|
${ARCSEC_LIB_PATH}
|
||||||
)
|
)
|
||||||
|
@ -19,8 +19,9 @@
|
|||||||
12. [Static Code Analysis](#static-code-analysis)
|
12. [Static Code Analysis](#static-code-analysis)
|
||||||
13. [Eclipse](#eclipse)
|
13. [Eclipse](#eclipse)
|
||||||
14. [Running the OBSW on a Raspberry Pi](#rpi)
|
14. [Running the OBSW on a Raspberry Pi](#rpi)
|
||||||
15. [FSFW](#fsfw)
|
15. [Manually preparing sysroots to compile gpsd](#gpsd)
|
||||||
16. [Coding Style](#coding-style)
|
16. [FSFW](#fsfw)
|
||||||
|
17. [Coding Style](#coding-style)
|
||||||
|
|
||||||
# <a id="general"></a> General information
|
# <a id="general"></a> General information
|
||||||
|
|
||||||
@ -1133,6 +1134,9 @@ sudo apt-get install gpiod libgpiod-dev
|
|||||||
|
|
||||||
to install the required GPIO libraries before cloning the system root folder.
|
to install the required GPIO libraries before cloning the system root folder.
|
||||||
|
|
||||||
|
# <a id="gpsd"></a> Manually preparing sysroots to compile gpsd
|
||||||
|
Copy all header files from [here](https://eive-cloud.irs.uni-stuttgart.de/index.php/apps/files/?dir=/EIVE_IRS/Software/gpsd&fileid=1189985) to the /usr/include directory and all static libraries to /usr/lib.
|
||||||
|
|
||||||
# <a id="fsfw"></a> Flight Software Framework (FSFW)
|
# <a id="fsfw"></a> Flight Software Framework (FSFW)
|
||||||
|
|
||||||
An EIVE fork of the FSFW is submodules into this repository.
|
An EIVE fork of the FSFW is submodules into this repository.
|
||||||
|
7
bsp_egse/CMakeLists.txt
Normal file
7
bsp_egse/CMakeLists.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
target_sources(${TARGET_NAME} PUBLIC
|
||||||
|
InitMission.cpp
|
||||||
|
main.cpp
|
||||||
|
ObjectFactory.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
add_subdirectory(boardconfig)
|
188
bsp_egse/InitMission.cpp
Normal file
188
bsp_egse/InitMission.cpp
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
#include "InitMission.h"
|
||||||
|
|
||||||
|
#include <fsfw/objectmanager/ObjectManager.h>
|
||||||
|
#include <fsfw/objectmanager/ObjectManagerIF.h>
|
||||||
|
#include <fsfw/returnvalues/HasReturnvaluesIF.h>
|
||||||
|
#include <fsfw/serviceinterface/ServiceInterface.h>
|
||||||
|
#include <fsfw/tasks/FixedTimeslotTaskIF.h>
|
||||||
|
#include <fsfw/tasks/PeriodicTaskIF.h>
|
||||||
|
#include <fsfw/tasks/TaskFactory.h>
|
||||||
|
#include <mission/utility/InitMission.h>
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
#include "OBSWConfig.h"
|
||||||
|
#include "ObjectFactory.h"
|
||||||
|
#include "objects/systemObjectList.h"
|
||||||
|
#include "pollingsequence/pollingSequenceFactory.h"
|
||||||
|
|
||||||
|
ServiceInterfaceStream sif::debug("DEBUG");
|
||||||
|
ServiceInterfaceStream sif::info("INFO");
|
||||||
|
ServiceInterfaceStream sif::warning("WARNING");
|
||||||
|
ServiceInterfaceStream sif::error("ERROR");
|
||||||
|
|
||||||
|
ObjectManagerIF* objectManager = nullptr;
|
||||||
|
|
||||||
|
void initmission::initMission() {
|
||||||
|
sif::info << "Building global objects.." << std::endl;
|
||||||
|
/* Instantiate global object manager and also create all objects */
|
||||||
|
ObjectManager::instance()->setObjectFactoryFunction(ObjectFactory::produce, nullptr);
|
||||||
|
sif::info << "Initializing all objects.." << std::endl;
|
||||||
|
ObjectManager::instance()->initialize();
|
||||||
|
|
||||||
|
/* This function creates and starts all tasks */
|
||||||
|
initTasks();
|
||||||
|
}
|
||||||
|
|
||||||
|
void initmission::initTasks() {
|
||||||
|
TaskFactory* factory = TaskFactory::instance();
|
||||||
|
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
|
||||||
|
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);
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
PeriodicTaskIF* tmtcBridgeTask = factory->createPeriodicTask(
|
||||||
|
"TMTC_BRIDGE", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
|
||||||
|
result = tmtcBridgeTask->addComponent(objects::TMTC_BRIDGE);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
sif::error << "Add component TMTC Bridge failed" << std::endl;
|
||||||
|
}
|
||||||
|
PeriodicTaskIF* tmtcPollingTask = factory->createPeriodicTask(
|
||||||
|
"TMTC_POLLING", 80, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
|
||||||
|
result = tmtcPollingTask->addComponent(objects::TMTC_POLLING_TASK);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
sif::error << "Add component TMTC Polling failed" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* PUS Services */
|
||||||
|
std::vector<PeriodicTaskIF*> pusTasks;
|
||||||
|
createPusTasks(*factory, missedDeadlineFunc, pusTasks);
|
||||||
|
|
||||||
|
std::vector<PeriodicTaskIF*> pstTasks;
|
||||||
|
FixedTimeslotTaskIF* pst = factory->createFixedTimeslotTask(
|
||||||
|
"STAR_TRACKER_PST", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 0.5, missedDeadlineFunc);
|
||||||
|
result = pst::pstUart(pst);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
sif::error << "InitMission::initTasks: Creating PST failed!" << std::endl;
|
||||||
|
}
|
||||||
|
pstTasks.push_back(pst);
|
||||||
|
|
||||||
|
PeriodicTaskIF* strHelperTask = factory->createPeriodicTask(
|
||||||
|
"STR_HELPER", 20, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
|
||||||
|
result = strHelperTask->addComponent(objects::STR_HELPER);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
initmission::printAddObjectError("STR_HELPER", objects::STR_HELPER);
|
||||||
|
}
|
||||||
|
pstTasks.push_back(strHelperTask);
|
||||||
|
|
||||||
|
auto taskStarter = [](std::vector<PeriodicTaskIF*>& taskVector, std::string name) {
|
||||||
|
for (const auto& task : taskVector) {
|
||||||
|
if (task != nullptr) {
|
||||||
|
task->startTask();
|
||||||
|
} else {
|
||||||
|
sif::error << "Task in vector " << name << " is invalid!" << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
sif::info << "Starting tasks.." << std::endl;
|
||||||
|
tmtcDistributor->startTask();
|
||||||
|
tmtcBridgeTask->startTask();
|
||||||
|
tmtcPollingTask->startTask();
|
||||||
|
|
||||||
|
taskStarter(pstTasks, "PST Tasks");
|
||||||
|
taskStarter(pusTasks, "PUS Tasks");
|
||||||
|
|
||||||
|
sif::info << "Tasks started.." << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void initmission::createPusTasks(TaskFactory& factory,
|
||||||
|
TaskDeadlineMissedFunction missedDeadlineFunc,
|
||||||
|
std::vector<PeriodicTaskIF*>& taskVec) {
|
||||||
|
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
taskVec.push_back(pusVerification);
|
||||||
|
|
||||||
|
PeriodicTaskIF* pusEvents = factory.createPeriodicTask(
|
||||||
|
"PUS_EVENTS", 60, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc);
|
||||||
|
result = pusEvents->addComponent(objects::PUS_SERVICE_5_EVENT_REPORTING);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
initmission::printAddObjectError("PUS_EVENTS", objects::PUS_SERVICE_5_EVENT_REPORTING);
|
||||||
|
}
|
||||||
|
result = pusEvents->addComponent(objects::EVENT_MANAGER);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
initmission::printAddObjectError("PUS_MGMT", objects::EVENT_MANAGER);
|
||||||
|
}
|
||||||
|
taskVec.push_back(pusEvents);
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
taskVec.push_back(pusHighPrio);
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
result = pusMedPrio->addComponent(objects::PUS_SERVICE_3_HOUSEKEEPING);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
initmission::printAddObjectError("PUS3", objects::PUS_SERVICE_3_HOUSEKEEPING);
|
||||||
|
}
|
||||||
|
taskVec.push_back(pusMedPrio);
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
result = pusLowPrio->addComponent(objects::INTERNAL_ERROR_REPORTER);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
initmission::printAddObjectError("INT_ERR_RPRT", objects::INTERNAL_ERROR_REPORTER);
|
||||||
|
}
|
||||||
|
taskVec.push_back(pusLowPrio);
|
||||||
|
}
|
21
bsp_egse/InitMission.h
Normal file
21
bsp_egse/InitMission.h
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#ifndef BSP_LINUX_INITMISSION_H_
|
||||||
|
#define BSP_LINUX_INITMISSION_H_
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#include "fsfw/tasks/Typedef.h"
|
||||||
|
|
||||||
|
class PeriodicTaskIF;
|
||||||
|
class TaskFactory;
|
||||||
|
|
||||||
|
namespace initmission {
|
||||||
|
void initMission();
|
||||||
|
void initTasks();
|
||||||
|
|
||||||
|
void createPstTasks(TaskFactory& factory, TaskDeadlineMissedFunction missedDeadlineFunc,
|
||||||
|
std::vector<PeriodicTaskIF*>& taskVec);
|
||||||
|
void createPusTasks(TaskFactory& factory, TaskDeadlineMissedFunction missedDeadlineFunc,
|
||||||
|
std::vector<PeriodicTaskIF*>& taskVec);
|
||||||
|
}; // namespace initmission
|
||||||
|
|
||||||
|
#endif /* BSP_LINUX_INITMISSION_H_ */
|
51
bsp_egse/ObjectFactory.cpp
Normal file
51
bsp_egse/ObjectFactory.cpp
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
#include "ObjectFactory.h"
|
||||||
|
|
||||||
|
#include <devConf.h>
|
||||||
|
#include <fsfw/src/fsfw/osal/common/TcpTmTcBridge.h>
|
||||||
|
#include <fsfw/src/fsfw/osal/common/TcpTmTcServer.h>
|
||||||
|
#include <fsfw_hal/linux/uart/UartComIF.h>
|
||||||
|
#include <fsfw_hal/linux/uart/UartCookie.h>
|
||||||
|
#include <mission/devices/GPSHyperionHandler.h>
|
||||||
|
|
||||||
|
#include "OBSWConfig.h"
|
||||||
|
#include "busConf.h"
|
||||||
|
#include "fsfw/datapoollocal/LocalDataPoolManager.h"
|
||||||
|
#include "fsfw/tmtcpacket/pus/tm.h"
|
||||||
|
#include "fsfw/tmtcservices/CommandingServiceBase.h"
|
||||||
|
#include "fsfw/tmtcservices/PusServiceBase.h"
|
||||||
|
#include "linux/devices/devicedefinitions/StarTrackerDefinitions.h"
|
||||||
|
#include "linux/devices/startracker/StarTrackerHandler.h"
|
||||||
|
#include "mission/core/GenericFactory.h"
|
||||||
|
#include "mission/utility/TmFunnel.h"
|
||||||
|
#include "objects/systemObjectList.h"
|
||||||
|
#include "tmtc/apid.h"
|
||||||
|
#include "tmtc/pusIds.h"
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
TmFunnel::downlinkDestination = objects::TMTC_BRIDGE;
|
||||||
|
TmFunnel::storageDestination = objects::NO_OBJECT;
|
||||||
|
|
||||||
|
VerificationReporter::messageReceiver = objects::PUS_SERVICE_1_VERIFICATION;
|
||||||
|
TmPacketBase::timeStamperId = objects::TIME_STAMPER;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectFactory::produce(void* args) {
|
||||||
|
Factory::setStaticFrameworkObjectIds();
|
||||||
|
ObjectFactory::produceGenericObjects();
|
||||||
|
|
||||||
|
UartCookie* starTrackerCookie =
|
||||||
|
new UartCookie(objects::STAR_TRACKER, egse::STAR_TRACKER_UART, UartModes::NON_CANONICAL,
|
||||||
|
uart::STAR_TRACKER_BAUD, StarTracker::MAX_FRAME_SIZE * 2 + 2);
|
||||||
|
new UartComIF(objects::UART_COM_IF);
|
||||||
|
starTrackerCookie->setNoFixedSizeReply();
|
||||||
|
StrHelper* strHelper = new StrHelper(objects::STR_HELPER);
|
||||||
|
StarTrackerHandler* starTrackerHandler = new StarTrackerHandler(
|
||||||
|
objects::STAR_TRACKER, objects::UART_COM_IF, starTrackerCookie, strHelper);
|
||||||
|
starTrackerHandler->setStartUpImmediately();
|
||||||
|
}
|
8
bsp_egse/ObjectFactory.h
Normal file
8
bsp_egse/ObjectFactory.h
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#ifndef BSP_LINUX_OBJECTFACTORY_H_
|
||||||
|
#define BSP_LINUX_OBJECTFACTORY_H_
|
||||||
|
|
||||||
|
namespace ObjectFactory {
|
||||||
|
void produce(void* args);
|
||||||
|
}; // namespace ObjectFactory
|
||||||
|
|
||||||
|
#endif /* BSP_LINUX_OBJECTFACTORY_H_ */
|
7
bsp_egse/boardconfig/CMakeLists.txt
Normal file
7
bsp_egse/boardconfig/CMakeLists.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
target_sources(${TARGET_NAME} PRIVATE
|
||||||
|
print.c
|
||||||
|
)
|
||||||
|
|
||||||
|
target_include_directories(${TARGET_NAME} PUBLIC
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
)
|
8
bsp_egse/boardconfig/busConf.h
Normal file
8
bsp_egse/boardconfig/busConf.h
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#ifndef BSP_EGSE_BOARDCONFIG_BUSCONF_H_
|
||||||
|
#define BSP_EGSE_BOARDCONFIG_BUSCONF_H_
|
||||||
|
|
||||||
|
namespace egse {
|
||||||
|
static constexpr char STAR_TRACKER_UART[] = "/dev/serial0";
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* BSP_EGSE_BOARDCONFIG_BUSCONF_H_ */
|
38
bsp_egse/boardconfig/etl_profile.h
Normal file
38
bsp_egse/boardconfig/etl_profile.h
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
///\file
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
The MIT License(MIT)
|
||||||
|
|
||||||
|
Embedded Template Library.
|
||||||
|
https://github.com/ETLCPP/etl
|
||||||
|
https://www.etlcpp.com
|
||||||
|
|
||||||
|
Copyright(c) 2019 jwellbelove
|
||||||
|
|
||||||
|
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.
|
||||||
|
******************************************************************************/
|
||||||
|
#ifndef __ETL_PROFILE_H__
|
||||||
|
#define __ETL_PROFILE_H__
|
||||||
|
|
||||||
|
#define ETL_CHECK_PUSH_POP
|
||||||
|
|
||||||
|
#define ETL_CPP11_SUPPORTED 1
|
||||||
|
#define ETL_NO_NULLPTR_SUPPORT 0
|
||||||
|
|
||||||
|
#endif
|
15
bsp_egse/boardconfig/gcov.h
Normal file
15
bsp_egse/boardconfig/gcov.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#ifndef LINUX_GCOV_H_
|
||||||
|
#define LINUX_GCOV_H_
|
||||||
|
#include <fsfw/serviceinterface/ServiceInterfaceStream.h>
|
||||||
|
|
||||||
|
#ifdef GCOV
|
||||||
|
extern "C" void __gcov_flush();
|
||||||
|
#else
|
||||||
|
void __gcov_flush() {
|
||||||
|
sif::info << "GCC GCOV: Please supply GCOV=1 in Makefile if "
|
||||||
|
"coverage information is desired.\n"
|
||||||
|
<< std::flush;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* LINUX_GCOV_H_ */
|
10
bsp_egse/boardconfig/print.c
Normal file
10
bsp_egse/boardconfig/print.c
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#include <bsp_egse/boardconfig/print.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
void printChar(const char* character, bool errStream) {
|
||||||
|
if (errStream) {
|
||||||
|
putc(*character, stderr);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
putc(*character, stdout);
|
||||||
|
}
|
8
bsp_egse/boardconfig/print.h
Normal file
8
bsp_egse/boardconfig/print.h
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#ifndef HOSTED_BOARDCONFIG_PRINT_H_
|
||||||
|
#define HOSTED_BOARDCONFIG_PRINT_H_
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
void printChar(const char* character, bool errStream);
|
||||||
|
|
||||||
|
#endif /* HOSTED_BOARDCONFIG_PRINT_H_ */
|
6
bsp_egse/boardconfig/rpiConfig.h.in
Normal file
6
bsp_egse/boardconfig/rpiConfig.h.in
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#ifndef BSP_RPI_BOARDCONFIG_RPI_CONFIG_H_
|
||||||
|
#define BSP_RPI_BOARDCONFIG_RPI_CONFIG_H_
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
#endif /* BSP_RPI_BOARDCONFIG_RPI_CONFIG_H_ */
|
28
bsp_egse/main.cpp
Normal file
28
bsp_egse/main.cpp
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
#include "InitMission.h"
|
||||||
|
#include "OBSWConfig.h"
|
||||||
|
#include "OBSWVersion.h"
|
||||||
|
#include "fsfw/FSFWVersion.h"
|
||||||
|
#include "fsfw/tasks/TaskFactory.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief This is the main program and entry point for the egse (raspberry pi 4)
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
int main(void) {
|
||||||
|
std::cout << "-- EIVE OBSW --" << std::endl;
|
||||||
|
std::cout << "-- Compiled for EGSE from Arcsec"
|
||||||
|
<< " --" << std::endl;
|
||||||
|
std::cout << "-- OBSW " << SW_NAME << " v" << SW_VERSION << "." << SW_SUBVERSION << "."
|
||||||
|
<< SW_REVISION << ", FSFW v" << FSFW_VERSION << "." << FSFW_SUBVERSION << FSFW_REVISION
|
||||||
|
<< "--" << std::endl;
|
||||||
|
std::cout << "-- " << __DATE__ << " " << __TIME__ << " --" << std::endl;
|
||||||
|
|
||||||
|
initmission::initMission();
|
||||||
|
|
||||||
|
for (;;) {
|
||||||
|
/* Suspend main thread by sleeping it. */
|
||||||
|
TaskFactory::delayTask(5000);
|
||||||
|
}
|
||||||
|
}
|
@ -64,17 +64,17 @@ void initmission::initTasks() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* UDP bridge */
|
/* UDP bridge */
|
||||||
PeriodicTaskIF* udpBridgeTask = factory->createPeriodicTask(
|
PeriodicTaskIF* tmtcBridgeTask = factory->createPeriodicTask(
|
||||||
"UDP_UNIX_BRIDGE", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
|
"TMTC_BRIDGE", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
|
||||||
result = udpBridgeTask->addComponent(objects::TMTC_BRIDGE);
|
result = tmtcBridgeTask->addComponent(objects::TMTC_BRIDGE);
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
sif::error << "Add component UDP Unix Bridge failed" << std::endl;
|
sif::error << "Add component TMTC Bridge failed" << std::endl;
|
||||||
}
|
}
|
||||||
PeriodicTaskIF* udpPollingTask = factory->createPeriodicTask(
|
PeriodicTaskIF* tmtcPollingTask = factory->createPeriodicTask(
|
||||||
"UDP_POLLING", 80, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
|
"TMTC_POLLING", 80, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
|
||||||
result = udpPollingTask->addComponent(objects::TMTC_POLLING_TASK);
|
result = tmtcPollingTask->addComponent(objects::TMTC_POLLING_TASK);
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
sif::error << "Add component UDP Polling failed" << std::endl;
|
sif::error << "Add component TMTC Polling failed" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* PUS Services */
|
/* PUS Services */
|
||||||
@ -100,8 +100,8 @@ void initmission::initTasks() {
|
|||||||
|
|
||||||
sif::info << "Starting tasks.." << std::endl;
|
sif::info << "Starting tasks.." << std::endl;
|
||||||
tmTcDistributor->startTask();
|
tmTcDistributor->startTask();
|
||||||
udpBridgeTask->startTask();
|
tmtcBridgeTask->startTask();
|
||||||
udpPollingTask->startTask();
|
tmtcPollingTask->startTask();
|
||||||
|
|
||||||
taskStarter(pusTasks, "PUS Tasks");
|
taskStarter(pusTasks, "PUS Tasks");
|
||||||
#if OBSW_ADD_TEST_CODE == 1
|
#if OBSW_ADD_TEST_CODE == 1
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#include <bsp_q7s/boardconfig/print.h>
|
#include <bsp_linux_board/boardconfig/print.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
void printChar(const char* character, bool errStream) {
|
void printChar(const char* character, bool errStream) {
|
||||||
|
@ -3,16 +3,16 @@
|
|||||||
|
|
||||||
namespace q7s {
|
namespace q7s {
|
||||||
|
|
||||||
static constexpr char SPI_DEFAULT_DEV[] = "/dev/spidev2.0";
|
static constexpr char SPI_DEFAULT_DEV[] = "/dev/spi-main";
|
||||||
static constexpr char SPI_RW_DEV[] = "/dev/spidev3.0";
|
static constexpr char SPI_RW_DEV[] = "/dev/spi-rw";
|
||||||
|
|
||||||
static constexpr char I2C_DEFAULT_DEV[] = "/dev/i2c-0";
|
static constexpr char I2C_DEFAULT_DEV[] = "/dev/i2c-eive";
|
||||||
|
|
||||||
static constexpr char UART_GNSS_DEV[] = "/dev/ttyUL0";
|
static constexpr char UART_GNSS_DEV[] = "/dev/ul-gps";
|
||||||
static constexpr char UART_PLOC_MPSOC_DEV[] = "/dev/ttyUL2";
|
static constexpr char UART_PLOC_MPSOC_DEV[] = "/dev/ul-plmpsoc";
|
||||||
static constexpr char UART_PLOC_SUPERVSIOR_DEV[] = "/dev/ttyUL3";
|
static constexpr char UART_PLOC_SUPERVSIOR_DEV[] = "/dev/ul-plsv";
|
||||||
static constexpr char UART_SYRLINKS_DEV[] = "/dev/ttyUL4";
|
static constexpr char UART_SYRLINKS_DEV[] = "/dev/ul-syrlinks";
|
||||||
static constexpr char UART_STAR_TRACKER_DEV[] = "/dev/ttyUL7";
|
static constexpr char UART_STAR_TRACKER_DEV[] = "/dev/ul-str";
|
||||||
|
|
||||||
static constexpr char UIO_PDEC_REGISTERS[] = "/dev/uio0";
|
static constexpr char UIO_PDEC_REGISTERS[] = "/dev/uio0";
|
||||||
static constexpr char UIO_PDEC_CONFIG_MEMORY[] = "/dev/uio2";
|
static constexpr char UIO_PDEC_CONFIG_MEMORY[] = "/dev/uio2";
|
||||||
@ -43,6 +43,7 @@ static constexpr char GNSS_0_ENABLE[] = "enable_gnss_0";
|
|||||||
static constexpr char GNSS_1_ENABLE[] = "enable_gnss_1";
|
static constexpr char GNSS_1_ENABLE[] = "enable_gnss_1";
|
||||||
static constexpr char GYRO_0_ENABLE[] = "enable_gyro_0";
|
static constexpr char GYRO_0_ENABLE[] = "enable_gyro_0";
|
||||||
static constexpr char GYRO_2_ENABLE[] = "enable_gyro_2";
|
static constexpr char GYRO_2_ENABLE[] = "enable_gyro_2";
|
||||||
|
static constexpr char GNSS_SELECT[] = "gnss_mux_select";
|
||||||
static constexpr char HEATER_0[] = "heater0";
|
static constexpr char HEATER_0[] = "heater0";
|
||||||
static constexpr char HEATER_1[] = "heater1";
|
static constexpr char HEATER_1[] = "heater1";
|
||||||
static constexpr char HEATER_2[] = "heater2";
|
static constexpr char HEATER_2[] = "heater2";
|
||||||
|
@ -86,7 +86,7 @@ void initmission::initTasks() {
|
|||||||
"TCPIP_TMTC_BRIDGE", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
|
"TCPIP_TMTC_BRIDGE", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
|
||||||
result = tmtcBridgeTask->addComponent(objects::TMTC_BRIDGE);
|
result = tmtcBridgeTask->addComponent(objects::TMTC_BRIDGE);
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
initmission::printAddObjectError("UDP_BRIDGE", objects::TMTC_BRIDGE);
|
initmission::printAddObjectError("TMTC_BRIDGE", objects::TMTC_BRIDGE);
|
||||||
}
|
}
|
||||||
PeriodicTaskIF* tmtcPollingTask = factory->createPeriodicTask(
|
PeriodicTaskIF* tmtcPollingTask = factory->createPeriodicTask(
|
||||||
"TMTC_POLLING", 80, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
|
"TMTC_POLLING", 80, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
|
||||||
@ -135,9 +135,9 @@ void initmission::initTasks() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if OBSW_ADD_STAR_TRACKER == 1
|
#if OBSW_ADD_STAR_TRACKER == 1
|
||||||
PeriodicTaskIF* strImgLoaderTask = factory->createPeriodicTask(
|
PeriodicTaskIF* strHelperTask = factory->createPeriodicTask(
|
||||||
"STR_HELPER", 20, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
|
"STR_HELPER", 20, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
|
||||||
result = strImgLoaderTask->addComponent(objects::STR_HELPER);
|
result = strHelperTask->addComponent(objects::STR_HELPER);
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
initmission::printAddObjectError("STR_HELPER", objects::STR_HELPER);
|
initmission::printAddObjectError("STR_HELPER", objects::STR_HELPER);
|
||||||
}
|
}
|
||||||
@ -204,7 +204,7 @@ void initmission::initTasks() {
|
|||||||
#if BOARD_TE0720 == 0
|
#if BOARD_TE0720 == 0
|
||||||
fsTask->startTask();
|
fsTask->startTask();
|
||||||
#if OBSW_ADD_STAR_TRACKER == 1
|
#if OBSW_ADD_STAR_TRACKER == 1
|
||||||
strImgLoaderTask->startTask();
|
strHelperTask > startTask();
|
||||||
#endif /* OBSW_ADD_STAR_TRACKER == 1 */
|
#endif /* OBSW_ADD_STAR_TRACKER == 1 */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -248,6 +248,8 @@ void initmission::createPstTasks(TaskFactory& factory,
|
|||||||
sif::error << "InitMission::initTasks: Creating PST failed!" << std::endl;
|
sif::error << "InitMission::initTasks: Creating PST failed!" << std::endl;
|
||||||
}
|
}
|
||||||
taskVec.push_back(gpioPst);
|
taskVec.push_back(gpioPst);
|
||||||
|
|
||||||
|
#if OBSW_ADD_I2C_TEST_CODE == 0
|
||||||
FixedTimeslotTaskIF* i2cPst = factory.createFixedTimeslotTask(
|
FixedTimeslotTaskIF* i2cPst = factory.createFixedTimeslotTask(
|
||||||
"I2C_PST", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 0.2, missedDeadlineFunc);
|
"I2C_PST", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 0.2, missedDeadlineFunc);
|
||||||
result = pst::pstI2c(i2cPst);
|
result = pst::pstI2c(i2cPst);
|
||||||
@ -255,6 +257,7 @@ void initmission::createPstTasks(TaskFactory& factory,
|
|||||||
sif::error << "InitMission::initTasks: Creating PST failed!" << std::endl;
|
sif::error << "InitMission::initTasks: Creating PST failed!" << std::endl;
|
||||||
}
|
}
|
||||||
taskVec.push_back(i2cPst);
|
taskVec.push_back(i2cPst);
|
||||||
|
#endif
|
||||||
|
|
||||||
FixedTimeslotTaskIF* gomSpacePstTask = factory.createFixedTimeslotTask(
|
FixedTimeslotTaskIF* gomSpacePstTask = factory.createFixedTimeslotTask(
|
||||||
"GS_PST_TASK", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 1.0, missedDeadlineFunc);
|
"GS_PST_TASK", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 1.0, missedDeadlineFunc);
|
||||||
@ -347,7 +350,7 @@ void initmission::createPusTasks(TaskFactory& factory,
|
|||||||
void initmission::createTestTasks(TaskFactory& factory,
|
void initmission::createTestTasks(TaskFactory& factory,
|
||||||
TaskDeadlineMissedFunction missedDeadlineFunc,
|
TaskDeadlineMissedFunction missedDeadlineFunc,
|
||||||
std::vector<PeriodicTaskIF*>& taskVec) {
|
std::vector<PeriodicTaskIF*>& taskVec) {
|
||||||
#if OBSW_ADD_TEST_TASK == 1 || OBSW_ADD_SPI_TEST_CODE == 1 || \
|
#if OBSW_ADD_TEST_TASK == 1 || OBSW_ADD_SPI_TEST_CODE == 1 || OBSW_ADD_I2C_TEST_CODE == 1 || \
|
||||||
(BOARD_TE0720 == 1 && OBSW_TEST_LIBGPIOD == 1)
|
(BOARD_TE0720 == 1 && OBSW_TEST_LIBGPIOD == 1)
|
||||||
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
|
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
|
||||||
#endif
|
#endif
|
||||||
@ -366,6 +369,12 @@ void initmission::createTestTasks(TaskFactory& factory,
|
|||||||
initmission::printAddObjectError("SPI_TEST", objects::SPI_TEST);
|
initmission::printAddObjectError("SPI_TEST", objects::SPI_TEST);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#if OBSW_ADD_I2C_TEST_CODE == 1
|
||||||
|
result = testTask->addComponent(objects::I2C_TEST);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
initmission::printAddObjectError("I2C_TEST", objects::I2C_TEST);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#if BOARD_TE0720 == 1 && OBSW_TEST_LIBGPIOD == 1
|
#if BOARD_TE0720 == 1 && OBSW_TEST_LIBGPIOD == 1
|
||||||
result = testTask->addComponent(objects::LIBGPIOD_TEST);
|
result = testTask->addComponent(objects::LIBGPIOD_TEST);
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#include "ObjectFactory.h"
|
#include "ObjectFactory.h"
|
||||||
|
|
||||||
|
#include <linux/boardtest/I2cTestClass.h>
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
#include "OBSWConfig.h"
|
#include "OBSWConfig.h"
|
||||||
@ -11,9 +13,6 @@
|
|||||||
#include "bsp_q7s/devices/PlocMemoryDumper.h"
|
#include "bsp_q7s/devices/PlocMemoryDumper.h"
|
||||||
#include "bsp_q7s/devices/PlocSupervisorHandler.h"
|
#include "bsp_q7s/devices/PlocSupervisorHandler.h"
|
||||||
#include "bsp_q7s/devices/PlocUpdater.h"
|
#include "bsp_q7s/devices/PlocUpdater.h"
|
||||||
#include "bsp_q7s/devices/startracker/StarTrackerDefinitions.h"
|
|
||||||
#include "bsp_q7s/devices/startracker/StarTrackerHandler.h"
|
|
||||||
#include "bsp_q7s/devices/startracker/StrHelper.h"
|
|
||||||
#include "bsp_q7s/gpio/gpioCallbacks.h"
|
#include "bsp_q7s/gpio/gpioCallbacks.h"
|
||||||
#include "bsp_q7s/memory/FileSystemHandler.h"
|
#include "bsp_q7s/memory/FileSystemHandler.h"
|
||||||
#include "busConf.h"
|
#include "busConf.h"
|
||||||
@ -42,9 +41,13 @@
|
|||||||
#include "linux/csp/CspCookie.h"
|
#include "linux/csp/CspCookie.h"
|
||||||
#include "linux/devices/SolarArrayDeploymentHandler.h"
|
#include "linux/devices/SolarArrayDeploymentHandler.h"
|
||||||
#include "linux/devices/SusHandler.h"
|
#include "linux/devices/SusHandler.h"
|
||||||
|
#include "linux/devices/devicedefinitions/StarTrackerDefinitions.h"
|
||||||
#include "linux/devices/devicedefinitions/SusDefinitions.h"
|
#include "linux/devices/devicedefinitions/SusDefinitions.h"
|
||||||
|
#include "linux/devices/startracker/StarTrackerHandler.h"
|
||||||
|
#include "linux/devices/startracker/StrHelper.h"
|
||||||
#include "mission/core/GenericFactory.h"
|
#include "mission/core/GenericFactory.h"
|
||||||
#include "mission/devices/ACUHandler.h"
|
#include "mission/devices/ACUHandler.h"
|
||||||
|
#include "mission/devices/BpxBatteryHandler.h"
|
||||||
#include "mission/devices/GPSHyperionLinuxController.h"
|
#include "mission/devices/GPSHyperionLinuxController.h"
|
||||||
#include "mission/devices/GyroADIS1650XHandler.h"
|
#include "mission/devices/GyroADIS1650XHandler.h"
|
||||||
#include "mission/devices/HeaterHandler.h"
|
#include "mission/devices/HeaterHandler.h"
|
||||||
@ -117,7 +120,8 @@ void ObjectFactory::produce(void* args) {
|
|||||||
LinuxLibgpioIF* gpioComIF = nullptr;
|
LinuxLibgpioIF* gpioComIF = nullptr;
|
||||||
UartComIF* uartComIF = nullptr;
|
UartComIF* uartComIF = nullptr;
|
||||||
SpiComIF* spiComIF = nullptr;
|
SpiComIF* spiComIF = nullptr;
|
||||||
createCommunicationInterfaces(&gpioComIF, &uartComIF, &spiComIF);
|
I2cComIF* i2cComIF = nullptr;
|
||||||
|
createCommunicationInterfaces(&gpioComIF, &uartComIF, &spiComIF, &i2cComIF);
|
||||||
createTmpComponents();
|
createTmpComponents();
|
||||||
#if BOARD_TE0720 == 0
|
#if BOARD_TE0720 == 0
|
||||||
new CoreController(objects::CORE_CONTROLLER);
|
new CoreController(objects::CORE_CONTROLLER);
|
||||||
@ -144,6 +148,7 @@ void ObjectFactory::produce(void* args) {
|
|||||||
I2cCookie* imtqI2cCookie =
|
I2cCookie* imtqI2cCookie =
|
||||||
new I2cCookie(addresses::IMTQ, IMTQ::MAX_REPLY_SIZE, q7s::I2C_DEFAULT_DEV);
|
new I2cCookie(addresses::IMTQ, IMTQ::MAX_REPLY_SIZE, q7s::I2C_DEFAULT_DEV);
|
||||||
auto imtqHandler = new IMTQHandler(objects::IMTQ_HANDLER, objects::I2C_COM_IF, imtqI2cCookie);
|
auto imtqHandler = new IMTQHandler(objects::IMTQ_HANDLER, objects::I2C_COM_IF, imtqI2cCookie);
|
||||||
|
static_cast<void>(imtqHandler);
|
||||||
#if OBSW_DEBUG_IMTQ == 1
|
#if OBSW_DEBUG_IMTQ == 1
|
||||||
imtqHandler->setToGoToNormal(true);
|
imtqHandler->setToGoToNormal(true);
|
||||||
imtqHandler->setStartUpImmediately();
|
imtqHandler->setStartUpImmediately();
|
||||||
@ -153,6 +158,18 @@ void ObjectFactory::produce(void* args) {
|
|||||||
#endif
|
#endif
|
||||||
createReactionWheelComponents(gpioComIF);
|
createReactionWheelComponents(gpioComIF);
|
||||||
|
|
||||||
|
#if OBSW_ADD_BPX_BATTERY_HANDLER == 1
|
||||||
|
I2cCookie* bpxI2cCookie = new I2cCookie(addresses::BPX_BATTERY, 100, q7s::I2C_DEFAULT_DEV);
|
||||||
|
BpxBatteryHandler* bpxHandler =
|
||||||
|
new BpxBatteryHandler(objects::BPX_BATT_HANDLER, objects::I2C_COM_IF, bpxI2cCookie);
|
||||||
|
#if OBSW_TEST_BPX_BATT == 1
|
||||||
|
bpxHandler->setToGoToNormalMode(true);
|
||||||
|
bpxHandler->setStartUpImmediately();
|
||||||
|
#else
|
||||||
|
static_cast<void>(bpxHandler);
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#if OBSW_ADD_PLOC_MPSOC == 1
|
#if OBSW_ADD_PLOC_MPSOC == 1
|
||||||
UartCookie* plocMpsocCookie =
|
UartCookie* plocMpsocCookie =
|
||||||
new UartCookie(objects::PLOC_MPSOC_HANDLER, q7s::UART_PLOC_MPSOC_DEV,
|
new UartCookie(objects::PLOC_MPSOC_HANDLER, q7s::UART_PLOC_MPSOC_DEV,
|
||||||
@ -222,7 +239,7 @@ void ObjectFactory::createTmpComponents() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ObjectFactory::createCommunicationInterfaces(LinuxLibgpioIF** gpioComIF, UartComIF** uartComIF,
|
void ObjectFactory::createCommunicationInterfaces(LinuxLibgpioIF** gpioComIF, UartComIF** uartComIF,
|
||||||
SpiComIF** spiComIF) {
|
SpiComIF** spiComIF, I2cComIF** i2cComIF) {
|
||||||
if (gpioComIF == nullptr or uartComIF == nullptr or spiComIF == nullptr) {
|
if (gpioComIF == nullptr or uartComIF == nullptr or spiComIF == nullptr) {
|
||||||
sif::error << "ObjectFactory::createCommunicationInterfaces: Invalid passed ComIF pointer"
|
sif::error << "ObjectFactory::createCommunicationInterfaces: Invalid passed ComIF pointer"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
@ -231,7 +248,7 @@ void ObjectFactory::createCommunicationInterfaces(LinuxLibgpioIF** gpioComIF, Ua
|
|||||||
|
|
||||||
/* Communication interfaces */
|
/* Communication interfaces */
|
||||||
new CspComIF(objects::CSP_COM_IF);
|
new CspComIF(objects::CSP_COM_IF);
|
||||||
new I2cComIF(objects::I2C_COM_IF);
|
*i2cComIF = new I2cComIF(objects::I2C_COM_IF);
|
||||||
*uartComIF = new UartComIF(objects::UART_COM_IF);
|
*uartComIF = new UartComIF(objects::UART_COM_IF);
|
||||||
#if OBSW_ADD_SPI_TEST_CODE == 0
|
#if OBSW_ADD_SPI_TEST_CODE == 0
|
||||||
*spiComIF = new SpiComIF(objects::SPI_COM_IF, *gpioComIF);
|
*spiComIF = new SpiComIF(objects::SPI_COM_IF, *gpioComIF);
|
||||||
@ -481,6 +498,12 @@ void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComI
|
|||||||
gpio::LOW);
|
gpio::LOW);
|
||||||
gpioCookieAcsBoard->addGpio(gpioIds::GNSS_1_ENABLE, gpio);
|
gpioCookieAcsBoard->addGpio(gpioIds::GNSS_1_ENABLE, gpio);
|
||||||
|
|
||||||
|
// Select pin. 0 for GPS side A, 1 for GPS side B
|
||||||
|
consumer.str("");
|
||||||
|
consumer << "0x" << std::hex << objects::GPS_CONTROLLER;
|
||||||
|
gpio = new GpiodRegularByLineName(q7s::gpioNames::GNSS_SELECT, consumer.str(), gpio::DIR_OUT,
|
||||||
|
gpio::LOW);
|
||||||
|
gpioCookieAcsBoard->addGpio(gpioIds::GNSS_SELECT, gpio);
|
||||||
gpioComIF->addGpios(gpioCookieAcsBoard);
|
gpioComIF->addGpios(gpioCookieAcsBoard);
|
||||||
|
|
||||||
#if OBSW_ADD_ACS_HANDLERS == 1
|
#if OBSW_ADD_ACS_HANDLERS == 1
|
||||||
@ -578,7 +601,8 @@ void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComI
|
|||||||
resetArgsGnss0.gnss1 = false;
|
resetArgsGnss0.gnss1 = false;
|
||||||
resetArgsGnss0.gpioComIF = gpioComIF;
|
resetArgsGnss0.gpioComIF = gpioComIF;
|
||||||
resetArgsGnss0.waitPeriodMs = 100;
|
resetArgsGnss0.waitPeriodMs = 100;
|
||||||
auto gpsHandler0 = new GPSHyperionHandler(objects::GPS_CONTROLLER, objects::NO_OBJECT, debugGps);
|
auto gpsHandler0 =
|
||||||
|
new GPSHyperionLinuxController(objects::GPS_CONTROLLER, objects::NO_OBJECT, debugGps);
|
||||||
gpsHandler0->setResetPinTriggerFunction(gps::triggerGpioResetPin, &resetArgsGnss0);
|
gpsHandler0->setResetPinTriggerFunction(gps::triggerGpioResetPin, &resetArgsGnss0);
|
||||||
#endif /* OBSW_ADD_ACS_HANDLERS == 1 */
|
#endif /* OBSW_ADD_ACS_HANDLERS == 1 */
|
||||||
}
|
}
|
||||||
@ -1108,4 +1132,7 @@ void ObjectFactory::createTestComponents(LinuxLibgpioIF* gpioComIF) {
|
|||||||
#if OBSW_ADD_SPI_TEST_CODE == 1
|
#if OBSW_ADD_SPI_TEST_CODE == 1
|
||||||
new SpiTestClass(objects::SPI_TEST, gpioComIF);
|
new SpiTestClass(objects::SPI_TEST, gpioComIF);
|
||||||
#endif
|
#endif
|
||||||
|
#if OBSW_ADD_I2C_TEST_CODE == 1
|
||||||
|
new I2cTestClass(objects::I2C_TEST, q7s::I2C_DEFAULT_DEV);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
class LinuxLibgpioIF;
|
class LinuxLibgpioIF;
|
||||||
class UartComIF;
|
class UartComIF;
|
||||||
class SpiComIF;
|
class SpiComIF;
|
||||||
|
class I2cComIF;
|
||||||
|
|
||||||
namespace ObjectFactory {
|
namespace ObjectFactory {
|
||||||
|
|
||||||
@ -11,7 +12,7 @@ void setStatics();
|
|||||||
void produce(void* args);
|
void produce(void* args);
|
||||||
|
|
||||||
void createCommunicationInterfaces(LinuxLibgpioIF** gpioComIF, UartComIF** uartComIF,
|
void createCommunicationInterfaces(LinuxLibgpioIF** gpioComIF, UartComIF** uartComIF,
|
||||||
SpiComIF** spiComIF);
|
SpiComIF** spiComIF, I2cComIF** i2cComIF);
|
||||||
void createTmpComponents();
|
void createTmpComponents();
|
||||||
void createPcduComponents(LinuxLibgpioIF* gpioComIF);
|
void createPcduComponents(LinuxLibgpioIF* gpioComIF);
|
||||||
void createRadSensorComponent(LinuxLibgpioIF* gpioComIF);
|
void createRadSensorComponent(LinuxLibgpioIF* gpioComIF);
|
||||||
|
@ -3,5 +3,3 @@ target_sources(${TARGET_NAME} PRIVATE
|
|||||||
PlocUpdater.cpp
|
PlocUpdater.cpp
|
||||||
PlocMemoryDumper.cpp
|
PlocMemoryDumper.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
add_subdirectory(startracker)
|
|
@ -47,7 +47,7 @@ if(CMAKE_CROSSCOMPILING)
|
|||||||
|
|
||||||
set_property(CACHE TGT_BSP
|
set_property(CACHE TGT_BSP
|
||||||
PROPERTY STRINGS
|
PROPERTY STRINGS
|
||||||
"arm/q7s" "arm/raspberrypi"
|
"arm/q7s" "arm/raspberrypi" "arm/egse"
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -57,6 +57,8 @@ if(TGT_BSP)
|
|||||||
set(BSP_PATH "bsp_linux_board")
|
set(BSP_PATH "bsp_linux_board")
|
||||||
elseif(TGT_BSP MATCHES "arm/q7s")
|
elseif(TGT_BSP MATCHES "arm/q7s")
|
||||||
set(BSP_PATH "bsp_q7s")
|
set(BSP_PATH "bsp_q7s")
|
||||||
|
elseif(TGT_BSP MATCHES "arm/egse")
|
||||||
|
set(BSP_PATH "bsp_egse")
|
||||||
else()
|
else()
|
||||||
message(WARNING "CMake not configured for this target!")
|
message(WARNING "CMake not configured for this target!")
|
||||||
message(FATAL_ERROR "Target: ${TGT_BSP}!")
|
message(FATAL_ERROR "Target: ${TGT_BSP}!")
|
||||||
|
@ -16,7 +16,7 @@ if(FSFW_OSAL MATCHES linux AND TGT_BSP)
|
|||||||
"${CMAKE_SCRIPT_PATH}/Q7SCrossCompileConfig.cmake"
|
"${CMAKE_SCRIPT_PATH}/Q7SCrossCompileConfig.cmake"
|
||||||
PARENT_SCOPE
|
PARENT_SCOPE
|
||||||
)
|
)
|
||||||
elseif(TGT_BSP MATCHES "arm/raspberrypi")
|
elseif(TGT_BSP MATCHES "arm/raspberrypi" OR TGT_BSP MATCHES "arm/egse")
|
||||||
if(NOT DEFINED ENV{LINUX_ROOTFS})
|
if(NOT DEFINED ENV{LINUX_ROOTFS})
|
||||||
if(NOT DEFINED LINUX_ROOTFS)
|
if(NOT DEFINED LINUX_ROOTFS)
|
||||||
message(WARNING "No LINUX_ROOTFS environmental or CMake variable set!")
|
message(WARNING "No LINUX_ROOTFS environmental or CMake variable set!")
|
||||||
|
@ -1,5 +1,49 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
export PATH=$PATH:"/c/Xilinx/SDK/2018.2/gnu/aarch32/nt/gcc-arm-linux-gnueabi/bin"
|
# Run with: source q7s-env-win-sh [OPTIONS]
|
||||||
export CROSS_COMPILE="arm-linux-gnueabihf"
|
function help () {
|
||||||
|
echo "source q7s-env-win-sh [options] -t|--toolchain=<toolchain path> -s|--sysroot=<sysroot path>"
|
||||||
|
}
|
||||||
|
|
||||||
export Q7S_SYSROOT="/c/Users/${USER}/Documents/EIVE/cortexa9hf-neon-xiphos-linux-gnueabi"
|
TOOLCHAIN_PATH="/c/Xilinx/Vitis/2019.2/gnu/aarch32/nt/gcc-arm-linux-gnueabi/bin"
|
||||||
|
SYSROOT="/c/Users/${USER}/eive-software/cortexa9hf-neon-xiphos-linux-gnueabi"
|
||||||
|
|
||||||
|
for i in "$@"; do
|
||||||
|
case $i in
|
||||||
|
-t=*|--toolchain=*)
|
||||||
|
TOOLCHAIN_PATH="${i#*=}"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-s=*|--sysroot=*)
|
||||||
|
SYSROOT="${i#*=}"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-h|--help)
|
||||||
|
help
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-*|--*)
|
||||||
|
echo "Unknown option $i"
|
||||||
|
help
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -d "$TOOLCHAIN_PATH" ]; then
|
||||||
|
export PATH=$PATH:"/c/Xilinx/Vitis/2019.2/gnu/aarch32/nt/gcc-arm-linux-gnueabi/bin"
|
||||||
|
export CROSS_COMPILE="arm-linux-gnueabihf"
|
||||||
|
echo "Set toolchain path to /c/Xilinx/Vitis/2019.2/gnu/aarch32/nt/gcc-arm-linux-gnueabi/bin"
|
||||||
|
else
|
||||||
|
echo "Toolchain path $TOOLCHAIN_PATH does not exist"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d "$SYSROOT" ]; then
|
||||||
|
export Q7S_SYSROOT=$SYSROOT
|
||||||
|
echo "Set sysroot path to $SYSROOT"
|
||||||
|
else
|
||||||
|
echo "Sysroot path $SYSROOT does not exist"
|
||||||
|
return
|
||||||
|
fi
|
13
cmake/scripts/egse/egse_path_helper_win.sh
Normal file
13
cmake/scripts/egse/egse_path_helper_win.sh
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Script to set path to raspberry pi toolchain
|
||||||
|
# Run script with: source egse_path_helper_win.sh
|
||||||
|
TOOLCHAIN_PATH="/c/SysGCC/raspberry/bin"
|
||||||
|
if [ $# -eq 1 ];then
|
||||||
|
export PATH=$PATH:"$1"
|
||||||
|
else
|
||||||
|
export PATH=$PATH:$TOOLCHAIN_PATH
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Path of toolchain set to $TOOLCHAIN_PATH"
|
||||||
|
export CROSS_COMPILE="arm-linux-gnueabihf"
|
||||||
|
export RASPBERRY_VERSION="4"
|
34
cmake/scripts/egse/make-debug-cfg.sh
Normal file
34
cmake/scripts/egse/make-debug-cfg.sh
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
counter=0
|
||||||
|
cfg_script_name="cmake-build-cfg.py"
|
||||||
|
while [ ${counter} -lt 5 ]
|
||||||
|
do
|
||||||
|
cd ..
|
||||||
|
if [ -f ${cfg_script_name} ];then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
counter=$((counter=counter + 1))
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "${counter}" -ge 5 ];then
|
||||||
|
echo "${cfg_script_name} not found in upper directories!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
os_fsfw="linux"
|
||||||
|
tgt_bsp="arm/egse"
|
||||||
|
build_generator="make"
|
||||||
|
build_dir="build-Debug-egse"
|
||||||
|
if [ "${OS}" = "Windows_NT" ]; then
|
||||||
|
python="py"
|
||||||
|
# Could be other OS but this works for now.
|
||||||
|
else
|
||||||
|
python="python3"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Running command (without the leading +):"
|
||||||
|
set -x # Print command
|
||||||
|
${python} ${cfg_script_name} -o "${os_fsfw}" -g "${build_generator}" -b "debug" -t "${tgt_bsp}" \
|
||||||
|
-l"${build_dir}"
|
||||||
|
# set +x
|
@ -25,6 +25,7 @@ enum commonObjects: uint32_t {
|
|||||||
PDU1_HANDLER = 0x44250001,
|
PDU1_HANDLER = 0x44250001,
|
||||||
PDU2_HANDLER = 0x44250002,
|
PDU2_HANDLER = 0x44250002,
|
||||||
ACU_HANDLER = 0x44250003,
|
ACU_HANDLER = 0x44250003,
|
||||||
|
BPX_BATT_HANDLER = 0x44260000,
|
||||||
TMP1075_HANDLER_1 = 0x44420004,
|
TMP1075_HANDLER_1 = 0x44420004,
|
||||||
TMP1075_HANDLER_2 = 0x44420005,
|
TMP1075_HANDLER_2 = 0x44420005,
|
||||||
MGM_0_LIS3_HANDLER = 0x44120006,
|
MGM_0_LIS3_HANDLER = 0x44120006,
|
||||||
|
@ -42,9 +42,9 @@ namespace uart {
|
|||||||
static constexpr size_t HYPERION_GPS_REPLY_MAX_BUFFER = 1024;
|
static constexpr size_t HYPERION_GPS_REPLY_MAX_BUFFER = 1024;
|
||||||
static constexpr uint32_t SYRLINKS_BAUD = 38400;
|
static constexpr uint32_t SYRLINKS_BAUD = 38400;
|
||||||
static constexpr uint32_t GNSS_BAUD = 9600;
|
static constexpr uint32_t GNSS_BAUD = 9600;
|
||||||
static constexpr uint32_t PLOC_MPSOC_BAUD = 115200;
|
static constexpr uint32_t PLOC_MPSOC_BAUD = 921600;
|
||||||
static constexpr uint32_t PLOC_SUPERVISOR_BAUD = 115200;
|
static constexpr uint32_t PLOC_SUPERVISOR_BAUD = 115200;
|
||||||
static constexpr uint32_t STAR_TRACKER_BAUD = 115200;
|
static constexpr uint32_t STAR_TRACKER_BAUD = 921600;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
fsfw
2
fsfw
@ -1 +1 @@
|
|||||||
Subproject commit f08d291e3e22950e729c327c101d22a943910e9b
|
Subproject commit 3c06d2dbbb0d79608e003a8a3c89ae90cc71f409
|
@ -1,140 +1,140 @@
|
|||||||
2200;STORE_SEND_WRITE_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2200;STORE_SEND_WRITE_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2201;STORE_WRITE_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2201;STORE_WRITE_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2202;STORE_SEND_READ_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2202;STORE_SEND_READ_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2203;STORE_READ_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2203;STORE_READ_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2204;UNEXPECTED_MSG;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2204;UNEXPECTED_MSG;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2205;STORING_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2205;STORING_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2206;TM_DUMP_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2206;TM_DUMP_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2207;STORE_INIT_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2207;STORE_INIT_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2208;STORE_INIT_EMPTY;INFO;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2208;STORE_INIT_EMPTY;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2209;STORE_CONTENT_CORRUPTED;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2209;STORE_CONTENT_CORRUPTED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2210;STORE_INITIALIZE;INFO;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2210;STORE_INITIALIZE;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2211;INIT_DONE;INFO;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2211;INIT_DONE;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2212;DUMP_FINISHED;INFO;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2212;DUMP_FINISHED;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2213;DELETION_FINISHED;INFO;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2213;DELETION_FINISHED;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2214;DELETION_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2214;DELETION_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2215;AUTO_CATALOGS_SENDING_FAILED;INFO;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2215;AUTO_CATALOGS_SENDING_FAILED;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2600;GET_DATA_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/storagemanager/StorageManagerIF.h
|
2600;GET_DATA_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/storagemanager/StorageManagerIF.h
|
||||||
2601;STORE_DATA_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/storagemanager/StorageManagerIF.h
|
2601;STORE_DATA_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/storagemanager/StorageManagerIF.h
|
||||||
2800;DEVICE_BUILDING_COMMAND_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
2800;DEVICE_BUILDING_COMMAND_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
2801;DEVICE_SENDING_COMMAND_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
2801;DEVICE_SENDING_COMMAND_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
2802;DEVICE_REQUESTING_REPLY_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
2802;DEVICE_REQUESTING_REPLY_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
2803;DEVICE_READING_REPLY_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
2803;DEVICE_READING_REPLY_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
2804;DEVICE_INTERPRETING_REPLY_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
2804;DEVICE_INTERPRETING_REPLY_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
2805;DEVICE_MISSED_REPLY;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
2805;DEVICE_MISSED_REPLY;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
2806;DEVICE_UNKNOWN_REPLY;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
2806;DEVICE_UNKNOWN_REPLY;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
2807;DEVICE_UNREQUESTED_REPLY;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
2807;DEVICE_UNREQUESTED_REPLY;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
2808;INVALID_DEVICE_COMMAND;LOW;Indicates a SW bug in child class.;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
2808;INVALID_DEVICE_COMMAND;LOW;Indicates a SW bug in child class.;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
2809;MONITORING_LIMIT_EXCEEDED;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
2809;MONITORING_LIMIT_EXCEEDED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
2810;MONITORING_AMBIGUOUS;HIGH;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
2810;MONITORING_AMBIGUOUS;HIGH;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
4201;FUSE_CURRENT_HIGH;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/power/Fuse.h
|
2811;DEVICE_WANTS_HARD_REBOOT;HIGH;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
4202;FUSE_WENT_OFF;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/power/Fuse.h
|
4201;FUSE_CURRENT_HIGH;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/power/Fuse.h
|
||||||
4204;POWER_ABOVE_HIGH_LIMIT;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/power/Fuse.h
|
4202;FUSE_WENT_OFF;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/power/Fuse.h
|
||||||
4205;POWER_BELOW_LOW_LIMIT;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/power/Fuse.h
|
4204;POWER_ABOVE_HIGH_LIMIT;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/power/Fuse.h
|
||||||
4300;SWITCH_WENT_OFF;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/power/PowerSwitchIF.h
|
4205;POWER_BELOW_LOW_LIMIT;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/power/Fuse.h
|
||||||
5000;HEATER_ON;INFO;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/thermal/Heater.h
|
4300;SWITCH_WENT_OFF;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/power/PowerSwitchIF.h
|
||||||
5001;HEATER_OFF;INFO;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/thermal/Heater.h
|
5000;HEATER_ON;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/Heater.h
|
||||||
5002;HEATER_TIMEOUT;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/thermal/Heater.h
|
5001;HEATER_OFF;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/Heater.h
|
||||||
5003;HEATER_STAYED_ON;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/thermal/Heater.h
|
5002;HEATER_TIMEOUT;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/Heater.h
|
||||||
5004;HEATER_STAYED_OFF;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/thermal/Heater.h
|
5003;HEATER_STAYED_ON;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/Heater.h
|
||||||
5200;TEMP_SENSOR_HIGH;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h
|
5004;HEATER_STAYED_OFF;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/Heater.h
|
||||||
5201;TEMP_SENSOR_LOW;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h
|
5200;TEMP_SENSOR_HIGH;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h
|
||||||
5202;TEMP_SENSOR_GRADIENT;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h
|
5201;TEMP_SENSOR_LOW;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h
|
||||||
5901;COMPONENT_TEMP_LOW;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
5202;TEMP_SENSOR_GRADIENT;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h
|
||||||
5902;COMPONENT_TEMP_HIGH;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
5901;COMPONENT_TEMP_LOW;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
||||||
5903;COMPONENT_TEMP_OOL_LOW;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
5902;COMPONENT_TEMP_HIGH;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
||||||
5904;COMPONENT_TEMP_OOL_HIGH;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
5903;COMPONENT_TEMP_OOL_LOW;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
||||||
5905;TEMP_NOT_IN_OP_RANGE;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
5904;COMPONENT_TEMP_OOL_HIGH;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
||||||
7101;FDIR_CHANGED_STATE;INFO;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/fdir/FailureIsolationBase.h
|
5905;TEMP_NOT_IN_OP_RANGE;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
||||||
7102;FDIR_STARTS_RECOVERY;MEDIUM;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/fdir/FailureIsolationBase.h
|
7101;FDIR_CHANGED_STATE;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/fdir/FailureIsolationBase.h
|
||||||
7103;FDIR_TURNS_OFF_DEVICE;MEDIUM;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/fdir/FailureIsolationBase.h
|
7102;FDIR_STARTS_RECOVERY;MEDIUM;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/fdir/FailureIsolationBase.h
|
||||||
7201;MONITOR_CHANGED_STATE;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/monitoring/MonitoringIF.h
|
7103;FDIR_TURNS_OFF_DEVICE;MEDIUM;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/fdir/FailureIsolationBase.h
|
||||||
7202;VALUE_BELOW_LOW_LIMIT;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/monitoring/MonitoringIF.h
|
7201;MONITOR_CHANGED_STATE;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/monitoring/MonitoringIF.h
|
||||||
7203;VALUE_ABOVE_HIGH_LIMIT;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/monitoring/MonitoringIF.h
|
7202;VALUE_BELOW_LOW_LIMIT;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/monitoring/MonitoringIF.h
|
||||||
7204;VALUE_OUT_OF_RANGE;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/monitoring/MonitoringIF.h
|
7203;VALUE_ABOVE_HIGH_LIMIT;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/monitoring/MonitoringIF.h
|
||||||
7301;SWITCHING_TM_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/datapool/HkSwitchHelper.h
|
7204;VALUE_OUT_OF_RANGE;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/monitoring/MonitoringIF.h
|
||||||
7400;CHANGING_MODE;INFO;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
7400;CHANGING_MODE;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
||||||
7401;MODE_INFO;INFO;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
7401;MODE_INFO;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
||||||
7402;FALLBACK_FAILED;HIGH;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
7402;FALLBACK_FAILED;HIGH;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
||||||
7403;MODE_TRANSITION_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
7403;MODE_TRANSITION_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
||||||
7404;CANT_KEEP_MODE;HIGH;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
7404;CANT_KEEP_MODE;HIGH;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
||||||
7405;OBJECT_IN_INVALID_MODE;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
7405;OBJECT_IN_INVALID_MODE;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
||||||
7406;FORCING_MODE;MEDIUM;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
7406;FORCING_MODE;MEDIUM;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
||||||
7407;MODE_CMD_REJECTED;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
7407;MODE_CMD_REJECTED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
||||||
7506;HEALTH_INFO;INFO;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
7506;HEALTH_INFO;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
||||||
7507;CHILD_CHANGED_HEALTH;INFO;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
7507;CHILD_CHANGED_HEALTH;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
||||||
7508;CHILD_PROBLEMS;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
7508;CHILD_PROBLEMS;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
||||||
7509;OVERWRITING_HEALTH;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
7509;OVERWRITING_HEALTH;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
||||||
7510;TRYING_RECOVERY;MEDIUM;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
7510;TRYING_RECOVERY;MEDIUM;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
||||||
7511;RECOVERY_STEP;MEDIUM;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
7511;RECOVERY_STEP;MEDIUM;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
||||||
7512;RECOVERY_DONE;MEDIUM;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
7512;RECOVERY_DONE;MEDIUM;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
||||||
7900;RF_AVAILABLE;INFO;A RF available signal was detected. P1: raw RFA state, P2: 0;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
|
7900;RF_AVAILABLE;INFO;A RF available signal was detected. P1: raw RFA state, P2: 0;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
|
||||||
7901;RF_LOST;INFO;A previously found RF available signal was lost. P1: raw RFA state, P2: 0;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
|
7901;RF_LOST;INFO;A previously found RF available signal was lost. P1: raw RFA state, P2: 0;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
|
||||||
7902;BIT_LOCK;INFO;A Bit Lock signal. Was detected. P1: raw BLO state, P2: 0;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
|
7902;BIT_LOCK;INFO;A Bit Lock signal. Was detected. P1: raw BLO state, P2: 0;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
|
||||||
7903;BIT_LOCK_LOST;INFO;A previously found Bit Lock signal was lost. P1: raw BLO state, P2: 0;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
|
7903;BIT_LOCK_LOST;INFO;A previously found Bit Lock signal was lost. P1: raw BLO state, P2: 0;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
|
||||||
7905;FRAME_PROCESSING_FAILED;LOW;The CCSDS Board could not interpret a TC;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
|
7905;FRAME_PROCESSING_FAILED;LOW;The CCSDS Board could not interpret a TC;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
|
||||||
8900;CLOCK_SET;INFO;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/pus/Service9TimeManagement.h
|
8900;CLOCK_SET;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/pus/Service9TimeManagement.h
|
||||||
8901;CLOCK_SET_FAILURE;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/pus/Service9TimeManagement.h
|
8901;CLOCK_SET_FAILURE;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/pus/Service9TimeManagement.h
|
||||||
9700;TEST;INFO;;C:\Users\jakob\eive-software\eive_obsw/fsfw/src/fsfw/pus/Service17Test.h
|
9700;TEST;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/pus/Service17Test.h
|
||||||
10600;CHANGE_OF_SETUP_PARAMETER;LOW;;C:\Users\jakob\eive-software\eive_obsw/fsfw/hal/src/fsfw_hal/devicehandlers/MgmLIS3MDLHandler.h
|
10600;CHANGE_OF_SETUP_PARAMETER;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/hal/src/fsfw_hal/devicehandlers/MgmLIS3MDLHandler.h
|
||||||
10900;GPIO_PULL_HIGH_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/mission/devices/HeaterHandler.h
|
10900;GPIO_PULL_HIGH_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/mission/devices/HeaterHandler.h
|
||||||
10901;GPIO_PULL_LOW_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/mission/devices/HeaterHandler.h
|
10901;GPIO_PULL_LOW_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/mission/devices/HeaterHandler.h
|
||||||
10902;SWITCH_ALREADY_ON;LOW;;C:\Users\jakob\eive-software\eive_obsw/mission/devices/HeaterHandler.h
|
10902;SWITCH_ALREADY_ON;LOW;;/home/rmueller/EIVE/eive-obsw/mission/devices/HeaterHandler.h
|
||||||
10903;SWITCH_ALREADY_OFF;LOW;;C:\Users\jakob\eive-software\eive_obsw/mission/devices/HeaterHandler.h
|
10903;SWITCH_ALREADY_OFF;LOW;;/home/rmueller/EIVE/eive-obsw/mission/devices/HeaterHandler.h
|
||||||
10904;MAIN_SWITCH_TIMEOUT;LOW;;C:\Users\jakob\eive-software\eive_obsw/mission/devices/HeaterHandler.h
|
10904;MAIN_SWITCH_TIMEOUT;LOW;;/home/rmueller/EIVE/eive-obsw/mission/devices/HeaterHandler.h
|
||||||
11000;MAIN_SWITCH_ON_TIMEOUT;LOW;;C:\Users\jakob\eive-software\eive_obsw/linux/devices/SolarArrayDeploymentHandler.h
|
11000;MAIN_SWITCH_ON_TIMEOUT;LOW;;/home/rmueller/EIVE/eive-obsw/linux/devices/SolarArrayDeploymentHandler.h
|
||||||
11001;MAIN_SWITCH_OFF_TIMEOUT;LOW;;C:\Users\jakob\eive-software\eive_obsw/linux/devices/SolarArrayDeploymentHandler.h
|
11001;MAIN_SWITCH_OFF_TIMEOUT;LOW;;/home/rmueller/EIVE/eive-obsw/linux/devices/SolarArrayDeploymentHandler.h
|
||||||
11002;DEPLOYMENT_FAILED;HIGH;;C:\Users\jakob\eive-software\eive_obsw/linux/devices/SolarArrayDeploymentHandler.h
|
11002;DEPLOYMENT_FAILED;HIGH;;/home/rmueller/EIVE/eive-obsw/linux/devices/SolarArrayDeploymentHandler.h
|
||||||
11003;DEPL_SA1_GPIO_SWTICH_ON_FAILED;HIGH;;C:\Users\jakob\eive-software\eive_obsw/linux/devices/SolarArrayDeploymentHandler.h
|
11003;DEPL_SA1_GPIO_SWTICH_ON_FAILED;HIGH;;/home/rmueller/EIVE/eive-obsw/linux/devices/SolarArrayDeploymentHandler.h
|
||||||
11004;DEPL_SA2_GPIO_SWTICH_ON_FAILED;HIGH;;C:\Users\jakob\eive-software\eive_obsw/linux/devices/SolarArrayDeploymentHandler.h
|
11004;DEPL_SA2_GPIO_SWTICH_ON_FAILED;HIGH;;/home/rmueller/EIVE/eive-obsw/linux/devices/SolarArrayDeploymentHandler.h
|
||||||
11101;MEMORY_READ_RPT_CRC_FAILURE;LOW;;C:\Users\jakob\eive-software\eive_obsw/mission/devices/PlocMPSoCHandler.h
|
11101;MEMORY_READ_RPT_CRC_FAILURE;LOW;;/home/rmueller/EIVE/eive-obsw/mission/devices/PlocMPSoCHandler.h
|
||||||
11102;ACK_FAILURE;LOW;;C:\Users\jakob\eive-software\eive_obsw/mission/devices/PlocMPSoCHandler.h
|
11102;ACK_FAILURE;LOW;;/home/rmueller/EIVE/eive-obsw/mission/devices/PlocMPSoCHandler.h
|
||||||
11103;EXE_FAILURE;LOW;;C:\Users\jakob\eive-software\eive_obsw/mission/devices/PlocMPSoCHandler.h
|
11103;EXE_FAILURE;LOW;;/home/rmueller/EIVE/eive-obsw/mission/devices/PlocMPSoCHandler.h
|
||||||
11104;CRC_FAILURE_EVENT;LOW;;C:\Users\jakob\eive-software\eive_obsw/mission/devices/PlocMPSoCHandler.h
|
11104;CRC_FAILURE_EVENT;LOW;;/home/rmueller/EIVE/eive-obsw/mission/devices/PlocMPSoCHandler.h
|
||||||
11201;SELF_TEST_I2C_FAILURE;LOW;Get self test result returns I2C failure P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;C:\Users\jakob\eive-software\eive_obsw/mission/devices/IMTQHandler.h
|
11201;SELF_TEST_I2C_FAILURE;LOW;Get self test result returns I2C failure P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;/home/rmueller/EIVE/eive-obsw/mission/devices/IMTQHandler.h
|
||||||
11202;SELF_TEST_SPI_FAILURE;LOW;Get self test result returns SPI failure. This concerns the MTM connectivity. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;C:\Users\jakob\eive-software\eive_obsw/mission/devices/IMTQHandler.h
|
11202;SELF_TEST_SPI_FAILURE;LOW;Get self test result returns SPI failure. This concerns the MTM connectivity. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;/home/rmueller/EIVE/eive-obsw/mission/devices/IMTQHandler.h
|
||||||
11203;SELF_TEST_ADC_FAILURE;LOW;Get self test result returns failure in measurement of current and temperature. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;C:\Users\jakob\eive-software\eive_obsw/mission/devices/IMTQHandler.h
|
11203;SELF_TEST_ADC_FAILURE;LOW;Get self test result returns failure in measurement of current and temperature. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;/home/rmueller/EIVE/eive-obsw/mission/devices/IMTQHandler.h
|
||||||
11204;SELF_TEST_PWM_FAILURE;LOW;Get self test result returns PWM failure which concerns the coil actuation. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;C:\Users\jakob\eive-software\eive_obsw/mission/devices/IMTQHandler.h
|
11204;SELF_TEST_PWM_FAILURE;LOW;Get self test result returns PWM failure which concerns the coil actuation. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;/home/rmueller/EIVE/eive-obsw/mission/devices/IMTQHandler.h
|
||||||
11205;SELF_TEST_TC_FAILURE;LOW;Get self test result returns TC failure (system failure) P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;C:\Users\jakob\eive-software\eive_obsw/mission/devices/IMTQHandler.h
|
11205;SELF_TEST_TC_FAILURE;LOW;Get self test result returns TC failure (system failure) P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;/home/rmueller/EIVE/eive-obsw/mission/devices/IMTQHandler.h
|
||||||
11206;SELF_TEST_MTM_RANGE_FAILURE;LOW;Get self test result returns failure that MTM values were outside of the expected range. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;C:\Users\jakob\eive-software\eive_obsw/mission/devices/IMTQHandler.h
|
11206;SELF_TEST_MTM_RANGE_FAILURE;LOW;Get self test result returns failure that MTM values were outside of the expected range. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;/home/rmueller/EIVE/eive-obsw/mission/devices/IMTQHandler.h
|
||||||
11207;SELF_TEST_COIL_CURRENT_FAILURE;LOW;Get self test result returns failure indicating that the coil current was outside of the expected range P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;C:\Users\jakob\eive-software\eive_obsw/mission/devices/IMTQHandler.h
|
11207;SELF_TEST_COIL_CURRENT_FAILURE;LOW;Get self test result returns failure indicating that the coil current was outside of the expected range P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;/home/rmueller/EIVE/eive-obsw/mission/devices/IMTQHandler.h
|
||||||
11208;INVALID_ERROR_BYTE;LOW;Received invalid error byte. This indicates an error of the communication link between IMTQ and OBC.;C:\Users\jakob\eive-software\eive_obsw/mission/devices/IMTQHandler.h
|
11208;INVALID_ERROR_BYTE;LOW;Received invalid error byte. This indicates an error of the communication link between IMTQ and OBC.;/home/rmueller/EIVE/eive-obsw/mission/devices/IMTQHandler.h
|
||||||
11301;ERROR_STATE;HIGH;Reaction wheel signals an error state;C:\Users\jakob\eive-software\eive_obsw/mission/devices/RwHandler.h
|
11301;ERROR_STATE;HIGH;Reaction wheel signals an error state;/home/rmueller/EIVE/eive-obsw/mission/devices/RwHandler.h
|
||||||
11501;SUPV_MEMORY_READ_RPT_CRC_FAILURE;LOW;PLOC supervisor crc failure in telemetry packet;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/PlocSupervisorHandler.h
|
11501;SUPV_MEMORY_READ_RPT_CRC_FAILURE;LOW;PLOC supervisor crc failure in telemetry packet;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocSupervisorHandler.h
|
||||||
11502;SUPV_ACK_FAILURE;LOW;PLOC supervisor received acknowledgment failure report;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/PlocSupervisorHandler.h
|
11502;SUPV_ACK_FAILURE;LOW;PLOC supervisor received acknowledgment failure report;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocSupervisorHandler.h
|
||||||
11503;SUPV_EXE_FAILURE;LOW;PLOC received execution failure report;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/PlocSupervisorHandler.h
|
11503;SUPV_EXE_FAILURE;LOW;PLOC received execution failure report;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocSupervisorHandler.h
|
||||||
11504;SUPV_CRC_FAILURE_EVENT;LOW;PLOC supervisor reply has invalid crc;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/PlocSupervisorHandler.h
|
11504;SUPV_CRC_FAILURE_EVENT;LOW;PLOC supervisor reply has invalid crc;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocSupervisorHandler.h
|
||||||
11600;SANITIZATION_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/memory/SdCardManager.h
|
11600;SANITIZATION_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/bsp_q7s/memory/SdCardManager.h
|
||||||
11700;UPDATE_FILE_NOT_EXISTS;LOW;;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/PlocUpdater.h
|
11700;UPDATE_FILE_NOT_EXISTS;LOW;;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocUpdater.h
|
||||||
11701;ACTION_COMMANDING_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/PlocUpdater.h
|
11701;ACTION_COMMANDING_FAILED;LOW;Failed to send command to supervisor handler P1: Return value of CommandActionHelper::commandAction P2: Action ID of command to send;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocUpdater.h
|
||||||
11702;UPDATE_AVAILABLE_FAILED;LOW;Supervisor handler replied action message indicating a command execution failure of the update available command;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/PlocUpdater.h
|
11702;UPDATE_AVAILABLE_FAILED;LOW;Supervisor handler replied action message indicating a command execution failure of the update available command;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocUpdater.h
|
||||||
11703;UPDATE_TRANSFER_FAILED;LOW;Supervisor handler failed to transfer an update space packet. P1: Parameter holds the number of update packets already sent (inclusive the failed packet);C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/PlocUpdater.h
|
11703;UPDATE_TRANSFER_FAILED;LOW;Supervisor handler failed to transfer an update space packet. P1: Parameter holds the number of update packets already sent (inclusive the failed packet);/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocUpdater.h
|
||||||
11704;UPDATE_VERIFY_FAILED;LOW;Supervisor failed to execute the update verify command.;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/PlocUpdater.h
|
11704;UPDATE_VERIFY_FAILED;LOW;Supervisor failed to execute the update verify command.;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocUpdater.h
|
||||||
11705;UPDATE_FINISHED;INFO;MPSoC update successful completed;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/PlocUpdater.h
|
11705;UPDATE_FINISHED;INFO;MPSoC update successful completed;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocUpdater.h
|
||||||
11800;SEND_MRAM_DUMP_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/PlocMemoryDumper.h
|
11800;SEND_MRAM_DUMP_FAILED;LOW;Failed to send mram dump command to supervisor handler P1: Return value of commandAction function P2: Start address of MRAM to dump with this command;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocMemoryDumper.h
|
||||||
11801;MRAM_DUMP_FAILED;LOW;Received completion failure report form PLOC supervisor handler P1: MRAM start address of failing dump command;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/PlocMemoryDumper.h
|
11801;MRAM_DUMP_FAILED;LOW;Received completion failure report form PLOC supervisor handler P1: MRAM start address of failing dump command;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocMemoryDumper.h
|
||||||
11802;MRAM_DUMP_FINISHED;LOW;MRAM dump finished successfully;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/PlocMemoryDumper.h
|
11802;MRAM_DUMP_FINISHED;LOW;MRAM dump finished successfully;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocMemoryDumper.h
|
||||||
11901;INVALID_TC_FRAME;HIGH;;C:\Users\jakob\eive-software\eive_obsw/linux/obc/PdecHandler.h
|
11901;INVALID_TC_FRAME;HIGH;;/home/rmueller/EIVE/eive-obsw/linux/obc/PdecHandler.h
|
||||||
11902;INVALID_FAR;HIGH;Read invalid FAR from PDEC after startup;C:\Users\jakob\eive-software\eive_obsw/linux/obc/PdecHandler.h
|
11902;INVALID_FAR;HIGH;Read invalid FAR from PDEC after startup;/home/rmueller/EIVE/eive-obsw/linux/obc/PdecHandler.h
|
||||||
11903;CARRIER_LOCK;INFO;Carrier lock detected;C:\Users\jakob\eive-software\eive_obsw/linux/obc/PdecHandler.h
|
11903;CARRIER_LOCK;INFO;Carrier lock detected;/home/rmueller/EIVE/eive-obsw/linux/obc/PdecHandler.h
|
||||||
11904;BIT_LOCK_PDEC;INFO;Bit lock detected (data valid);C:\Users\jakob\eive-software\eive_obsw/linux/obc/PdecHandler.h
|
11904;BIT_LOCK_PDEC;INFO;Bit lock detected (data valid);/home/rmueller/EIVE/eive-obsw/linux/obc/PdecHandler.h
|
||||||
12000;IMAGE_UPLOAD_FAILED;LOW;Image upload failed;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/startracker/StrHelper.h
|
12000;IMAGE_UPLOAD_FAILED;LOW;Image upload failed;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h
|
||||||
12001;IMAGE_DOWNLOAD_FAILED;LOW;Image download failed;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/startracker/StrHelper.h
|
12001;IMAGE_DOWNLOAD_FAILED;LOW;Image download failed;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h
|
||||||
12002;IMAGE_UPLOAD_SUCCESSFUL;LOW;Uploading image to star tracker was successfulop;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/startracker/StrHelper.h
|
12002;IMAGE_UPLOAD_SUCCESSFUL;LOW;Uploading image to star tracker was successfulop;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h
|
||||||
12003;IMAGE_DOWNLOAD_SUCCESSFUL;LOW;Image download was successful;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/startracker/StrHelper.h
|
12003;IMAGE_DOWNLOAD_SUCCESSFUL;LOW;Image download was successful;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h
|
||||||
12004;FLASH_WRITE_SUCCESSFUL;LOW;Finished flash write procedure successfully;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/startracker/StrHelper.h
|
12004;FLASH_WRITE_SUCCESSFUL;LOW;Finished flash write procedure successfully;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h
|
||||||
12005;FLASH_READ_SUCCESSFUL;LOW;Finished flash read procedure successfully;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/startracker/StrHelper.h
|
12005;FLASH_READ_SUCCESSFUL;LOW;Finished flash read procedure successfully;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h
|
||||||
12006;FLASH_WRITE_FAILED;LOW;Flash write procedure failed;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/startracker/StrHelper.h
|
12006;FLASH_WRITE_FAILED;LOW;Flash write procedure failed;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h
|
||||||
12007;FLASH_READ_FAILED;LOW;Flash read procedure failed;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/startracker/StrHelper.h
|
12007;FLASH_READ_FAILED;LOW;Flash read procedure failed;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h
|
||||||
12008;FPGA_DOWNLOAD_SUCCESSFUL;LOW;Download of FPGA image successful;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/startracker/StrHelper.h
|
12008;FPGA_DOWNLOAD_SUCCESSFUL;LOW;Download of FPGA image successful;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h
|
||||||
12009;FPGA_DOWNLOAD_FAILED;LOW;Download of FPGA image failed;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/startracker/StrHelper.h
|
12009;FPGA_DOWNLOAD_FAILED;LOW;Download of FPGA image failed;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h
|
||||||
12010;FPGA_UPLOAD_SUCCESSFUL;LOW;Upload of FPGA image successful;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/startracker/StrHelper.h
|
12010;FPGA_UPLOAD_SUCCESSFUL;LOW;Upload of FPGA image successful;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h
|
||||||
12011;FPGA_UPLOAD_FAILED;LOW;Upload of FPGA image failed;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/startracker/StrHelper.h
|
12011;FPGA_UPLOAD_FAILED;LOW;Upload of FPGA image failed;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h
|
||||||
12012;STR_HELPER_READING_REPLY_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/startracker/StrHelper.h
|
12012;STR_HELPER_READING_REPLY_FAILED;LOW;Failed to read communication interface reply data P1: Return code of failed communication interface read call P1: Upload/download position for which the read call failed;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h
|
||||||
12013;STR_HELPER_COM_ERROR;LOW;;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/startracker/StrHelper.h
|
12013;STR_HELPER_COM_ERROR;LOW;Unexpected stop of decoding sequence P1: Return code of failed communication interface read call P1: Upload/download position for which the read call failed;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h
|
||||||
12014;STR_HELPER_NO_REPLY;LOW;Star tracker did not send replies (maybe device is powered off)P1: Position of upload or download packet for which no reply was sent;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/startracker/StrHelper.h
|
12014;STR_HELPER_NO_REPLY;LOW;Star tracker did not send replies (maybe device is powered off) P1: Position of upload or download packet for which no reply was sent;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h
|
||||||
12015;STR_HELPER_DEC_ERROR;LOW;;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/startracker/StrHelper.h
|
12015;STR_HELPER_DEC_ERROR;LOW;Error during decoding of received reply occurred P1: Return value of decoding function P2: Position of upload/download packet, or address of flash write/read request;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h
|
||||||
12016;POSITION_MISMATCH;LOW;Position mismatch P1: The expected position and thus the position for which the image upload/download failed;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/startracker/StrHelper.h
|
12016;POSITION_MISMATCH;LOW;Position mismatch P1: The expected position and thus the position for which the image upload/download failed;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h
|
||||||
12017;STR_HELPER_FILE_NOT_EXISTS;LOW;Specified file does not existP1: Internal state of str helper;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/startracker/StrHelper.h
|
12017;STR_HELPER_FILE_NOT_EXISTS;LOW;Specified file does not exist P1: Internal state of str helper;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h
|
||||||
12018;STR_HELPER_SENDING_PACKET_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/startracker/StrHelper.h
|
12018;STR_HELPER_SENDING_PACKET_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h
|
||||||
12019;STR_HELPER_REQUESTING_MSG_FAILED;LOW;;C:\Users\jakob\eive-software\eive_obsw/bsp_q7s/devices/startracker/StrHelper.h
|
12019;STR_HELPER_REQUESTING_MSG_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h
|
||||||
|
|
@ -28,14 +28,14 @@
|
|||||||
0x44120313;GYRO_3_L3G_HANDLER
|
0x44120313;GYRO_3_L3G_HANDLER
|
||||||
0x44120350;RW4
|
0x44120350;RW4
|
||||||
0x44130001;STAR_TRACKER
|
0x44130001;STAR_TRACKER
|
||||||
0x44130045;GPS0_HANDLER
|
0x44130045;GPS_CONTROLLER
|
||||||
0x44130146;GPS1_HANDLER
|
|
||||||
0x44140014;IMTQ_HANDLER
|
0x44140014;IMTQ_HANDLER
|
||||||
0x442000A1;PCDU_HANDLER
|
0x442000A1;PCDU_HANDLER
|
||||||
0x44250000;P60DOCK_HANDLER
|
0x44250000;P60DOCK_HANDLER
|
||||||
0x44250001;PDU1_HANDLER
|
0x44250001;PDU1_HANDLER
|
||||||
0x44250002;PDU2_HANDLER
|
0x44250002;PDU2_HANDLER
|
||||||
0x44250003;ACU_HANDLER
|
0x44250003;ACU_HANDLER
|
||||||
|
0x44260000;BPX_BATT_HANDLER
|
||||||
0x443200A5;RAD_SENSOR
|
0x443200A5;RAD_SENSOR
|
||||||
0x44330000;PLOC_UPDATER
|
0x44330000;PLOC_UPDATER
|
||||||
0x44330001;PLOC_MEMORY_DUMPER
|
0x44330001;PLOC_MEMORY_DUMPER
|
||||||
@ -75,11 +75,7 @@
|
|||||||
0x50000400;TMTC_POLLING_TASK
|
0x50000400;TMTC_POLLING_TASK
|
||||||
0x50000500;FILE_SYSTEM_HANDLER
|
0x50000500;FILE_SYSTEM_HANDLER
|
||||||
0x50000600;PTME
|
0x50000600;PTME
|
||||||
0x50000700;PAPB_VC0
|
0x50000700;PDEC_HANDLER
|
||||||
0x50000701;PAPB_VC1
|
|
||||||
0x50000702;PAPB_VC2
|
|
||||||
0x50000703;PAPB_VC3
|
|
||||||
0x50000704;PDEC_HANDLER
|
|
||||||
0x50000800;CCSDS_HANDLER
|
0x50000800;CCSDS_HANDLER
|
||||||
0x51000500;PUS_SERVICE_6
|
0x51000500;PUS_SERVICE_6
|
||||||
0x53000000;FSFW_OBJECTS_START
|
0x53000000;FSFW_OBJECTS_START
|
||||||
@ -93,6 +89,7 @@
|
|||||||
0x53000020;PUS_SERVICE_20_PARAMETERS
|
0x53000020;PUS_SERVICE_20_PARAMETERS
|
||||||
0x53000200;PUS_SERVICE_200_MODE_MGMT
|
0x53000200;PUS_SERVICE_200_MODE_MGMT
|
||||||
0x53000201;PUS_SERVICE_201_HEALTH
|
0x53000201;PUS_SERVICE_201_HEALTH
|
||||||
|
0x53001000;CFDP_PACKET_DISTRIBUTOR
|
||||||
0x53010000;HEALTH_TABLE
|
0x53010000;HEALTH_TABLE
|
||||||
0x53010100;MODE_STORE
|
0x53010100;MODE_STORE
|
||||||
0x53030000;EVENT_MANAGER
|
0x53030000;EVENT_MANAGER
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @brief Auto-generated event translation file. Contains 140 translations.
|
* @brief Auto-generated event translation file. Contains 140 translations.
|
||||||
* @details
|
* @details
|
||||||
* Generated on: 2022-01-17 15:35:58
|
* Generated on: 2022-02-03 17:30:40
|
||||||
*/
|
*/
|
||||||
#include "translateEvents.h"
|
#include "translateEvents.h"
|
||||||
|
|
||||||
@ -34,6 +34,7 @@ const char *DEVICE_UNREQUESTED_REPLY_STRING = "DEVICE_UNREQUESTED_REPLY";
|
|||||||
const char *INVALID_DEVICE_COMMAND_STRING = "INVALID_DEVICE_COMMAND";
|
const char *INVALID_DEVICE_COMMAND_STRING = "INVALID_DEVICE_COMMAND";
|
||||||
const char *MONITORING_LIMIT_EXCEEDED_STRING = "MONITORING_LIMIT_EXCEEDED";
|
const char *MONITORING_LIMIT_EXCEEDED_STRING = "MONITORING_LIMIT_EXCEEDED";
|
||||||
const char *MONITORING_AMBIGUOUS_STRING = "MONITORING_AMBIGUOUS";
|
const char *MONITORING_AMBIGUOUS_STRING = "MONITORING_AMBIGUOUS";
|
||||||
|
const char *DEVICE_WANTS_HARD_REBOOT_STRING = "DEVICE_WANTS_HARD_REBOOT";
|
||||||
const char *FUSE_CURRENT_HIGH_STRING = "FUSE_CURRENT_HIGH";
|
const char *FUSE_CURRENT_HIGH_STRING = "FUSE_CURRENT_HIGH";
|
||||||
const char *FUSE_WENT_OFF_STRING = "FUSE_WENT_OFF";
|
const char *FUSE_WENT_OFF_STRING = "FUSE_WENT_OFF";
|
||||||
const char *POWER_ABOVE_HIGH_LIMIT_STRING = "POWER_ABOVE_HIGH_LIMIT";
|
const char *POWER_ABOVE_HIGH_LIMIT_STRING = "POWER_ABOVE_HIGH_LIMIT";
|
||||||
@ -59,7 +60,6 @@ const char *MONITOR_CHANGED_STATE_STRING = "MONITOR_CHANGED_STATE";
|
|||||||
const char *VALUE_BELOW_LOW_LIMIT_STRING = "VALUE_BELOW_LOW_LIMIT";
|
const char *VALUE_BELOW_LOW_LIMIT_STRING = "VALUE_BELOW_LOW_LIMIT";
|
||||||
const char *VALUE_ABOVE_HIGH_LIMIT_STRING = "VALUE_ABOVE_HIGH_LIMIT";
|
const char *VALUE_ABOVE_HIGH_LIMIT_STRING = "VALUE_ABOVE_HIGH_LIMIT";
|
||||||
const char *VALUE_OUT_OF_RANGE_STRING = "VALUE_OUT_OF_RANGE";
|
const char *VALUE_OUT_OF_RANGE_STRING = "VALUE_OUT_OF_RANGE";
|
||||||
const char *SWITCHING_TM_FAILED_STRING = "SWITCHING_TM_FAILED";
|
|
||||||
const char *CHANGING_MODE_STRING = "CHANGING_MODE";
|
const char *CHANGING_MODE_STRING = "CHANGING_MODE";
|
||||||
const char *MODE_INFO_STRING = "MODE_INFO";
|
const char *MODE_INFO_STRING = "MODE_INFO";
|
||||||
const char *FALLBACK_FAILED_STRING = "FALLBACK_FAILED";
|
const char *FALLBACK_FAILED_STRING = "FALLBACK_FAILED";
|
||||||
@ -206,6 +206,8 @@ const char * translateEvents(Event event) {
|
|||||||
return MONITORING_LIMIT_EXCEEDED_STRING;
|
return MONITORING_LIMIT_EXCEEDED_STRING;
|
||||||
case(2810):
|
case(2810):
|
||||||
return MONITORING_AMBIGUOUS_STRING;
|
return MONITORING_AMBIGUOUS_STRING;
|
||||||
|
case(2811):
|
||||||
|
return DEVICE_WANTS_HARD_REBOOT_STRING;
|
||||||
case(4201):
|
case(4201):
|
||||||
return FUSE_CURRENT_HIGH_STRING;
|
return FUSE_CURRENT_HIGH_STRING;
|
||||||
case(4202):
|
case(4202):
|
||||||
@ -256,8 +258,6 @@ const char * translateEvents(Event event) {
|
|||||||
return VALUE_ABOVE_HIGH_LIMIT_STRING;
|
return VALUE_ABOVE_HIGH_LIMIT_STRING;
|
||||||
case(7204):
|
case(7204):
|
||||||
return VALUE_OUT_OF_RANGE_STRING;
|
return VALUE_OUT_OF_RANGE_STRING;
|
||||||
case(7301):
|
|
||||||
return SWITCHING_TM_FAILED_STRING;
|
|
||||||
case(7400):
|
case(7400):
|
||||||
return CHANGING_MODE_STRING;
|
return CHANGING_MODE_STRING;
|
||||||
case(7401):
|
case(7401):
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/**
|
/**
|
||||||
* @brief Auto-generated object translation file.
|
* @brief Auto-generated object translation file.
|
||||||
* @details
|
* @details
|
||||||
* Contains 113 translations.
|
* Contains 110 translations.
|
||||||
* Generated on: 2022-01-17 15:36:10
|
* Generated on: 2022-02-03 12:01:36
|
||||||
*/
|
*/
|
||||||
#include "translateObjects.h"
|
#include "translateObjects.h"
|
||||||
|
|
||||||
@ -36,14 +36,14 @@ const char *MGM_3_RM3100_HANDLER_STRING = "MGM_3_RM3100_HANDLER";
|
|||||||
const char *GYRO_3_L3G_HANDLER_STRING = "GYRO_3_L3G_HANDLER";
|
const char *GYRO_3_L3G_HANDLER_STRING = "GYRO_3_L3G_HANDLER";
|
||||||
const char *RW4_STRING = "RW4";
|
const char *RW4_STRING = "RW4";
|
||||||
const char *STAR_TRACKER_STRING = "STAR_TRACKER";
|
const char *STAR_TRACKER_STRING = "STAR_TRACKER";
|
||||||
const char *GPS0_HANDLER_STRING = "GPS0_HANDLER";
|
const char *GPS_CONTROLLER_STRING = "GPS_CONTROLLER";
|
||||||
const char *GPS1_HANDLER_STRING = "GPS1_HANDLER";
|
|
||||||
const char *IMTQ_HANDLER_STRING = "IMTQ_HANDLER";
|
const char *IMTQ_HANDLER_STRING = "IMTQ_HANDLER";
|
||||||
const char *PCDU_HANDLER_STRING = "PCDU_HANDLER";
|
const char *PCDU_HANDLER_STRING = "PCDU_HANDLER";
|
||||||
const char *P60DOCK_HANDLER_STRING = "P60DOCK_HANDLER";
|
const char *P60DOCK_HANDLER_STRING = "P60DOCK_HANDLER";
|
||||||
const char *PDU1_HANDLER_STRING = "PDU1_HANDLER";
|
const char *PDU1_HANDLER_STRING = "PDU1_HANDLER";
|
||||||
const char *PDU2_HANDLER_STRING = "PDU2_HANDLER";
|
const char *PDU2_HANDLER_STRING = "PDU2_HANDLER";
|
||||||
const char *ACU_HANDLER_STRING = "ACU_HANDLER";
|
const char *ACU_HANDLER_STRING = "ACU_HANDLER";
|
||||||
|
const char *BPX_BATT_HANDLER_STRING = "BPX_BATT_HANDLER";
|
||||||
const char *RAD_SENSOR_STRING = "RAD_SENSOR";
|
const char *RAD_SENSOR_STRING = "RAD_SENSOR";
|
||||||
const char *PLOC_UPDATER_STRING = "PLOC_UPDATER";
|
const char *PLOC_UPDATER_STRING = "PLOC_UPDATER";
|
||||||
const char *PLOC_MEMORY_DUMPER_STRING = "PLOC_MEMORY_DUMPER";
|
const char *PLOC_MEMORY_DUMPER_STRING = "PLOC_MEMORY_DUMPER";
|
||||||
@ -83,10 +83,6 @@ const char *TMTC_BRIDGE_STRING = "TMTC_BRIDGE";
|
|||||||
const char *TMTC_POLLING_TASK_STRING = "TMTC_POLLING_TASK";
|
const char *TMTC_POLLING_TASK_STRING = "TMTC_POLLING_TASK";
|
||||||
const char *FILE_SYSTEM_HANDLER_STRING = "FILE_SYSTEM_HANDLER";
|
const char *FILE_SYSTEM_HANDLER_STRING = "FILE_SYSTEM_HANDLER";
|
||||||
const char *PTME_STRING = "PTME";
|
const char *PTME_STRING = "PTME";
|
||||||
const char *PAPB_VC0_STRING = "PAPB_VC0";
|
|
||||||
const char *PAPB_VC1_STRING = "PAPB_VC1";
|
|
||||||
const char *PAPB_VC2_STRING = "PAPB_VC2";
|
|
||||||
const char *PAPB_VC3_STRING = "PAPB_VC3";
|
|
||||||
const char *PDEC_HANDLER_STRING = "PDEC_HANDLER";
|
const char *PDEC_HANDLER_STRING = "PDEC_HANDLER";
|
||||||
const char *CCSDS_HANDLER_STRING = "CCSDS_HANDLER";
|
const char *CCSDS_HANDLER_STRING = "CCSDS_HANDLER";
|
||||||
const char *PUS_SERVICE_6_STRING = "PUS_SERVICE_6";
|
const char *PUS_SERVICE_6_STRING = "PUS_SERVICE_6";
|
||||||
@ -101,6 +97,7 @@ const char *PUS_SERVICE_17_TEST_STRING = "PUS_SERVICE_17_TEST";
|
|||||||
const char *PUS_SERVICE_20_PARAMETERS_STRING = "PUS_SERVICE_20_PARAMETERS";
|
const char *PUS_SERVICE_20_PARAMETERS_STRING = "PUS_SERVICE_20_PARAMETERS";
|
||||||
const char *PUS_SERVICE_200_MODE_MGMT_STRING = "PUS_SERVICE_200_MODE_MGMT";
|
const char *PUS_SERVICE_200_MODE_MGMT_STRING = "PUS_SERVICE_200_MODE_MGMT";
|
||||||
const char *PUS_SERVICE_201_HEALTH_STRING = "PUS_SERVICE_201_HEALTH";
|
const char *PUS_SERVICE_201_HEALTH_STRING = "PUS_SERVICE_201_HEALTH";
|
||||||
|
const char *CFDP_PACKET_DISTRIBUTOR_STRING = "CFDP_PACKET_DISTRIBUTOR";
|
||||||
const char *HEALTH_TABLE_STRING = "HEALTH_TABLE";
|
const char *HEALTH_TABLE_STRING = "HEALTH_TABLE";
|
||||||
const char *MODE_STORE_STRING = "MODE_STORE";
|
const char *MODE_STORE_STRING = "MODE_STORE";
|
||||||
const char *EVENT_MANAGER_STRING = "EVENT_MANAGER";
|
const char *EVENT_MANAGER_STRING = "EVENT_MANAGER";
|
||||||
@ -183,9 +180,7 @@ const char* translateObject(object_id_t object) {
|
|||||||
case 0x44130001:
|
case 0x44130001:
|
||||||
return STAR_TRACKER_STRING;
|
return STAR_TRACKER_STRING;
|
||||||
case 0x44130045:
|
case 0x44130045:
|
||||||
return GPS0_HANDLER_STRING;
|
return GPS_CONTROLLER_STRING;
|
||||||
case 0x44130146:
|
|
||||||
return GPS1_HANDLER_STRING;
|
|
||||||
case 0x44140014:
|
case 0x44140014:
|
||||||
return IMTQ_HANDLER_STRING;
|
return IMTQ_HANDLER_STRING;
|
||||||
case 0x442000A1:
|
case 0x442000A1:
|
||||||
@ -198,6 +193,8 @@ const char* translateObject(object_id_t object) {
|
|||||||
return PDU2_HANDLER_STRING;
|
return PDU2_HANDLER_STRING;
|
||||||
case 0x44250003:
|
case 0x44250003:
|
||||||
return ACU_HANDLER_STRING;
|
return ACU_HANDLER_STRING;
|
||||||
|
case 0x44260000:
|
||||||
|
return BPX_BATT_HANDLER_STRING;
|
||||||
case 0x443200A5:
|
case 0x443200A5:
|
||||||
return RAD_SENSOR_STRING;
|
return RAD_SENSOR_STRING;
|
||||||
case 0x44330000:
|
case 0x44330000:
|
||||||
@ -277,14 +274,6 @@ const char* translateObject(object_id_t object) {
|
|||||||
case 0x50000600:
|
case 0x50000600:
|
||||||
return PTME_STRING;
|
return PTME_STRING;
|
||||||
case 0x50000700:
|
case 0x50000700:
|
||||||
return PAPB_VC0_STRING;
|
|
||||||
case 0x50000701:
|
|
||||||
return PAPB_VC1_STRING;
|
|
||||||
case 0x50000702:
|
|
||||||
return PAPB_VC2_STRING;
|
|
||||||
case 0x50000703:
|
|
||||||
return PAPB_VC3_STRING;
|
|
||||||
case 0x50000704:
|
|
||||||
return PDEC_HANDLER_STRING;
|
return PDEC_HANDLER_STRING;
|
||||||
case 0x50000800:
|
case 0x50000800:
|
||||||
return CCSDS_HANDLER_STRING;
|
return CCSDS_HANDLER_STRING;
|
||||||
@ -312,6 +301,8 @@ const char* translateObject(object_id_t object) {
|
|||||||
return PUS_SERVICE_200_MODE_MGMT_STRING;
|
return PUS_SERVICE_200_MODE_MGMT_STRING;
|
||||||
case 0x53000201:
|
case 0x53000201:
|
||||||
return PUS_SERVICE_201_HEALTH_STRING;
|
return PUS_SERVICE_201_HEALTH_STRING;
|
||||||
|
case 0x53001000:
|
||||||
|
return CFDP_PACKET_DISTRIBUTOR_STRING;
|
||||||
case 0x53010000:
|
case 0x53010000:
|
||||||
return HEALTH_TABLE_STRING;
|
return HEALTH_TABLE_STRING;
|
||||||
case 0x53010100:
|
case 0x53010100:
|
||||||
|
@ -1,5 +1,101 @@
|
|||||||
#include <linux/boardtest/I2cTestClass.h>
|
#include "I2cTestClass.h"
|
||||||
|
|
||||||
I2cTestClass::I2cTestClass(object_id_t objectId) : TestTask(objectId) {}
|
#include <errno.h>
|
||||||
|
#include <fsfw_hal/linux/UnixFileGuard.h>
|
||||||
|
#include <linux/i2c-dev.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
|
||||||
ReturnValue_t I2cTestClass::performPeriodicAction() { return HasReturnvaluesIF::RETURN_OK; }
|
#include "fsfw/globalfunctions/arrayprinter.h"
|
||||||
|
#include "fsfw/serviceinterface.h"
|
||||||
|
|
||||||
|
I2cTestClass::I2cTestClass(object_id_t objectId, std::string i2cdev)
|
||||||
|
: TestTask(objectId), i2cdev(i2cdev) {
|
||||||
|
mode = TestModes::BPX_BATTERY;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t I2cTestClass::initialize() {
|
||||||
|
if (mode == TestModes::BPX_BATTERY) {
|
||||||
|
battInit();
|
||||||
|
}
|
||||||
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t I2cTestClass::performPeriodicAction() {
|
||||||
|
if (mode == TestModes::BPX_BATTERY) {
|
||||||
|
battPeriodic();
|
||||||
|
}
|
||||||
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
void I2cTestClass::battInit() {
|
||||||
|
sif::info << "I2cTestClass: BPX Initialization" << std::endl;
|
||||||
|
UnixFileGuard fileHelper(i2cdev, &bpxInfo.fd, O_RDWR, "I2cTestClass::sendMessage");
|
||||||
|
if (fileHelper.getOpenResult() != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
sif::error << "Opening I2C device" << i2cdev << " failed" << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (ioctl(bpxInfo.fd, I2C_SLAVE, bpxInfo.addr) < 0) {
|
||||||
|
sif::error << "Failed to acquire bus access and/or talk to slave" << std::endl;
|
||||||
|
}
|
||||||
|
cmdBuf[0] = BpxBattery::PORT_PING;
|
||||||
|
cmdBuf[1] = 0x42;
|
||||||
|
sendLen = 2;
|
||||||
|
ReturnValue_t result = i2cWrite(bpxInfo.fd, cmdBuf.data(), sendLen);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Receive back port, error byte and ping reply
|
||||||
|
recvLen = 3;
|
||||||
|
result = i2cRead(bpxInfo.fd, replyBuf.data(), recvLen);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
sif::info << "Ping reply:" << std::endl;
|
||||||
|
arrayprinter::print(replyBuf.data(), recvLen);
|
||||||
|
if (replyBuf[2] != 0x42) {
|
||||||
|
sif::warning << "Received ping reply not expected value 0x42" << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void I2cTestClass::battPeriodic() {
|
||||||
|
UnixFileGuard fileHelper(i2cdev, &bpxInfo.fd, O_RDWR, "I2cTestClass::sendMessage");
|
||||||
|
if (fileHelper.getOpenResult() != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
sif::error << "Opening I2C device" << i2cdev << " failed" << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (ioctl(bpxInfo.fd, I2C_SLAVE, bpxInfo.addr) < 0) {
|
||||||
|
sif::error << "Failed to acquire bus access and/or talk to slave" << std::endl;
|
||||||
|
}
|
||||||
|
cmdBuf[0] = BpxBattery::PORT_GET_HK;
|
||||||
|
sendLen = 1;
|
||||||
|
ReturnValue_t result = i2cWrite(bpxInfo.fd, cmdBuf.data(), sendLen);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Receive back HK set
|
||||||
|
recvLen = 23;
|
||||||
|
result = i2cRead(bpxInfo.fd, replyBuf.data(), recvLen);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
sif::info << "HK reply:" << std::endl;
|
||||||
|
arrayprinter::print(replyBuf.data(), recvLen);
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t I2cTestClass::i2cWrite(int fd, uint8_t* data, size_t len) {
|
||||||
|
if (write(fd, data, len) != static_cast<ssize_t>(len)) {
|
||||||
|
sif::error << "Failed to write to I2C bus" << std::endl;
|
||||||
|
sif::error << "Error " << errno << ": " << strerror(errno) << std::endl;
|
||||||
|
return HasReturnvaluesIF::RETURN_FAILED;
|
||||||
|
}
|
||||||
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t I2cTestClass::i2cRead(int fd, uint8_t* data, size_t len) {
|
||||||
|
if (read(fd, data, len) != static_cast<ssize_t>(len)) {
|
||||||
|
sif::error << "Failed to read from I2C bus" << std::endl;
|
||||||
|
sif::error << "Error " << errno << ": " << strerror(errno) << std::endl;
|
||||||
|
return HasReturnvaluesIF::RETURN_FAILED;
|
||||||
|
}
|
||||||
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
|
}
|
||||||
|
@ -3,13 +3,38 @@
|
|||||||
|
|
||||||
#include <test/testtasks/TestTask.h>
|
#include <test/testtasks/TestTask.h>
|
||||||
|
|
||||||
|
#include <array>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "mission/devices/devicedefinitions/BpxBatteryDefinitions.h"
|
||||||
|
|
||||||
class I2cTestClass : public TestTask {
|
class I2cTestClass : public TestTask {
|
||||||
public:
|
public:
|
||||||
I2cTestClass(object_id_t objectId);
|
I2cTestClass(object_id_t objectId, std::string i2cdev);
|
||||||
|
|
||||||
|
ReturnValue_t initialize() override;
|
||||||
ReturnValue_t performPeriodicAction() override;
|
ReturnValue_t performPeriodicAction() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
enum TestModes { NONE, BPX_BATTERY };
|
||||||
|
struct I2cInfo {
|
||||||
|
int addr = 0;
|
||||||
|
int fd = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
TestModes mode = TestModes::NONE;
|
||||||
|
void battInit();
|
||||||
|
void battPeriodic();
|
||||||
|
|
||||||
|
I2cInfo bpxInfo = {.addr = 0x07, .fd = 0};
|
||||||
|
std::string i2cdev;
|
||||||
|
size_t sendLen = 0;
|
||||||
|
size_t recvLen = 0;
|
||||||
|
std::array<uint8_t, 64> cmdBuf = {};
|
||||||
|
std::array<uint8_t, 64> replyBuf = {};
|
||||||
|
|
||||||
|
ReturnValue_t i2cWrite(int fd, uint8_t* data, size_t len);
|
||||||
|
ReturnValue_t i2cRead(int fd, uint8_t* data, size_t len);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* LINUX_BOARDTEST_I2CTESTCLASS_H_ */
|
#endif /* LINUX_BOARDTEST_I2CTESTCLASS_H_ */
|
||||||
|
@ -17,6 +17,23 @@
|
|||||||
UartTestClass::UartTestClass(object_id_t objectId) : TestTask(objectId) {}
|
UartTestClass::UartTestClass(object_id_t objectId) : TestTask(objectId) {}
|
||||||
|
|
||||||
ReturnValue_t UartTestClass::initialize() {
|
ReturnValue_t UartTestClass::initialize() {
|
||||||
|
if (mode == TestModes::GPS) {
|
||||||
|
gpsInit();
|
||||||
|
}
|
||||||
|
|
||||||
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t UartTestClass::performOneShotAction() { return HasReturnvaluesIF::RETURN_OK; }
|
||||||
|
|
||||||
|
ReturnValue_t UartTestClass::performPeriodicAction() {
|
||||||
|
if (mode == TestModes::GPS) {
|
||||||
|
gpsPeriodic();
|
||||||
|
}
|
||||||
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UartTestClass::gpsInit() {
|
||||||
#if RPI_TEST_GPS_DEVICE == 1
|
#if RPI_TEST_GPS_DEVICE == 1
|
||||||
int result = lwgps_init(&gpsData);
|
int result = lwgps_init(&gpsData);
|
||||||
if (result == 0) {
|
if (result == 0) {
|
||||||
@ -62,16 +79,9 @@ ReturnValue_t UartTestClass::initialize() {
|
|||||||
// Flush received and unread data. Those are old NMEA strings which are not relevant anymore
|
// Flush received and unread data. Those are old NMEA strings which are not relevant anymore
|
||||||
tcflush(serialPort, TCIFLUSH);
|
tcflush(serialPort, TCIFLUSH);
|
||||||
#endif
|
#endif
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t UartTestClass::performOneShotAction() {
|
void UartTestClass::gpsPeriodic() {
|
||||||
#if RPI_TEST_GPS_DEVICE == 1
|
|
||||||
#endif
|
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
ReturnValue_t UartTestClass::performPeriodicAction() {
|
|
||||||
#if RPI_TEST_GPS_DEVICE == 1
|
#if RPI_TEST_GPS_DEVICE == 1
|
||||||
int bytesRead = 0;
|
int bytesRead = 0;
|
||||||
do {
|
do {
|
||||||
@ -107,5 +117,4 @@ ReturnValue_t UartTestClass::performPeriodicAction() {
|
|||||||
}
|
}
|
||||||
} while (bytesRead > 0);
|
} while (bytesRead > 0);
|
||||||
#endif
|
#endif
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,15 @@ class UartTestClass : public TestTask {
|
|||||||
ReturnValue_t performPeriodicAction() override;
|
ReturnValue_t performPeriodicAction() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
enum TestModes {
|
||||||
|
GPS,
|
||||||
|
// Solar Cell Experiment
|
||||||
|
SCE
|
||||||
|
};
|
||||||
|
|
||||||
|
void gpsInit();
|
||||||
|
void gpsPeriodic();
|
||||||
|
TestModes mode = TestModes::GPS;
|
||||||
lwgps_t gpsData = {};
|
lwgps_t gpsData = {};
|
||||||
struct termios tty = {};
|
struct termios tty = {};
|
||||||
int serialPort = 0;
|
int serialPort = 0;
|
||||||
|
@ -2,3 +2,5 @@ target_sources(${TARGET_NAME} PRIVATE
|
|||||||
SolarArrayDeploymentHandler.cpp
|
SolarArrayDeploymentHandler.cpp
|
||||||
SusHandler.cpp
|
SusHandler.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
add_subdirectory(startracker)
|
@ -1,5 +1,5 @@
|
|||||||
#ifndef MISSION_STARTRACKER_DEFINITIONS_H_
|
#ifndef LINUX_DEVICES_DEVICEDEFINITIONS_DEFINITIONS_H_
|
||||||
#define MISSION_STARTRACKER_DEFINITIONS_H_
|
#define LINUX_DEVICES_DEVICEDEFINITIONS_DEFINITIONS_H_
|
||||||
|
|
||||||
#include <fsfw/datapool/PoolReadGuard.h>
|
#include <fsfw/datapool/PoolReadGuard.h>
|
||||||
#include <fsfw/datapoollocal/LocalPoolVariable.h>
|
#include <fsfw/datapoollocal/LocalPoolVariable.h>
|
||||||
@ -1253,4 +1253,4 @@ class LimitsSet : public StaticLocalDataSet<LIMITS_SET_ENTRIES> {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
} // namespace StarTracker
|
} // namespace StarTracker
|
||||||
#endif /* MISSION_STARTRACKER_DEFINITIONS_H_ */
|
#endif /* LINUX_DEVICES_DEVICEDEFINITIONS_DEFINITIONS_H_ */
|
@ -1,8 +1,8 @@
|
|||||||
#ifndef BSP_Q7S_DEVICES_ARCSECDATALINKLAYER_H_
|
#ifndef BSP_Q7S_DEVICES_ARCSECDATALINKLAYER_H_
|
||||||
#define BSP_Q7S_DEVICES_ARCSECDATALINKLAYER_H_
|
#define BSP_Q7S_DEVICES_ARCSECDATALINKLAYER_H_
|
||||||
|
|
||||||
#include "StarTrackerDefinitions.h"
|
|
||||||
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
|
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
|
||||||
|
#include "linux/devices/devicedefinitions/StarTrackerDefinitions.h"
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#include "common/misc.h"
|
#include "common/misc.h"
|
@ -5,8 +5,8 @@
|
|||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <nlohmann/json.hpp>
|
#include <nlohmann/json.hpp>
|
||||||
|
|
||||||
#include "StarTrackerDefinitions.h"
|
|
||||||
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
|
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
|
||||||
|
#include "linux/devices/devicedefinitions/StarTrackerDefinitions.h"
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#include "thirdparty/arcsec_star_tracker/common/generated/tmtcstructs.h"
|
#include "thirdparty/arcsec_star_tracker/common/generated/tmtcstructs.h"
|
@ -12,6 +12,7 @@ extern "C" {
|
|||||||
#include <thirdparty/arcsec_star_tracker/client/generated/actionreq.h>
|
#include <thirdparty/arcsec_star_tracker/client/generated/actionreq.h>
|
||||||
#include <thirdparty/arcsec_star_tracker/client/generated/parameter.h>
|
#include <thirdparty/arcsec_star_tracker/client/generated/parameter.h>
|
||||||
#include <thirdparty/arcsec_star_tracker/client/generated/telemetry.h>
|
#include <thirdparty/arcsec_star_tracker/client/generated/telemetry.h>
|
||||||
|
|
||||||
#include "common/misc.h"
|
#include "common/misc.h"
|
||||||
}
|
}
|
||||||
|
|
@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
#include "ArcsecDatalinkLayer.h"
|
#include "ArcsecDatalinkLayer.h"
|
||||||
#include "ArcsecJsonParamBase.h"
|
#include "ArcsecJsonParamBase.h"
|
||||||
#include "StarTrackerDefinitions.h"
|
|
||||||
#include "StrHelper.h"
|
#include "StrHelper.h"
|
||||||
#include "fsfw/devicehandlers/DeviceHandlerBase.h"
|
#include "fsfw/devicehandlers/DeviceHandlerBase.h"
|
||||||
#include "fsfw/src/fsfw/serialize/SerializeAdapter.h"
|
#include "fsfw/src/fsfw/serialize/SerializeAdapter.h"
|
||||||
#include "fsfw/timemanager/Countdown.h"
|
#include "fsfw/timemanager/Countdown.h"
|
||||||
|
#include "linux/devices/devicedefinitions/StarTrackerDefinitions.h"
|
||||||
#include "thirdparty/arcsec_star_tracker/common/SLIP.h"
|
#include "thirdparty/arcsec_star_tracker/common/SLIP.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -269,11 +269,16 @@ class StarTrackerHandler : public DeviceHandlerBase {
|
|||||||
// Countdown to insert delay for star tracker to switch from bootloader to firmware program
|
// Countdown to insert delay for star tracker to switch from bootloader to firmware program
|
||||||
Countdown bootCountdown;
|
Countdown bootCountdown;
|
||||||
|
|
||||||
|
#ifdef EGSE
|
||||||
|
std::string paramJsonFile = "/mnt/sd0/startracker/full.json";
|
||||||
|
#else
|
||||||
#if OBSW_STAR_TRACKER_GROUND_CONFIG == 1
|
#if OBSW_STAR_TRACKER_GROUND_CONFIG == 1
|
||||||
std::string paramJsonFile = "/mnt/sd0/startracker/ground-config.json";
|
std::string paramJsonFile = "/mnt/sd0/startracker/ground-config.json";
|
||||||
#else
|
#else
|
||||||
std::string paramJsonFile = "/mnt/sd0/startracker/flight-config.json";
|
std::string paramJsonFile = "/mnt/sd0/startracker/flight-config.json";
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
enum class InternalState { TEMPERATURE_REQUEST };
|
enum class InternalState { TEMPERATURE_REQUEST };
|
||||||
|
|
||||||
InternalState internalState = InternalState::TEMPERATURE_REQUEST;
|
InternalState internalState = InternalState::TEMPERATURE_REQUEST;
|
@ -1,9 +1,9 @@
|
|||||||
#include "StrHelper.h"
|
#include "StrHelper.h"
|
||||||
#include "OBSWConfig.h"
|
|
||||||
|
|
||||||
#include <filesystem>
|
#include <filesystem>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
|
#include "OBSWConfig.h"
|
||||||
#include "mission/utility/Timestamp.h"
|
#include "mission/utility/Timestamp.h"
|
||||||
|
|
||||||
StrHelper::StrHelper(object_id_t objectId) : SystemObject(objectId) {}
|
StrHelper::StrHelper(object_id_t objectId) : SystemObject(objectId) {}
|
||||||
@ -11,11 +11,13 @@ StrHelper::StrHelper(object_id_t objectId) : SystemObject(objectId) {}
|
|||||||
StrHelper::~StrHelper() {}
|
StrHelper::~StrHelper() {}
|
||||||
|
|
||||||
ReturnValue_t StrHelper::initialize() {
|
ReturnValue_t StrHelper::initialize() {
|
||||||
|
#ifdef XIPHOS_Q7S
|
||||||
sdcMan = SdCardManager::instance();
|
sdcMan = SdCardManager::instance();
|
||||||
if (sdcMan == nullptr) {
|
if (sdcMan == nullptr) {
|
||||||
sif::warning << "StrHelper::initialize: Invalid SD Card Manager" << std::endl;
|
sif::warning << "StrHelper::initialize: Invalid SD Card Manager" << std::endl;
|
||||||
return RETURN_FAILED;
|
return RETURN_FAILED;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
return RETURN_OK;
|
return RETURN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,10 +109,12 @@ ReturnValue_t StrHelper::setComIF(DeviceCommunicationIF* communicationInterface_
|
|||||||
void StrHelper::setComCookie(CookieIF* comCookie_) { comCookie = comCookie_; }
|
void StrHelper::setComCookie(CookieIF* comCookie_) { comCookie = comCookie_; }
|
||||||
|
|
||||||
ReturnValue_t StrHelper::startImageUpload(std::string fullname) {
|
ReturnValue_t StrHelper::startImageUpload(std::string fullname) {
|
||||||
|
#ifdef XIPHOS_Q7S
|
||||||
ReturnValue_t result = checkPath(fullname);
|
ReturnValue_t result = checkPath(fullname);
|
||||||
if (result != RETURN_OK) {
|
if (result != RETURN_OK) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
uploadImage.uploadFile = fullname;
|
uploadImage.uploadFile = fullname;
|
||||||
if (not std::filesystem::exists(fullname)) {
|
if (not std::filesystem::exists(fullname)) {
|
||||||
return FILE_NOT_EXISTS;
|
return FILE_NOT_EXISTS;
|
||||||
@ -122,10 +126,12 @@ ReturnValue_t StrHelper::startImageUpload(std::string fullname) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t StrHelper::startImageDownload(std::string path) {
|
ReturnValue_t StrHelper::startImageDownload(std::string path) {
|
||||||
|
#ifdef XIPHOS_Q7S
|
||||||
ReturnValue_t result = checkPath(path);
|
ReturnValue_t result = checkPath(path);
|
||||||
if (result != RETURN_OK) {
|
if (result != RETURN_OK) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
if (not std::filesystem::exists(path)) {
|
if (not std::filesystem::exists(path)) {
|
||||||
return PATH_NOT_EXISTS;
|
return PATH_NOT_EXISTS;
|
||||||
}
|
}
|
||||||
@ -145,10 +151,12 @@ void StrHelper::setFlashReadFilename(std::string filename) { flashRead.filename
|
|||||||
void StrHelper::setDownloadFpgaImage(std::string filename) { fpgaDownload.fileName = filename; }
|
void StrHelper::setDownloadFpgaImage(std::string filename) { fpgaDownload.fileName = filename; }
|
||||||
|
|
||||||
ReturnValue_t StrHelper::startFirmwareUpdate(std::string fullname) {
|
ReturnValue_t StrHelper::startFirmwareUpdate(std::string fullname) {
|
||||||
|
#ifdef XIPHOS_Q7S
|
||||||
ReturnValue_t result = checkPath(fullname);
|
ReturnValue_t result = checkPath(fullname);
|
||||||
if (result != RETURN_OK) {
|
if (result != RETURN_OK) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
flashWrite.fullname = fullname;
|
flashWrite.fullname = fullname;
|
||||||
if (not std::filesystem::exists(flashWrite.fullname)) {
|
if (not std::filesystem::exists(flashWrite.fullname)) {
|
||||||
return FILE_NOT_EXISTS;
|
return FILE_NOT_EXISTS;
|
||||||
@ -163,10 +171,12 @@ ReturnValue_t StrHelper::startFirmwareUpdate(std::string fullname) {
|
|||||||
|
|
||||||
ReturnValue_t StrHelper::startFlashRead(std::string path, uint8_t region, uint32_t address,
|
ReturnValue_t StrHelper::startFlashRead(std::string path, uint8_t region, uint32_t address,
|
||||||
uint32_t length) {
|
uint32_t length) {
|
||||||
|
#ifdef XIPHOS_Q7S
|
||||||
ReturnValue_t result = checkPath(path);
|
ReturnValue_t result = checkPath(path);
|
||||||
if (result != RETURN_OK) {
|
if (result != RETURN_OK) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
flashRead.path = path;
|
flashRead.path = path;
|
||||||
if (not std::filesystem::exists(flashRead.path)) {
|
if (not std::filesystem::exists(flashRead.path)) {
|
||||||
return FILE_NOT_EXISTS;
|
return FILE_NOT_EXISTS;
|
||||||
@ -676,6 +686,7 @@ ReturnValue_t StrHelper::checkFpgaActionReply(uint32_t expectedPosition, uint32_
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef XIPHOS_Q7S
|
||||||
ReturnValue_t StrHelper::checkPath(std::string name) {
|
ReturnValue_t StrHelper::checkPath(std::string name) {
|
||||||
if (name.substr(0, sizeof(SdCardManager::SD_0_MOUNT_POINT)) ==
|
if (name.substr(0, sizeof(SdCardManager::SD_0_MOUNT_POINT)) ==
|
||||||
std::string(SdCardManager::SD_0_MOUNT_POINT)) {
|
std::string(SdCardManager::SD_0_MOUNT_POINT)) {
|
||||||
@ -692,6 +703,7 @@ ReturnValue_t StrHelper::checkPath(std::string name) {
|
|||||||
}
|
}
|
||||||
return RETURN_OK;
|
return RETURN_OK;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void StrHelper::printProgress(uint32_t itemsTransferred, uint32_t fullNumItems) {
|
void StrHelper::printProgress(uint32_t itemsTransferred, uint32_t fullNumItems) {
|
||||||
float progressInPercent =
|
float progressInPercent =
|
@ -4,7 +4,12 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "ArcsecDatalinkLayer.h"
|
#include "ArcsecDatalinkLayer.h"
|
||||||
|
#include "OBSWConfig.h"
|
||||||
|
|
||||||
|
#ifdef XIPHOS_Q7S
|
||||||
#include "bsp_q7s/memory/SdCardManager.h"
|
#include "bsp_q7s/memory/SdCardManager.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "fsfw/devicehandlers/CookieIF.h"
|
#include "fsfw/devicehandlers/CookieIF.h"
|
||||||
#include "fsfw/objectmanager/SystemObject.h"
|
#include "fsfw/objectmanager/SystemObject.h"
|
||||||
#include "fsfw/osal/linux/BinarySemaphore.h"
|
#include "fsfw/osal/linux/BinarySemaphore.h"
|
||||||
@ -294,7 +299,9 @@ class StrHelper : public SystemObject, public ExecutableObjectIF, public HasRetu
|
|||||||
};
|
};
|
||||||
FlashRead flashRead;
|
FlashRead flashRead;
|
||||||
|
|
||||||
|
#ifdef XIPHOS_Q7S
|
||||||
SdCardManager* sdcMan = nullptr;
|
SdCardManager* sdcMan = nullptr;
|
||||||
|
#endif
|
||||||
|
|
||||||
uint8_t commandBuffer[startracker::MAX_FRAME_SIZE];
|
uint8_t commandBuffer[startracker::MAX_FRAME_SIZE];
|
||||||
|
|
||||||
@ -396,12 +403,14 @@ class StrHelper : public SystemObject, public ExecutableObjectIF, public HasRetu
|
|||||||
*/
|
*/
|
||||||
ReturnValue_t checkFpgaActionReply(uint32_t expectedPosition, uint32_t expectedLength);
|
ReturnValue_t checkFpgaActionReply(uint32_t expectedPosition, uint32_t expectedLength);
|
||||||
|
|
||||||
|
#ifdef XIPHOS_Q7S
|
||||||
/**
|
/**
|
||||||
* @brief Checks if a path points to an sd card and whether the SD card is monuted.
|
* @brief Checks if a path points to an sd card and whether the SD card is monuted.
|
||||||
*
|
*
|
||||||
* @return SD_NOT_MOUNTED id SD card is not mounted, otherwise RETURN_OK
|
* @return SD_NOT_MOUNTED id SD card is not mounted, otherwise RETURN_OK
|
||||||
*/
|
*/
|
||||||
ReturnValue_t checkPath(std::string name);
|
ReturnValue_t checkPath(std::string name);
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Prints progress of transfer which can be useful for large data transfers
|
* @brief Prints progress of transfer which can be useful for large data transfers
|
@ -73,6 +73,7 @@ static constexpr size_t FSFW_MAX_TM_PACKET_SIZE = 2048;
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define FSFW_HAL_SPI_WIRETAPPING 0
|
#define FSFW_HAL_SPI_WIRETAPPING 0
|
||||||
|
#define FSFW_HAL_I2C_WIRETAPPING 0
|
||||||
#define FSFW_DEV_HYPERION_GPS_CREATE_NMEA_CSV 0
|
#define FSFW_DEV_HYPERION_GPS_CREATE_NMEA_CSV 0
|
||||||
|
|
||||||
#define FSFW_HAL_L3GD20_GYRO_DEBUG 0
|
#define FSFW_HAL_L3GD20_GYRO_DEBUG 0
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#cmakedefine RASPBERRY_PI
|
#cmakedefine RASPBERRY_PI
|
||||||
#cmakedefine XIPHOS_Q7S
|
#cmakedefine XIPHOS_Q7S
|
||||||
#cmakedefine BEAGLEBONEBLACK
|
#cmakedefine BEAGLEBONEBLACK
|
||||||
|
#cmakedefine EGSE
|
||||||
|
|
||||||
#ifdef RASPBERRY_PI
|
#ifdef RASPBERRY_PI
|
||||||
#include "rpiConfig.h"
|
#include "rpiConfig.h"
|
||||||
@ -41,6 +42,7 @@ debugging. */
|
|||||||
|
|
||||||
#define OBSW_ENABLE_TIMERS 1
|
#define OBSW_ENABLE_TIMERS 1
|
||||||
#define OBSW_ADD_MGT 1
|
#define OBSW_ADD_MGT 1
|
||||||
|
#define OBSW_ADD_BPX_BATTERY_HANDLER 1
|
||||||
#define OBSW_ADD_STAR_TRACKER 0
|
#define OBSW_ADD_STAR_TRACKER 0
|
||||||
#define OBSW_ADD_PLOC_SUPERVISOR 0
|
#define OBSW_ADD_PLOC_SUPERVISOR 0
|
||||||
#define OBSW_ADD_PLOC_MPSOC 0
|
#define OBSW_ADD_PLOC_MPSOC 0
|
||||||
@ -55,9 +57,14 @@ debugging. */
|
|||||||
#define OBSW_ENABLE_SYRLINKS_TRANSMIT_TIMEOUT 0
|
#define OBSW_ENABLE_SYRLINKS_TRANSMIT_TIMEOUT 0
|
||||||
#define OBSW_SYRLINKS_SIMULATED 1
|
#define OBSW_SYRLINKS_SIMULATED 1
|
||||||
#define OBSW_STAR_TRACKER_GROUND_CONFIG 1
|
#define OBSW_STAR_TRACKER_GROUND_CONFIG 1
|
||||||
|
#define OBSW_ENABLE_PERIODIC_HK 0
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined EGSE
|
||||||
|
#define OBSW_ADD_STAR_TRACKER 1
|
||||||
|
#endif
|
||||||
|
|
||||||
/*******************************************************************/
|
/*******************************************************************/
|
||||||
/** All of the following flags should be disabled for mission code */
|
/** All of the following flags should be disabled for mission code */
|
||||||
/*******************************************************************/
|
/*******************************************************************/
|
||||||
@ -66,15 +73,19 @@ debugging. */
|
|||||||
#define OBSW_SWITCH_TO_NORMAL_MODE_AFTER_STARTUP 1
|
#define OBSW_SWITCH_TO_NORMAL_MODE_AFTER_STARTUP 1
|
||||||
#define OBSW_PRINT_MISSED_DEADLINES 1
|
#define OBSW_PRINT_MISSED_DEADLINES 1
|
||||||
|
|
||||||
// If this is enabled, all other SPI code should be disabled
|
#define OBSW_SYRLINKS_SIMULATED 1
|
||||||
#define OBSW_ADD_TEST_CODE 0
|
#define OBSW_ADD_TEST_CODE 0
|
||||||
|
// If this is enabled, all other SPI code should be disabled
|
||||||
#define OBSW_ADD_SPI_TEST_CODE 0
|
#define OBSW_ADD_SPI_TEST_CODE 0
|
||||||
|
// If this is enabled, all other I2C code should be disabled
|
||||||
|
#define OBSW_ADD_I2C_TEST_CODE 0
|
||||||
#define OBSW_ADD_TEST_PST 0
|
#define OBSW_ADD_TEST_PST 0
|
||||||
#define OBSW_ADD_TEST_TASK 0
|
#define OBSW_ADD_TEST_TASK 0
|
||||||
#define OBSW_TEST_LIBGPIOD 0
|
#define OBSW_TEST_LIBGPIOD 0
|
||||||
#define OBSW_TEST_RADIATION_SENSOR_HANDLER 0
|
#define OBSW_TEST_RADIATION_SENSOR_HANDLER 0
|
||||||
#define OBSW_TEST_SUS_HANDLER 0
|
#define OBSW_TEST_SUS_HANDLER 0
|
||||||
#define OBSW_TEST_PLOC_HANDLER 0
|
#define OBSW_TEST_PLOC_HANDLER 0
|
||||||
|
#define OBSW_TEST_BPX_BATT 0
|
||||||
#define OBSW_TEST_CCSDS_BRIDGE 0
|
#define OBSW_TEST_CCSDS_BRIDGE 0
|
||||||
#define OBSW_TEST_CCSDS_PTME 0
|
#define OBSW_TEST_CCSDS_PTME 0
|
||||||
#define OBSW_TEST_TE7020_HEATER 0
|
#define OBSW_TEST_TE7020_HEATER 0
|
||||||
@ -82,6 +93,7 @@ debugging. */
|
|||||||
#define OBSW_TEST_GPIO_OPEN_BY_LINE_NAME 0
|
#define OBSW_TEST_GPIO_OPEN_BY_LINE_NAME 0
|
||||||
|
|
||||||
#define OBSW_DEBUG_P60DOCK 0
|
#define OBSW_DEBUG_P60DOCK 0
|
||||||
|
#define OBSW_DEBUG_BPX_BATT 0
|
||||||
#define OBSW_DEBUG_PDU1 0
|
#define OBSW_DEBUG_PDU1 0
|
||||||
#define OBSW_DEBUG_PDU2 0
|
#define OBSW_DEBUG_PDU2 0
|
||||||
#define OBSW_DEBUG_GPS 0
|
#define OBSW_DEBUG_GPS 0
|
||||||
@ -92,11 +104,16 @@ debugging. */
|
|||||||
#define OBSW_DEBUG_SUS 0
|
#define OBSW_DEBUG_SUS 0
|
||||||
#define OBSW_DEBUG_RTD 0
|
#define OBSW_DEBUG_RTD 0
|
||||||
#define OBSW_DEBUG_RW 0
|
#define OBSW_DEBUG_RW 0
|
||||||
#define OBSW_DEBUG_STARTRACKER 0
|
|
||||||
#define OBSW_DEBUG_PLOC_MPSOC 0
|
#define OBSW_DEBUG_PLOC_MPSOC 0
|
||||||
#define OBSW_DEBUG_PLOC_SUPERVISOR 0
|
#define OBSW_DEBUG_PLOC_SUPERVISOR 0
|
||||||
#define OBSW_DEBUG_PDEC_HANDLER 0
|
#define OBSW_DEBUG_PDEC_HANDLER 0
|
||||||
|
|
||||||
|
#if defined EGSE
|
||||||
|
#define OBSW_DEBUG_STARTRACKER 1
|
||||||
|
#else
|
||||||
|
#define OBSW_DEBUG_STARTRACKER 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef RASPBERRY_PI
|
#ifdef RASPBERRY_PI
|
||||||
|
|
||||||
#define OBSW_ENABLE_TIMERS 1
|
#define OBSW_ENABLE_TIMERS 1
|
||||||
|
@ -29,6 +29,7 @@ enum gpioId_t {
|
|||||||
GNSS_1_NRESET,
|
GNSS_1_NRESET,
|
||||||
GNSS_0_ENABLE,
|
GNSS_0_ENABLE,
|
||||||
GNSS_1_ENABLE,
|
GNSS_1_ENABLE,
|
||||||
|
GNSS_SELECT,
|
||||||
|
|
||||||
GYRO_0_ENABLE,
|
GYRO_0_ENABLE,
|
||||||
GYRO_2_ENABLE,
|
GYRO_2_ENABLE,
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @brief Auto-generated event translation file. Contains 140 translations.
|
* @brief Auto-generated event translation file. Contains 140 translations.
|
||||||
* @details
|
* @details
|
||||||
* Generated on: 2022-01-17 15:35:58
|
* Generated on: 2022-02-03 17:30:40
|
||||||
*/
|
*/
|
||||||
#include "translateEvents.h"
|
#include "translateEvents.h"
|
||||||
|
|
||||||
@ -34,6 +34,7 @@ const char *DEVICE_UNREQUESTED_REPLY_STRING = "DEVICE_UNREQUESTED_REPLY";
|
|||||||
const char *INVALID_DEVICE_COMMAND_STRING = "INVALID_DEVICE_COMMAND";
|
const char *INVALID_DEVICE_COMMAND_STRING = "INVALID_DEVICE_COMMAND";
|
||||||
const char *MONITORING_LIMIT_EXCEEDED_STRING = "MONITORING_LIMIT_EXCEEDED";
|
const char *MONITORING_LIMIT_EXCEEDED_STRING = "MONITORING_LIMIT_EXCEEDED";
|
||||||
const char *MONITORING_AMBIGUOUS_STRING = "MONITORING_AMBIGUOUS";
|
const char *MONITORING_AMBIGUOUS_STRING = "MONITORING_AMBIGUOUS";
|
||||||
|
const char *DEVICE_WANTS_HARD_REBOOT_STRING = "DEVICE_WANTS_HARD_REBOOT";
|
||||||
const char *FUSE_CURRENT_HIGH_STRING = "FUSE_CURRENT_HIGH";
|
const char *FUSE_CURRENT_HIGH_STRING = "FUSE_CURRENT_HIGH";
|
||||||
const char *FUSE_WENT_OFF_STRING = "FUSE_WENT_OFF";
|
const char *FUSE_WENT_OFF_STRING = "FUSE_WENT_OFF";
|
||||||
const char *POWER_ABOVE_HIGH_LIMIT_STRING = "POWER_ABOVE_HIGH_LIMIT";
|
const char *POWER_ABOVE_HIGH_LIMIT_STRING = "POWER_ABOVE_HIGH_LIMIT";
|
||||||
@ -59,7 +60,6 @@ const char *MONITOR_CHANGED_STATE_STRING = "MONITOR_CHANGED_STATE";
|
|||||||
const char *VALUE_BELOW_LOW_LIMIT_STRING = "VALUE_BELOW_LOW_LIMIT";
|
const char *VALUE_BELOW_LOW_LIMIT_STRING = "VALUE_BELOW_LOW_LIMIT";
|
||||||
const char *VALUE_ABOVE_HIGH_LIMIT_STRING = "VALUE_ABOVE_HIGH_LIMIT";
|
const char *VALUE_ABOVE_HIGH_LIMIT_STRING = "VALUE_ABOVE_HIGH_LIMIT";
|
||||||
const char *VALUE_OUT_OF_RANGE_STRING = "VALUE_OUT_OF_RANGE";
|
const char *VALUE_OUT_OF_RANGE_STRING = "VALUE_OUT_OF_RANGE";
|
||||||
const char *SWITCHING_TM_FAILED_STRING = "SWITCHING_TM_FAILED";
|
|
||||||
const char *CHANGING_MODE_STRING = "CHANGING_MODE";
|
const char *CHANGING_MODE_STRING = "CHANGING_MODE";
|
||||||
const char *MODE_INFO_STRING = "MODE_INFO";
|
const char *MODE_INFO_STRING = "MODE_INFO";
|
||||||
const char *FALLBACK_FAILED_STRING = "FALLBACK_FAILED";
|
const char *FALLBACK_FAILED_STRING = "FALLBACK_FAILED";
|
||||||
@ -206,6 +206,8 @@ const char *translateEvents(Event event) {
|
|||||||
return MONITORING_LIMIT_EXCEEDED_STRING;
|
return MONITORING_LIMIT_EXCEEDED_STRING;
|
||||||
case (2810):
|
case (2810):
|
||||||
return MONITORING_AMBIGUOUS_STRING;
|
return MONITORING_AMBIGUOUS_STRING;
|
||||||
|
case (2811):
|
||||||
|
return DEVICE_WANTS_HARD_REBOOT_STRING;
|
||||||
case (4201):
|
case (4201):
|
||||||
return FUSE_CURRENT_HIGH_STRING;
|
return FUSE_CURRENT_HIGH_STRING;
|
||||||
case (4202):
|
case (4202):
|
||||||
@ -256,8 +258,6 @@ const char *translateEvents(Event event) {
|
|||||||
return VALUE_ABOVE_HIGH_LIMIT_STRING;
|
return VALUE_ABOVE_HIGH_LIMIT_STRING;
|
||||||
case (7204):
|
case (7204):
|
||||||
return VALUE_OUT_OF_RANGE_STRING;
|
return VALUE_OUT_OF_RANGE_STRING;
|
||||||
case (7301):
|
|
||||||
return SWITCHING_TM_FAILED_STRING;
|
|
||||||
case (7400):
|
case (7400):
|
||||||
return CHANGING_MODE_STRING;
|
return CHANGING_MODE_STRING;
|
||||||
case (7401):
|
case (7401):
|
||||||
|
@ -62,6 +62,7 @@ enum sourceObjects : uint32_t {
|
|||||||
LIBGPIOD_TEST = 0x54123456,
|
LIBGPIOD_TEST = 0x54123456,
|
||||||
SPI_TEST = 0x54000010,
|
SPI_TEST = 0x54000010,
|
||||||
UART_TEST = 0x54000020,
|
UART_TEST = 0x54000020,
|
||||||
|
I2C_TEST = 0x54000030,
|
||||||
DUMMY_INTERFACE = 0x5400CAFE,
|
DUMMY_INTERFACE = 0x5400CAFE,
|
||||||
DUMMY_HANDLER = 0x5400AFFE,
|
DUMMY_HANDLER = 0x5400AFFE,
|
||||||
P60DOCK_TEST_TASK = 0x00005060,
|
P60DOCK_TEST_TASK = 0x00005060,
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/**
|
/**
|
||||||
* @brief Auto-generated object translation file.
|
* @brief Auto-generated object translation file.
|
||||||
* @details
|
* @details
|
||||||
* Contains 113 translations.
|
* Contains 110 translations.
|
||||||
* Generated on: 2022-01-17 15:36:10
|
* Generated on: 2022-02-03 12:01:36
|
||||||
*/
|
*/
|
||||||
#include "translateObjects.h"
|
#include "translateObjects.h"
|
||||||
|
|
||||||
@ -36,14 +36,14 @@ const char *MGM_3_RM3100_HANDLER_STRING = "MGM_3_RM3100_HANDLER";
|
|||||||
const char *GYRO_3_L3G_HANDLER_STRING = "GYRO_3_L3G_HANDLER";
|
const char *GYRO_3_L3G_HANDLER_STRING = "GYRO_3_L3G_HANDLER";
|
||||||
const char *RW4_STRING = "RW4";
|
const char *RW4_STRING = "RW4";
|
||||||
const char *STAR_TRACKER_STRING = "STAR_TRACKER";
|
const char *STAR_TRACKER_STRING = "STAR_TRACKER";
|
||||||
const char *GPS0_HANDLER_STRING = "GPS0_HANDLER";
|
const char *GPS_CONTROLLER_STRING = "GPS_CONTROLLER";
|
||||||
const char *GPS1_HANDLER_STRING = "GPS1_HANDLER";
|
|
||||||
const char *IMTQ_HANDLER_STRING = "IMTQ_HANDLER";
|
const char *IMTQ_HANDLER_STRING = "IMTQ_HANDLER";
|
||||||
const char *PCDU_HANDLER_STRING = "PCDU_HANDLER";
|
const char *PCDU_HANDLER_STRING = "PCDU_HANDLER";
|
||||||
const char *P60DOCK_HANDLER_STRING = "P60DOCK_HANDLER";
|
const char *P60DOCK_HANDLER_STRING = "P60DOCK_HANDLER";
|
||||||
const char *PDU1_HANDLER_STRING = "PDU1_HANDLER";
|
const char *PDU1_HANDLER_STRING = "PDU1_HANDLER";
|
||||||
const char *PDU2_HANDLER_STRING = "PDU2_HANDLER";
|
const char *PDU2_HANDLER_STRING = "PDU2_HANDLER";
|
||||||
const char *ACU_HANDLER_STRING = "ACU_HANDLER";
|
const char *ACU_HANDLER_STRING = "ACU_HANDLER";
|
||||||
|
const char *BPX_BATT_HANDLER_STRING = "BPX_BATT_HANDLER";
|
||||||
const char *RAD_SENSOR_STRING = "RAD_SENSOR";
|
const char *RAD_SENSOR_STRING = "RAD_SENSOR";
|
||||||
const char *PLOC_UPDATER_STRING = "PLOC_UPDATER";
|
const char *PLOC_UPDATER_STRING = "PLOC_UPDATER";
|
||||||
const char *PLOC_MEMORY_DUMPER_STRING = "PLOC_MEMORY_DUMPER";
|
const char *PLOC_MEMORY_DUMPER_STRING = "PLOC_MEMORY_DUMPER";
|
||||||
@ -83,10 +83,6 @@ const char *TMTC_BRIDGE_STRING = "TMTC_BRIDGE";
|
|||||||
const char *TMTC_POLLING_TASK_STRING = "TMTC_POLLING_TASK";
|
const char *TMTC_POLLING_TASK_STRING = "TMTC_POLLING_TASK";
|
||||||
const char *FILE_SYSTEM_HANDLER_STRING = "FILE_SYSTEM_HANDLER";
|
const char *FILE_SYSTEM_HANDLER_STRING = "FILE_SYSTEM_HANDLER";
|
||||||
const char *PTME_STRING = "PTME";
|
const char *PTME_STRING = "PTME";
|
||||||
const char *PAPB_VC0_STRING = "PAPB_VC0";
|
|
||||||
const char *PAPB_VC1_STRING = "PAPB_VC1";
|
|
||||||
const char *PAPB_VC2_STRING = "PAPB_VC2";
|
|
||||||
const char *PAPB_VC3_STRING = "PAPB_VC3";
|
|
||||||
const char *PDEC_HANDLER_STRING = "PDEC_HANDLER";
|
const char *PDEC_HANDLER_STRING = "PDEC_HANDLER";
|
||||||
const char *CCSDS_HANDLER_STRING = "CCSDS_HANDLER";
|
const char *CCSDS_HANDLER_STRING = "CCSDS_HANDLER";
|
||||||
const char *PUS_SERVICE_6_STRING = "PUS_SERVICE_6";
|
const char *PUS_SERVICE_6_STRING = "PUS_SERVICE_6";
|
||||||
@ -101,6 +97,7 @@ const char *PUS_SERVICE_17_TEST_STRING = "PUS_SERVICE_17_TEST";
|
|||||||
const char *PUS_SERVICE_20_PARAMETERS_STRING = "PUS_SERVICE_20_PARAMETERS";
|
const char *PUS_SERVICE_20_PARAMETERS_STRING = "PUS_SERVICE_20_PARAMETERS";
|
||||||
const char *PUS_SERVICE_200_MODE_MGMT_STRING = "PUS_SERVICE_200_MODE_MGMT";
|
const char *PUS_SERVICE_200_MODE_MGMT_STRING = "PUS_SERVICE_200_MODE_MGMT";
|
||||||
const char *PUS_SERVICE_201_HEALTH_STRING = "PUS_SERVICE_201_HEALTH";
|
const char *PUS_SERVICE_201_HEALTH_STRING = "PUS_SERVICE_201_HEALTH";
|
||||||
|
const char *CFDP_PACKET_DISTRIBUTOR_STRING = "CFDP_PACKET_DISTRIBUTOR";
|
||||||
const char *HEALTH_TABLE_STRING = "HEALTH_TABLE";
|
const char *HEALTH_TABLE_STRING = "HEALTH_TABLE";
|
||||||
const char *MODE_STORE_STRING = "MODE_STORE";
|
const char *MODE_STORE_STRING = "MODE_STORE";
|
||||||
const char *EVENT_MANAGER_STRING = "EVENT_MANAGER";
|
const char *EVENT_MANAGER_STRING = "EVENT_MANAGER";
|
||||||
@ -183,9 +180,7 @@ const char *translateObject(object_id_t object) {
|
|||||||
case 0x44130001:
|
case 0x44130001:
|
||||||
return STAR_TRACKER_STRING;
|
return STAR_TRACKER_STRING;
|
||||||
case 0x44130045:
|
case 0x44130045:
|
||||||
return GPS0_HANDLER_STRING;
|
return GPS_CONTROLLER_STRING;
|
||||||
case 0x44130146:
|
|
||||||
return GPS1_HANDLER_STRING;
|
|
||||||
case 0x44140014:
|
case 0x44140014:
|
||||||
return IMTQ_HANDLER_STRING;
|
return IMTQ_HANDLER_STRING;
|
||||||
case 0x442000A1:
|
case 0x442000A1:
|
||||||
@ -198,6 +193,8 @@ const char *translateObject(object_id_t object) {
|
|||||||
return PDU2_HANDLER_STRING;
|
return PDU2_HANDLER_STRING;
|
||||||
case 0x44250003:
|
case 0x44250003:
|
||||||
return ACU_HANDLER_STRING;
|
return ACU_HANDLER_STRING;
|
||||||
|
case 0x44260000:
|
||||||
|
return BPX_BATT_HANDLER_STRING;
|
||||||
case 0x443200A5:
|
case 0x443200A5:
|
||||||
return RAD_SENSOR_STRING;
|
return RAD_SENSOR_STRING;
|
||||||
case 0x44330000:
|
case 0x44330000:
|
||||||
@ -277,14 +274,6 @@ const char *translateObject(object_id_t object) {
|
|||||||
case 0x50000600:
|
case 0x50000600:
|
||||||
return PTME_STRING;
|
return PTME_STRING;
|
||||||
case 0x50000700:
|
case 0x50000700:
|
||||||
return PAPB_VC0_STRING;
|
|
||||||
case 0x50000701:
|
|
||||||
return PAPB_VC1_STRING;
|
|
||||||
case 0x50000702:
|
|
||||||
return PAPB_VC2_STRING;
|
|
||||||
case 0x50000703:
|
|
||||||
return PAPB_VC3_STRING;
|
|
||||||
case 0x50000704:
|
|
||||||
return PDEC_HANDLER_STRING;
|
return PDEC_HANDLER_STRING;
|
||||||
case 0x50000800:
|
case 0x50000800:
|
||||||
return CCSDS_HANDLER_STRING;
|
return CCSDS_HANDLER_STRING;
|
||||||
@ -312,6 +301,8 @@ const char *translateObject(object_id_t object) {
|
|||||||
return PUS_SERVICE_200_MODE_MGMT_STRING;
|
return PUS_SERVICE_200_MODE_MGMT_STRING;
|
||||||
case 0x53000201:
|
case 0x53000201:
|
||||||
return PUS_SERVICE_201_HEALTH_STRING;
|
return PUS_SERVICE_201_HEALTH_STRING;
|
||||||
|
case 0x53001000:
|
||||||
|
return CFDP_PACKET_DISTRIBUTOR_STRING;
|
||||||
case 0x53010000:
|
case 0x53010000:
|
||||||
return HEALTH_TABLE_STRING;
|
return HEALTH_TABLE_STRING;
|
||||||
case 0x53010100:
|
case 0x53010100:
|
||||||
|
@ -526,6 +526,14 @@ ReturnValue_t pst::pstI2c(FixedTimeslotTaskIF *thisSequence) {
|
|||||||
thisSequence->addSlot(objects::IMTQ_HANDLER, length * 0.6, DeviceHandlerIF::SEND_READ);
|
thisSequence->addSlot(objects::IMTQ_HANDLER, length * 0.6, DeviceHandlerIF::SEND_READ);
|
||||||
thisSequence->addSlot(objects::IMTQ_HANDLER, length * 0.8, DeviceHandlerIF::GET_READ);
|
thisSequence->addSlot(objects::IMTQ_HANDLER, length * 0.8, DeviceHandlerIF::GET_READ);
|
||||||
#endif
|
#endif
|
||||||
|
#if OBSW_ADD_BPX_BATTERY_HANDLER == 1
|
||||||
|
thisSequence->addSlot(objects::BPX_BATT_HANDLER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
|
||||||
|
thisSequence->addSlot(objects::BPX_BATT_HANDLER, length * 0.2, DeviceHandlerIF::SEND_WRITE);
|
||||||
|
thisSequence->addSlot(objects::BPX_BATT_HANDLER, length * 0.4, DeviceHandlerIF::GET_WRITE);
|
||||||
|
thisSequence->addSlot(objects::BPX_BATT_HANDLER, length * 0.6, DeviceHandlerIF::SEND_READ);
|
||||||
|
thisSequence->addSlot(objects::BPX_BATT_HANDLER, length * 0.8, DeviceHandlerIF::GET_READ);
|
||||||
|
#endif
|
||||||
|
static_cast<void>(length);
|
||||||
if (thisSequence->checkSequence() != HasReturnvaluesIF::RETURN_OK) {
|
if (thisSequence->checkSequence() != HasReturnvaluesIF::RETURN_OK) {
|
||||||
sif::error << "I2C PST initialization failed" << std::endl;
|
sif::error << "I2C PST initialization failed" << std::endl;
|
||||||
return HasReturnvaluesIF::RETURN_FAILED;
|
return HasReturnvaluesIF::RETURN_FAILED;
|
||||||
@ -548,9 +556,11 @@ ReturnValue_t pst::pstUart(FixedTimeslotTaskIF *thisSequence) {
|
|||||||
thisSequence->addSlot(objects::PLOC_MPSOC_HANDLER, length * 0.8, DeviceHandlerIF::GET_READ);
|
thisSequence->addSlot(objects::PLOC_MPSOC_HANDLER, length * 0.8, DeviceHandlerIF::GET_READ);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef XIPHOS_Q7S
|
||||||
thisSequence->addSlot(objects::PLOC_UPDATER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
|
thisSequence->addSlot(objects::PLOC_UPDATER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
|
||||||
thisSequence->addSlot(objects::PLOC_MEMORY_DUMPER, length * 0,
|
thisSequence->addSlot(objects::PLOC_MEMORY_DUMPER, length * 0,
|
||||||
DeviceHandlerIF::PERFORM_OPERATION);
|
DeviceHandlerIF::PERFORM_OPERATION);
|
||||||
|
#endif
|
||||||
#if OBSW_ADD_PLOC_SUPERVISOR == 1
|
#if OBSW_ADD_PLOC_SUPERVISOR == 1
|
||||||
thisSequence->addSlot(objects::PLOC_SUPERVISOR_HANDLER, length * 0,
|
thisSequence->addSlot(objects::PLOC_SUPERVISOR_HANDLER, length * 0,
|
||||||
DeviceHandlerIF::PERFORM_OPERATION);
|
DeviceHandlerIF::PERFORM_OPERATION);
|
||||||
@ -579,7 +589,7 @@ ReturnValue_t pst::pstUart(FixedTimeslotTaskIF *thisSequence) {
|
|||||||
thisSequence->addSlot(objects::STAR_TRACKER, length * 0.6, DeviceHandlerIF::SEND_READ);
|
thisSequence->addSlot(objects::STAR_TRACKER, length * 0.6, DeviceHandlerIF::SEND_READ);
|
||||||
thisSequence->addSlot(objects::STAR_TRACKER, length * 0.8, DeviceHandlerIF::GET_READ);
|
thisSequence->addSlot(objects::STAR_TRACKER, length * 0.8, DeviceHandlerIF::GET_READ);
|
||||||
#endif
|
#endif
|
||||||
|
static_cast<void>(length);
|
||||||
if (uartPstEmpty) {
|
if (uartPstEmpty) {
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
}
|
}
|
||||||
|
282
mission/devices/BpxBatteryHandler.cpp
Normal file
282
mission/devices/BpxBatteryHandler.cpp
Normal file
@ -0,0 +1,282 @@
|
|||||||
|
#include "BpxBatteryHandler.h"
|
||||||
|
|
||||||
|
#include <fsfw/datapool/PoolReadGuard.h>
|
||||||
|
|
||||||
|
#include "OBSWConfig.h"
|
||||||
|
|
||||||
|
BpxBatteryHandler::BpxBatteryHandler(object_id_t objectId, object_id_t comIF, CookieIF* comCookie)
|
||||||
|
: DeviceHandlerBase(objectId, comIF, comCookie), hkSet(this), cfgSet(this) {}
|
||||||
|
|
||||||
|
BpxBatteryHandler::~BpxBatteryHandler() {}
|
||||||
|
|
||||||
|
void BpxBatteryHandler::doStartUp() {
|
||||||
|
if (state == States::CHECK_COM) {
|
||||||
|
if (commandExecuted) {
|
||||||
|
state = States::IDLE;
|
||||||
|
commandExecuted = false;
|
||||||
|
if (goToNormalModeImmediately) {
|
||||||
|
setMode(MODE_NORMAL);
|
||||||
|
} else {
|
||||||
|
setMode(_MODE_TO_ON);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BpxBatteryHandler::doShutDown() {
|
||||||
|
// Perform a COM check on reboot
|
||||||
|
state = States::CHECK_COM;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t BpxBatteryHandler::buildNormalDeviceCommand(DeviceCommandId_t* id) {
|
||||||
|
*id = BpxBattery::GET_HK;
|
||||||
|
return buildCommandFromCommand(*id, nullptr, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t BpxBatteryHandler::buildTransitionDeviceCommand(DeviceCommandId_t* id) {
|
||||||
|
if (state == States::CHECK_COM) {
|
||||||
|
*id = BpxBattery::PING;
|
||||||
|
return buildCommandFromCommand(*id, nullptr, 0);
|
||||||
|
}
|
||||||
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BpxBatteryHandler::fillCommandAndReplyMap() {
|
||||||
|
using namespace BpxBattery;
|
||||||
|
insertInCommandAndReplyMap(GET_HK, 1, &hkSet, GET_HK_REPLY_LEN);
|
||||||
|
insertInCommandAndReplyMap(BpxBattery::PING, 1, nullptr, PING_REPLY_LEN);
|
||||||
|
insertInCommandAndReplyMap(BpxBattery::REBOOT, 1, nullptr, 0);
|
||||||
|
insertInCommandAndReplyMap(BpxBattery::RESET_COUNTERS, 1, nullptr, EMPTY_REPLY_LEN);
|
||||||
|
insertInCommandAndReplyMap(BpxBattery::CONFIG_CMD, 1, nullptr, EMPTY_REPLY_LEN);
|
||||||
|
insertInCommandAndReplyMap(BpxBattery::CONFIG_GET, 1, &cfgSet, CONFIG_GET_REPLY_LEN);
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t BpxBatteryHandler::buildCommandFromCommand(DeviceCommandId_t deviceCommand,
|
||||||
|
const uint8_t* commandData,
|
||||||
|
size_t commandDataLen) {
|
||||||
|
switch (deviceCommand) {
|
||||||
|
case (BpxBattery::GET_HK): {
|
||||||
|
cmdBuf[0] = BpxBattery::PORT_GET_HK;
|
||||||
|
this->rawPacketLen = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case (BpxBattery::PING): {
|
||||||
|
if (commandDataLen == 1 and commandData != nullptr) {
|
||||||
|
sentPingByte = commandData[0];
|
||||||
|
} else {
|
||||||
|
sentPingByte = BpxBattery::DEFAULT_PING_SENT_BYTE;
|
||||||
|
}
|
||||||
|
|
||||||
|
cmdBuf[0] = BpxBattery::PORT_PING;
|
||||||
|
cmdBuf[1] = sentPingByte;
|
||||||
|
this->rawPacketLen = 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case (BpxBattery::REBOOT): {
|
||||||
|
cmdBuf[0] = BpxBattery::PORT_REBOOT;
|
||||||
|
cmdBuf[1] = 0x80;
|
||||||
|
cmdBuf[2] = 0x07;
|
||||||
|
cmdBuf[3] = 0x80;
|
||||||
|
cmdBuf[4] = 0x07;
|
||||||
|
this->rawPacketLen = 5;
|
||||||
|
// This instructs the FDIR to set the device mode off and on again
|
||||||
|
// to ensure the I2C communication is also verified
|
||||||
|
triggerEvent(DeviceHandlerIF::DEVICE_WANTS_HARD_REBOOT);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case (BpxBattery::RESET_COUNTERS): {
|
||||||
|
cmdBuf[0] = BpxBattery::PORT_RESET_COUNTERS;
|
||||||
|
cmdBuf[1] = BpxBattery::RESET_COUNTERS_MAGIC_VALUE;
|
||||||
|
this->rawPacketLen = 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case (BpxBattery::CONFIG_CMD): {
|
||||||
|
cmdBuf[0] = BpxBattery::PORT_CONFIG_CMD;
|
||||||
|
// Needs to be set to 0x01 according to datasheet
|
||||||
|
cmdBuf[1] = 0x01;
|
||||||
|
this->rawPacketLen = 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case (BpxBattery::CONFIG_GET): {
|
||||||
|
cmdBuf[0] = BpxBattery::PORT_CONFIG_GET;
|
||||||
|
this->rawPacketLen = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case (BpxBattery::CONFIG_SET): {
|
||||||
|
cmdBuf[0] = BpxBattery::PORT_CONFIG_SET;
|
||||||
|
if (commandDataLen != 3) {
|
||||||
|
return DeviceHandlerIF::INVALID_NUMBER_OR_LENGTH_OF_PARAMETERS;
|
||||||
|
}
|
||||||
|
for (uint8_t idx = 0; idx < 3; idx++) {
|
||||||
|
cmdBuf[idx + 1] = commandData[idx];
|
||||||
|
}
|
||||||
|
this->rawPacketLen = 4;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case (BpxBattery::MAN_HEAT_ON): {
|
||||||
|
cmdBuf[0] = BpxBattery::PORT_MAN_HEAT_ON;
|
||||||
|
if (commandDataLen != 2) {
|
||||||
|
return DeviceHandlerIF::INVALID_NUMBER_OR_LENGTH_OF_PARAMETERS;
|
||||||
|
}
|
||||||
|
for (uint8_t idx = 0; idx < 2; idx++) {
|
||||||
|
cmdBuf[idx + 1] = commandData[idx];
|
||||||
|
}
|
||||||
|
this->rawPacketLen = 3;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case (BpxBattery::MAN_HEAT_OFF): {
|
||||||
|
cmdBuf[0] = BpxBattery::PORT_MAN_HEAT_OFF;
|
||||||
|
this->rawPacketLen = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
return DeviceHandlerIF::COMMAND_NOT_SUPPORTED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this->rawPacket = cmdBuf.data();
|
||||||
|
|
||||||
|
lastCmd = deviceCommand;
|
||||||
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t BpxBatteryHandler::scanForReply(const uint8_t* start, size_t remainingSize,
|
||||||
|
DeviceCommandId_t* foundId, size_t* foundLen) {
|
||||||
|
using namespace BpxBattery;
|
||||||
|
switch (lastCmd) {
|
||||||
|
case (BpxBattery::GET_HK): {
|
||||||
|
if (remainingSize != GET_HK_REPLY_LEN) {
|
||||||
|
return DeviceHandlerIF::LENGTH_MISSMATCH;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case (BpxBattery::PING):
|
||||||
|
case (BpxBattery::MAN_HEAT_ON):
|
||||||
|
case (BpxBattery::MAN_HEAT_OFF): {
|
||||||
|
if (remainingSize != PING_REPLY_LEN) {
|
||||||
|
return DeviceHandlerIF::LENGTH_MISSMATCH;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case (BpxBattery::REBOOT): {
|
||||||
|
// Ignore
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case (BpxBattery::RESET_COUNTERS):
|
||||||
|
case (BpxBattery::CONFIG_CMD):
|
||||||
|
case (BpxBattery::CONFIG_SET): {
|
||||||
|
if (remainingSize != EMPTY_REPLY_LEN) {
|
||||||
|
return DeviceHandlerIF::LENGTH_MISSMATCH;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case (BpxBattery::CONFIG_GET): {
|
||||||
|
if (remainingSize != CONFIG_GET_REPLY_LEN) {
|
||||||
|
return DeviceHandlerIF::LENGTH_MISSMATCH;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
return DeviceHandlerIF::UNKNOWN_DEVICE_REPLY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*foundLen = remainingSize;
|
||||||
|
*foundId = lastCmd;
|
||||||
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t BpxBatteryHandler::interpretDeviceReply(DeviceCommandId_t id, const uint8_t* packet) {
|
||||||
|
if (id != BpxBattery::REBOOT and packet[1] != 0) {
|
||||||
|
return DeviceHandlerIF::DEVICE_REPORTED_ERROR;
|
||||||
|
}
|
||||||
|
switch (id) {
|
||||||
|
case (BpxBattery::GET_HK): {
|
||||||
|
PoolReadGuard rg(&hkSet);
|
||||||
|
ReturnValue_t result = hkSet.parseRawHk(packet + 2, 21);
|
||||||
|
hkSet.setValidity(true, true);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
#if OBSW_DEBUG_BPX_BATT == 1
|
||||||
|
sif::info << "BPX Battery HK output:" << std::endl;
|
||||||
|
sif::info << "Charge current [mA]: " << hkSet.chargeCurrent << std::endl;
|
||||||
|
sif::info << "Discharge current [mA]: " << hkSet.dischargeCurrent << std::endl;
|
||||||
|
sif::info << "Heater current [mA]: " << hkSet.heaterCurrent << std::endl;
|
||||||
|
sif::info << "Battery voltage [mV]: " << hkSet.battVoltage << std::endl;
|
||||||
|
sif::info << "Battery Temperature 1 [C]: " << hkSet.battTemp1 << std::endl;
|
||||||
|
sif::info << "Battery Temperature 2 [C]: " << hkSet.battTemp2 << std::endl;
|
||||||
|
sif::info << "Battery Temperature 3 [C]: " << hkSet.battTemp3 << std::endl;
|
||||||
|
sif::info << "Battery Temperature 4 [C]: " << hkSet.battTemp4 << std::endl;
|
||||||
|
sif::info << "Battery Reboot Counter: " << hkSet.rebootCounter << std::endl;
|
||||||
|
sif::info << "Battery Boot Cause: " << static_cast<int>(hkSet.bootcause.value) << std::endl;
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case (BpxBattery::PING): {
|
||||||
|
if (packet[2] != sentPingByte) {
|
||||||
|
return DeviceHandlerIF::INVALID_DATA;
|
||||||
|
}
|
||||||
|
if (mode == _MODE_START_UP) {
|
||||||
|
commandExecuted = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case (BpxBattery::RESET_COUNTERS):
|
||||||
|
case (BpxBattery::CONFIG_CMD):
|
||||||
|
case (BpxBattery::CONFIG_SET): {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case (BpxBattery::MAN_HEAT_ON):
|
||||||
|
case (BpxBattery::MAN_HEAT_OFF): {
|
||||||
|
if (packet[2] != 0x01) {
|
||||||
|
return DeviceHandlerIF::DEVICE_DID_NOT_EXECUTE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case (BpxBattery::CONFIG_GET): {
|
||||||
|
PoolReadGuard rg(&cfgSet);
|
||||||
|
ReturnValue_t result = cfgSet.parseRawHk(packet + 2, 3);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
cfgSet.setValidity(true, true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case (BpxBattery::REBOOT): {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
return DeviceHandlerIF::UNKNOWN_DEVICE_REPLY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t BpxBatteryHandler::getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) { return 10000; }
|
||||||
|
|
||||||
|
ReturnValue_t BpxBatteryHandler::initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
|
||||||
|
LocalDataPoolManager& poolManager) {
|
||||||
|
localDataPoolMap.emplace(BpxBattery::BATT_TEMP_1, &battTemp1);
|
||||||
|
localDataPoolMap.emplace(BpxBattery::BATT_TEMP_2, &battTemp2);
|
||||||
|
localDataPoolMap.emplace(BpxBattery::BATT_TEMP_3, &battTemp3);
|
||||||
|
localDataPoolMap.emplace(BpxBattery::BATT_TEMP_4, &battTemp4);
|
||||||
|
localDataPoolMap.emplace(BpxBattery::CHARGE_CURRENT, &chargeCurrent);
|
||||||
|
localDataPoolMap.emplace(BpxBattery::DISCHARGE_CURRENT, &dischargeCurrent);
|
||||||
|
localDataPoolMap.emplace(BpxBattery::HEATER_CURRENT, &heaterCurrent);
|
||||||
|
localDataPoolMap.emplace(BpxBattery::BATT_VOLTAGE, &battVolt);
|
||||||
|
localDataPoolMap.emplace(BpxBattery::REBOOT_COUNTER, &rebootCounter);
|
||||||
|
localDataPoolMap.emplace(BpxBattery::BOOTCAUSE, &bootCause);
|
||||||
|
|
||||||
|
localDataPoolMap.emplace(BpxBattery::BATTERY_HEATER_MODE, &battheatMode);
|
||||||
|
localDataPoolMap.emplace(BpxBattery::BATTHEAT_LOW_LIMIT, &battheatLow);
|
||||||
|
localDataPoolMap.emplace(BpxBattery::BATTHEAT_HIGH_LIMIT, &battheatHigh);
|
||||||
|
|
||||||
|
#if OBSW_ENABLE_PERIODIC_HK == 1
|
||||||
|
poolManager.subscribeForPeriodicPacket(hkSet.getSid(), true, 1.0, false);
|
||||||
|
#endif
|
||||||
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BpxBatteryHandler::setToGoToNormalMode(bool enable) {
|
||||||
|
this->goToNormalModeImmediately = enable;
|
||||||
|
}
|
58
mission/devices/BpxBatteryHandler.h
Normal file
58
mission/devices/BpxBatteryHandler.h
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
#ifndef MISSION_DEVICES_BPXBATTERYHANDLER_H_
|
||||||
|
#define MISSION_DEVICES_BPXBATTERYHANDLER_H_
|
||||||
|
|
||||||
|
#include <fsfw/devicehandlers/DeviceHandlerBase.h>
|
||||||
|
|
||||||
|
#include "devicedefinitions/BpxBatteryDefinitions.h"
|
||||||
|
|
||||||
|
class BpxBatteryHandler : public DeviceHandlerBase {
|
||||||
|
public:
|
||||||
|
BpxBatteryHandler(object_id_t objectId, object_id_t comIF, CookieIF* comCookie);
|
||||||
|
virtual ~BpxBatteryHandler();
|
||||||
|
|
||||||
|
void setToGoToNormalMode(bool enable);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
enum class States {
|
||||||
|
CHECK_COM = 0,
|
||||||
|
IDLE = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
States state = States::CHECK_COM;
|
||||||
|
bool commandExecuted = false;
|
||||||
|
bool goToNormalModeImmediately = false;
|
||||||
|
uint8_t sentPingByte = BpxBattery::DEFAULT_PING_SENT_BYTE;
|
||||||
|
BpxBatteryHk hkSet;
|
||||||
|
DeviceCommandId_t lastCmd = DeviceHandlerIF::NO_COMMAND_ID;
|
||||||
|
BpxBatteryCfg cfgSet;
|
||||||
|
std::array<uint8_t, 8> cmdBuf = {};
|
||||||
|
PoolEntry<uint16_t> chargeCurrent = PoolEntry<uint16_t>({0});
|
||||||
|
PoolEntry<uint16_t> dischargeCurrent = PoolEntry<uint16_t>({0});
|
||||||
|
PoolEntry<uint16_t> heaterCurrent = PoolEntry<uint16_t>({0});
|
||||||
|
PoolEntry<uint16_t> battVolt = PoolEntry<uint16_t>({0});
|
||||||
|
PoolEntry<int16_t> battTemp1 = PoolEntry<int16_t>({0});
|
||||||
|
PoolEntry<int16_t> battTemp2 = PoolEntry<int16_t>({0});
|
||||||
|
PoolEntry<int16_t> battTemp3 = PoolEntry<int16_t>({0});
|
||||||
|
PoolEntry<int16_t> battTemp4 = PoolEntry<int16_t>({0});
|
||||||
|
PoolEntry<uint32_t> rebootCounter = PoolEntry<uint32_t>({0});
|
||||||
|
PoolEntry<uint8_t> bootCause = PoolEntry<uint8_t>({0});
|
||||||
|
PoolEntry<uint8_t> battheatMode = PoolEntry<uint8_t>({0});
|
||||||
|
PoolEntry<int8_t> battheatLow = PoolEntry<int8_t>({0});
|
||||||
|
PoolEntry<int8_t> battheatHigh = PoolEntry<int8_t>({0});
|
||||||
|
|
||||||
|
void doStartUp() override;
|
||||||
|
void doShutDown() override;
|
||||||
|
ReturnValue_t buildNormalDeviceCommand(DeviceCommandId_t* id) override;
|
||||||
|
ReturnValue_t buildTransitionDeviceCommand(DeviceCommandId_t* id) override;
|
||||||
|
void fillCommandAndReplyMap() override;
|
||||||
|
ReturnValue_t buildCommandFromCommand(DeviceCommandId_t deviceCommand, const uint8_t* commandData,
|
||||||
|
size_t commandDataLen) override;
|
||||||
|
ReturnValue_t scanForReply(const uint8_t* start, size_t remainingSize, DeviceCommandId_t* foundId,
|
||||||
|
size_t* foundLen) override;
|
||||||
|
ReturnValue_t interpretDeviceReply(DeviceCommandId_t id, const uint8_t* packet) override;
|
||||||
|
uint32_t getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) override;
|
||||||
|
ReturnValue_t initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
|
||||||
|
LocalDataPoolManager& poolManager) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* MISSION_DEVICES_BPXBATTERYHANDLER_H_ */
|
@ -1,6 +1,7 @@
|
|||||||
target_sources(${TARGET_NAME} PUBLIC
|
target_sources(${TARGET_NAME} PUBLIC
|
||||||
GPSHyperionLinuxController.cpp
|
GPSHyperionLinuxController.cpp
|
||||||
GomspaceDeviceHandler.cpp
|
GomspaceDeviceHandler.cpp
|
||||||
|
BpxBatteryHandler.cpp
|
||||||
Tmp1075Handler.cpp
|
Tmp1075Handler.cpp
|
||||||
PCDUHandler.cpp
|
PCDUHandler.cpp
|
||||||
P60DockHandler.cpp
|
P60DockHandler.cpp
|
||||||
|
@ -52,25 +52,25 @@ class PlocMPSoCHandler : public DeviceHandlerBase {
|
|||||||
private:
|
private:
|
||||||
static const uint8_t INTERFACE_ID = CLASS_ID::PLOC_MPSOC_HANDLER;
|
static const uint8_t INTERFACE_ID = CLASS_ID::PLOC_MPSOC_HANDLER;
|
||||||
|
|
||||||
static const ReturnValue_t CRC_FAILURE =
|
//! Space Packet received from PLOC has invalid CRC
|
||||||
MAKE_RETURN_CODE(0xA0); //!> Space Packet received from PLOC has invalid CRC
|
static const ReturnValue_t CRC_FAILURE = MAKE_RETURN_CODE(0xA0);
|
||||||
static const ReturnValue_t RECEIVED_ACK_FAILURE =
|
//! Received ACK failure reply from PLOC
|
||||||
MAKE_RETURN_CODE(0xA1); //!> Received ACK failure reply from PLOC
|
static const ReturnValue_t RECEIVED_ACK_FAILURE = MAKE_RETURN_CODE(0xA1);
|
||||||
static const ReturnValue_t RECEIVED_EXE_FAILURE =
|
//! Received execution failure reply from PLOC
|
||||||
MAKE_RETURN_CODE(0xA2); //!> Received execution failure reply from PLOC
|
static const ReturnValue_t RECEIVED_EXE_FAILURE = MAKE_RETURN_CODE(0xA2);
|
||||||
static const ReturnValue_t INVALID_APID =
|
//! Received space packet with invalid APID from PLOC
|
||||||
MAKE_RETURN_CODE(0xA3); //!> Received space packet with invalid APID from PLOC
|
static const ReturnValue_t INVALID_APID = MAKE_RETURN_CODE(0xA3);
|
||||||
|
|
||||||
static const uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::PLOC_MPSOC_HANDLER;
|
static const uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::PLOC_MPSOC_HANDLER;
|
||||||
|
|
||||||
static const Event MEMORY_READ_RPT_CRC_FAILURE =
|
//! PLOC crc failure in telemetry packet
|
||||||
MAKE_EVENT(1, severity::LOW); //!> PLOC crc failure in telemetry packet
|
static const Event MEMORY_READ_RPT_CRC_FAILURE = MAKE_EVENT(1, severity::LOW);
|
||||||
static const Event ACK_FAILURE =
|
//! PLOC receive acknowledgment failure report
|
||||||
MAKE_EVENT(2, severity::LOW); //!> PLOC receive acknowledgment failure report
|
static const Event ACK_FAILURE = MAKE_EVENT(2, severity::LOW);
|
||||||
static const Event EXE_FAILURE =
|
//! PLOC receive execution failure report
|
||||||
MAKE_EVENT(3, severity::LOW); //!> PLOC receive execution failure report
|
static const Event EXE_FAILURE = MAKE_EVENT(3, severity::LOW);
|
||||||
static const Event CRC_FAILURE_EVENT =
|
//! PLOC reply has invalid crc
|
||||||
MAKE_EVENT(4, severity::LOW); //!> PLOC reply has invalid crc
|
static const Event CRC_FAILURE_EVENT = MAKE_EVENT(4, severity::LOW);
|
||||||
|
|
||||||
static const uint16_t APID_MASK = 0x7FF;
|
static const uint16_t APID_MASK = 0x7FF;
|
||||||
static const uint16_t PACKET_SEQUENCE_COUNT_MASK = 0x3FFF;
|
static const uint16_t PACKET_SEQUENCE_COUNT_MASK = 0x3FFF;
|
||||||
|
251
mission/devices/devicedefinitions/BpxBatteryDefinitions.h
Normal file
251
mission/devices/devicedefinitions/BpxBatteryDefinitions.h
Normal file
@ -0,0 +1,251 @@
|
|||||||
|
#ifndef MISSION_DEVICES_DEVICEDEFINITIONS_BPXBATTERYDEFINITIONS_H_
|
||||||
|
#define MISSION_DEVICES_DEVICEDEFINITIONS_BPXBATTERYDEFINITIONS_H_
|
||||||
|
|
||||||
|
#include <fsfw/datapoollocal/StaticLocalDataSet.h>
|
||||||
|
#include <fsfw/serialize/SerialLinkedListAdapter.h>
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
#include "fsfw/devicehandlers/DeviceHandlerIF.h"
|
||||||
|
|
||||||
|
namespace BpxBattery {
|
||||||
|
|
||||||
|
enum LocalPoolIds {
|
||||||
|
CHARGE_CURRENT = 0,
|
||||||
|
DISCHARGE_CURRENT = 1,
|
||||||
|
HEATER_CURRENT = 2,
|
||||||
|
BATT_VOLTAGE = 3,
|
||||||
|
BATT_TEMP_1 = 4,
|
||||||
|
BATT_TEMP_2 = 5,
|
||||||
|
BATT_TEMP_3 = 6,
|
||||||
|
BATT_TEMP_4 = 7,
|
||||||
|
REBOOT_COUNTER = 8,
|
||||||
|
BOOTCAUSE = 9,
|
||||||
|
|
||||||
|
BATTERY_HEATER_MODE = 10,
|
||||||
|
BATTHEAT_LOW_LIMIT = 11,
|
||||||
|
BATTHEAT_HIGH_LIMIT = 12
|
||||||
|
};
|
||||||
|
|
||||||
|
static constexpr DeviceCommandId_t GET_HK = 0;
|
||||||
|
static constexpr DeviceCommandId_t PING = 1;
|
||||||
|
static constexpr DeviceCommandId_t REBOOT = 2;
|
||||||
|
static constexpr DeviceCommandId_t RESET_COUNTERS = 3;
|
||||||
|
// This is the mnemonic GomSpace chose, but this command actually restores the default config
|
||||||
|
static constexpr DeviceCommandId_t CONFIG_CMD = 4;
|
||||||
|
static constexpr DeviceCommandId_t CONFIG_GET = 5;
|
||||||
|
static constexpr DeviceCommandId_t CONFIG_SET = 6;
|
||||||
|
|
||||||
|
static constexpr DeviceCommandId_t MAN_HEAT_ON = 10;
|
||||||
|
static constexpr DeviceCommandId_t MAN_HEAT_OFF = 11;
|
||||||
|
|
||||||
|
static constexpr uint8_t RESET_COUNTERS_MAGIC_VALUE = 0x42;
|
||||||
|
static constexpr uint8_t DEFAULT_PING_SENT_BYTE = 0x07;
|
||||||
|
|
||||||
|
static constexpr uint32_t HK_SET_ID = GET_HK;
|
||||||
|
static constexpr uint32_t CFG_SET_ID = CONFIG_GET;
|
||||||
|
|
||||||
|
static constexpr size_t GET_HK_REPLY_LEN = 23;
|
||||||
|
static constexpr size_t PING_REPLY_LEN = 3;
|
||||||
|
static constexpr size_t EMPTY_REPLY_LEN = 2;
|
||||||
|
static constexpr size_t CONFIG_GET_REPLY_LEN = 5;
|
||||||
|
|
||||||
|
static constexpr uint8_t PORT_PING = 1;
|
||||||
|
static constexpr uint8_t PORT_REBOOT = 4;
|
||||||
|
static constexpr uint8_t PORT_GET_HK = 9;
|
||||||
|
static constexpr uint8_t PORT_RESET_COUNTERS = 15;
|
||||||
|
static constexpr uint8_t PORT_CONFIG_CMD = 17;
|
||||||
|
static constexpr uint8_t PORT_CONFIG_GET = 18;
|
||||||
|
static constexpr uint8_t PORT_CONFIG_SET = 19;
|
||||||
|
static constexpr uint8_t PORT_MAN_HEAT_ON = 20;
|
||||||
|
static constexpr uint8_t PORT_MAN_HEAT_OFF = 21;
|
||||||
|
|
||||||
|
static constexpr uint8_t HK_ENTRIES = 10;
|
||||||
|
static constexpr uint8_t CFG_ENTRIES = 3;
|
||||||
|
|
||||||
|
// Taken from BPX manual 3.14
|
||||||
|
typedef struct __attribute__((packed)) {
|
||||||
|
//! Mode for battheater [0=OFF,1=Auto]
|
||||||
|
uint8_t battheater_mode;
|
||||||
|
int8_t battheater_low;
|
||||||
|
//! Turn heater on at [degC]
|
||||||
|
int8_t battheater_high;
|
||||||
|
//! Turn heater off at [degC]
|
||||||
|
} bpx_config_t;
|
||||||
|
|
||||||
|
//! Not used for more but might still be useful
|
||||||
|
class BpxHkDeserializer : public SerialLinkedListAdapter<SerializeIF> {
|
||||||
|
public:
|
||||||
|
BpxHkDeserializer() { setLinks(); }
|
||||||
|
|
||||||
|
//! Charge current in mA
|
||||||
|
SerializeElement<uint16_t> chargeCurrent;
|
||||||
|
//! Discharge current in mA
|
||||||
|
SerializeElement<uint16_t> dischargeCurrent;
|
||||||
|
//! Heater current in mA
|
||||||
|
SerializeElement<uint16_t> heaterCurrent;
|
||||||
|
|
||||||
|
//! Battery voltage in mV
|
||||||
|
SerializeElement<uint16_t> battVoltage;
|
||||||
|
//! Battery temperature 1 in degC
|
||||||
|
SerializeElement<int16_t> battTemp1;
|
||||||
|
//! Battery temperature 2 in degC
|
||||||
|
SerializeElement<int16_t> battTemp2;
|
||||||
|
//! Battery temperature 3 in degC
|
||||||
|
SerializeElement<int16_t> battTemp3;
|
||||||
|
//! Battery temperature 4 in degC
|
||||||
|
SerializeElement<int16_t> battTemp4;
|
||||||
|
|
||||||
|
SerializeElement<uint32_t> rebootCounter;
|
||||||
|
SerializeElement<uint8_t> bootcause;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void setLinks() {
|
||||||
|
setStart(&chargeCurrent);
|
||||||
|
chargeCurrent.setNext(&dischargeCurrent);
|
||||||
|
dischargeCurrent.setNext(&heaterCurrent);
|
||||||
|
heaterCurrent.setNext(&battVoltage);
|
||||||
|
battVoltage.setNext(&battTemp1);
|
||||||
|
battTemp1.setNext(&battTemp2);
|
||||||
|
battTemp2.setNext(&battTemp3);
|
||||||
|
battTemp3.setNext(&battTemp4);
|
||||||
|
battTemp4.setNext(&rebootCounter);
|
||||||
|
rebootCounter.setNext(&bootcause);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
}; // namespace BpxBattery
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief BPX HK data holder
|
||||||
|
*/
|
||||||
|
class BpxBatteryHk : public StaticLocalDataSet<BpxBattery::HK_ENTRIES> {
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* Constructor for data users
|
||||||
|
* @param gyroId
|
||||||
|
*/
|
||||||
|
BpxBatteryHk(object_id_t bpxId) : StaticLocalDataSet(sid_t(bpxId, BpxBattery::HK_SET_ID)) {
|
||||||
|
setAllVariablesReadOnly();
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t parseRawHk(const uint8_t* data, size_t size) {
|
||||||
|
size_t remSize = size;
|
||||||
|
ReturnValue_t result =
|
||||||
|
chargeCurrent.deSerialize(&data, &remSize, SerializeIF::Endianness::NETWORK);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = dischargeCurrent.deSerialize(&data, &remSize, SerializeIF::Endianness::NETWORK);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = heaterCurrent.deSerialize(&data, &remSize, SerializeIF::Endianness::NETWORK);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = battVoltage.deSerialize(&data, &remSize, SerializeIF::Endianness::NETWORK);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = battTemp1.deSerialize(&data, &remSize, SerializeIF::Endianness::NETWORK);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = battTemp2.deSerialize(&data, &remSize, SerializeIF::Endianness::NETWORK);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = battTemp3.deSerialize(&data, &remSize, SerializeIF::Endianness::NETWORK);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = battTemp4.deSerialize(&data, &remSize, SerializeIF::Endianness::NETWORK);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = rebootCounter.deSerialize(&data, &remSize, SerializeIF::Endianness::NETWORK);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = bootcause.deSerialize(&data, &remSize, SerializeIF::Endianness::NETWORK);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Charge current in mA
|
||||||
|
lp_var_t<uint16_t> chargeCurrent =
|
||||||
|
lp_var_t<uint16_t>(sid.objectId, BpxBattery::CHARGE_CURRENT, this);
|
||||||
|
//! Discharge current in mA
|
||||||
|
lp_var_t<uint16_t> dischargeCurrent =
|
||||||
|
lp_var_t<uint16_t>(sid.objectId, BpxBattery::DISCHARGE_CURRENT, this);
|
||||||
|
//! Heater current in mA
|
||||||
|
lp_var_t<uint16_t> heaterCurrent =
|
||||||
|
lp_var_t<uint16_t>(sid.objectId, BpxBattery::HEATER_CURRENT, this);
|
||||||
|
|
||||||
|
//! Battery voltage in mV
|
||||||
|
lp_var_t<uint16_t> battVoltage = lp_var_t<uint16_t>(sid.objectId, BpxBattery::BATT_VOLTAGE, this);
|
||||||
|
//! Battery temperature 1 in degC
|
||||||
|
lp_var_t<int16_t> battTemp1 = lp_var_t<int16_t>(sid.objectId, BpxBattery::BATT_TEMP_1, this);
|
||||||
|
//! Battery temperature 2 in degC
|
||||||
|
lp_var_t<int16_t> battTemp2 = lp_var_t<int16_t>(sid.objectId, BpxBattery::BATT_TEMP_2, this);
|
||||||
|
//! Battery temperature 3 in degC
|
||||||
|
lp_var_t<int16_t> battTemp3 = lp_var_t<int16_t>(sid.objectId, BpxBattery::BATT_TEMP_3, this);
|
||||||
|
//! Battery temperature 4 in degC
|
||||||
|
lp_var_t<int16_t> battTemp4 = lp_var_t<int16_t>(sid.objectId, BpxBattery::BATT_TEMP_4, this);
|
||||||
|
lp_var_t<uint32_t> rebootCounter =
|
||||||
|
lp_var_t<uint32_t>(sid.objectId, BpxBattery::REBOOT_COUNTER, this);
|
||||||
|
lp_var_t<uint8_t> bootcause = lp_var_t<uint8_t>(sid.objectId, BpxBattery::BOOTCAUSE, this);
|
||||||
|
|
||||||
|
private:
|
||||||
|
friend class BpxBatteryHandler;
|
||||||
|
/**
|
||||||
|
* Constructor for data creator
|
||||||
|
* @param hkOwner
|
||||||
|
*/
|
||||||
|
BpxBatteryHk(HasLocalDataPoolIF* hkOwner) : StaticLocalDataSet(hkOwner, BpxBattery::HK_SET_ID) {}
|
||||||
|
};
|
||||||
|
|
||||||
|
class BpxBatteryCfg : public StaticLocalDataSet<BpxBattery::CFG_ENTRIES> {
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* Constructor for data users
|
||||||
|
* @param gyroId
|
||||||
|
*/
|
||||||
|
BpxBatteryCfg(object_id_t bpxId) : StaticLocalDataSet(sid_t(bpxId, BpxBattery::CFG_SET_ID)) {
|
||||||
|
setAllVariablesReadOnly();
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t parseRawHk(const uint8_t* data, size_t size) {
|
||||||
|
if (size < 3) {
|
||||||
|
return SerializeIF::STREAM_TOO_SHORT;
|
||||||
|
}
|
||||||
|
battheatermode.value = data[0];
|
||||||
|
battheaterLow.value = data[1];
|
||||||
|
battheaterHigh.value = data[2];
|
||||||
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Mode for battheater [0=OFF,1=Auto]
|
||||||
|
lp_var_t<uint8_t> battheatermode =
|
||||||
|
lp_var_t<uint8_t>(sid.objectId, BpxBattery::BATTERY_HEATER_MODE, this);
|
||||||
|
//! Turn heater on at [degC]
|
||||||
|
lp_var_t<int8_t> battheaterLow =
|
||||||
|
lp_var_t<int8_t>(sid.objectId, BpxBattery::BATTHEAT_LOW_LIMIT, this);
|
||||||
|
//! Turn heater off at [degC]
|
||||||
|
lp_var_t<int8_t> battheaterHigh =
|
||||||
|
lp_var_t<int8_t>(sid.objectId, BpxBattery::BATTHEAT_HIGH_LIMIT, this);
|
||||||
|
|
||||||
|
private:
|
||||||
|
friend class BpxBatteryHandler;
|
||||||
|
/**
|
||||||
|
* Constructor for data creator
|
||||||
|
* @param hkOwner
|
||||||
|
*/
|
||||||
|
BpxBatteryCfg(HasLocalDataPoolIF* hkOwner)
|
||||||
|
: StaticLocalDataSet(hkOwner, BpxBattery::CFG_SET_ID) {}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* MISSION_DEVICES_DEVICEDEFINITIONS_BPXBATTERYDEFINITIONS_H_ */
|
@ -390,7 +390,7 @@ class EngHkDataset : public StaticLocalDataSet<ENG_HK_SET_POOL_ENTRIES> {
|
|||||||
lp_var_t<float> coilXCurrentmA = lp_var_t<float>(sid.objectId, COIL_X_CURRENT, this);
|
lp_var_t<float> coilXCurrentmA = lp_var_t<float>(sid.objectId, COIL_X_CURRENT, this);
|
||||||
lp_var_t<float> coilYCurrentmA = lp_var_t<float>(sid.objectId, COIL_Y_CURRENT, this);
|
lp_var_t<float> coilYCurrentmA = lp_var_t<float>(sid.objectId, COIL_Y_CURRENT, this);
|
||||||
lp_var_t<float> coilZCurrentmA = lp_var_t<float>(sid.objectId, COIL_Z_CURRENT, this);
|
lp_var_t<float> coilZCurrentmA = lp_var_t<float>(sid.objectId, COIL_Z_CURRENT, this);
|
||||||
/** All temperatures in [°C] */
|
/** All temperatures in [<EFBFBD>C] */
|
||||||
lp_var_t<uint16_t> coilXTemperature = lp_var_t<uint16_t>(sid.objectId, COIL_X_TEMPERATURE, this);
|
lp_var_t<uint16_t> coilXTemperature = lp_var_t<uint16_t>(sid.objectId, COIL_X_TEMPERATURE, this);
|
||||||
lp_var_t<uint16_t> coilYTemperature = lp_var_t<uint16_t>(sid.objectId, COIL_Y_TEMPERATURE, this);
|
lp_var_t<uint16_t> coilYTemperature = lp_var_t<uint16_t>(sid.objectId, COIL_Y_TEMPERATURE, this);
|
||||||
lp_var_t<uint16_t> coilZTemperature = lp_var_t<uint16_t>(sid.objectId, COIL_Z_TEMPERATURE, this);
|
lp_var_t<uint16_t> coilZTemperature = lp_var_t<uint16_t>(sid.objectId, COIL_Z_TEMPERATURE, this);
|
||||||
@ -477,7 +477,7 @@ class CommandDipolePacket : public SerialLinkedListAdapter<SerializeIF> {
|
|||||||
* Raw magnetic field: [nT]
|
* Raw magnetic field: [nT]
|
||||||
* Calibrated magnetic field: [nT]
|
* Calibrated magnetic field: [nT]
|
||||||
* Coil currents: [mA]
|
* Coil currents: [mA]
|
||||||
* Temperature: [°C]
|
* Temperature: [C]
|
||||||
* The +X self test generates a positive dipole in X direction and measures the magnetic
|
* The +X self test generates a positive dipole in X direction and measures the magnetic
|
||||||
* field with the built-in MTM. The procedure of the test is as follows:
|
* field with the built-in MTM. The procedure of the test is as follows:
|
||||||
* 1. All coils off (INIT step)
|
* 1. All coils off (INIT step)
|
||||||
@ -554,7 +554,7 @@ class PosXSelfTestSet : public StaticLocalDataSet<SELF_TEST_DATASET_ENTRIES> {
|
|||||||
* Raw magnetic field: [nT]
|
* Raw magnetic field: [nT]
|
||||||
* Calibrated magnetic field: [nT]
|
* Calibrated magnetic field: [nT]
|
||||||
* Coil currents: [mA]
|
* Coil currents: [mA]
|
||||||
* Temperature: [°C]
|
* Temperature: [C]
|
||||||
* The -X self test generates a negative dipole in X direction and measures the magnetic
|
* The -X self test generates a negative dipole in X direction and measures the magnetic
|
||||||
* field with the built-in MTM. The procedure of the test is as follows:
|
* field with the built-in MTM. The procedure of the test is as follows:
|
||||||
* 1. All coils off (INIT step)
|
* 1. All coils off (INIT step)
|
||||||
@ -631,7 +631,7 @@ class NegXSelfTestSet : public StaticLocalDataSet<SELF_TEST_DATASET_ENTRIES> {
|
|||||||
* Raw magnetic field: [nT]
|
* Raw magnetic field: [nT]
|
||||||
* Calibrated magnetic field: [nT]
|
* Calibrated magnetic field: [nT]
|
||||||
* Coil currents: [mA]
|
* Coil currents: [mA]
|
||||||
* Temperature: [°C]
|
* Temperature: [C]
|
||||||
* The +Y self test generates a positive dipole in y direction and measures the magnetic
|
* The +Y self test generates a positive dipole in y direction and measures the magnetic
|
||||||
* field with the built-in MTM. The procedure of the test is as follows:
|
* field with the built-in MTM. The procedure of the test is as follows:
|
||||||
* 1. All coils off (INIT step)
|
* 1. All coils off (INIT step)
|
||||||
@ -708,7 +708,7 @@ class PosYSelfTestSet : public StaticLocalDataSet<SELF_TEST_DATASET_ENTRIES> {
|
|||||||
* Raw magnetic field: [nT]
|
* Raw magnetic field: [nT]
|
||||||
* Calibrated magnetic field: [nT]
|
* Calibrated magnetic field: [nT]
|
||||||
* Coil currents: [mA]
|
* Coil currents: [mA]
|
||||||
* Temperature: [°C]
|
* Temperature: [C]
|
||||||
* The -Y self test generates a negative dipole in y direction and measures the magnetic
|
* The -Y self test generates a negative dipole in y direction and measures the magnetic
|
||||||
* field with the built-in MTM. The procedure of the test is as follows:
|
* field with the built-in MTM. The procedure of the test is as follows:
|
||||||
* 1. All coils off (INIT step)
|
* 1. All coils off (INIT step)
|
||||||
@ -785,7 +785,7 @@ class NegYSelfTestSet : public StaticLocalDataSet<SELF_TEST_DATASET_ENTRIES> {
|
|||||||
* Raw magnetic field: [nT]
|
* Raw magnetic field: [nT]
|
||||||
* Calibrated magnetic field: [nT]
|
* Calibrated magnetic field: [nT]
|
||||||
* Coil currents: [mA]
|
* Coil currents: [mA]
|
||||||
* Temperature: [°C]
|
* Temperature: [C]
|
||||||
* The +Z self test generates a positive dipole in z direction and measures the magnetic
|
* The +Z self test generates a positive dipole in z direction and measures the magnetic
|
||||||
* field with the built-in MTM. The procedure of the test is as follows:
|
* field with the built-in MTM. The procedure of the test is as follows:
|
||||||
* 1. All coils off (INIT step)
|
* 1. All coils off (INIT step)
|
||||||
@ -862,7 +862,7 @@ class PosZSelfTestSet : public StaticLocalDataSet<SELF_TEST_DATASET_ENTRIES> {
|
|||||||
* Raw magnetic field: [nT]
|
* Raw magnetic field: [nT]
|
||||||
* Calibrated magnetic field: [nT]
|
* Calibrated magnetic field: [nT]
|
||||||
* Coil currents: [mA]
|
* Coil currents: [mA]
|
||||||
* Temperature: [°C]
|
* Temperature: [C]
|
||||||
* The -Z self test generates a negative dipole in z direction and measures the magnetic
|
* The -Z self test generates a negative dipole in z direction and measures the magnetic
|
||||||
* field with the built-in MTM. The procedure of the test is as follows:
|
* field with the built-in MTM. The procedure of the test is as follows:
|
||||||
* 1. All coils off (INIT step)
|
* 1. All coils off (INIT step)
|
||||||
|
@ -8,4 +8,5 @@ find ./linux -iname *.h -o -iname *.cpp -o -iname *.c | xargs clang-format --sty
|
|||||||
find ./bsp_q7s -iname *.h -o -iname *.cpp -o -iname *.c | xargs clang-format --style=file -i
|
find ./bsp_q7s -iname *.h -o -iname *.cpp -o -iname *.c | xargs clang-format --style=file -i
|
||||||
find ./bsp_linux_board -iname *.h -o -iname *.cpp -o -iname *.c | xargs clang-format --style=file -i
|
find ./bsp_linux_board -iname *.h -o -iname *.cpp -o -iname *.c | xargs clang-format --style=file -i
|
||||||
find ./bsp_hosted -iname *.h -o -iname *.cpp -o -iname *.c | xargs clang-format --style=file -i
|
find ./bsp_hosted -iname *.h -o -iname *.cpp -o -iname *.c | xargs clang-format --style=file -i
|
||||||
|
find ./bsp_egse -iname *.h -o -iname *.cpp -o -iname *.c | xargs clang-format --style=file -i
|
||||||
find ./test -iname *.h -o -iname *.cpp -o -iname *.c | xargs clang-format --style=file -i
|
find ./test -iname *.h -o -iname *.cpp -o -iname *.c | xargs clang-format --style=file -i
|
||||||
|
6
scripts/egse-port.sh
Normal file
6
scripts/egse-port.sh
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
echo "-L 1534:localhost:1534 portforwarding for tcf agent"
|
||||||
|
echo "-L 1537:192.168.133.10:7301 for TMTC commanding using the TCP/IP IF"
|
||||||
|
|
||||||
|
ssh -L 1534:localhost:1534 \
|
||||||
|
-L 1537:localhost:7301 pi@192.168.18.31
|
@ -1,44 +1,75 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
import argparse
|
import argparse
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
args = handle_args()
|
args = handle_args()
|
||||||
cmd = build_cmd(args)
|
cmd = build_cmd(args)
|
||||||
# Run the command
|
# Run the command
|
||||||
print(f'Running command: {cmd}')
|
print(f"Running command: {cmd}")
|
||||||
result = os.system(cmd)
|
result = os.system(cmd)
|
||||||
if result != 0:
|
if result != 0:
|
||||||
print('')
|
print("")
|
||||||
print('Removing problematic SSH key and trying again..')
|
print("Removing problematic SSH key and trying again..")
|
||||||
remove_ssh_key_cmd = 'ssh-keygen -f "${HOME}/.ssh/known_hosts" -R "[localhost]:1535"'
|
remove_ssh_key_cmd = (
|
||||||
|
'ssh-keygen -f "${HOME}/.ssh/known_hosts" -R "[localhost]:1535"'
|
||||||
|
)
|
||||||
os.system(remove_ssh_key_cmd)
|
os.system(remove_ssh_key_cmd)
|
||||||
|
print(f'Running command "{cmd}"')
|
||||||
result = os.system(cmd)
|
result = os.system(cmd)
|
||||||
|
|
||||||
|
|
||||||
def handle_args():
|
def handle_args():
|
||||||
help_string = 'This script copies files to the Q7S as long as port forwarding is active.\n'
|
help_string = (
|
||||||
help_string += 'You can set up port forwarding with ' \
|
"This script copies files to the Q7S as long as port forwarding is active.\n"
|
||||||
'"ssh -L 1535:192.168.133.10:22 <eive-flatsat-ip>" -t /bin/bash'
|
|
||||||
parser = argparse.ArgumentParser(
|
|
||||||
description=help_string
|
|
||||||
)
|
)
|
||||||
|
help_string += (
|
||||||
|
"You can set up port forwarding with "
|
||||||
|
'"ssh -L 1535:192.168.133.10:22 <eive-flatsat-ip>" -t /bin/bash'
|
||||||
|
)
|
||||||
|
parser = argparse.ArgumentParser(description=help_string)
|
||||||
# Optional arguments
|
# Optional arguments
|
||||||
parser.add_argument('-r', '--recursive', dest='recursive', default=False, action='store_true')
|
parser.add_argument(
|
||||||
parser.add_argument('-t', '--target', help='Target destination', default='/tmp')
|
"-r", "--recursive", dest="recursive", default=False, action="store_true"
|
||||||
parser.add_argument('-P', '--port', help='Target port', default=1535)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-t",
|
||||||
|
"--target",
|
||||||
|
help="Target destination. If files are copied to Q7S, will be /tmp by default. "
|
||||||
|
"If files are copied back to host, will be current directory by default",
|
||||||
|
default="",
|
||||||
|
)
|
||||||
|
parser.add_argument("-P", "--port", help="Target port", default=1535)
|
||||||
|
parser.add_argument(
|
||||||
|
"-i",
|
||||||
|
"--invert",
|
||||||
|
default=False,
|
||||||
|
action="store_true",
|
||||||
|
help="Copy from Q7S to host instead. Always copies to current directory.",
|
||||||
|
)
|
||||||
# Positional argument(s)
|
# Positional argument(s)
|
||||||
parser.add_argument('source', help='Source files to copy')
|
parser.add_argument(
|
||||||
|
"source", help="Source files to copy or target files to copy back to host"
|
||||||
|
)
|
||||||
return parser.parse_args()
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
def build_cmd(args):
|
def build_cmd(args):
|
||||||
# Build run command
|
# Build run command
|
||||||
cmd = 'scp '
|
cmd = "scp "
|
||||||
if args.recursive:
|
if args.recursive:
|
||||||
cmd += '-r '
|
cmd += "-r "
|
||||||
cmd += f'-P {args.port} {args.source} root@localhost:'
|
target = args.target
|
||||||
|
if args.invert and target == "":
|
||||||
|
target = "."
|
||||||
|
elif target == "":
|
||||||
|
target = f"/tmp"
|
||||||
|
if args.invert:
|
||||||
|
cmd += f"-P {args.port} root@localhost:{args.source} {target}"
|
||||||
|
else:
|
||||||
|
cmd += f"-P {args.port} {args.source} root@localhost:{target}"
|
||||||
if args.target:
|
if args.target:
|
||||||
cmd += args.target
|
cmd += args.target
|
||||||
return cmd
|
return cmd
|
||||||
|
2
thirdparty/arcsec_star_tracker
vendored
2
thirdparty/arcsec_star_tracker
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 2d10c6b85ea4cab4f4baf1918c51d54eee4202c2
|
Subproject commit aa1ebfc154558dad746a175d2efee52470fddefe
|
2
tmtc
2
tmtc
@ -1 +1 @@
|
|||||||
Subproject commit 2e326da175bb0e806b460507ddcf2977cd1a2372
|
Subproject commit 199ffe1a321c09ba9726c87413045f8b32f40e90
|
Loading…
Reference in New Issue
Block a user