ASTP 1.0.0 Local pools

API Changes:

Local Pools:
Pool Managers

Old pool config:

    const uint8_t numberOfIpcPools = 4;
    uint16_t numberOfElements[numberOfIpcPools] = {100, 30, 20, 10};
    uint16_t sizeofElements[numberOfIpcPools] = {32, 64, 128, 265};
    new PoolManager<numberOfIpcPools>(objects::IPC_STORE,sizeofElements,
            numberOfElements);

New pool config:

/* Pool manager handles storage und mutexes */
const LocalPool::LocalPoolConfig poolConfig = {
		{100, 32}, {30, 64}, {20, 128}, {10, 265}
};
new PoolManager(objects::IPC_STORE, poolConfig);
new PoolManager(objects::TM_STORE, poolConfig);
new PoolManager(objects::TC_STORE, poolConfig);
ParameterIF:
  • INVALID_MATRIX_ID is now INVALID_IDENTIFIER_ID (#250)
  • The API of the parameter service has been changed to prevent inconsistencies
    between documentation and actual code and to clarify usage.
  • The parameter ID now consists of:
    1. Domain ID (1 byte)
    2. Unique Identifier (1 byte)
    3. Linear Index (2 bytes)
      The linear index can be used for arrays as well as matrices.
      The parameter load command now explicitly expects the ECSS PTC and PFC
      information as well as the rows and column number. Rows and column will
      default to one, which is equivalent to one scalar parameter (the most
      important use-case)
  • The HasParameterIF has changed, ParameterId is now a uint8_t and the name is uniqueIdentifier (#365)
DeviceHandler
  • DHB has an additional PST Step. This has to be added to your Polling Sequence but gives more control over the DH (#281)
  • Typo for UNKNOWN_DEVICE_REPLY fixed (#320)
  • getTransitionDelayMs is now an abstract method (#320)
Events:
  • Changes in eventId generation (#288)
    • The spelling of the namespaces "EVENT" and "SEVERITY" changed to "event" and "severity"
    • The function to generate a EventId (makeEvent(..)) is more explicit now with the Id as new parameter. This should be preferred over the macro.
Pus Sercices:
  • Service 5 and Service 1 queue depths need to be given as constructor elements (#283)
    • This allows mission code to select how many events/verification messages can be processed
  • All Commanding Service Base instances had a 3 command wide fifo, this can now be changed to any size (#319)
  • VerificationCodes namespace TC_VERIFY is now tc_verification (#309)

static constexpr uint8_t FSFW_CSB_FIFO_DEPTH = 6;

FreeRTOS:
  • extern "C" void vRequestContextSwitchFromISR(); marked extern C so it can be implemented in a C file. (#263)
RTEMS:
  • RTEMS OSAL Updated after tests (#363)
Mutex:
  • MutexHelper is now MutexGuard (#383)
Action:
  • ActionMessage::setCompletionReply now expects the success as dedicated bool
MISC:
  • CCSDSTime.cpp now uses size_t for sizes #315
  • FSFWConfig: USE_MODESTORE for storage of on-the-fly modes is replaced with FSFW_USE_MODESTORE == 1 from FSFWConfig.h (#306)

Enhancement:

Pus Sercices:
  • Added Health Service (#282)
  • Added Hk service (#311)
  • Pus Service 20 (Parameter Service) added (#365)
CMake
  • FSFW Provides cmake files now (#298)
Misc
  • ExtendedController: Controller with HasActionIF has HasLocalDatapoolIF. (#276)
  • DeviceHandlerIF: Command_t NO_COMMAND_ID in DeviceHandlerIF can be used to set a invalid command (#263)
  • Default CFG: Update of Default CFG (#274)
  • PeriodicOperationDivider: Op divider additional features (#286)
  • unittest: Includes for unittest folder relative (#285)
  • objectmanager: objectmanager/frameworkObjects.h new ID added TIME_STAMPER = 0x53500010 (#328)

Bug Fixes:

HostOSAL:
  • Host OSAL MessageQueue Hotfix (#297)
  • Host OSAL bugfixes (#289)
RTEMS:
  • Clock::getDateAndTime conversion corrected #344
  • Important Bug fix in MesseQueue.cpp #395
Linux:
  • Important Bug fix in MesseQueue.cpp #394
MISC:
  • Bugfixes discovered during coverity checks #398
2021-05-01
100% Completed