improved acknowledgment and execution handling in supervisor handler

This commit is contained in:
Jakob Meier
2022-04-30 11:08:36 +02:00
parent 6524f924c9
commit e1ffa97232
3 changed files with 121 additions and 115 deletions

View File

@ -1425,6 +1425,8 @@ class ExecutionReport : public VerificationReport {
}
private:
static constexpr char STATUS_PRINTOUT_PREFIX[] = "Supervisor execution failure report status: ";
enum class StatusCode : uint16_t {
OK = 0x0,
INIT_ERROR = 0x1,
@ -1478,191 +1480,191 @@ class ExecutionReport : public VerificationReport {
StatusCode statusCode = static_cast<StatusCode>(getStatusCode());
switch (statusCode) {
case StatusCode::OK: {
sif::warning << "Supervisor execution report status: Ok" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Ok" << std::endl;
break;
}
case StatusCode::INIT_ERROR: {
sif::warning << "Supervisor execution report status: Init error" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Init error" << std::endl;
break;
}
case StatusCode::BAD_PARAM: {
sif::warning << "Supervisor execution report status: Bad param" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Bad param" << std::endl;
break;
}
case StatusCode::NOT_INITIALIZED: {
sif::warning << "Supervisor execution report status: Not initialized" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Not initialized" << std::endl;
break;
}
case StatusCode::BAD_PERIPH_ID: {
sif::warning << "Supervisor execution report status: Bad periph ID" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Bad periph ID" << std::endl;
break;
}
case StatusCode::TIMEOUT: {
sif::warning << "Supervisor execution report status: Timeout" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Timeout" << std::endl;
break;
}
case StatusCode::RX_ERROR: {
sif::warning << "Supervisor execution report status: RX error" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "RX error" << std::endl;
break;
}
case StatusCode::TX_ERROR: {
sif::warning << "Supervisor execution report status: TX error" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "TX error" << std::endl;
break;
}
case StatusCode::BUF_EMPTY: {
sif::warning << "Supervisor execution report status: Buf empty" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Buf empty" << std::endl;
break;
}
case StatusCode::BUF_FULL: {
sif::warning << "Supervisor execution report status: Buf full" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Buf full" << std::endl;
break;
}
case StatusCode::NAK: {
sif::warning << "Supervisor execution report status: Nak, default error code" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Nak, default error code" << std::endl;
break;
}
case StatusCode::ARB_LOST: {
sif::warning << "Supervisor execution report status: Arb lost" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Arb lost" << std::endl;
break;
}
case StatusCode::BUSY: {
sif::warning << "Supervisor execution report status: Busy" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Busy" << std::endl;
break;
}
case StatusCode::NOT_IMPLEMENTED: {
sif::warning << "Supervisor execution report status: Not implemented" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Not implemented" << std::endl;
break;
}
case StatusCode::ALIGNEMENT_ERROR: {
sif::warning << "Supervisor execution report status: Alignment error" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Alignment error" << std::endl;
break;
}
case StatusCode::PERIPH_ERR: {
sif::warning << "Supervisor execution report status: Periph error" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Periph error" << std::endl;
break;
}
case StatusCode::FAILED_LATCH: {
sif::warning << "Supervisor execution report status: Failed latch" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Failed latch" << std::endl;
break;
}
case StatusCode::GPIO_HIGH: {
sif::warning << "Supervisor execution report status: GPIO high" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "GPIO high" << std::endl;
break;
}
case StatusCode::GPIO_LOW: {
sif::warning << "Supervisor execution report status: GPIO low" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "GPIO low" << std::endl;
break;
}
case StatusCode::TEST_PASSED: {
sif::warning << "Supervisor execution report status: Test passed" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Test passed" << std::endl;
break;
}
case StatusCode::TEST_FAILED: {
sif::warning << "Supervisor execution report status: Test failed" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Test failed" << std::endl;
break;
}
case StatusCode::NOTHING_TODO: {
sif::warning
<< "Supervisor execution report status: Nothing todo, not an error but a warning"
<< STATUS_PRINTOUT_PREFIX << "Nothing todo, not an error but a warning"
<< std::endl;
break;
}
case StatusCode::POWER_FAULT: {
sif::warning << "Supervisor execution report status: Power fault" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Power fault" << std::endl;
break;
}
case StatusCode::INVALID_LENGTH: {
sif::warning << "Supervisor execution report status: Invalid length" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Invalid length" << std::endl;
break;
}
case StatusCode::OUT_OF_RANGE: {
sif::warning
<< "Supervisor execution report status: Out of range, lenght check of parameter failed"
<< STATUS_PRINTOUT_PREFIX << "Out of range, lenght check of parameter failed"
<< std::endl;
break;
}
case StatusCode::OUT_OF_HEAP_MEMORY: {
sif::warning << "Supervisor execution report status: Out of heap memory" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Out of heap memory" << std::endl;
break;
}
case StatusCode::INVALID_STATE_TRANSITION: {
sif::warning << "Supervisor execution report status: Invalid state transition" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Invalid state transition" << std::endl;
break;
}
case StatusCode::MPSOC_BOOT_FAILED: {
sif::warning << "Supervisor execution report status: MPSoC boot failed" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "MPSoC boot failed" << std::endl;
break;
}
case StatusCode::SP_NOT_AVAILABLE: {
sif::warning << "Supervisor execution report status: SP not available" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "SP not available" << std::endl;
break;
}
case StatusCode::SP_DATA_INSUFFICIENT: {
sif::warning << "Supervisor execution report status: SP data insufficient" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "SP data insufficient" << std::endl;
break;
}
case StatusCode::SP_MEMORY_ID_INVALID: {
sif::warning << "Supervisor execution report status: SP data insufficient" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "SP data insufficient" << std::endl;
break;
}
case StatusCode::MPSOC_NOT_IN_RESET: {
sif::warning << "Supervisor execution report status: MPSoC not in reset" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "MPSoC not in reset" << std::endl;
break;
}
case StatusCode::FLASH_INIT_FAILED: {
sif::warning << "Supervisor execution report status: Flash init failed" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Flash init failed" << std::endl;
break;
}
case StatusCode::FLASH_ERASE_FAILED: {
sif::warning << "Supervisor execution report status: Flash erase failed" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Flash erase failed" << std::endl;
break;
}
case StatusCode::FLASH_WRITE_FAILED: {
sif::warning << "Supervisor execution report status: Flash write failed" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Flash write failed" << std::endl;
break;
}
case StatusCode::FLASH_VERIFY_FAILED: {
sif::warning << "Supervisor execution report status: Flash verify failed" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Flash verify failed" << std::endl;
break;
}
case StatusCode::CANNOT_ACCESS_TM: {
sif::warning << "Supervisor execution report status: Can not access tm" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Can not access tm" << std::endl;
break;
}
case StatusCode::CANNOT_SEND_TM: {
sif::warning << "Supervisor execution report status: Can not access tm" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "Can not access tm" << std::endl;
break;
}
case StatusCode::PG_LOW: {
sif::warning << "Supervisor execution report status: PG low" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "PG low" << std::endl;
break;
}
case StatusCode::PG_5V_LOW: {
sif::warning << "Supervisor execution report status: PG 5V low" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "PG 5V low" << std::endl;
break;
}
case StatusCode::PG_0V85_LOW: {
sif::warning << "Supervisor execution report status: PG 0V85 low" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "PG 0V85 low" << std::endl;
break;
}
case StatusCode::PG_1V8_LOW: {
sif::warning << "Supervisor execution report status: PG 1V8 low" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "PG 1V8 low" << std::endl;
break;
}
case StatusCode::PG_MISC_LOW: {
sif::warning << "Supervisor execution report status: PG misc low" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "PG misc low" << std::endl;
break;
}
case StatusCode::PG_3V3_LOW: {
sif::warning << "Supervisor execution report status: PG 3V3 low" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "PG 3V3 low" << std::endl;
break;
}
case StatusCode::PG_MB_VAIO_LOW: {
sif::warning << "Supervisor execution report status: PG mb vaio low" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "PG mb vaio low" << std::endl;
break;
}
case StatusCode::PG_MB_MPSOCIO_LOW: {
sif::warning << "Supervisor execution report status: PG mb mpsocio low" << std::endl;
sif::warning << STATUS_PRINTOUT_PREFIX << "PG mb mpsocio low" << std::endl;
break;
}
default: