linux working

This commit is contained in:
2020-09-16 16:22:36 +02:00
parent 6f6eceef6f
commit ffcb6e0213
47 changed files with 1926 additions and 6 deletions

116
config/objects/Factory.cpp Normal file
View File

@ -0,0 +1,116 @@
#include <Factory.h>
#include <systemObjectList.h>
#include <dataPoolInit.h>
#include <apid.h>
#include <pusIds.h>
#include <mission/utility/TimeStamper.h>
#include <mission/utility/TmFunnel.h>
#include <fsfw/events/EventManager.h>
#include <fsfw/health/HealthTable.h>
#include <fsfw/internalError/InternalErrorReporter.h>
#include <fsfw/objectmanager/frameworkObjects.h>
#include <fsfw/storagemanager/PoolManager.h>
#include <fsfw/tcdistribution/CCSDSDistributor.h>
#include <fsfw/tcdistribution/PUSDistributor.h>
#include <fsfw/tmtcpacket/pus/TmPacketStored.h>
#include <fsfw/tmtcservices/PusServiceBase.h>
#include <fsfw/pus/Service1TelecommandVerification.h>
#include <fsfw/pus/Service2DeviceAccess.h>
#include <fsfw/pus/Service5EventReporting.h>
#include <fsfw/pus/Service8FunctionManagement.h>
#include <fsfw/pus/CService200ModeCommanding.h>
#include <fsfw/osal/linux/TmTcUnixUdpBridge.h>
#include <fsfw/osal/linux/TcUnixUdpPollingTask.h>
#include <fsfw/pus/Service17Test.h>
#include <test/testtasks/TestTask.h>
#include <cstdint>
/**
* @brief Produces system objects.
* @details
* Build tasks by using SystemObject Interface (Interface).
* Header files of all tasks must be included
* Please note that an object has to implement the system object interface
* if the interface validity is checked or retrieved later by using the
* get<TargetInterface>(object_id) function from the ObjectManagerIF.
*
* Framework objects are created first.
*
* @ingroup init
*/
void Factory::produce(void) {
setStaticFrameworkObjectIds();
new EventManager(objects::EVENT_MANAGER);
new HealthTable(objects::HEALTH_TABLE);
new InternalErrorReporter(objects::INTERNAL_ERROR_REPORTER,
datapool::INTERNAL_ERROR_FULL_MSG_QUEUES,
datapool::INTERNAL_ERROR_MISSED_LIVE_TM,
datapool::INTERNAL_ERROR_STORE_FULL);
/* Pool manager handles storage und mutexes */
/* Data Stores. Currently reserving 9600 bytes of memory */
uint16_t numberOfElements[4] = {100, 30, 20, 10};
uint16_t sizeOfElements[4] = {32, 64, 128, 256};
new PoolManager<4>(objects::IPC_STORE, sizeOfElements, numberOfElements);
new PoolManager<4>(objects::TM_STORE, sizeOfElements, numberOfElements);
new PoolManager<4>(objects::TC_STORE, sizeOfElements, numberOfElements);
new TimeStamper(objects::PUS_TIME);
/* Distributor Tasks */
new CCSDSDistributor(apid::EIVE_OBSW, objects::CCSDS_PACKET_DISTRIBUTOR);
new PUSDistributor(apid::EIVE_OBSW, objects::PUS_PACKET_DISTRIBUTOR,
objects::CCSDS_PACKET_DISTRIBUTOR);
/* TM Destination */
new TmFunnel(objects::PUS_FUNNEL);
new TmTcUnixUdpBridge(objects::UDP_BRIDGE,
objects::CCSDS_PACKET_DISTRIBUTOR, objects::TM_STORE,
objects::TC_STORE);
new TcUnixUdpPollingTask(objects::UDP_POLLING_TASK,
objects::UDP_BRIDGE);
/* PUS Service Base Services */
new Service1TelecommandVerification(objects::PUS_SERVICE_1,
apid::EIVE_OBSW, pus::PUS_SERVICE_1, objects::PUS_FUNNEL);
new Service5EventReporting(objects::PUS_SERVICE_5, apid::EIVE_OBSW,
pus::PUS_SERVICE_5);
new Service17Test(objects::PUS_SERVICE_17, apid::EIVE_OBSW,
pus::PUS_SERVICE_17);
/* Commanding Service Base Services */
new Service2DeviceAccess(objects::PUS_SERVICE_2, apid::EIVE_OBSW,
pus::PUS_SERVICE_2);
new Service8FunctionManagement(objects::PUS_SERVICE_8, apid::EIVE_OBSW,
pus::PUS_SERVICE_8);
new CService200ModeCommanding(objects::PUS_SERVICE_200, apid::EIVE_OBSW,
pus::PUS_SERVICE_200);
/* Test Tasks */
// CookieIF* dummyCookie = new DummyCookie(0);
// new DummyEchoComIF(objects::DUMMY_INTERFACE);
// new TestDevice(objects::DUMMY_HANDLER, objects::DUMMY_INTERFACE,
// dummyCookie, true);
new TestTask(objects::TEST_TASK);
}
void Factory::setStaticFrameworkObjectIds() {
PusServiceBase::packetSource = objects::PUS_PACKET_DISTRIBUTOR;
PusServiceBase::packetDestination = objects::PUS_FUNNEL;
CommandingServiceBase::defaultPacketSource = objects::PUS_PACKET_DISTRIBUTOR;
CommandingServiceBase::defaultPacketDestination = objects::PUS_FUNNEL;
VerificationReporter::messageReceiver = objects::PUS_SERVICE_1;
//DeviceHandlerBase::rawDataReceiverId = objects::PUS_SERVICE_2;
//DeviceHandlerBase::powerSwitcherId = objects::NO_OBJECT;
TmPacketStored::timeStamperId = objects::PUS_TIME;
TmFunnel::downlinkDestination = objects::UDP_BRIDGE;
}

16
config/objects/Factory.h Normal file
View File

@ -0,0 +1,16 @@
#ifndef FACTORY_H_
#define FACTORY_H_
#include <fsfw/objectmanager/SystemObjectIF.h>
namespace Factory {
/**
* @brief Creates all SystemObject elements which are persistent
* during execution.
*/
void produce();
void setStaticFrameworkObjectIds();
}
#endif /* FACTORY_H_ */

View File

@ -0,0 +1,37 @@
#ifndef HOSTED_CONFIG_OBJECTS_SYSTEMOBJECTLIST_H_
#define HOSTED_CONFIG_OBJECTS_SYSTEMOBJECTLIST_H_
#include <cstdint>
// The objects will be instantiated in the ID order
namespace objects {
enum sourceObjects: uint32_t {
/* First Byte 0x50-0x52 reserved for PUS Services **/
CCSDS_PACKET_DISTRIBUTOR = 0x50000100,
PUS_PACKET_DISTRIBUTOR = 0x50000200,
UDP_BRIDGE = 0x50000300,
UDP_POLLING_TASK = 0x50000400,
PUS_SERVICE_1 = 0x51000100,
PUS_SERVICE_2 = 0x51000200,
PUS_SERVICE_3 = 0x51000300,
PUS_SERVICE_5 = 0x51000400,
PUS_SERVICE_6 = 0x51000500,
PUS_SERVICE_8 = 0x51000800,
PUS_SERVICE_9 = 0x51000900,
PUS_SERVICE_17 = 0x51001700,
PUS_SERVICE_23 = 0x51002300,
PUS_SERVICE_200 = 0x51020000,
PUS_SERVICE_201 = 0x51020100,
PUS_TIME = 0x52000001,
PUS_FUNNEL = 0x52000002,
/* Test Task */
TEST_TASK = 0x42694269,
DUMMY_INTERFACE = 0xCAFECAFE,
DUMMY_HANDLER = 0x4400AFFE,
};
}
#endif /* BSP_CONFIG_OBJECTS_SYSTEMOBJECTLIST_H_ */

View File

@ -0,0 +1,242 @@
/* Auto-generated event translation file. Contains 77 translations. */
#include <config/objects/translateObjects.h>
const char *AT91_UART2_TEST_TASK_STRING = "AT91_UART2_TEST_TASK";
const char *ARDUINO_0_STRING = "ARDUINO_0";
const char *ARDUINO_1_STRING = "ARDUINO_1";
const char *ARDUINO_2_STRING = "ARDUINO_2";
const char *ARDUINO_3_STRING = "ARDUINO_3";
const char *ARDUINO_4_STRING = "ARDUINO_4";
const char *AT91_I2C_TEST_TASK_STRING = "AT91_I2C_TEST_TASK";
const char *TEST_TASK_STRING = "TEST_TASK";
const char *PCDU_HANDLER_STRING = "PCDU_HANDLER";
const char *DUMMY_HANDLER_STRING = "DUMMY_HANDLER";
const char *S_ADC1_DEC2_STRING = "S_ADC1_DEC2";
const char *GPS0_HANDLER_STRING = "GPS0_HANDLER";
const char *DLR_PVCH_STRING = "DLR_PVCH";
const char *GYRO1_STRING = "GYRO1";
const char *DLR_IRAS_STRING = "DLR_IRAS";
const char *_DEC1_O1_STRING = "_DEC1_O1";
const char *_DEC1_O2_STRING = "_DEC1_O2";
const char *S1_DEC1_O3_STRING = "S1_DEC1_O3";
const char *S2_DEC1_O4_STRING = "S2_DEC1_O4";
const char *S3_DEC1_O5_STRING = "S3_DEC1_O5";
const char *PT1000_PVHC_DEC1_O6_STRING = "PT1000_PVHC_DEC1_O6";
const char *PT1000_CCSDS1_DEC2_STRING = "PT1000_CCSDS1_DEC2";
const char *PT1000_MGT1_DEC2_STRING = "PT1000_MGT1_DEC2";
const char *S4_DEC2_STRING = "S4_DEC2";
const char *S5_DEC2_STRING = "S5_DEC2";
const char *S6_DEC2_STRING = "S6_DEC2";
const char *PT1000_PVCH_DEC2_STRING = "PT1000_PVCH_DEC2";
const char *_DEC3_STRING = "_DEC3";
const char *PT1000_CCSDS2_DEC3_STRING = "PT1000_CCSDS2_DEC3";
const char *S7_DEC3_STRING = "S7_DEC3";
const char *S8_DEC3_STRING = "S8_DEC3";
const char *PT1000_PVCH_DEC3_STRING = "PT1000_PVCH_DEC3";
const char *GYRO2_STRING = "GYRO2";
const char *PT1000_PLOC_DEC4_STRING = "PT1000_PLOC_DEC4";
const char *S9_DEC4_STRING = "S9_DEC4";
const char *S10_DEC4_STRING = "S10_DEC4";
const char *PT1000_PVHC_DEC4_STRING = "PT1000_PVHC_DEC4";
const char *S_ADC_DEC4_STRING = "S_ADC_DEC4";
const char *GPS1_HANDLER_STRING = "GPS1_HANDLER";
const char *DUMMY_GPS_COM_IF_STRING = "DUMMY_GPS_COM_IF";
const char *RS232_DEVICE_COM_IF_STRING = "RS232_DEVICE_COM_IF";
const char *I2C_DEVICE_COM_IF_STRING = "I2C_DEVICE_COM_IF";
const char *GPIO_DEVICE_COM_IF_STRING = "GPIO_DEVICE_COM_IF";
const char *SPI_POLLING_TASK_STRING = "SPI_POLLING_TASK";
const char *SPI_DEVICE_COM_IF_STRING = "SPI_DEVICE_COM_IF";
const char *DUMMY_ECHO_COM_IF_STRING = "DUMMY_ECHO_COM_IF";
const char *SD_CARD_HANDLER_STRING = "SD_CARD_HANDLER";
const char *CCSDS_PACKET_DISTRIBUTOR_STRING = "CCSDS_PACKET_DISTRIBUTOR";
const char *PUS_PACKET_DISTRIBUTOR_STRING = "PUS_PACKET_DISTRIBUTOR";
const char *UDP_TMTC_BRIDGE_STRING = "UDP_TMTC_BRIDGE";
const char *EMAC_POLLING_TASK_STRING = "EMAC_POLLING_TASK";
const char *SERIAL_POLLING_TASK_STRING = "SERIAL_POLLING_TASK";
const char *UART_TMTC_BRIDGE_STRING = "UART_TMTC_BRIDGE";
const char *PUS_SERVICE_1_STRING = "PUS_SERVICE_1";
const char *PUS_SERVICE_2_STRING = "PUS_SERVICE_2";
const char *PUS_SERVICE_3_STRING = "PUS_SERVICE_3";
const char *PUS_SERVICE_5_STRING = "PUS_SERVICE_5";
const char *PUS_SERVICE_6_STRING = "PUS_SERVICE_6";
const char *PUS_SERVICE_8_STRING = "PUS_SERVICE_8";
const char *PUS_SERVICE_9_STRING = "PUS_SERVICE_9";
const char *PUS_SERVICE_17_STRING = "PUS_SERVICE_17";
const char *PUS_SERVICE_23_STRING = "PUS_SERVICE_23";
const char *PUS_SERVICE_200_STRING = "PUS_SERVICE_200";
const char *PUS_SERVICE_201_STRING = "PUS_SERVICE_201";
const char *PUS_TIME_STRING = "PUS_TIME";
const char *PUS_FUNNEL_STRING = "PUS_FUNNEL";
const char *HEALTH_TABLE_STRING = "HEALTH_TABLE";
const char *MODE_STORE_STRING = "MODE_STORE";
const char *EVENT_MANAGER_STRING = "EVENT_MANAGER";
const char *INTERNAL_ERROR_REPORTER_STRING = "INTERNAL_ERROR_REPORTER";
const char *TC_STORE_STRING = "TC_STORE";
const char *TM_STORE_STRING = "TM_STORE";
const char *IPC_STORE_STRING = "IPC_STORE";
const char *AT91_SPI_TEST_TASK_STRING = "AT91_SPI_TEST_TASK";
const char *STM32_TEST_TASK_STRING = "STM32_TEST_TASK";
const char *AT91_UART0_TEST_TASK_STRING = "AT91_UART0_TEST_TASK";
const char *NO_OBJECT_STRING = "NO_OBJECT";
const char* translateObject(object_id_t object){
switch((object&0xFFFFFFFF)){
case 0x000123336:
return AT91_UART2_TEST_TASK_STRING;
case 0x01010100:
return ARDUINO_0_STRING;
case 0x01010101:
return ARDUINO_1_STRING;
case 0x01010102:
return ARDUINO_2_STRING;
case 0x01010103:
return ARDUINO_3_STRING;
case 0x01010104:
return ARDUINO_4_STRING;
case 0x12345678:
return AT91_I2C_TEST_TASK_STRING;
case 0x42694269:
return TEST_TASK_STRING;
case 0x44003200:
return PCDU_HANDLER_STRING;
case 0x4400AFFE:
return DUMMY_HANDLER_STRING;
case 0x44020108:
return S_ADC1_DEC2_STRING;
case 0x44101F00:
return GPS0_HANDLER_STRING;
case 0x44104000:
return DLR_PVCH_STRING;
case 0x44105000:
return GYRO1_STRING;
case 0x44106000:
return DLR_IRAS_STRING;
case 0x44115401:
return _DEC1_O1_STRING;
case 0x44115402:
return _DEC1_O2_STRING;
case 0x44115404:
return S1_DEC1_O3_STRING;
case 0x44115405:
return S2_DEC1_O4_STRING;
case 0x44115406:
return S3_DEC1_O5_STRING;
case 0x44115407:
return PT1000_PVHC_DEC1_O6_STRING;
case 0x44125401:
return PT1000_CCSDS1_DEC2_STRING;
case 0x44125403:
return PT1000_MGT1_DEC2_STRING;
case 0x44125404:
return S4_DEC2_STRING;
case 0x44125405:
return S5_DEC2_STRING;
case 0x44125406:
return S6_DEC2_STRING;
case 0x44125407:
return PT1000_PVCH_DEC2_STRING;
case 0x44130301:
return _DEC3_STRING;
case 0x44130302:
return PT1000_CCSDS2_DEC3_STRING;
case 0x44130305:
return S7_DEC3_STRING;
case 0x44130306:
return S8_DEC3_STRING;
case 0x44130307:
return PT1000_PVCH_DEC3_STRING;
case 0x44130308:
return GYRO2_STRING;
case 0x44145401:
return PT1000_PLOC_DEC4_STRING;
case 0x44145404:
return S9_DEC4_STRING;
case 0x44145405:
return S10_DEC4_STRING;
case 0x44145406:
return PT1000_PVHC_DEC4_STRING;
case 0x44145407:
return S_ADC_DEC4_STRING;
case 0x44202000:
return GPS1_HANDLER_STRING;
case 0x49001F00:
return DUMMY_GPS_COM_IF_STRING;
case 0x49005200:
return RS232_DEVICE_COM_IF_STRING;
case 0x49005300:
return I2C_DEVICE_COM_IF_STRING;
case 0x49005400:
return GPIO_DEVICE_COM_IF_STRING;
case 0x49005410:
return SPI_POLLING_TASK_STRING;
case 0x49005600:
return SPI_DEVICE_COM_IF_STRING;
case 0x4900AFFE:
return DUMMY_ECHO_COM_IF_STRING;
case 0x4D0073AD:
return SD_CARD_HANDLER_STRING;
case 0x50000100:
return CCSDS_PACKET_DISTRIBUTOR_STRING;
case 0x50000200:
return PUS_PACKET_DISTRIBUTOR_STRING;
case 0x50000300:
return UDP_TMTC_BRIDGE_STRING;
case 0x50000400:
return EMAC_POLLING_TASK_STRING;
case 0x50000600:
return SERIAL_POLLING_TASK_STRING;
case 0x5000500:
return UART_TMTC_BRIDGE_STRING;
case 0x51000100:
return PUS_SERVICE_1_STRING;
case 0x51000200:
return PUS_SERVICE_2_STRING;
case 0x51000300:
return PUS_SERVICE_3_STRING;
case 0x51000400:
return PUS_SERVICE_5_STRING;
case 0x51000500:
return PUS_SERVICE_6_STRING;
case 0x51000800:
return PUS_SERVICE_8_STRING;
case 0x51000900:
return PUS_SERVICE_9_STRING;
case 0x51001700:
return PUS_SERVICE_17_STRING;
case 0x51002300:
return PUS_SERVICE_23_STRING;
case 0x51020000:
return PUS_SERVICE_200_STRING;
case 0x51020100:
return PUS_SERVICE_201_STRING;
case 0x52000001:
return PUS_TIME_STRING;
case 0x52000002:
return PUS_FUNNEL_STRING;
case 0x53010000:
return HEALTH_TABLE_STRING;
case 0x53010100:
return MODE_STORE_STRING;
case 0x53030000:
return EVENT_MANAGER_STRING;
case 0x53040000:
return INTERNAL_ERROR_REPORTER_STRING;
case 0x534f0100:
return TC_STORE_STRING;
case 0x534f0200:
return TM_STORE_STRING;
case 0x534f0300:
return IPC_STORE_STRING;
case 0x66666666:
return AT91_SPI_TEST_TASK_STRING;
case 0x77777777:
return STM32_TEST_TASK_STRING;
case 0x87654321:
return AT91_UART0_TEST_TASK_STRING;
case 0xFFFFFFFF:
return NO_OBJECT_STRING;
default:
return "UNKNOWN_OBJECT";
}
return 0;
}

View File

@ -0,0 +1,16 @@
/*
* translateObjects.h
*
* Created on: 28 May 2019
* Author: Robin
*/
#ifndef CONFIG_OBJECTS_TRANSLATEOBJECTS_H_
#define CONFIG_OBJECTS_TRANSLATEOBJECTS_H_
#include <fsfw/objectmanager/ObjectManagerIF.h>
const char* translateObject(object_id_t object);
#endif /* CONFIG_OBJECTS_TRANSLATEOBJECTS_H_ */