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
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
This commit is contained in:
commit
b5d5dc5ad8
13
CHANGELOG.md
13
CHANGELOG.md
@ -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
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
|
||||||
|
@ -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 =
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user