Update GPIO API #241
@ -32,6 +32,9 @@ list yields a list of all related PRs for each release.
|
|||||||
- Add Syrlinks and TMP devices to Software by default
|
- Add Syrlinks and TMP devices to Software by default
|
||||||
- Update GPS Linux Hyperion Handler to use socket interface. Still allows switching
|
- Update GPS Linux Hyperion Handler to use socket interface. Still allows switching
|
||||||
back to SHM interface, but the SHM interface is a possible cause of SW crashes
|
back to SHM interface, but the SHM interface is a possible cause of SW crashes
|
||||||
|
- Updated code for changed FSFW HAL GPIO API: `readGpio` prototype has changed
|
||||||
|
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/240 and
|
||||||
|
https://egit.irs.uni-stuttgart.de/eive/fsfw/pulls/76
|
||||||
|
|
||||||
# [v1.10.1]
|
# [v1.10.1]
|
||||||
|
|
||||||
|
2
fsfw
2
fsfw
@ -1 +1 @@
|
|||||||
Subproject commit 7f6c8b8b123a63546de0d73f0de35900d6c806bf
|
Subproject commit 80cb0e682fb423b4e7b8f45b66b3b5b7249e0d48
|
@ -19,18 +19,18 @@ LibgpiodTest::LibgpiodTest(object_id_t objectId, object_id_t gpioIfobjectId, Gpi
|
|||||||
LibgpiodTest::~LibgpiodTest() {}
|
LibgpiodTest::~LibgpiodTest() {}
|
||||||
|
|
||||||
ReturnValue_t LibgpiodTest::performPeriodicAction() {
|
ReturnValue_t LibgpiodTest::performPeriodicAction() {
|
||||||
int gpioState;
|
gpio::Levels gpioState;
|
||||||
ReturnValue_t result;
|
ReturnValue_t result;
|
||||||
|
|
||||||
switch (testCase) {
|
switch (testCase) {
|
||||||
case (TestCases::READ): {
|
case (TestCases::READ): {
|
||||||
result = gpioInterface->readGpio(gpioIds::TEST_ID_0, &gpioState);
|
result = gpioInterface->readGpio(gpioIds::TEST_ID_0, gpioState);
|
||||||
if (result != RETURN_OK) {
|
if (result != RETURN_OK) {
|
||||||
sif::warning << "LibgpiodTest::performPeriodicAction: Failed to read gpio " << std::endl;
|
sif::warning << "LibgpiodTest::performPeriodicAction: Failed to read gpio " << std::endl;
|
||||||
return RETURN_FAILED;
|
return RETURN_FAILED;
|
||||||
} else {
|
} else {
|
||||||
sif::debug << "LibgpiodTest::performPeriodicAction: MIO 0 state = " << gpioState
|
sif::debug << "LibgpiodTest::performPeriodicAction: MIO 0 state = " <<
|
||||||
<< std::endl;
|
static_cast<int>(gpioState) << std::endl;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -38,19 +38,19 @@ ReturnValue_t LibgpiodTest::performPeriodicAction() {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case (TestCases::BLINK): {
|
case (TestCases::BLINK): {
|
||||||
result = gpioInterface->readGpio(gpioIds::TEST_ID_0, &gpioState);
|
result = gpioInterface->readGpio(gpioIds::TEST_ID_0, gpioState);
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
sif::warning << "LibgpiodTest::performPeriodicAction: Failed to read gpio " << std::endl;
|
sif::warning << "LibgpiodTest::performPeriodicAction: Failed to read gpio " << std::endl;
|
||||||
return RETURN_FAILED;
|
return RETURN_FAILED;
|
||||||
}
|
}
|
||||||
if (gpioState == 1) {
|
if (gpioState == gpio::Levels::HIGH) {
|
||||||
result = gpioInterface->pullLow(gpioIds::TEST_ID_0);
|
result = gpioInterface->pullLow(gpioIds::TEST_ID_0);
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
sif::warning << "LibgpiodTest::performPeriodicAction: Could not pull GPIO low!"
|
sif::warning << "LibgpiodTest::performPeriodicAction: Could not pull GPIO low!"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
return HasReturnvaluesIF::RETURN_FAILED;
|
return HasReturnvaluesIF::RETURN_FAILED;
|
||||||
}
|
}
|
||||||
} else if (gpioState == 0) {
|
} else if (gpioState == gpio::Levels::LOW) {
|
||||||
result = gpioInterface->pullHigh(gpioIds::TEST_ID_0);
|
result = gpioInterface->pullHigh(gpioIds::TEST_ID_0);
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
sif::warning << "LibgpiodTest::performPeriodicAction: Could not pull GPIO high!"
|
sif::warning << "LibgpiodTest::performPeriodicAction: Could not pull GPIO high!"
|
||||||
@ -72,7 +72,7 @@ ReturnValue_t LibgpiodTest::performPeriodicAction() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t LibgpiodTest::performOneShotAction() {
|
ReturnValue_t LibgpiodTest::performOneShotAction() {
|
||||||
int gpioState;
|
gpio::Levels gpioState;
|
||||||
ReturnValue_t result;
|
ReturnValue_t result;
|
||||||
|
|
||||||
switch (testCase) {
|
switch (testCase) {
|
||||||
@ -93,8 +93,8 @@ ReturnValue_t LibgpiodTest::performOneShotAction() {
|
|||||||
<< std::endl;
|
<< std::endl;
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
}
|
}
|
||||||
result = gpioInterface->readGpio(gpioIds::TEST_ID_1, &gpioState);
|
result = gpioInterface->readGpio(gpioIds::TEST_ID_1, gpioState);
|
||||||
if (result == HasReturnvaluesIF::RETURN_OK and gpioState == 1) {
|
if (result == HasReturnvaluesIF::RETURN_OK and gpioState == gpio::Levels::HIGH) {
|
||||||
sif::info << "LibgpiodTest::performOneShotAction: "
|
sif::info << "LibgpiodTest::performOneShotAction: "
|
||||||
"GPIO state read successfully and is high"
|
"GPIO state read successfully and is high"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
@ -110,8 +110,8 @@ ReturnValue_t LibgpiodTest::performOneShotAction() {
|
|||||||
"GPIO pulled low successfully for loopback test"
|
"GPIO pulled low successfully for loopback test"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
}
|
}
|
||||||
result = gpioInterface->readGpio(gpioIds::TEST_ID_1, &gpioState);
|
result = gpioInterface->readGpio(gpioIds::TEST_ID_1, gpioState);
|
||||||
if (result == HasReturnvaluesIF::RETURN_OK and gpioState == 0) {
|
if (result == HasReturnvaluesIF::RETURN_OK and gpioState == gpio::Levels::LOW) {
|
||||||
sif::info << "LibgpiodTest::performOneShotAction: "
|
sif::info << "LibgpiodTest::performOneShotAction: "
|
||||||
"GPIO state read successfully and is low"
|
"GPIO state read successfully and is low"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
|
@ -42,17 +42,17 @@ void PapbVcInterface::startPacketTransfer() { *vcBaseReg = CONFIG_START; }
|
|||||||
void PapbVcInterface::endPacketTransfer() { *vcBaseReg = CONFIG_END; }
|
void PapbVcInterface::endPacketTransfer() { *vcBaseReg = CONFIG_END; }
|
||||||
|
|
||||||
ReturnValue_t PapbVcInterface::pollPapbBusySignal() {
|
ReturnValue_t PapbVcInterface::pollPapbBusySignal() {
|
||||||
int papbBusyState = 0;
|
gpio::Levels papbBusyState = gpio::Levels::LOW;
|
||||||
ReturnValue_t result = RETURN_OK;
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
|
||||||
/** Check if PAPB interface is ready to receive data */
|
/** Check if PAPB interface is ready to receive data */
|
||||||
result = gpioComIF->readGpio(papbBusyId, &papbBusyState);
|
result = gpioComIF->readGpio(papbBusyId, papbBusyState);
|
||||||
if (result != RETURN_OK) {
|
if (result != RETURN_OK) {
|
||||||
sif::warning << "PapbVcInterface::pollPapbBusySignal: Failed to read papb busy signal"
|
sif::warning << "PapbVcInterface::pollPapbBusySignal: Failed to read papb busy signal"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
return RETURN_FAILED;
|
return RETURN_FAILED;
|
||||||
}
|
}
|
||||||
if (!papbBusyState) {
|
if (papbBusyState == gpio::Levels::LOW) {
|
||||||
sif::warning << "PapbVcInterface::pollPapbBusySignal: PAPB busy" << std::endl;
|
sif::warning << "PapbVcInterface::pollPapbBusySignal: PAPB busy" << std::endl;
|
||||||
return PAPB_BUSY;
|
return PAPB_BUSY;
|
||||||
}
|
}
|
||||||
@ -62,9 +62,9 @@ ReturnValue_t PapbVcInterface::pollPapbBusySignal() {
|
|||||||
|
|
||||||
void PapbVcInterface::isVcInterfaceBufferEmpty() {
|
void PapbVcInterface::isVcInterfaceBufferEmpty() {
|
||||||
ReturnValue_t result = RETURN_OK;
|
ReturnValue_t result = RETURN_OK;
|
||||||
int papbEmptyState = 1;
|
gpio::Levels papbEmptyState = gpio::Levels::HIGH;
|
||||||
|
|
||||||
result = gpioComIF->readGpio(papbEmptyId, &papbEmptyState);
|
result = gpioComIF->readGpio(papbEmptyId, papbEmptyState);
|
||||||
|
|
||||||
if (result != RETURN_OK) {
|
if (result != RETURN_OK) {
|
||||||
sif::warning << "PapbVcInterface::isVcInterfaceBufferEmpty: Failed to read papb empty signal"
|
sif::warning << "PapbVcInterface::isVcInterfaceBufferEmpty: Failed to read papb empty signal"
|
||||||
@ -72,7 +72,7 @@ void PapbVcInterface::isVcInterfaceBufferEmpty() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (papbEmptyState == 1) {
|
if (papbEmptyState == gpio::Levels::HIGH) {
|
||||||
sif::debug << "PapbVcInterface::isVcInterfaceBufferEmpty: Buffer is empty" << std::endl;
|
sif::debug << "PapbVcInterface::isVcInterfaceBufferEmpty: Buffer is empty" << std::endl;
|
||||||
} else {
|
} else {
|
||||||
sif::debug << "PapbVcInterface::isVcInterfaceBufferEmpty: Buffer is not empty" << std::endl;
|
sif::debug << "PapbVcInterface::isVcInterfaceBufferEmpty: Buffer is not empty" << std::endl;
|
||||||
|
Loading…
Reference in New Issue
Block a user