Merge remote-tracking branch 'origin/develop' into refactoring_str_use_ring_buff_for_rx
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good

This commit is contained in:
Robin Müller 2023-03-23 09:28:24 +01:00
commit b5d5dc5ad8
No known key found for this signature in database
GPG Key ID: 71B58F8A3CDFA9AC
4 changed files with 20 additions and 11 deletions

View File

@ -16,10 +16,10 @@ will consitute of a breaking change warranting a new major release:
# [unreleased] # [unreleased]
# [v1.40.0] 2023-03-23
## Fixed ## Fixed
- Bugfix for STR: Some action commands wrongfully declined.
- STR: No normal command handling while a special request like an image upload is active.
- STR: Fix weird issues on datalink layer data reception which sometimes occur. - STR: Fix weird issues on datalink layer data reception which sometimes occur.
## Changed ## Changed
@ -30,10 +30,13 @@ 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.
## Added # [v1.39.1] 2023-03-22
- Add `reset` function for `ArcsecDatalinkLayer` and use it in `StrComHandler` before going to sleep ## Fixed
to ensure consistent state of reply reception.
- Bugfix for STR: Some action commands wrongfully declined.
- STR: No normal command handling while a special request like an image upload is active.
- RS485 data line was not enabled when the transmitter was switched on.
# [v1.39.0] 2023-03-21 # [v1.39.0] 2023-03-21

View File

@ -11,7 +11,7 @@ cmake_minimum_required(VERSION 3.13)
set(OBSW_VERSION_MAJOR 1) set(OBSW_VERSION_MAJOR 1)
set(OBSW_VERSION_MINOR 39) set(OBSW_VERSION_MINOR 39)
set(OBSW_VERSION_REVISION 0) set(OBSW_VERSION_REVISION 1)
# set(CMAKE_VERBOSE TRUE) # set(CMAKE_VERBOSE TRUE)

View File

@ -748,10 +748,13 @@ ReturnValue_t ObjectFactory::createCcsdsComponents(CcsdsComponentArgs& args) {
gpioCookiePtmeIp->addGpio(gpioIds::VC3_PAPB_BUSY, gpio); gpioCookiePtmeIp->addGpio(gpioIds::VC3_PAPB_BUSY, gpio);
gpio = new GpiodRegularByLineName(q7s::gpioNames::PAPB_EMPTY_SIGNAL_VC3, "PAPB VC3"); gpio = new GpiodRegularByLineName(q7s::gpioNames::PAPB_EMPTY_SIGNAL_VC3, "PAPB VC3");
gpioCookiePtmeIp->addGpio(gpioIds::VC3_PAPB_EMPTY, gpio); gpioCookiePtmeIp->addGpio(gpioIds::VC3_PAPB_EMPTY, gpio);
// Initialise to low and then pull high to do a PTME reset, which puts the PTME in reset
// state. It will be put out of reset in the CCSDS handler initialize function.
gpio = new GpiodRegularByLineName(q7s::gpioNames::PTME_RESETN, "PTME RESETN", gpio = new GpiodRegularByLineName(q7s::gpioNames::PTME_RESETN, "PTME RESETN",
gpio::Direction::OUT, gpio::Levels::HIGH); gpio::Direction::OUT, gpio::Levels::LOW);
gpioCookiePtmeIp->addGpio(gpioIds::PTME_RESETN, gpio); gpioCookiePtmeIp->addGpio(gpioIds::PTME_RESETN, gpio);
gpioChecker(args.gpioComIF.addGpios(gpioCookiePtmeIp), "PTME PAPB VCs"); gpioChecker(args.gpioComIF.addGpios(gpioCookiePtmeIp), "PTME PAPB VCs");
// Creating virtual channel interfaces // Creating virtual channel interfaces
VirtualChannelIF* vc0 = VirtualChannelIF* vc0 =
new PapbVcInterface(&args.gpioComIF, gpioIds::VC0_PAPB_BUSY, gpioIds::VC0_PAPB_EMPTY, new PapbVcInterface(&args.gpioComIF, gpioIds::VC0_PAPB_BUSY, gpioIds::VC0_PAPB_EMPTY,
@ -777,7 +780,7 @@ ReturnValue_t ObjectFactory::createCcsdsComponents(CcsdsComponentArgs& args) {
PtmeGpios gpios; PtmeGpios gpios;
gpios.enableTxClock = gpioIds::RS485_EN_TX_CLOCK; gpios.enableTxClock = gpioIds::RS485_EN_TX_CLOCK;
gpios.enableTxData = gpioIds::RS485_EN_TX_CLOCK; gpios.enableTxData = gpioIds::RS485_EN_TX_DATA;
gpios.ptmeResetn = gpioIds::PTME_RESETN; gpios.ptmeResetn = gpioIds::PTME_RESETN;
*args.ipCoreHandler = *args.ipCoreHandler =

View File

@ -3,6 +3,7 @@
#include <fsfw/subsystem/helper.h> #include <fsfw/subsystem/helper.h>
#include <linux/ipcore/PtmeConfig.h> #include <linux/ipcore/PtmeConfig.h>
#include <mission/config/comCfg.h> #include <mission/config/comCfg.h>
#include <unistd.h>
#include "eive/definitions.h" #include "eive/definitions.h"
#include "fsfw/ipc/QueueFactory.h" #include "fsfw/ipc/QueueFactory.h"
@ -38,7 +39,7 @@ ReturnValue_t CcsdsIpCoreHandler::performOperation(uint8_t operationCode) {
} }
ReturnValue_t CcsdsIpCoreHandler::initialize() { ReturnValue_t CcsdsIpCoreHandler::initialize() {
ReturnValue_t result = returnvalue::OK;
AcceptsTelecommandsIF* tcDistributor = AcceptsTelecommandsIF* tcDistributor =
ObjectManager::instance()->get<AcceptsTelecommandsIF>(tcDestination); ObjectManager::instance()->get<AcceptsTelecommandsIF>(tcDestination);
if (tcDistributor == nullptr) { if (tcDistributor == nullptr) {
@ -50,7 +51,7 @@ ReturnValue_t CcsdsIpCoreHandler::initialize() {
tcDistributorQueueId = tcDistributor->getRequestQueue(); tcDistributorQueueId = tcDistributor->getRequestQueue();
result = parameterHelper.initialize(); ReturnValue_t result = parameterHelper.initialize();
if (result != returnvalue::OK) { if (result != returnvalue::OK) {
return result; return result;
} }
@ -70,6 +71,7 @@ ReturnValue_t CcsdsIpCoreHandler::initialize() {
return ObjectManagerIF::CHILD_INIT_FAILED; return ObjectManagerIF::CHILD_INIT_FAILED;
} }
// This also pulls the PTME out of reset state.
if (batPriorityParam == 0) { if (batPriorityParam == 0) {
disablePrioritySelectMode(); disablePrioritySelectMode();
} else { } else {
@ -266,7 +268,6 @@ void CcsdsIpCoreHandler::startTransition(Mode_t mode, Submode_t submode) {
void CcsdsIpCoreHandler::announceMode(bool recursive) { triggerEvent(MODE_INFO, mode, submode); } void CcsdsIpCoreHandler::announceMode(bool recursive) { triggerEvent(MODE_INFO, mode, submode); }
void CcsdsIpCoreHandler::disableTransmit() { void CcsdsIpCoreHandler::disableTransmit() {
ptmeConfig.enableBatPriorityBit(false);
#ifndef TE0720_1CFA #ifndef TE0720_1CFA
gpioIF->pullLow(ptmeGpios.enableTxClock); gpioIF->pullLow(ptmeGpios.enableTxClock);
gpioIF->pullLow(ptmeGpios.enableTxData); gpioIF->pullLow(ptmeGpios.enableTxData);
@ -296,6 +297,7 @@ void CcsdsIpCoreHandler::enablePrioritySelectMode() {
ptmeConfig.enableBatPriorityBit(true); ptmeConfig.enableBatPriorityBit(true);
// Reset the PTME // Reset the PTME
gpioIF->pullLow(ptmeGpios.ptmeResetn); gpioIF->pullLow(ptmeGpios.ptmeResetn);
usleep(10);
gpioIF->pullHigh(ptmeGpios.ptmeResetn); gpioIF->pullHigh(ptmeGpios.ptmeResetn);
} }
@ -303,6 +305,7 @@ void CcsdsIpCoreHandler::disablePrioritySelectMode() {
ptmeConfig.enableBatPriorityBit(false); ptmeConfig.enableBatPriorityBit(false);
// Reset the PTME // Reset the PTME
gpioIF->pullLow(ptmeGpios.ptmeResetn); gpioIF->pullLow(ptmeGpios.ptmeResetn);
usleep(10);
gpioIF->pullHigh(ptmeGpios.ptmeResetn); gpioIF->pullHigh(ptmeGpios.ptmeResetn);
} }