Merge branch 'develop' into acs-flp-safe
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit

This commit is contained in:
Marius Eggert 2023-03-23 17:05:30 +01:00
commit 8597e04eaf
5 changed files with 16 additions and 7 deletions

View File

@ -16,10 +16,13 @@ will consitute of a breaking change warranting a new major release:
# [unreleased] # [unreleased]
# [v1.39.1] 2023-03-22
## Fixed ## Fixed
- Bugfix for STR: Some action commands wrongfully declined. - Bugfix for STR: Some action commands wrongfully declined.
- STR: No normal command handling while a special request like an image upload is active. - 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

@ -49,7 +49,7 @@ uint8_t ArcsecDatalinkLayer::getReplyFrameType() { return decodedFrame[0]; }
const uint8_t* ArcsecDatalinkLayer::getReply() { return &decodedFrame[1]; } const uint8_t* ArcsecDatalinkLayer::getReply() { return &decodedFrame[1]; }
void ArcsecDatalinkLayer::encodeFrame(const uinah uint32_t length) { void ArcsecDatalinkLayer::encodeFrame(const uint8_t* data, uint32_t length) {
arc_transport_encode_body(data, length, encBuffer, &encFrameSize); arc_transport_encode_body(data, length, encBuffer, &encFrameSize);
} }

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);
} }