v1.17.0 #327
@ -235,6 +235,81 @@ enum class LatchupMonId : uint8_t { LATCHUP_STATUS_REPORT = 0x01 };
|
||||
|
||||
} // namespace tm
|
||||
|
||||
enum class GeneralStatusCode : uint32_t {
|
||||
OK = 0x000,
|
||||
NAK = 0x001,
|
||||
INIT_ERROR = 0x002,
|
||||
BAD_PARAM = 0x003,
|
||||
NOT_INITIALIZED = 0x004,
|
||||
BAD_PERIPH_ID = 0x005,
|
||||
TIMEOUT = 0x006,
|
||||
RX_ERROR = 0x007,
|
||||
TX_ERROR = 0x008,
|
||||
ARB_LOST = 0x009,
|
||||
BUSY = 0x00A,
|
||||
NOT_IMPL = 0x00B,
|
||||
ALIGNMENT_ERROR = 0x00C,
|
||||
PERIPH_ERROR = 0x00D,
|
||||
FAILED_LATCH = 0x00E,
|
||||
GPIO_HIGH = 0x00F,
|
||||
GPIO_LOW = 0x010,
|
||||
TEST_PASSED = 0x011,
|
||||
TEST_FAILED = 0x012,
|
||||
BAD_NOF_PARAMS = 0x013,
|
||||
NULL_POINTER = 0x014,
|
||||
TASK_CREATION_ERROR = 0x015,
|
||||
CORRUPTED_MRAM_VAL = 0x016,
|
||||
BUF_EMPTY = 0x017
|
||||
};
|
||||
|
||||
enum class BootManStatusCode : uint32_t {
|
||||
NOTHING_TODO = 0x100,
|
||||
POWER_FAULT = 0x101,
|
||||
INVALID_LENGTH = 0x102,
|
||||
OUT_OF_RANGE = 0x103,
|
||||
OUT_OF_HEAP_MEMORY = 0x104,
|
||||
INVALID_STATE_TRANSITION = 0x105,
|
||||
MPSOC_ALREADY_BOOTING = 0x106,
|
||||
MPSOC_ALREADY_OPERATIONAL = 0x107,
|
||||
MPSOC_BOOT_FAILED = 0x108,
|
||||
};
|
||||
|
||||
enum class MemManStatusCode : uint32_t {
|
||||
SP_NOT_AVAILABLE = 0x200,
|
||||
SP_DATA_INSUFFICIENT = 0x201,
|
||||
SP_MEMORY_ID_INVALID = 0x202,
|
||||
MPSOC_NOT_IN_RESET = 0x203,
|
||||
FLASH_INIT_FAILED = 0x204,
|
||||
FLASH_ERASE_FAILED = 0x205,
|
||||
FLASH_WRITE_FAILED = 0x206,
|
||||
FLASH_VERIFY_FAILED = 0x207,
|
||||
CANNOT_ACCESS_TM = 0x208,
|
||||
CANNOT_SEND_TM = 0x209,
|
||||
};
|
||||
|
||||
enum class PowerManStatusCode : uint32_t {
|
||||
PG_LOW = 0x300,
|
||||
PG_5V_LOW = 0x301,
|
||||
PG_0V85_LOW = 0x302,
|
||||
PG_1V8_LOW = 0x303,
|
||||
PG_MISC_LOW = 0x304,
|
||||
PG_3V3_LOW = 0x305,
|
||||
PG_MB_VAIO_LOW = 0x306,
|
||||
PG_MB_MPSOCIO_LOW = 0x307
|
||||
};
|
||||
|
||||
enum class TmtcManStatusCode : uint32_t {
|
||||
BUF_FULL = 0x600,
|
||||
WRONG_APID = 0x601,
|
||||
WRONG_SERVICE_ID = 0x602,
|
||||
TC_DELIVERY_ACCEPTED = 0x603,
|
||||
TC_DELIVERY_REJECTED = 0x0604,
|
||||
TC_PACKET_LEN_INCORRECT = 0x605,
|
||||
BAD_CRC = 0x606,
|
||||
BAD_DEST = 0x607,
|
||||
BAD_SP_HEADER = 0x608
|
||||
};
|
||||
|
||||
static const uint16_t APID_MASK = 0x3FF;
|
||||
static const uint16_t SEQUENCE_COUNT_MASK = 0xFFF;
|
||||
|
||||
@ -1265,6 +1340,236 @@ class VerificationReport {
|
||||
|
||||
uint32_t getStatusCode() const { return statusCode; }
|
||||
|
||||
virtual void printStatusInformation(const char* prefix) {
|
||||
bool codeHandled = true;
|
||||
if (statusCode < 0x100) {
|
||||
GeneralStatusCode code = static_cast<GeneralStatusCode>(getStatusCode());
|
||||
switch (code) {
|
||||
case GeneralStatusCode::OK: {
|
||||
sif::warning << prefix << "Ok" << std::endl;
|
||||
break;
|
||||
}
|
||||
case GeneralStatusCode::INIT_ERROR: {
|
||||
sif::warning << prefix << "Init error" << std::endl;
|
||||
break;
|
||||
}
|
||||
case GeneralStatusCode::BAD_PARAM: {
|
||||
sif::warning << prefix << "Bad param" << std::endl;
|
||||
break;
|
||||
}
|
||||
case GeneralStatusCode::NOT_INITIALIZED: {
|
||||
sif::warning << prefix << "Not initialized" << std::endl;
|
||||
break;
|
||||
}
|
||||
case GeneralStatusCode::BAD_PERIPH_ID: {
|
||||
sif::warning << prefix << "Bad periph ID" << std::endl;
|
||||
break;
|
||||
}
|
||||
case GeneralStatusCode::TIMEOUT: {
|
||||
sif::warning << prefix << "Timeout" << std::endl;
|
||||
break;
|
||||
}
|
||||
case GeneralStatusCode::RX_ERROR: {
|
||||
sif::warning << prefix << "RX error" << std::endl;
|
||||
break;
|
||||
}
|
||||
case GeneralStatusCode::TX_ERROR: {
|
||||
sif::warning << prefix << "TX error" << std::endl;
|
||||
break;
|
||||
}
|
||||
case GeneralStatusCode::BUF_EMPTY: {
|
||||
sif::warning << prefix << "Buf empty" << std::endl;
|
||||
break;
|
||||
}
|
||||
case GeneralStatusCode::NAK: {
|
||||
sif::warning << prefix << "Nak, default error code" << std::endl;
|
||||
break;
|
||||
}
|
||||
case GeneralStatusCode::ARB_LOST: {
|
||||
sif::warning << prefix << "Arb lost" << std::endl;
|
||||
break;
|
||||
}
|
||||
case GeneralStatusCode::BUSY: {
|
||||
sif::warning << prefix << "Busy" << std::endl;
|
||||
break;
|
||||
}
|
||||
case GeneralStatusCode::NOT_IMPL: {
|
||||
sif::warning << prefix << "Not implemented" << std::endl;
|
||||
break;
|
||||
}
|
||||
case GeneralStatusCode::ALIGNMENT_ERROR: {
|
||||
sif::warning << prefix << "Alignment error" << std::endl;
|
||||
break;
|
||||
}
|
||||
case GeneralStatusCode::PERIPH_ERROR: {
|
||||
sif::warning << prefix << "Periph error" << std::endl;
|
||||
break;
|
||||
}
|
||||
case GeneralStatusCode::FAILED_LATCH: {
|
||||
sif::warning << prefix << "Failed latch" << std::endl;
|
||||
break;
|
||||
}
|
||||
case GeneralStatusCode::GPIO_HIGH: {
|
||||
sif::warning << prefix << "GPIO high" << std::endl;
|
||||
break;
|
||||
}
|
||||
case GeneralStatusCode::GPIO_LOW: {
|
||||
sif::warning << prefix << "GPIO low" << std::endl;
|
||||
break;
|
||||
}
|
||||
case GeneralStatusCode::TEST_PASSED: {
|
||||
sif::warning << prefix << "Test passed" << std::endl;
|
||||
break;
|
||||
}
|
||||
case GeneralStatusCode::TEST_FAILED: {
|
||||
sif::warning << prefix << "Test failed" << std::endl;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
codeHandled = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (statusCode < 0x200 and statusCode > 0x100) {
|
||||
BootManStatusCode code = static_cast<BootManStatusCode>(statusCode);
|
||||
switch (code) {
|
||||
case BootManStatusCode::NOTHING_TODO: {
|
||||
sif::warning << prefix << "Nothing to do" << std::endl;
|
||||
break;
|
||||
}
|
||||
case BootManStatusCode::POWER_FAULT: {
|
||||
sif::warning << prefix << "Power fault" << std::endl;
|
||||
break;
|
||||
}
|
||||
case BootManStatusCode::INVALID_LENGTH: {
|
||||
sif::warning << prefix << "Invalid length" << std::endl;
|
||||
break;
|
||||
}
|
||||
case BootManStatusCode::OUT_OF_RANGE: {
|
||||
sif::warning << prefix << "Out of range, lenght check of parameter failed" << std::endl;
|
||||
break;
|
||||
}
|
||||
case BootManStatusCode::OUT_OF_HEAP_MEMORY: {
|
||||
sif::warning << prefix << "Out of heap memory" << std::endl;
|
||||
break;
|
||||
}
|
||||
case BootManStatusCode::INVALID_STATE_TRANSITION: {
|
||||
sif::warning << prefix << "Invalid state transition" << std::endl;
|
||||
break;
|
||||
}
|
||||
case BootManStatusCode::MPSOC_ALREADY_BOOTING: {
|
||||
sif::warning << prefix << "MPSoC already booting" << std::endl;
|
||||
break;
|
||||
}
|
||||
case BootManStatusCode::MPSOC_ALREADY_OPERATIONAL: {
|
||||
sif::warning << prefix << "MPSoC already operational" << std::endl;
|
||||
break;
|
||||
}
|
||||
case BootManStatusCode::MPSOC_BOOT_FAILED: {
|
||||
sif::warning << prefix << "MPSoC boot failed" << std::endl;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
codeHandled = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (statusCode < 0x300 and statusCode > 0x200) {
|
||||
MemManStatusCode code = static_cast<MemManStatusCode>(statusCode);
|
||||
switch (code) {
|
||||
case MemManStatusCode::SP_NOT_AVAILABLE: {
|
||||
sif::warning << prefix << "SP not available" << std::endl;
|
||||
break;
|
||||
}
|
||||
case MemManStatusCode::SP_DATA_INSUFFICIENT: {
|
||||
sif::warning << prefix << "SP data insufficient" << std::endl;
|
||||
break;
|
||||
}
|
||||
case MemManStatusCode::SP_MEMORY_ID_INVALID: {
|
||||
sif::warning << prefix << "SP data insufficient" << std::endl;
|
||||
break;
|
||||
}
|
||||
case MemManStatusCode::MPSOC_NOT_IN_RESET: {
|
||||
sif::warning << prefix << "MPSoC not in reset" << std::endl;
|
||||
break;
|
||||
}
|
||||
case MemManStatusCode::FLASH_INIT_FAILED: {
|
||||
sif::warning << prefix << "Flash init failed" << std::endl;
|
||||
break;
|
||||
}
|
||||
case MemManStatusCode::FLASH_ERASE_FAILED: {
|
||||
sif::warning << prefix << "Flash erase failed" << std::endl;
|
||||
break;
|
||||
}
|
||||
case MemManStatusCode::FLASH_WRITE_FAILED: {
|
||||
sif::warning << prefix << "Flash write failed" << std::endl;
|
||||
break;
|
||||
}
|
||||
case MemManStatusCode::FLASH_VERIFY_FAILED: {
|
||||
sif::warning << prefix << "Flash verify failed" << std::endl;
|
||||
break;
|
||||
}
|
||||
case MemManStatusCode::CANNOT_ACCESS_TM: {
|
||||
sif::warning << prefix << "Can not access tm" << std::endl;
|
||||
break;
|
||||
}
|
||||
case MemManStatusCode::CANNOT_SEND_TM: {
|
||||
sif::warning << prefix << "Can not access tm" << std::endl;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
codeHandled = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (statusCode < 0x400 and statusCode > 0x300) {
|
||||
PowerManStatusCode code = static_cast<PowerManStatusCode>(statusCode);
|
||||
switch (code) {
|
||||
case PowerManStatusCode::PG_LOW: {
|
||||
sif::warning << prefix << "PG low" << std::endl;
|
||||
break;
|
||||
}
|
||||
case PowerManStatusCode::PG_5V_LOW: {
|
||||
sif::warning << prefix << "PG 5V low" << std::endl;
|
||||
break;
|
||||
}
|
||||
case PowerManStatusCode::PG_0V85_LOW: {
|
||||
sif::warning << prefix << "PG 0V85 low" << std::endl;
|
||||
break;
|
||||
}
|
||||
case PowerManStatusCode::PG_1V8_LOW: {
|
||||
sif::warning << prefix << "PG 1V8 low" << std::endl;
|
||||
break;
|
||||
}
|
||||
case PowerManStatusCode::PG_MISC_LOW: {
|
||||
sif::warning << prefix << "PG misc low" << std::endl;
|
||||
break;
|
||||
}
|
||||
case PowerManStatusCode::PG_3V3_LOW: {
|
||||
sif::warning << prefix << "PG 3V3 low" << std::endl;
|
||||
break;
|
||||
}
|
||||
case PowerManStatusCode::PG_MB_VAIO_LOW: {
|
||||
sif::warning << prefix << "PG mb vaio low" << std::endl;
|
||||
break;
|
||||
}
|
||||
case PowerManStatusCode::PG_MB_MPSOCIO_LOW: {
|
||||
sif::warning << prefix << "PG mb mpsocio low" << std::endl;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
codeHandled = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (not codeHandled) {
|
||||
sif::warning << prefix << "Invalid or unimplemented status code: 0x" << std::hex
|
||||
<< std::setfill('0') << std::setw(4) << static_cast<uint16_t>(statusCode)
|
||||
<< std::dec << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
protected:
|
||||
TmBase& readerBase;
|
||||
uint8_t refApid = 0;
|
||||
@ -1287,59 +1592,11 @@ class AcknowledgmentReport : public VerificationReport {
|
||||
}
|
||||
|
||||
void printStatusInformation() {
|
||||
StatusCode statusCode = static_cast<StatusCode>(getStatusCode());
|
||||
const char* prefix = "Supervisor acknowledgment report status: ";
|
||||
switch (statusCode) {
|
||||
case StatusCode::OK: {
|
||||
sif::warning << prefix << "Ok" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::BAD_PARAM: {
|
||||
sif::warning << prefix << "Bad param" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::TIMEOUT: {
|
||||
sif::warning << prefix << "Timeout" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::RX_ERROR: {
|
||||
sif::warning << prefix << "RX error" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::TX_ERROR: {
|
||||
sif::warning << prefix << "TX error" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::HEADER_EMPTY: {
|
||||
sif::warning << prefix << "Header empty" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::DEFAULT_NAK: {
|
||||
sif::warning << prefix << "Default code for NAK" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::ROUTE_PACKET: {
|
||||
sif::warning << prefix << "Route packet error" << std::endl;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
sif::warning << "AcknowledgmentReport::printStatusInformation: Invalid status code: 0x"
|
||||
<< std::hex << static_cast<uint16_t>(statusCode) << std::endl;
|
||||
break;
|
||||
}
|
||||
VerificationReport::printStatusInformation(STATUS_PRINTOUT_PREFIX);
|
||||
}
|
||||
|
||||
private:
|
||||
enum class StatusCode : uint16_t {
|
||||
OK = 0x0,
|
||||
BAD_PARAM = 0x1,
|
||||
TIMEOUT = 0x2,
|
||||
RX_ERROR = 0x3,
|
||||
TX_ERROR = 0x4,
|
||||
HEADER_EMPTY = 0x5,
|
||||
DEFAULT_NAK = 0x6,
|
||||
ROUTE_PACKET = 0x7
|
||||
};
|
||||
static constexpr char STATUS_PRINTOUT_PREFIX[] = "SUPV NAK Status: ";
|
||||
};
|
||||
|
||||
class ExecutionReport : public VerificationReport {
|
||||
@ -1355,264 +1612,13 @@ class ExecutionReport : public VerificationReport {
|
||||
}
|
||||
return VerificationReport::parse();
|
||||
}
|
||||
|
||||
void printStatusInformation() {
|
||||
StatusCode statusCode = static_cast<StatusCode>(getStatusCode());
|
||||
switch (statusCode) {
|
||||
case StatusCode::OK: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Ok" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::INIT_ERROR: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Init error" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::BAD_PARAM: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Bad param" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::NOT_INITIALIZED: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Not initialized" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::BAD_PERIPH_ID: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Bad periph ID" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::TIMEOUT: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Timeout" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::RX_ERROR: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "RX error" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::TX_ERROR: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "TX error" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::BUF_EMPTY: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Buf empty" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::BUF_FULL: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Buf full" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::NAK: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Nak, default error code" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::ARB_LOST: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Arb lost" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::BUSY: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Busy" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::NOT_IMPLEMENTED: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Not implemented" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::ALIGNEMENT_ERROR: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Alignment error" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::PERIPH_ERR: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Periph error" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::FAILED_LATCH: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Failed latch" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::GPIO_HIGH: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "GPIO high" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::GPIO_LOW: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "GPIO low" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::TEST_PASSED: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Test passed" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::TEST_FAILED: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Test failed" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::NOTHING_TODO: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Nothing todo, not an error but a warning"
|
||||
<< std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::POWER_FAULT: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Power fault" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::INVALID_LENGTH: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Invalid length" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::OUT_OF_RANGE: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Out of range, lenght check of parameter failed"
|
||||
<< std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::OUT_OF_HEAP_MEMORY: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Out of heap memory" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::INVALID_STATE_TRANSITION: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Invalid state transition" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::MPSOC_ALREADY_BOOTING: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "MPSoC already booting" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::MPSOC_ALREADY_OPERATIONAL: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "MPSoC already operational" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::MPSOC_BOOT_FAILED: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "MPSoC boot failed" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::SP_NOT_AVAILABLE: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "SP not available" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::SP_DATA_INSUFFICIENT: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "SP data insufficient" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::SP_MEMORY_ID_INVALID: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "SP data insufficient" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::MPSOC_NOT_IN_RESET: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "MPSoC not in reset" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::FLASH_INIT_FAILED: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Flash init failed" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::FLASH_ERASE_FAILED: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Flash erase failed" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::FLASH_WRITE_FAILED: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Flash write failed" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::FLASH_VERIFY_FAILED: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Flash verify failed" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::CANNOT_ACCESS_TM: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Can not access tm" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::CANNOT_SEND_TM: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "Can not access tm" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::PG_LOW: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "PG low" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::PG_5V_LOW: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "PG 5V low" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::PG_0V85_LOW: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "PG 0V85 low" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::PG_1V8_LOW: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "PG 1V8 low" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::PG_MISC_LOW: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "PG misc low" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::PG_3V3_LOW: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "PG 3V3 low" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::PG_MB_VAIO_LOW: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "PG mb vaio low" << std::endl;
|
||||
break;
|
||||
}
|
||||
case StatusCode::PG_MB_MPSOCIO_LOW: {
|
||||
sif::warning << STATUS_PRINTOUT_PREFIX << "PG mb mpsocio low" << std::endl;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
sif::warning << "ExecutionReport::printStatusInformation: Invalid status code: 0x"
|
||||
<< std::hex << std::setfill('0') << std::setw(4)
|
||||
<< static_cast<uint16_t>(statusCode) << std::dec << std::endl;
|
||||
break;
|
||||
}
|
||||
VerificationReport::printStatusInformation(STATUS_PRINTOUT_PREFIX);
|
||||
}
|
||||
|
||||
private:
|
||||
static constexpr char STATUS_PRINTOUT_PREFIX[] = "Supervisor execution failure report status: ";
|
||||
|
||||
enum class StatusCode : uint16_t {
|
||||
OK = 0x0,
|
||||
INIT_ERROR = 0x1,
|
||||
BAD_PARAM = 0x2,
|
||||
NOT_INITIALIZED = 0x3,
|
||||
BAD_PERIPH_ID = 0x4,
|
||||
TIMEOUT = 0x5,
|
||||
RX_ERROR = 0x6,
|
||||
TX_ERROR = 0x7,
|
||||
BUF_EMPTY = 0x8,
|
||||
BUF_FULL = 0x9,
|
||||
NAK = 0xA,
|
||||
ARB_LOST = 0xB,
|
||||
BUSY = 0xC,
|
||||
NOT_IMPLEMENTED = 0xD,
|
||||
ALIGNEMENT_ERROR = 0xE,
|
||||
PERIPH_ERR = 0xF,
|
||||
FAILED_LATCH = 0x10,
|
||||
GPIO_HIGH = 0x11,
|
||||
GPIO_LOW = 0x12,
|
||||
TEST_PASSED = 0x13,
|
||||
TEST_FAILED = 0x14,
|
||||
NOTHING_TODO = 0x100,
|
||||
POWER_FAULT = 0x101,
|
||||
INVALID_LENGTH = 0x102,
|
||||
OUT_OF_RANGE = 0x103,
|
||||
OUT_OF_HEAP_MEMORY = 0x104,
|
||||
INVALID_STATE_TRANSITION = 0x105,
|
||||
MPSOC_ALREADY_BOOTING = 0x106,
|
||||
MPSOC_ALREADY_OPERATIONAL = 0x107,
|
||||
MPSOC_BOOT_FAILED = 0x108,
|
||||
SP_NOT_AVAILABLE = 0x200,
|
||||
SP_DATA_INSUFFICIENT = 0x201,
|
||||
SP_MEMORY_ID_INVALID = 0x202,
|
||||
MPSOC_NOT_IN_RESET = 0x203,
|
||||
FLASH_INIT_FAILED = 0x204,
|
||||
FLASH_ERASE_FAILED = 0x205,
|
||||
FLASH_WRITE_FAILED = 0x206,
|
||||
FLASH_VERIFY_FAILED = 0x207,
|
||||
CANNOT_ACCESS_TM = 0x208,
|
||||
CANNOT_SEND_TM = 0x209,
|
||||
PG_LOW = 0x300,
|
||||
PG_5V_LOW = 0x301,
|
||||
PG_0V85_LOW = 0x302,
|
||||
PG_1V8_LOW = 0x303,
|
||||
PG_MISC_LOW = 0x304,
|
||||
PG_3V3_LOW = 0x305,
|
||||
PG_MB_VAIO_LOW = 0x306,
|
||||
PG_MB_MPSOCIO_LOW = 0x307
|
||||
};
|
||||
static constexpr char STATUS_PRINTOUT_PREFIX[] = "SUPV EXE NAK Status: ";
|
||||
};
|
||||
|
||||
class UpdateStatusReport {
|
||||
|
@ -314,6 +314,10 @@ ReturnValue_t PlocSupervisorHandler::buildCommandFromCommand(DeviceCommandId_t d
|
||||
prepareSetAdcThresholdCmd(commandData);
|
||||
result = returnvalue::OK;
|
||||
break;
|
||||
}
|
||||
case WIPE_MRAM: {
|
||||
result = prepareWipeMramCmd(commandData);
|
||||
break;
|
||||
}
|
||||
// case ENABLE_NVMS: {
|
||||
// result = prepareEnableNvmsCommand(commandData);
|
||||
@ -324,33 +328,6 @@ ReturnValue_t PlocSupervisorHandler::buildCommandFromCommand(DeviceCommandId_t d
|
||||
// result = returnvalue::OK;
|
||||
// break;
|
||||
// }
|
||||
/* case FACTORY_RESET_CLEAR_ALL: {
|
||||
FactoryReset packet(spParams);
|
||||
result = packet.buildPacket(FactoryReset::Op::CLEAR_ALL);
|
||||
if (result != returnvalue::OK) {
|
||||
break;
|
||||
}
|
||||
finishTcPrep(packet.getFullPacketLen());
|
||||
break;
|
||||
}
|
||||
case FACTORY_RESET_CLEAR_MIRROR: {
|
||||
FactoryReset packet(spParams);
|
||||
result = packet.buildPacket(FactoryReset::Op::MIRROR_ENTRIES);
|
||||
if (result != returnvalue::OK) {
|
||||
break;
|
||||
}
|
||||
finishTcPrep(packet.getFullPacketLen());
|
||||
break;
|
||||
}
|
||||
case FACTORY_RESET_CLEAR_CIRCULAR: {
|
||||
FactoryReset packet(spParams);
|
||||
result = packet.buildPacket(FactoryReset::Op::CIRCULAR_ENTRIES);
|
||||
if (result != returnvalue::OK) {
|
||||
break;
|
||||
}
|
||||
finishTcPrep(packet.getFullPacketLen());
|
||||
break;
|
||||
}*/
|
||||
// Removed command
|
||||
// case START_MPSOC_QUIET: {
|
||||
// prepareEmptyCmd(APID_START_MPSOC_QUIET);
|
||||
@ -417,10 +394,6 @@ ReturnValue_t PlocSupervisorHandler::buildCommandFromCommand(DeviceCommandId_t d
|
||||
// result = returnvalue::OK;
|
||||
// break;
|
||||
// }
|
||||
case WIPE_MRAM: {
|
||||
result = prepareWipeMramCmd(commandData);
|
||||
break;
|
||||
}
|
||||
// case FIRST_MRAM_DUMP:
|
||||
// case CONSECUTIVE_MRAM_DUMP:
|
||||
// result = prepareDumpMramCmd(commandData);
|
||||
@ -443,6 +416,7 @@ void PlocSupervisorHandler::fillCommandAndReplyMap() {
|
||||
insertInCommandMap(SET_BOOT_TIMEOUT);
|
||||
insertInCommandMap(SET_MAX_RESTART_TRIES);
|
||||
insertInCommandMap(RESET_MPSOC);
|
||||
insertInCommandMap(WIPE_MRAM);
|
||||
insertInCommandMap(SET_TIME_REF);
|
||||
insertInCommandMap(DISABLE_PERIOIC_HK_TRANSMISSION);
|
||||
insertInCommandMap(GET_BOOT_STATUS_REPORT);
|
||||
@ -456,6 +430,9 @@ void PlocSupervisorHandler::fillCommandAndReplyMap() {
|
||||
insertInCommandMap(FACTORY_RESET);
|
||||
insertInCommandMap(SET_SHUTDOWN_TIMEOUT);
|
||||
insertInCommandMap(FACTORY_FLASH);
|
||||
insertInCommandMap(SET_ADC_ENABLED_CHANNELS);
|
||||
insertInCommandMap(SET_ADC_THRESHOLD);
|
||||
insertInCommandMap(SET_ADC_WINDOW_AND_STRIDE);
|
||||
insertInCommandMap(RESET_PL);
|
||||
|
||||
// ACK replies, use countdown for them
|
||||
@ -567,9 +544,6 @@ ReturnValue_t PlocSupervisorHandler::enableReplyInReplyMap(DeviceCommandMap::ite
|
||||
case FACTORY_RESET:
|
||||
case READ_GPIO:
|
||||
// case RESTART_SUPERVISOR:
|
||||
// case FACTORY_RESET_CLEAR_ALL:
|
||||
// case FACTORY_RESET_CLEAR_MIRROR:
|
||||
// case FACTORY_RESET_CLEAR_CIRCULAR:
|
||||
case DISABLE_PERIOIC_HK_TRANSMISSION:
|
||||
// case START_MPSOC_QUIET:
|
||||
case SET_SHUTDOWN_TIMEOUT:
|
||||
|
Loading…
Reference in New Issue
Block a user