done
This commit is contained in:
parent
e8e01cf198
commit
21159107d7
@ -19,6 +19,8 @@ will consitute of a breaking change warranting a new major release:
|
|||||||
## Fixed
|
## Fixed
|
||||||
|
|
||||||
- STR: Fix weird issues on datalink layer data reception which sometimes occur.
|
- STR: Fix weird issues on datalink layer data reception which sometimes occur.
|
||||||
|
- Syrlinks FDIR: Fully allow FDIR to do more recoveries. Assembly should take care of preventing
|
||||||
|
the switch to go off.
|
||||||
|
|
||||||
## Changed
|
## Changed
|
||||||
|
|
||||||
@ -28,6 +30,10 @@ will consitute of a breaking change warranting a new major release:
|
|||||||
- `StrHelper` renamed to `StrComHandler`, is now a `DeviceHandlerIF` directly and does not wrap
|
- `StrHelper` renamed to `StrComHandler`, is now a `DeviceHandlerIF` directly and does not wrap
|
||||||
a separate UART COM interface anymore.
|
a separate UART COM interface anymore.
|
||||||
- TCS: Local pool variables are members now.
|
- TCS: Local pool variables are members now.
|
||||||
|
- Syrlinks: Create dedicated COM helper which uses a ring buffer to parse the Syrlinks datalinklayer
|
||||||
|
and should make communication more reliable even on high CPU loads.
|
||||||
|
- Syrlinks: Two communication cycles per PST.
|
||||||
|
- Fine-tuning of various task priorities.
|
||||||
|
|
||||||
# [v1.39.1] 2023-03-22
|
# [v1.39.1] 2023-03-22
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @brief Auto-generated event translation file. Contains 279 translations.
|
* @brief Auto-generated event translation file. Contains 278 translations.
|
||||||
* @details
|
* @details
|
||||||
* Generated on: 2023-03-24 01:19:39
|
* Generated on: 2023-03-24 02:13:12
|
||||||
*/
|
*/
|
||||||
#include "translateEvents.h"
|
#include "translateEvents.h"
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* @brief Auto-generated object translation file.
|
* @brief Auto-generated object translation file.
|
||||||
* @details
|
* @details
|
||||||
* Contains 169 translations.
|
* Contains 169 translations.
|
||||||
* Generated on: 2023-03-24 01:19:39
|
* Generated on: 2023-03-24 02:13:12
|
||||||
*/
|
*/
|
||||||
#include "translateObjects.h"
|
#include "translateObjects.h"
|
||||||
|
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
/*******************************************************************/
|
/*******************************************************************/
|
||||||
|
|
||||||
#define OBSW_ENABLE_PERIODIC_HK 0
|
#define OBSW_ENABLE_PERIODIC_HK 0
|
||||||
#define OBSW_ENABLE_SYRLINKS_TRANSMIT_TIMEOUT 0
|
|
||||||
// This switch will cause the SW to command the EIVE system object to safe mode. This will
|
// This switch will cause the SW to command the EIVE system object to safe mode. This will
|
||||||
// trigger a lot of events, so it can make sense to disable this for debugging purposes
|
// trigger a lot of events, so it can make sense to disable this for debugging purposes
|
||||||
#define OBSW_COMMAND_SAFE_MODE_AT_STARTUP 1
|
#define OBSW_COMMAND_SAFE_MODE_AT_STARTUP 1
|
||||||
|
@ -81,7 +81,7 @@ void scheduling::initTasks() {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
PeriodicTaskIF* coreCtrlTask = factory->createPeriodicTask(
|
PeriodicTaskIF* coreCtrlTask = factory->createPeriodicTask(
|
||||||
"CORE_CTRL", 60, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.4, missedDeadlineFunc);
|
"CORE_CTRL", 55, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.4, missedDeadlineFunc);
|
||||||
result = coreCtrlTask->addComponent(objects::CORE_CONTROLLER);
|
result = coreCtrlTask->addComponent(objects::CORE_CONTROLLER);
|
||||||
if (result != returnvalue::OK) {
|
if (result != returnvalue::OK) {
|
||||||
scheduling::printAddObjectError("CORE_CTRL", objects::CORE_CONTROLLER);
|
scheduling::printAddObjectError("CORE_CTRL", objects::CORE_CONTROLLER);
|
||||||
@ -120,7 +120,7 @@ void scheduling::initTasks() {
|
|||||||
#if OBSW_ADD_TCPIP_SERVERS == 1
|
#if OBSW_ADD_TCPIP_SERVERS == 1
|
||||||
#if OBSW_ADD_TMTC_UDP_SERVER == 1
|
#if OBSW_ADD_TMTC_UDP_SERVER == 1
|
||||||
PeriodicTaskIF* udpPollingTask = factory->createPeriodicTask(
|
PeriodicTaskIF* udpPollingTask = factory->createPeriodicTask(
|
||||||
"UDP_TMTC_POLLING", 65, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
|
"UDP_TMTC_POLLING", 55, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
|
||||||
result = udpPollingTask->addComponent(objects::UDP_TMTC_POLLING_TASK);
|
result = udpPollingTask->addComponent(objects::UDP_TMTC_POLLING_TASK);
|
||||||
if (result != returnvalue::OK) {
|
if (result != returnvalue::OK) {
|
||||||
scheduling::printAddObjectError("UDP_POLLING", objects::UDP_TMTC_POLLING_TASK);
|
scheduling::printAddObjectError("UDP_POLLING", objects::UDP_TMTC_POLLING_TASK);
|
||||||
@ -128,7 +128,7 @@ void scheduling::initTasks() {
|
|||||||
#endif
|
#endif
|
||||||
#if OBSW_ADD_TMTC_TCP_SERVER == 1
|
#if OBSW_ADD_TMTC_TCP_SERVER == 1
|
||||||
PeriodicTaskIF* tcpPollingTask = factory->createPeriodicTask(
|
PeriodicTaskIF* tcpPollingTask = factory->createPeriodicTask(
|
||||||
"TCP_TMTC_POLLING", 65, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
|
"TCP_TMTC_POLLING", 55, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
|
||||||
result = tcpPollingTask->addComponent(objects::TCP_TMTC_POLLING_TASK);
|
result = tcpPollingTask->addComponent(objects::TCP_TMTC_POLLING_TASK);
|
||||||
if (result != returnvalue::OK) {
|
if (result != returnvalue::OK) {
|
||||||
scheduling::printAddObjectError("UDP_POLLING", objects::TCP_TMTC_POLLING_TASK);
|
scheduling::printAddObjectError("UDP_POLLING", objects::TCP_TMTC_POLLING_TASK);
|
||||||
@ -309,7 +309,7 @@ void scheduling::initTasks() {
|
|||||||
|
|
||||||
#if OBSW_ADD_SYRLINKS == 1
|
#if OBSW_ADD_SYRLINKS == 1
|
||||||
PeriodicTaskIF* syrlinksCom = factory->createPeriodicTask(
|
PeriodicTaskIF* syrlinksCom = factory->createPeriodicTask(
|
||||||
"SYRLINKS_COM", 60, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.0, missedDeadlineFunc);
|
"SYRLINKS_COM", 65, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.0, missedDeadlineFunc);
|
||||||
result = syrlinksCom->addComponent(objects::SYRLINKS_COM_HANDLER);
|
result = syrlinksCom->addComponent(objects::SYRLINKS_COM_HANDLER);
|
||||||
if (result != returnvalue::OK) {
|
if (result != returnvalue::OK) {
|
||||||
scheduling::printAddObjectError("SYRLINKS_COM", objects::SYRLINKS_COM_HANDLER);
|
scheduling::printAddObjectError("SYRLINKS_COM", objects::SYRLINKS_COM_HANDLER);
|
||||||
@ -487,7 +487,7 @@ void scheduling::createPstTasks(TaskFactory& factory, TaskDeadlineMissedFunction
|
|||||||
/* Polling Sequence Table Default */
|
/* Polling Sequence Table Default */
|
||||||
#if OBSW_ADD_SPI_TEST_CODE == 0
|
#if OBSW_ADD_SPI_TEST_CODE == 0
|
||||||
FixedTimeslotTaskIF* syrlinksPst = factory.createFixedTimeslotTask(
|
FixedTimeslotTaskIF* syrlinksPst = factory.createFixedTimeslotTask(
|
||||||
"SYRLINKS", 45, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 0.5, missedDeadlineFunc);
|
"SYRLINKS", 65, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 0.5, missedDeadlineFunc);
|
||||||
result = pst::pstSyrlinks(syrlinksPst);
|
result = pst::pstSyrlinks(syrlinksPst);
|
||||||
if (result != returnvalue::OK) {
|
if (result != returnvalue::OK) {
|
||||||
if (result == FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
|
if (result == FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
|
||||||
|
@ -239,7 +239,6 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path
|
|||||||
13630;0x353e;SUPV_UPDATE_PROGRESS;INFO;Will be triggered every 5 percent of the update progress. P1: First byte percent, third and fourth byte Sequence Count, P2: Bytes written;linux/devices/ploc/PlocSupvUartMan.h
|
13630;0x353e;SUPV_UPDATE_PROGRESS;INFO;Will be triggered every 5 percent of the update progress. P1: First byte percent, third and fourth byte Sequence Count, P2: Bytes written;linux/devices/ploc/PlocSupvUartMan.h
|
||||||
13631;0x353f;HDLC_FRAME_REMOVAL_ERROR;INFO;No description;linux/devices/ploc/PlocSupvUartMan.h
|
13631;0x353f;HDLC_FRAME_REMOVAL_ERROR;INFO;No description;linux/devices/ploc/PlocSupvUartMan.h
|
||||||
13632;0x3540;HDLC_CRC_ERROR;INFO;No description;linux/devices/ploc/PlocSupvUartMan.h
|
13632;0x3540;HDLC_CRC_ERROR;INFO;No description;linux/devices/ploc/PlocSupvUartMan.h
|
||||||
13700;0x3584;FDIR_REACTION_IGNORED;MEDIUM;No description;mission/devices/devicedefinitions/SyrlinksDefinitions.h
|
|
||||||
13701;0x3585;TX_ON;INFO;Transmitter is on now. P1: Submode, P2: Current default datarate.;mission/devices/devicedefinitions/SyrlinksDefinitions.h
|
13701;0x3585;TX_ON;INFO;Transmitter is on now. P1: Submode, P2: Current default datarate.;mission/devices/devicedefinitions/SyrlinksDefinitions.h
|
||||||
13702;0x3586;TX_OFF;INFO;Transmitter is off now.;mission/devices/devicedefinitions/SyrlinksDefinitions.h
|
13702;0x3586;TX_OFF;INFO;Transmitter is off now.;mission/devices/devicedefinitions/SyrlinksDefinitions.h
|
||||||
13800;0x35e8;MISSING_PACKET;LOW;No description;mission/devices/devicedefinitions/ScexDefinitions.h
|
13800;0x35e8;MISSING_PACKET;LOW;No description;mission/devices/devicedefinitions/ScexDefinitions.h
|
||||||
|
|
@ -239,7 +239,6 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path
|
|||||||
13630;0x353e;SUPV_UPDATE_PROGRESS;INFO;Will be triggered every 5 percent of the update progress. P1: First byte percent, third and fourth byte Sequence Count, P2: Bytes written;linux/devices/ploc/PlocSupvUartMan.h
|
13630;0x353e;SUPV_UPDATE_PROGRESS;INFO;Will be triggered every 5 percent of the update progress. P1: First byte percent, third and fourth byte Sequence Count, P2: Bytes written;linux/devices/ploc/PlocSupvUartMan.h
|
||||||
13631;0x353f;HDLC_FRAME_REMOVAL_ERROR;INFO;No description;linux/devices/ploc/PlocSupvUartMan.h
|
13631;0x353f;HDLC_FRAME_REMOVAL_ERROR;INFO;No description;linux/devices/ploc/PlocSupvUartMan.h
|
||||||
13632;0x3540;HDLC_CRC_ERROR;INFO;No description;linux/devices/ploc/PlocSupvUartMan.h
|
13632;0x3540;HDLC_CRC_ERROR;INFO;No description;linux/devices/ploc/PlocSupvUartMan.h
|
||||||
13700;0x3584;FDIR_REACTION_IGNORED;MEDIUM;No description;mission/devices/devicedefinitions/SyrlinksDefinitions.h
|
|
||||||
13701;0x3585;TX_ON;INFO;Transmitter is on now. P1: Submode, P2: Current default datarate.;mission/devices/devicedefinitions/SyrlinksDefinitions.h
|
13701;0x3585;TX_ON;INFO;Transmitter is on now. P1: Submode, P2: Current default datarate.;mission/devices/devicedefinitions/SyrlinksDefinitions.h
|
||||||
13702;0x3586;TX_OFF;INFO;Transmitter is off now.;mission/devices/devicedefinitions/SyrlinksDefinitions.h
|
13702;0x3586;TX_OFF;INFO;Transmitter is off now.;mission/devices/devicedefinitions/SyrlinksDefinitions.h
|
||||||
13800;0x35e8;MISSING_PACKET;LOW;No description;mission/devices/devicedefinitions/ScexDefinitions.h
|
13800;0x35e8;MISSING_PACKET;LOW;No description;mission/devices/devicedefinitions/ScexDefinitions.h
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @brief Auto-generated event translation file. Contains 279 translations.
|
* @brief Auto-generated event translation file. Contains 278 translations.
|
||||||
* @details
|
* @details
|
||||||
* Generated on: 2023-03-24 01:19:39
|
* Generated on: 2023-03-24 02:13:12
|
||||||
*/
|
*/
|
||||||
#include "translateEvents.h"
|
#include "translateEvents.h"
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* @brief Auto-generated object translation file.
|
* @brief Auto-generated object translation file.
|
||||||
* @details
|
* @details
|
||||||
* Contains 173 translations.
|
* Contains 173 translations.
|
||||||
* Generated on: 2023-03-24 01:19:39
|
* Generated on: 2023-03-24 02:13:12
|
||||||
*/
|
*/
|
||||||
#include "translateObjects.h"
|
#include "translateObjects.h"
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#include <fsfw/ipc/MutexGuard.h>
|
#include <fsfw/ipc/MutexGuard.h>
|
||||||
#include <fsfw/tasks/SemaphoreFactory.h>
|
#include <fsfw/tasks/SemaphoreFactory.h>
|
||||||
#include <fsfw/tasks/TaskFactory.h>
|
#include <fsfw/tasks/TaskFactory.h>
|
||||||
|
#include <fsfw/timemanager/Stopwatch.h>
|
||||||
#include <fsfw_hal/linux/serial/SerialCookie.h>
|
#include <fsfw_hal/linux/serial/SerialCookie.h>
|
||||||
#include <fsfw_hal/linux/serial/helper.h>
|
#include <fsfw_hal/linux/serial/helper.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
@ -23,6 +24,7 @@ ReturnValue_t SyrlinksComHandler::performOperation(uint8_t opCode) {
|
|||||||
state = State::SLEEPING;
|
state = State::SLEEPING;
|
||||||
lock->unlockMutex();
|
lock->unlockMutex();
|
||||||
semaphore->acquire();
|
semaphore->acquire();
|
||||||
|
// Stopwatch watch;
|
||||||
readOneReply();
|
readOneReply();
|
||||||
}
|
}
|
||||||
return returnvalue::OK;
|
return returnvalue::OK;
|
||||||
@ -113,7 +115,7 @@ ReturnValue_t SyrlinksComHandler::handleSerialReception() {
|
|||||||
<< std::endl;
|
<< std::endl;
|
||||||
return FAILED;
|
return FAILED;
|
||||||
} else if (bytesRead > 0) {
|
} else if (bytesRead > 0) {
|
||||||
// sif::info << "Received " << bytesRead << " bytes from the STR" << std::endl;
|
// sif::debug << "Received " << bytesRead << " bytes from the Syrlinks" << std::endl;
|
||||||
// arrayprinter::print(recBuf.data(), bytesRead);
|
// arrayprinter::print(recBuf.data(), bytesRead);
|
||||||
ringBuf.writeData(recBuf.data(), bytesRead);
|
ringBuf.writeData(recBuf.data(), bytesRead);
|
||||||
}
|
}
|
||||||
@ -164,7 +166,7 @@ ReturnValue_t SyrlinksComHandler::readOneReply() {
|
|||||||
ReturnValue_t SyrlinksComHandler::tryReadingOneSyrlinksReply() {
|
ReturnValue_t SyrlinksComHandler::tryReadingOneSyrlinksReply() {
|
||||||
size_t bytesToRead = ringBuf.getAvailableReadData();
|
size_t bytesToRead = ringBuf.getAvailableReadData();
|
||||||
if (bytesToRead == 0) {
|
if (bytesToRead == 0) {
|
||||||
return returnvalue::OK;
|
return NO_PACKET_FOUND;
|
||||||
}
|
}
|
||||||
bool startMarkerFound = false;
|
bool startMarkerFound = false;
|
||||||
size_t startIdx = 0;
|
size_t startIdx = 0;
|
||||||
@ -184,7 +186,7 @@ ReturnValue_t SyrlinksComHandler::tryReadingOneSyrlinksReply() {
|
|||||||
if (startMarkerFound) {
|
if (startMarkerFound) {
|
||||||
{
|
{
|
||||||
MutexGuard mg(lock);
|
MutexGuard mg(lock);
|
||||||
replyLen = idx - startIdx;
|
replyLen = idx - startIdx + 1;
|
||||||
}
|
}
|
||||||
// Copy detected packet to IPC buffer so it can be passed back to the device handler.
|
// Copy detected packet to IPC buffer so it can be passed back to the device handler.
|
||||||
if (replyLen > ipcBuf.size()) {
|
if (replyLen > ipcBuf.size()) {
|
||||||
@ -192,13 +194,14 @@ ReturnValue_t SyrlinksComHandler::tryReadingOneSyrlinksReply() {
|
|||||||
ringBuf.deleteData(idx);
|
ringBuf.deleteData(idx);
|
||||||
return returnvalue::FAILED;
|
return returnvalue::FAILED;
|
||||||
}
|
}
|
||||||
|
// sif::debug << "Detected Syrlinks reply with length " << replyLen << std::endl;
|
||||||
std::memcpy(ipcBuf.data(), recBuf.data() + startIdx, replyLen);
|
std::memcpy(ipcBuf.data(), recBuf.data() + startIdx, replyLen);
|
||||||
ringBuf.deleteData(idx);
|
ringBuf.deleteData(idx + 1);
|
||||||
return returnvalue::OK;
|
return returnvalue::OK;
|
||||||
} else {
|
} else {
|
||||||
// Probably lost a packet. Discard broken packet.
|
// Probably lost a packet. Discard broken packet.
|
||||||
sif::warning << "SyrlinksComHandler: Detected 2 consecutive end markers" << std::endl;
|
sif::warning << "SyrlinksComHandler: Detected 2 consecutive end markers" << std::endl;
|
||||||
ringBuf.deleteData(idx);
|
ringBuf.deleteData(idx + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ class SyrlinksComHandler : public DeviceCommunicationIF,
|
|||||||
SemaphoreIF *semaphore;
|
SemaphoreIF *semaphore;
|
||||||
int serialPort = 0;
|
int serialPort = 0;
|
||||||
struct termios tty {};
|
struct termios tty {};
|
||||||
Countdown replyTimeout{};
|
Countdown replyTimeout = Countdown(2000);
|
||||||
std::array<uint8_t, 2048> recBuf{};
|
std::array<uint8_t, 2048> recBuf{};
|
||||||
SimpleRingBuffer ringBuf;
|
SimpleRingBuffer ringBuf;
|
||||||
std::array<uint8_t, 1024> ipcBuf{};
|
std::array<uint8_t, 1024> ipcBuf{};
|
||||||
|
@ -8,7 +8,7 @@ ReturnValue_t ArcsecDatalinkLayer::checkRingBufForFrame(const uint8_t** decodedF
|
|||||||
size_t& frameLen) {
|
size_t& frameLen) {
|
||||||
size_t currentLen = decodeRingBuf.getAvailableReadData();
|
size_t currentLen = decodeRingBuf.getAvailableReadData();
|
||||||
if (currentLen == 0) {
|
if (currentLen == 0) {
|
||||||
return returnvalue::OK;
|
return DEC_IN_PROGRESS;
|
||||||
}
|
}
|
||||||
decodeRingBuf.readData(rxAnalysisBuffer, currentLen);
|
decodeRingBuf.readData(rxAnalysisBuffer, currentLen);
|
||||||
for (size_t idx = 0; idx < currentLen; idx++) {
|
for (size_t idx = 0; idx < currentLen; idx++) {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @brief Auto-generated event translation file. Contains 279 translations.
|
* @brief Auto-generated event translation file. Contains 278 translations.
|
||||||
* @details
|
* @details
|
||||||
* Generated on: 2023-03-24 01:19:39
|
* Generated on: 2023-03-24 02:13:12
|
||||||
*/
|
*/
|
||||||
#include "translateEvents.h"
|
#include "translateEvents.h"
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* @brief Auto-generated object translation file.
|
* @brief Auto-generated object translation file.
|
||||||
* @details
|
* @details
|
||||||
* Contains 173 translations.
|
* Contains 173 translations.
|
||||||
* Generated on: 2023-03-24 01:19:39
|
* Generated on: 2023-03-24 02:13:12
|
||||||
*/
|
*/
|
||||||
#include "translateObjects.h"
|
#include "translateObjects.h"
|
||||||
|
|
||||||
|
@ -24,8 +24,12 @@ ReturnValue_t pst::pstSyrlinks(FixedTimeslotTaskIF *thisSequence) {
|
|||||||
thisSequence->addSlot(objects::SYRLINKS_HANDLER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
|
thisSequence->addSlot(objects::SYRLINKS_HANDLER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
|
||||||
thisSequence->addSlot(objects::SYRLINKS_HANDLER, length * 0, DeviceHandlerIF::SEND_WRITE);
|
thisSequence->addSlot(objects::SYRLINKS_HANDLER, length * 0, DeviceHandlerIF::SEND_WRITE);
|
||||||
thisSequence->addSlot(objects::SYRLINKS_HANDLER, length * 0, DeviceHandlerIF::GET_WRITE);
|
thisSequence->addSlot(objects::SYRLINKS_HANDLER, length * 0, DeviceHandlerIF::GET_WRITE);
|
||||||
thisSequence->addSlot(objects::SYRLINKS_HANDLER, length * 0.5, DeviceHandlerIF::SEND_READ);
|
thisSequence->addSlot(objects::SYRLINKS_HANDLER, length * 0.25, DeviceHandlerIF::SEND_READ);
|
||||||
thisSequence->addSlot(objects::SYRLINKS_HANDLER, length * 0.5, DeviceHandlerIF::GET_READ);
|
thisSequence->addSlot(objects::SYRLINKS_HANDLER, length * 0.25, DeviceHandlerIF::GET_READ);
|
||||||
|
thisSequence->addSlot(objects::SYRLINKS_HANDLER, length * 0.4, DeviceHandlerIF::SEND_WRITE);
|
||||||
|
thisSequence->addSlot(objects::SYRLINKS_HANDLER, length * 0.4, DeviceHandlerIF::GET_WRITE);
|
||||||
|
thisSequence->addSlot(objects::SYRLINKS_HANDLER, length * 0.7, DeviceHandlerIF::SEND_READ);
|
||||||
|
thisSequence->addSlot(objects::SYRLINKS_HANDLER, length * 0.7, DeviceHandlerIF::GET_READ);
|
||||||
|
|
||||||
static_cast<void>(length);
|
static_cast<void>(length);
|
||||||
|
|
||||||
|
@ -10,7 +10,6 @@ enum class ParameterId : uint8_t { DATARATE = 0 };
|
|||||||
|
|
||||||
static constexpr uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::SYRLINKS;
|
static constexpr uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::SYRLINKS;
|
||||||
|
|
||||||
static constexpr Event FDIR_REACTION_IGNORED = event::makeEvent(SUBSYSTEM_ID, 0, severity::MEDIUM);
|
|
||||||
//! [EXPORT] : [COMMENT] Transmitter is on now. P1: Submode, P2: Current default datarate.
|
//! [EXPORT] : [COMMENT] Transmitter is on now. P1: Submode, P2: Current default datarate.
|
||||||
static constexpr Event TX_ON = event::makeEvent(SUBSYSTEM_ID, 1, severity::INFO);
|
static constexpr Event TX_ON = event::makeEvent(SUBSYSTEM_ID, 1, severity::INFO);
|
||||||
//! [EXPORT] : [COMMENT] Transmitter is off now.
|
//! [EXPORT] : [COMMENT] Transmitter is off now.
|
||||||
|
@ -23,8 +23,7 @@ ReturnValue_t SyrlinksFdir::eventReceived(EventMessage* event) {
|
|||||||
case DeviceHandlerIF::DEVICE_WANTS_HARD_REBOOT:
|
case DeviceHandlerIF::DEVICE_WANTS_HARD_REBOOT:
|
||||||
// We'll try a recovery as long as defined in MAX_REBOOT.
|
// We'll try a recovery as long as defined in MAX_REBOOT.
|
||||||
// Might cause some AssemblyBase cycles, so keep number low.
|
// Might cause some AssemblyBase cycles, so keep number low.
|
||||||
// handleRecovery(event->getEvent());
|
handleRecovery(event->getEvent());
|
||||||
triggerEvent(syrlinks::FDIR_REACTION_IGNORED, event->getEvent(), 0);
|
|
||||||
break;
|
break;
|
||||||
case DeviceHandlerIF::DEVICE_INTERPRETING_REPLY_FAILED:
|
case DeviceHandlerIF::DEVICE_INTERPRETING_REPLY_FAILED:
|
||||||
case DeviceHandlerIF::DEVICE_READING_REPLY_FAILED:
|
case DeviceHandlerIF::DEVICE_READING_REPLY_FAILED:
|
||||||
@ -33,8 +32,7 @@ ReturnValue_t SyrlinksFdir::eventReceived(EventMessage* event) {
|
|||||||
case DeviceHandlerIF::DEVICE_BUILDING_COMMAND_FAILED:
|
case DeviceHandlerIF::DEVICE_BUILDING_COMMAND_FAILED:
|
||||||
// These faults all mean that there were stupid replies from a device.
|
// These faults all mean that there were stupid replies from a device.
|
||||||
if (strangeReplyCount.incrementAndCheck()) {
|
if (strangeReplyCount.incrementAndCheck()) {
|
||||||
// handleRecovery(event->getEvent());
|
handleRecovery(event->getEvent());
|
||||||
triggerEvent(syrlinks::FDIR_REACTION_IGNORED, event->getEvent(), 0);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DeviceHandlerIF::DEVICE_SENDING_COMMAND_FAILED:
|
case DeviceHandlerIF::DEVICE_SENDING_COMMAND_FAILED:
|
||||||
@ -48,7 +46,6 @@ ReturnValue_t SyrlinksFdir::eventReceived(EventMessage* event) {
|
|||||||
// else
|
// else
|
||||||
if (missedReplyCount.incrementAndCheck()) {
|
if (missedReplyCount.incrementAndCheck()) {
|
||||||
handleRecovery(event->getEvent());
|
handleRecovery(event->getEvent());
|
||||||
// triggerEvent(syrlinks::FDIR_REACTION_IGNORED, event->getEvent(), 0);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case StorageManagerIF::GET_DATA_FAILED:
|
case StorageManagerIF::GET_DATA_FAILED:
|
||||||
@ -81,7 +78,6 @@ ReturnValue_t SyrlinksFdir::eventReceived(EventMessage* event) {
|
|||||||
case Fuse::POWER_BELOW_LOW_LIMIT:
|
case Fuse::POWER_BELOW_LOW_LIMIT:
|
||||||
// Device might got stuck during boot, retry.
|
// Device might got stuck during boot, retry.
|
||||||
handleRecovery(event->getEvent());
|
handleRecovery(event->getEvent());
|
||||||
triggerEvent(syrlinks::FDIR_REACTION_IGNORED, event->getEvent(), 0);
|
|
||||||
break;
|
break;
|
||||||
//****Thermal*****
|
//****Thermal*****
|
||||||
case ThermalComponentIF::COMPONENT_TEMP_LOW:
|
case ThermalComponentIF::COMPONENT_TEMP_LOW:
|
||||||
@ -113,14 +109,12 @@ void SyrlinksFdir::eventConfirmed(EventMessage* event) {
|
|||||||
case DeviceHandlerIF::DEVICE_REQUESTING_REPLY_FAILED:
|
case DeviceHandlerIF::DEVICE_REQUESTING_REPLY_FAILED:
|
||||||
case DeviceHandlerIF::DEVICE_MISSED_REPLY:
|
case DeviceHandlerIF::DEVICE_MISSED_REPLY:
|
||||||
if (missedReplyCount.incrementAndCheck()) {
|
if (missedReplyCount.incrementAndCheck()) {
|
||||||
// handleRecovery(event->getEvent());
|
handleRecovery(event->getEvent());
|
||||||
triggerEvent(syrlinks::FDIR_REACTION_IGNORED, event->getEvent(), 0);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PowerSwitchIF::SWITCH_WENT_OFF:
|
case PowerSwitchIF::SWITCH_WENT_OFF:
|
||||||
// This means the switch went off only for one device.
|
// This means the switch went off only for one device.
|
||||||
// handleRecovery(event->getEvent());
|
handleRecovery(event->getEvent());
|
||||||
triggerEvent(syrlinks::FDIR_REACTION_IGNORED, event->getEvent(), 0);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
2
tmtc
2
tmtc
@ -1 +1 @@
|
|||||||
Subproject commit b17c413e8f1d7a827b2fdd02b642a3bbebb2738c
|
Subproject commit 8115a39d66e219a7c6f5cdd1d4fd524ebcf6bd2d
|
Loading…
Reference in New Issue
Block a user