Merge pull request 'lets see if this fixes issues' (#378) from refactor_tcs_acs_and_scheduling into develop
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #378 Reviewed-by: Marius Eggert <eggertm@irs.uni-stuttgart.de>
This commit is contained in:
commit
af8caca3f6
@ -17,6 +17,11 @@ change warranting a new major release:
|
|||||||
|
|
||||||
# [unreleased]
|
# [unreleased]
|
||||||
|
|
||||||
|
## Changed
|
||||||
|
|
||||||
|
- Remove 2 TCS threads.
|
||||||
|
- Move low level polling into ACS PST, move high level device handlers into TCS system task.
|
||||||
|
|
||||||
# [v1.27.1] 2023-02-13
|
# [v1.27.1] 2023-02-13
|
||||||
|
|
||||||
## Fixed
|
## Fixed
|
||||||
|
@ -214,21 +214,9 @@ void scheduling::initTasks() {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if OBSW_ADD_RTD_DEVICES == 1
|
|
||||||
PeriodicTaskIF* tcsPollingTask = factory->createPeriodicTask(
|
|
||||||
"TCS_POLLING_TASK", 75, PeriodicTaskIF::MINIMUM_STACK_SIZE * 2, 0.5, missedDeadlineFunc);
|
|
||||||
result = tcsPollingTask->addComponent(objects::SPI_RTD_COM_IF);
|
|
||||||
if (result != returnvalue::OK) {
|
|
||||||
scheduling::printAddObjectError("SPI_RTD_POLLING", objects::SPI_RTD_COM_IF);
|
|
||||||
}
|
|
||||||
|
|
||||||
PeriodicTaskIF* tcsTask = factory->createPeriodicTask(
|
|
||||||
"TCS_TASK", 55, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.8, missedDeadlineFunc);
|
|
||||||
scheduling::scheduleRtdSensors(tcsTask);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
PeriodicTaskIF* tcsSystemTask = factory->createPeriodicTask(
|
PeriodicTaskIF* tcsSystemTask = factory->createPeriodicTask(
|
||||||
"TCS_TASK", 45, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.5, missedDeadlineFunc);
|
"TCS_TASK", 55, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.5, missedDeadlineFunc);
|
||||||
|
scheduling::scheduleRtdSensors(tcsSystemTask);
|
||||||
result = tcsSystemTask->addComponent(objects::TCS_SUBSYSTEM);
|
result = tcsSystemTask->addComponent(objects::TCS_SUBSYSTEM);
|
||||||
if (result != returnvalue::OK) {
|
if (result != returnvalue::OK) {
|
||||||
scheduling::printAddObjectError("TCS_SUBSYSTEM", objects::TCS_SUBSYSTEM);
|
scheduling::printAddObjectError("TCS_SUBSYSTEM", objects::TCS_SUBSYSTEM);
|
||||||
@ -364,10 +352,6 @@ void scheduling::initTasks() {
|
|||||||
gpsTask->startTask();
|
gpsTask->startTask();
|
||||||
#endif
|
#endif
|
||||||
acsSysTask->startTask();
|
acsSysTask->startTask();
|
||||||
#if OBSW_ADD_RTD_DEVICES == 1
|
|
||||||
tcsPollingTask->startTask();
|
|
||||||
tcsTask->startTask();
|
|
||||||
#endif /* OBSW_ADD_RTD_DEVICES == 1 */
|
|
||||||
if (not tcsSystemTask->isEmpty()) {
|
if (not tcsSystemTask->isEmpty()) {
|
||||||
tcsSystemTask->startTask();
|
tcsSystemTask->startTask();
|
||||||
}
|
}
|
||||||
@ -394,7 +378,7 @@ void scheduling::createPstTasks(TaskFactory& factory, TaskDeadlineMissedFunction
|
|||||||
#endif
|
#endif
|
||||||
FixedTimeslotTaskIF* acsPst = factory.createFixedTimeslotTask(
|
FixedTimeslotTaskIF* acsPst = factory.createFixedTimeslotTask(
|
||||||
"ACS_PST", 85, PeriodicTaskIF::MINIMUM_STACK_SIZE * 2, acsPstPeriod, missedDeadlineFunc);
|
"ACS_PST", 85, PeriodicTaskIF::MINIMUM_STACK_SIZE * 2, acsPstPeriod, missedDeadlineFunc);
|
||||||
result = pst::pstAcs(acsPst, cfg);
|
result = pst::pstTcsAndAcs(acsPst, cfg);
|
||||||
if (result != returnvalue::OK) {
|
if (result != returnvalue::OK) {
|
||||||
if (result == FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
|
if (result == FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
|
||||||
sif::warning << "scheduling::initTasks: ACS PST is empty" << std::endl;
|
sif::warning << "scheduling::initTasks: ACS PST is empty" << std::endl;
|
||||||
|
@ -184,7 +184,7 @@ ReturnValue_t pst::pstTest(FixedTimeslotTaskIF *thisSequence) {
|
|||||||
return returnvalue::OK;
|
return returnvalue::OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t pst::pstAcs(FixedTimeslotTaskIF *thisSequence, AcsPstCfg cfg) {
|
ReturnValue_t pst::pstTcsAndAcs(FixedTimeslotTaskIF *thisSequence, AcsPstCfg cfg) {
|
||||||
/* Length of a communication cycle */
|
/* Length of a communication cycle */
|
||||||
uint32_t length = thisSequence->getPeriodMs();
|
uint32_t length = thisSequence->getPeriodMs();
|
||||||
bool enableAside = true;
|
bool enableAside = true;
|
||||||
@ -684,5 +684,6 @@ ReturnValue_t pst::pstAcs(FixedTimeslotTaskIF *thisSequence, AcsPstCfg cfg) {
|
|||||||
thisSequence->addSlot(objects::RW4, length * config::acs::SCHED_BLOCK_2_PERIOD,
|
thisSequence->addSlot(objects::RW4, length * config::acs::SCHED_BLOCK_2_PERIOD,
|
||||||
DeviceHandlerIF::GET_READ);
|
DeviceHandlerIF::GET_READ);
|
||||||
}
|
}
|
||||||
|
thisSequence->addSlot(objects::SPI_RTD_COM_IF, length * 0.5, 0);
|
||||||
return returnvalue::OK;
|
return returnvalue::OK;
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,7 @@ ReturnValue_t pstGompaceCan(FixedTimeslotTaskIF* thisSequence);
|
|||||||
|
|
||||||
ReturnValue_t pstSpiAndSyrlinks(FixedTimeslotTaskIF* thisSequence);
|
ReturnValue_t pstSpiAndSyrlinks(FixedTimeslotTaskIF* thisSequence);
|
||||||
|
|
||||||
ReturnValue_t pstAcs(FixedTimeslotTaskIF* thisSequence, AcsPstCfg cfg);
|
ReturnValue_t pstTcsAndAcs(FixedTimeslotTaskIF* thisSequence, AcsPstCfg cfg);
|
||||||
|
|
||||||
ReturnValue_t pstI2c(FixedTimeslotTaskIF* thisSequence);
|
ReturnValue_t pstI2c(FixedTimeslotTaskIF* thisSequence);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user