Robin Mueller
371ff931bf
The CommandExecutor helper class can execute shell commands in blocking and non-blocking mode This class is able to execute processes by using the Linux popen call. It also has the capability of writing the read output of a process into a provided ring buffer. The executor works by first loading the command which should be executed and specifying whether it should be executed blocking or non-blocking. After that, execution can be started with the execute call. Using non-blocking mode allows to execute commands which might take a longer time in the background, and allowing the user thread to check completion status with the check function Moved to HAL like requested in code review and unit tested with failing commands as well. Also, Linux HAL components are compiled by default now unless explicitely disabled.
100 lines
2.0 KiB
C++
100 lines
2.0 KiB
C++
#include "fsfw_hal/linux/uart/UartCookie.h"
|
|
|
|
#include <fsfw/serviceinterface.h>
|
|
|
|
UartCookie::UartCookie(object_id_t handlerId, std::string deviceFile, UartModes uartMode,
|
|
uint32_t baudrate, size_t maxReplyLen):
|
|
handlerId(handlerId), deviceFile(deviceFile), uartMode(uartMode),
|
|
baudrate(baudrate), maxReplyLen(maxReplyLen) {
|
|
}
|
|
|
|
UartCookie::~UartCookie() {}
|
|
|
|
uint32_t UartCookie::getBaudrate() const {
|
|
return baudrate;
|
|
}
|
|
|
|
size_t UartCookie::getMaxReplyLen() const {
|
|
return maxReplyLen;
|
|
}
|
|
|
|
std::string UartCookie::getDeviceFile() const {
|
|
return deviceFile;
|
|
}
|
|
|
|
void UartCookie::setParityOdd() {
|
|
parity = Parity::ODD;
|
|
}
|
|
|
|
void UartCookie::setParityEven() {
|
|
parity = Parity::EVEN;
|
|
}
|
|
|
|
Parity UartCookie::getParity() const {
|
|
return parity;
|
|
}
|
|
|
|
void UartCookie::setBitsPerWord(uint8_t bitsPerWord_) {
|
|
switch(bitsPerWord_) {
|
|
case 5:
|
|
case 6:
|
|
case 7:
|
|
case 8:
|
|
break;
|
|
default:
|
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
|
sif::debug << "UartCookie::setBitsPerWord: Invalid bits per word specified" << std::endl;
|
|
#endif
|
|
return;
|
|
}
|
|
bitsPerWord = bitsPerWord_;
|
|
}
|
|
|
|
uint8_t UartCookie::getBitsPerWord() const {
|
|
return bitsPerWord;
|
|
}
|
|
|
|
StopBits UartCookie::getStopBits() const {
|
|
return stopBits;
|
|
}
|
|
|
|
void UartCookie::setTwoStopBits() {
|
|
stopBits = StopBits::TWO_STOP_BITS;
|
|
}
|
|
|
|
void UartCookie::setOneStopBit() {
|
|
stopBits = StopBits::ONE_STOP_BIT;
|
|
}
|
|
|
|
UartModes UartCookie::getUartMode() const {
|
|
return uartMode;
|
|
}
|
|
|
|
void UartCookie::setReadCycles(uint8_t readCycles) {
|
|
this->readCycles = readCycles;
|
|
}
|
|
|
|
void UartCookie::setToFlushInput(bool enable) {
|
|
this->flushInput = enable;
|
|
}
|
|
|
|
uint8_t UartCookie::getReadCycles() const {
|
|
return readCycles;
|
|
}
|
|
|
|
bool UartCookie::getInputShouldBeFlushed() {
|
|
return this->flushInput;
|
|
}
|
|
|
|
object_id_t UartCookie::getHandlerId() const {
|
|
return this->handlerId;
|
|
}
|
|
|
|
void UartCookie::setNoFixedSizeReply() {
|
|
replySizeFixed = false;
|
|
}
|
|
|
|
bool UartCookie::isReplySizeFixed() {
|
|
return replySizeFixed;
|
|
}
|