changed all table parsing to use gom space API
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
This commit is contained in:
@ -3,12 +3,13 @@
|
||||
#include <fsfw/datapool/PoolReadGuard.h>
|
||||
|
||||
#include "OBSWConfig.h"
|
||||
#include "p60dock_hk.h"
|
||||
|
||||
P60DockHandler::P60DockHandler(object_id_t objectId, object_id_t comIF, CookieIF *comCookie,
|
||||
FailureIsolationBase *customFdir)
|
||||
: GomspaceDeviceHandler(objectId, comIF, comCookie, customFdir,
|
||||
P60Dock::MAX_CONFIGTABLE_ADDRESS, P60Dock::MAX_HKTABLE_ADDRESS,
|
||||
P60Dock::HK_TABLE_REPLY_SIZE),
|
||||
P60DOCK_HK_SIZE),
|
||||
coreHk(this),
|
||||
auxHk(this) {}
|
||||
|
||||
@ -30,7 +31,6 @@ void P60DockHandler::letChildHandleHkReply(DeviceCommandId_t id, const uint8_t *
|
||||
|
||||
void P60DockHandler::parseHkTableReply(const uint8_t *packet) {
|
||||
using namespace P60Dock;
|
||||
uint16_t dataOffset = 0;
|
||||
PoolReadGuard pg0(&coreHk);
|
||||
PoolReadGuard pg1(&auxHk);
|
||||
if (pg0.getReadResult() != HasReturnvaluesIF::RETURN_OK or
|
||||
@ -43,45 +43,27 @@ void P60DockHandler::parseHkTableReply(const uint8_t *packet) {
|
||||
* Fist 10 bytes contain the gomspace header. Each variable is preceded by the 16-bit table
|
||||
* address.
|
||||
*/
|
||||
dataOffset += 12;
|
||||
for (uint8_t idx = 0; idx < hk::CHNLS_LEN; idx++) {
|
||||
coreHk.currents[idx] = *(packet + dataOffset) << 8 | *(packet + dataOffset + 1);
|
||||
dataOffset += 4;
|
||||
coreHk.currents[idx] = as<int16_t>(packet + (idx*2));
|
||||
}
|
||||
for (uint8_t idx = 0; idx < hk::CHNLS_LEN; idx++) {
|
||||
coreHk.voltages[idx] = *(packet + dataOffset) << 8 | *(packet + dataOffset + 1);
|
||||
dataOffset += 4;
|
||||
coreHk.voltages[idx] = as<uint16_t>(packet + 0x1a + (idx*2));
|
||||
}
|
||||
for (uint8_t idx = 0; idx < hk::CHNLS_LEN; idx++) {
|
||||
coreHk.outputEnables[idx] = *(packet + dataOffset);
|
||||
dataOffset += 3;
|
||||
coreHk.outputEnables[idx] = *(packet + 0x34 + idx);
|
||||
}
|
||||
|
||||
coreHk.temperature1 =
|
||||
static_cast<int16_t>(*(packet + dataOffset) << 8 | *(packet + dataOffset + 1)) * 0.1;
|
||||
dataOffset += 4;
|
||||
coreHk.temperature2 =
|
||||
static_cast<int16_t>(*(packet + dataOffset) << 8 | *(packet + dataOffset + 1)) * 0.1;
|
||||
dataOffset += 4;
|
||||
coreHk.temperature1 = as<int16_t>(packet + 0x44) * 0.1;
|
||||
coreHk.temperature2 = as<int16_t>(packet + 0x44 + 2) * 0.1;
|
||||
|
||||
auxHk.bootcause = *(packet + dataOffset) << 24 |
|
||||
|
||||
*(packet + dataOffset + 1) << 16 | *(packet + dataOffset + 2) << 8 |
|
||||
*(packet + dataOffset + 3);
|
||||
dataOffset += 6;
|
||||
coreHk.bootCount = *(packet + dataOffset) << 24 | *(packet + dataOffset + 1) << 16 |
|
||||
*(packet + dataOffset + 2) << 8 | *(packet + dataOffset + 3);
|
||||
auxHk.bootcause = as<uint32_t>(packet + 0x48);
|
||||
coreHk.bootCount = as<uint32_t>(packet + 0x4c);
|
||||
if (firstHk) {
|
||||
triggerEvent(P60_BOOT_COUNT, coreHk.bootCount.value);
|
||||
}
|
||||
dataOffset += 6;
|
||||
auxHk.uptime = *(packet + dataOffset) << 24 | *(packet + dataOffset + 1) << 16 |
|
||||
*(packet + dataOffset + 2) << 8 | *(packet + dataOffset + 3);
|
||||
dataOffset += 6;
|
||||
auxHk.resetcause = *(packet + dataOffset) << 8 | *(packet + dataOffset + 1);
|
||||
|
||||
dataOffset += 4;
|
||||
uint8_t newBattMode = packet[dataOffset];
|
||||
auxHk.uptime = as<uint32_t>(packet + 0x50);
|
||||
auxHk.resetcause = as<uint16_t>(packet + 0x54);
|
||||
uint8_t newBattMode = packet[0x56];
|
||||
if (firstHk) {
|
||||
triggerEvent(BATT_MODE, newBattMode);
|
||||
} else if (newBattMode != coreHk.battMode.value) {
|
||||
@ -89,83 +71,46 @@ void P60DockHandler::parseHkTableReply(const uint8_t *packet) {
|
||||
}
|
||||
coreHk.battMode = newBattMode;
|
||||
|
||||
dataOffset += 3;
|
||||
auxHk.heaterOn = *(packet + dataOffset);
|
||||
/* + 13 because here begins a new gomspace csp data field */
|
||||
dataOffset += 13;
|
||||
auxHk.converter5VStatus = *(packet + dataOffset);
|
||||
dataOffset += 3;
|
||||
auxHk.heaterOn = *(packet + 0x57);
|
||||
auxHk.converter5VStatus = *(packet + 0x58);
|
||||
|
||||
for (uint8_t idx = 0; idx < hk::CHNLS_LEN; idx++) {
|
||||
auxHk.latchups[idx] = *(packet + dataOffset) << 8 | *(packet + dataOffset + 1);
|
||||
dataOffset += 4;
|
||||
auxHk.latchups[idx] = as<uint16_t>(packet + 0x5a + (idx*2));
|
||||
}
|
||||
|
||||
auxHk.dockVbatVoltageValue = *(packet + dataOffset) << 8 | *(packet + dataOffset + 1);
|
||||
dataOffset += 4;
|
||||
auxHk.dockVccCurrent = *(packet + dataOffset) << 8 | *(packet + dataOffset + 1);
|
||||
dataOffset += 4;
|
||||
coreHk.batteryCurrent = *(packet + dataOffset) << 8 | *(packet + dataOffset + 1);
|
||||
dataOffset += 4;
|
||||
coreHk.batteryVoltage = *(packet + dataOffset) << 8 | *(packet + dataOffset + 1);
|
||||
dataOffset += 4;
|
||||
auxHk.dockVbatVoltageValue = as<uint16_t>(packet + 0x74);
|
||||
auxHk.dockVccCurrent = as<int16_t>(packet + 0x76);
|
||||
coreHk.batteryCurrent = as<int16_t>(packet + 0x78);
|
||||
coreHk.batteryVoltage = as<uint16_t>(packet + 0x7a);
|
||||
|
||||
auxHk.batteryTemperature1 = *(packet + dataOffset) << 8 | *(packet + dataOffset + 1);
|
||||
dataOffset += 4;
|
||||
auxHk.batteryTemperature2 = *(packet + dataOffset) << 8 | *(packet + dataOffset + 1);
|
||||
dataOffset += 4;
|
||||
auxHk.batteryTemperature1 = as<int16_t>(packet + 0x7c);
|
||||
auxHk.batteryTemperature2 = as<int16_t>(packet + 0x7c + 2);
|
||||
|
||||
for (uint8_t idx = 0; idx < NUM_DEVS; idx++) {
|
||||
auxHk.devicesType[idx] = *(packet + dataOffset);
|
||||
dataOffset += 3;
|
||||
auxHk.devicesType[idx] = *(packet + 0x80 + idx);
|
||||
}
|
||||
for (uint8_t idx = 0; idx < NUM_DEVS; idx++) {
|
||||
auxHk.devicesStatus[idx] = *(packet + dataOffset);
|
||||
dataOffset += 3;
|
||||
auxHk.devicesStatus[idx] = *(packet + 0x88 + idx);
|
||||
}
|
||||
|
||||
auxHk.dearmStatus = *(packet + dataOffset);
|
||||
dataOffset += 3;
|
||||
auxHk.dearmStatus = *(packet + 0x90);
|
||||
|
||||
auxHk.wdtCntGnd = *(packet + dataOffset) << 24 | *(packet + dataOffset + 1) << 16 |
|
||||
*(packet + dataOffset + 2) << 8 | *(packet + dataOffset + 3);
|
||||
dataOffset += 6;
|
||||
auxHk.wdtCntI2c = *(packet + dataOffset) << 24 | *(packet + dataOffset + 1) << 16 |
|
||||
*(packet + dataOffset + 2) << 8 | *(packet + dataOffset + 3);
|
||||
dataOffset += 6;
|
||||
auxHk.wdtCntCan = *(packet + dataOffset) << 24 | *(packet + dataOffset + 1) << 16 |
|
||||
*(packet + dataOffset + 2) << 8 | *(packet + dataOffset + 3);
|
||||
dataOffset += 6;
|
||||
auxHk.wdtCntCsp1 = *(packet + dataOffset) << 24 | *(packet + dataOffset + 1) << 16 |
|
||||
*(packet + dataOffset + 2) << 8 | *(packet + dataOffset + 3);
|
||||
dataOffset += 6;
|
||||
auxHk.wdtCntCsp2 = *(packet + dataOffset) << 24 | *(packet + dataOffset + 1) << 16 |
|
||||
*(packet + dataOffset + 2) << 8 | *(packet + dataOffset + 3);
|
||||
dataOffset += 6;
|
||||
auxHk.wdtCntGnd = as<uint32_t>(packet + 0x94);
|
||||
auxHk.wdtCntI2c = as<uint32_t>(packet + 0x98);
|
||||
auxHk.wdtCntCan = as<uint32_t>(packet + 0x9c);
|
||||
auxHk.wdtCntCsp1 = as<uint32_t>(packet + 0xa0);
|
||||
auxHk.wdtCntCsp2 = as<uint32_t>(packet + 0xa0 + 4);
|
||||
auxHk.wdtGndLeft = as<uint32_t>(packet + 0xa8);
|
||||
auxHk.wdtI2cLeft = as<uint32_t>(packet + 0xac);
|
||||
auxHk.wdtCanLeft = as<uint32_t>(packet + 0xb0);
|
||||
|
||||
auxHk.wdtGndLeft = *(packet + dataOffset) << 24 | *(packet + dataOffset + 1) << 16 |
|
||||
*(packet + dataOffset + 2) << 8 | *(packet + dataOffset + 3);
|
||||
dataOffset += 6;
|
||||
auxHk.wdtI2cLeft = *(packet + dataOffset) << 24 | *(packet + dataOffset + 1) << 16 |
|
||||
*(packet + dataOffset + 2) << 8 | *(packet + dataOffset + 3);
|
||||
dataOffset += 6;
|
||||
auxHk.wdtCanLeft = *(packet + dataOffset) << 24 | *(packet + dataOffset + 1) << 16 |
|
||||
*(packet + dataOffset + 2) << 8 | *(packet + dataOffset + 3);
|
||||
/* +16 because here begins a new gomspace csp packet */
|
||||
dataOffset += 16;
|
||||
auxHk.wdtCspLeft1 = *(packet + 0xb4);
|
||||
auxHk.wdtCspLeft2 = *(packet + 0xb4 + 1);
|
||||
|
||||
auxHk.wdtCspLeft1 = *(packet + dataOffset);
|
||||
dataOffset += 3;
|
||||
auxHk.wdtCspLeft2 = *(packet + dataOffset);
|
||||
dataOffset += 3;
|
||||
|
||||
auxHk.batteryChargeCurrent = *(packet + dataOffset) << 8 | *(packet + dataOffset + 1);
|
||||
dataOffset += 4;
|
||||
auxHk.batteryDischargeCurrent = *(packet + dataOffset) << 8 | *(packet + dataOffset + 1);
|
||||
dataOffset += 4;
|
||||
auxHk.ant6Depl = *(packet + dataOffset);
|
||||
dataOffset += 3;
|
||||
auxHk.ar6Depl = *(packet + dataOffset);
|
||||
auxHk.batteryChargeCurrent = as<int16_t>(packet + 0xb6);
|
||||
auxHk.batteryDischargeCurrent = as<int16_t>(packet + 0xb8);
|
||||
auxHk.ant6Depl = *(packet + 0xba);
|
||||
auxHk.ar6Depl = *(packet + 0xbb);
|
||||
if (firstHk) {
|
||||
firstHk = false;
|
||||
}
|
||||
|
Reference in New Issue
Block a user