save before changing pdu hk table dataset
This commit is contained in:
parent
3d734117e1
commit
00cabbb8e9
@ -145,34 +145,76 @@ ReturnValue_t CspComIF::readReceivedMessage(CookieIF *cookie,
|
|||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t CspComIF::cspTransfer(uint8_t cspAddress, uint8_t cspPort,
|
ReturnValue_t CspComIF::cspTransfer(uint8_t cspAddress, uint8_t cspPort,
|
||||||
const uint8_t* cmdBuffer, int cmdBufferLen, uint16_t querySize) {
|
const uint8_t* cmdBuffer, int cmdLen, uint16_t querySize) {
|
||||||
|
|
||||||
uint32_t timeout_ms = 500;
|
uint32_t timeout_ms = 1000;
|
||||||
|
uint16_t bytesRead = 0;
|
||||||
|
int32_t expectedSize = (int32_t)querySize;
|
||||||
vectorBufferIter iter = cspDeviceMap.find(cspAddress);
|
vectorBufferIter iter = cspDeviceMap.find(cspAddress);
|
||||||
if(iter == cspDeviceMap.end()){
|
if(iter == cspDeviceMap.end()){
|
||||||
sif::error << "CSP device with address " << cspAddress << " no found in"
|
sif::error << "CSP device with address " << cspAddress << " no found in"
|
||||||
<< " device map" << std::endl;
|
<< " device map" << std::endl;
|
||||||
}
|
}
|
||||||
uint8_t* replyBuffer = iter->second.data();
|
uint8_t* replyBuffer = iter->second.data();
|
||||||
uint8_t tmpCmdBuffer[cmdBufferLen];
|
// uint8_t tmpCmdBuffer[cmdBufferLen];
|
||||||
memcpy(tmpCmdBuffer, cmdBuffer, cmdBufferLen);
|
// memcpy(tmpCmdBuffer, cmdBuffer, cmdBufferLen);
|
||||||
|
|
||||||
csp_conn_t * conn = csp_connect(CSP_PRIO_HIGH, cspAddress, cspPort, 0,
|
csp_conn_t * conn = csp_connect(CSP_PRIO_HIGH, cspAddress, cspPort, 0,
|
||||||
CSP_O_NONE);
|
CSP_O_NONE);
|
||||||
|
|
||||||
int result = csp_transaction_persistent(conn, timeout_ms,
|
// int result = csp_transaction_persistent(conn, timeout_ms,
|
||||||
tmpCmdBuffer, cmdBufferLen, replyBuffer, querySize);
|
// tmpCmdBuffer, cmdBufferLen, replyBuffer, querySize);
|
||||||
if(querySize != 0){
|
|
||||||
if(result != querySize){
|
csp_packet_t* commandPacket = (csp_packet_t*)csp_buffer_get(cmdLen);
|
||||||
sif::error << "CSP transfer failed to receive all requested bytes "
|
if (commandPacket == NULL) {
|
||||||
<< std::endl;
|
sif::error << "CspComIF::cspTransfer: Failed to get memory for a csp packet from the csp "
|
||||||
return HasReturnvaluesIF::RETURN_FAILED;
|
<< "stack" << std::endl;
|
||||||
}
|
return RETURN_FAILED;
|
||||||
} else {
|
}
|
||||||
if(result != 1){
|
|
||||||
sif::error << "CSP transfer failed" << std::endl;
|
memcpy(commandPacket->data, cmdBuffer, cmdLen);
|
||||||
return HasReturnvaluesIF::RETURN_FAILED;
|
commandPacket->length = cmdLen;
|
||||||
}
|
|
||||||
|
if (!csp_send(conn, commandPacket, timeout_ms)) {
|
||||||
|
csp_buffer_free(commandPacket);
|
||||||
|
sif::error << "CspComIF::cspTransfer: Failed to send csp packet" << std::endl;
|
||||||
|
return RETURN_FAILED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return when no reply is expected */
|
||||||
|
if (expectedSize == 0) {
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
csp_packet_t * reply;
|
||||||
|
reply = csp_read(conn, timeout_ms);
|
||||||
|
if (reply == NULL) {
|
||||||
|
sif::error << "CspComIF::cspTransfer: Failed to read csp packet" << std::endl;
|
||||||
|
return RETURN_FAILED;
|
||||||
|
}
|
||||||
|
memcpy(replyBuffer, reply->data, reply->length);
|
||||||
|
expectedSize = expectedSize - reply->length;
|
||||||
|
bytesRead += reply->length;
|
||||||
|
csp_buffer_free(reply);
|
||||||
|
while (expectedSize > 0) {
|
||||||
|
reply = csp_read(conn, timeout_ms);
|
||||||
|
if (reply == NULL) {
|
||||||
|
sif::error << "CspComIF::cspTransfer: Failed to read csp packet" << std::endl;
|
||||||
|
return RETURN_FAILED;
|
||||||
|
}
|
||||||
|
if ((reply->length + bytesRead) > iter->second.size()) {
|
||||||
|
sif::error << "CspComIF::cspTransfer: Reply buffer to short" << std::endl;
|
||||||
|
return RETURN_FAILED;
|
||||||
|
}
|
||||||
|
memcpy(replyBuffer + bytesRead, reply->data, reply->length);
|
||||||
|
expectedSize = expectedSize - reply->length;
|
||||||
|
bytesRead += reply->length;
|
||||||
|
csp_buffer_free(reply);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(expectedSize != 0){
|
||||||
|
sif::error << "CspComIF::cspTransfer: Received more bytes than requested" << std::endl;
|
||||||
|
return RETURN_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
csp_close(conn);
|
csp_close(conn);
|
||||||
|
@ -40,11 +40,11 @@ private:
|
|||||||
* functions. Specifies how long the functions wait
|
* functions. Specifies how long the functions wait
|
||||||
* for a successful operation.
|
* for a successful operation.
|
||||||
* @param cmdBuffer The data to send.
|
* @param cmdBuffer The data to send.
|
||||||
* @param cmpBuffer The number of bytes to send.
|
* @param cmdLen The number of bytes to send.
|
||||||
* @param querySize The size of the requested message.
|
* @param querySize The size of the requested message.
|
||||||
*/
|
*/
|
||||||
ReturnValue_t cspTransfer(uint8_t cspAddress, uint8_t cspPort,
|
ReturnValue_t cspTransfer(uint8_t cspAddress, uint8_t cspPort,
|
||||||
const uint8_t* cmdBuffer, int cmdBufferLen, uint16_t querySize);
|
const uint8_t* cmdBuffer, int cmdLen, uint16_t querySize);
|
||||||
|
|
||||||
enum Ports {
|
enum Ports {
|
||||||
CSP_PING = 1,
|
CSP_PING = 1,
|
||||||
|
2
fsfw
2
fsfw
@ -1 +1 @@
|
|||||||
Subproject commit 41c0436e29f7a75f737f75e963dc2119a64a3921
|
Subproject commit 2104d3f38a409a46210849ea23b0ea7fc7efe617
|
@ -3,9 +3,9 @@
|
|||||||
|
|
||||||
GomspaceDeviceHandler::GomspaceDeviceHandler(object_id_t objectId, object_id_t comIF,
|
GomspaceDeviceHandler::GomspaceDeviceHandler(object_id_t objectId, object_id_t comIF,
|
||||||
CookieIF * comCookie, uint16_t maxConfigTableAddress, uint16_t maxHkTableAddress,
|
CookieIF * comCookie, uint16_t maxConfigTableAddress, uint16_t maxHkTableAddress,
|
||||||
uint16_t hkTableSize, LocalPoolDataSetBase* hkTableDataset) :
|
uint16_t hkTableReplySize, LocalPoolDataSetBase* hkTableDataset) :
|
||||||
DeviceHandlerBase(objectId, comIF, comCookie), maxConfigTableAddress(maxConfigTableAddress),
|
DeviceHandlerBase(objectId, comIF, comCookie), maxConfigTableAddress(maxConfigTableAddress),
|
||||||
maxHkTableAddress(maxHkTableAddress), hkTableSize(hkTableSize), hkTableDataset(hkTableDataset) {
|
maxHkTableAddress(maxHkTableAddress), hkTableReplySize(hkTableReplySize), hkTableDataset(hkTableDataset) {
|
||||||
mode = MODE_NORMAL;
|
mode = MODE_NORMAL;
|
||||||
if (comCookie == NULL) {
|
if (comCookie == NULL) {
|
||||||
sif::error << "GomspaceDeviceHandler::GomspaceDeviceHandler: Invalid com cookie"
|
sif::error << "GomspaceDeviceHandler::GomspaceDeviceHandler: Invalid com cookie"
|
||||||
@ -76,7 +76,7 @@ ReturnValue_t GomspaceDeviceHandler::buildCommandFromCommand(
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case(GOMSPACE::REQUEST_HK_TABLE): {
|
case(GOMSPACE::REQUEST_HK_TABLE): {
|
||||||
result = generateRequestFullHkTableCmd(hkTableSize);
|
result = generateRequestFullHkTableCmd(hkTableReplySize);
|
||||||
if(result != HasReturnvaluesIF::RETURN_OK){
|
if(result != HasReturnvaluesIF::RETURN_OK){
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -357,9 +357,9 @@ ReturnValue_t GomspaceDeviceHandler::generateResetWatchdogCmd(){
|
|||||||
return HasReturnvaluesIF::RETURN_OK;
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t GomspaceDeviceHandler::generateRequestFullHkTableCmd(uint16_t hkTableSize) {
|
ReturnValue_t GomspaceDeviceHandler::generateRequestFullHkTableCmd(uint16_t hkTableReplySize) {
|
||||||
|
|
||||||
uint16_t querySize = hkTableSize + GOMSPACE::GS_HDR_LENGTH;
|
uint16_t querySize = hkTableReplySize;
|
||||||
uint8_t tableId = HK_TABLE_ID;
|
uint8_t tableId = HK_TABLE_ID;
|
||||||
RequestFullTableCommand requestFullTableCommand(querySize, tableId);
|
RequestFullTableCommand requestFullTableCommand(querySize, tableId);
|
||||||
|
|
||||||
|
@ -51,8 +51,8 @@ protected:
|
|||||||
uint16_t maxConfigTableAddress;
|
uint16_t maxConfigTableAddress;
|
||||||
uint16_t maxHkTableAddress;
|
uint16_t maxHkTableAddress;
|
||||||
|
|
||||||
/** The size of the housekeeping table (table id 4) */
|
/** The size of the reply following a full hk table request.*/
|
||||||
uint16_t hkTableSize;
|
uint16_t hkTableReplySize;
|
||||||
|
|
||||||
LocalPoolDataSetBase* hkTableDataset = nullptr;
|
LocalPoolDataSetBase* hkTableDataset = nullptr;
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#include <fsfwconfig/objects/systemObjectList.h>
|
#include <fsfwconfig/objects/systemObjectList.h>
|
||||||
#include <mission/devices/devicedefinitions/GomSpacePackets.h>
|
#include <mission/devices/devicedefinitions/GomSpacePackets.h>
|
||||||
#include <fsfw/ipc/QueueFactory.h>
|
#include <fsfw/ipc/QueueFactory.h>
|
||||||
#include <fsfw/housekeeping/HousekeepingPacketUpdate.h>
|
#include <fsfw/housekeeping/HousekeepingSnapshot.h>
|
||||||
#include <fsfwconfig/OBSWConfig.h>
|
#include <fsfwconfig/OBSWConfig.h>
|
||||||
|
|
||||||
PCDUHandler::PCDUHandler(object_id_t setObjectId, size_t cmdQueueSize) :
|
PCDUHandler::PCDUHandler(object_id_t setObjectId, size_t cmdQueueSize) :
|
||||||
@ -85,7 +85,7 @@ void PCDUHandler::handleChangedDataset(sid_t sid, store_address_t storeId) {
|
|||||||
ReturnValue_t result;
|
ReturnValue_t result;
|
||||||
|
|
||||||
if (sid == sid_t(objects::PCDU_HANDLER, PDU2::HK_TABLE_DATA_SET_ID)) {
|
if (sid == sid_t(objects::PCDU_HANDLER, PDU2::HK_TABLE_DATA_SET_ID)) {
|
||||||
HousekeepingPacketUpdate packetUpdate(reinterpret_cast<uint8_t*>(&timeStamp),
|
HousekeepingSnapshot packetUpdate(reinterpret_cast<uint8_t*>(&timeStamp),
|
||||||
sizeof(timeStamp), &pdu2HkTableDataset);
|
sizeof(timeStamp), &pdu2HkTableDataset);
|
||||||
const uint8_t* packet_ptr = NULL;
|
const uint8_t* packet_ptr = NULL;
|
||||||
size_t size;
|
size_t size;
|
||||||
@ -257,7 +257,10 @@ ReturnValue_t PCDUHandler::initializeLocalDataPool(localpool::DataPool &localDat
|
|||||||
localDataPoolMap.emplace(P60System::PDU2_VCC, new PoolEntry<int16_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_VCC, new PoolEntry<int16_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_VBAT, new PoolEntry<int16_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_VBAT, new PoolEntry<int16_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_TEMPERATURE, new PoolEntry<int16_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_TEMPERATURE, new PoolEntry<int16_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_CONV_EN, new PoolEntry<uint8_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_CONV_EN_1, new PoolEntry<uint8_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_CONV_EN_2, new PoolEntry<uint8_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_CONV_EN_3, new PoolEntry<uint8_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_DUMMY_BYTE_CONV_EN, new PoolEntry<uint8_t>( { 0 }));
|
||||||
|
|
||||||
localDataPoolMap.emplace(P60System::PDU2_OUT_EN_Q7S, new PoolEntry<uint8_t>( {
|
localDataPoolMap.emplace(P60System::PDU2_OUT_EN_Q7S, new PoolEntry<uint8_t>( {
|
||||||
pcduSwitches::INIT_STATE_Q7S }));
|
pcduSwitches::INIT_STATE_Q7S }));
|
||||||
@ -280,12 +283,25 @@ ReturnValue_t PCDUHandler::initializeLocalDataPool(localpool::DataPool &localDat
|
|||||||
pcduSwitches::INIT_STATE_ACS_BOARD_SIDE_B }));
|
pcduSwitches::INIT_STATE_ACS_BOARD_SIDE_B }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_OUT_EN_PAYLOAD_CAMERA, new PoolEntry<uint8_t>( {
|
localDataPoolMap.emplace(P60System::PDU2_OUT_EN_PAYLOAD_CAMERA, new PoolEntry<uint8_t>( {
|
||||||
pcduSwitches::INIT_STATE_PAYLOAD_CAMERA }));
|
pcduSwitches::INIT_STATE_PAYLOAD_CAMERA }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_DUMMY_BYTE_OUT_EN, new PoolEntry<uint8_t>( { 0 }));
|
||||||
|
|
||||||
localDataPoolMap.emplace(P60System::PDU2_BOOTCAUSE, new PoolEntry<uint32_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_BOOTCAUSE, new PoolEntry<uint32_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_BOOTCNT, new PoolEntry<uint32_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_BOOTCNT, new PoolEntry<uint32_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_UPTIME, new PoolEntry<uint32_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_UPTIME, new PoolEntry<uint32_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_RESETCAUSE, new PoolEntry<uint16_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_RESETCAUSE, new PoolEntry<uint16_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_BATT_MODE, new PoolEntry<uint8_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_BATT_MODE, new PoolEntry<uint8_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_DUMMY_BYTE_BATT_MODE, new PoolEntry<uint8_t>( { 0 }));
|
||||||
|
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_LATCHUP_Q7S, new PoolEntry<uint16_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_LATCHUP_PAYLOAD_PCDU_CH1, new PoolEntry<uint16_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_LATCHUP_RW, new PoolEntry<uint16_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_LATCHUP_TCS_BOARD_HEATER_IN, new PoolEntry<uint16_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_LATCHUP_TCS_BOARD_HEATER_IN, new PoolEntry<uint16_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_LATCHUP_SUS_REDUNDANT, new PoolEntry<uint16_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_LATCHUP_DEPLOYMENT_MECHANISM, new PoolEntry<uint16_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_LATCHUP_PAYLOAD_PCDU_CH6, new PoolEntry<uint16_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_LATCHUP_ACS_BOARD_SIDE_B, new PoolEntry<uint16_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_LATCHUP_PAYLOAD_CAMERA, new PoolEntry<uint16_t>( { 0 }));
|
||||||
|
|
||||||
localDataPoolMap.emplace(P60System::PDU2_DEVICE_0, new PoolEntry<uint8_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_DEVICE_0, new PoolEntry<uint8_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_DEVICE_1, new PoolEntry<uint8_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_DEVICE_1, new PoolEntry<uint8_t>( { 0 }));
|
||||||
@ -304,15 +320,18 @@ ReturnValue_t PCDUHandler::initializeLocalDataPool(localpool::DataPool &localDat
|
|||||||
localDataPoolMap.emplace(P60System::PDU2_DEVICE_5_STATUS, new PoolEntry<uint8_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_DEVICE_5_STATUS, new PoolEntry<uint8_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_DEVICE_6_STATUS, new PoolEntry<uint8_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_DEVICE_6_STATUS, new PoolEntry<uint8_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_DEVICE_7_STATUS, new PoolEntry<uint8_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_DEVICE_7_STATUS, new PoolEntry<uint8_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_DUMMY_DEVICE_STATUS, new PoolEntry<uint16_t>( { 0 }));
|
||||||
|
|
||||||
localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_GND, new PoolEntry<uint32_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_GND, new PoolEntry<uint32_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_I2C, new PoolEntry<uint32_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_I2C, new PoolEntry<uint32_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_CAN, new PoolEntry<uint32_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_CAN, new PoolEntry<uint32_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_CSP, new PoolEntry<uint32_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_CSP1, new PoolEntry<uint32_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_CSP2, new PoolEntry<uint32_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_WDT_GND_LEFT, new PoolEntry<uint32_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_WDT_GND_LEFT, new PoolEntry<uint32_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_WDT_I2C_LEFT, new PoolEntry<uint32_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_WDT_I2C_LEFT, new PoolEntry<uint32_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_WDT_CAN_LEFT, new PoolEntry<uint32_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_WDT_CAN_LEFT, new PoolEntry<uint32_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_WDT_CSP_LEFT, new PoolEntry<uint32_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_WDT_CSP_LEFT1, new PoolEntry<uint8_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_WDT_CSP_LEFT2, new PoolEntry<uint8_t>( { 0 }));
|
||||||
|
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
}
|
}
|
||||||
|
@ -12,8 +12,9 @@ PDU1Handler::~PDU1Handler() {
|
|||||||
|
|
||||||
ReturnValue_t PDU1Handler::buildNormalDeviceCommand(
|
ReturnValue_t PDU1Handler::buildNormalDeviceCommand(
|
||||||
DeviceCommandId_t * id) {
|
DeviceCommandId_t * id) {
|
||||||
*id = GOMSPACE::REQUEST_HK_TABLE;
|
// *id = GOMSPACE::REQUEST_HK_TABLE;
|
||||||
return buildCommandFromCommand(*id, NULL, 0);
|
// return buildCommandFromCommand(*id, NULL, 0);
|
||||||
|
return RETURN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PDU1Handler::letChildHandleHkReply(DeviceCommandId_t id, const uint8_t *packet) {
|
void PDU1Handler::letChildHandleHkReply(DeviceCommandId_t id, const uint8_t *packet) {
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
#include <fsfwconfig/OBSWConfig.h>
|
#include <fsfwconfig/OBSWConfig.h>
|
||||||
|
|
||||||
PDU2Handler::PDU2Handler(object_id_t objectId, object_id_t comIF, CookieIF * comCookie,
|
PDU2Handler::PDU2Handler(object_id_t objectId, object_id_t comIF, CookieIF * comCookie,
|
||||||
uint16_t maxConfigTableAddress, uint16_t maxHkTableAddress, uint16_t hkTableSize) :
|
uint16_t maxConfigTableAddress, uint16_t maxHkTableAddress) :
|
||||||
GomspaceDeviceHandler(objectId, comIF, comCookie, maxConfigTableAddress, maxHkTableAddress,
|
GomspaceDeviceHandler(objectId, comIF, comCookie, maxConfigTableAddress, maxHkTableAddress,
|
||||||
hkTableSize, &pdu2HkTableDataset), pdu2HkTableDataset(this) {
|
PDU::HK, &pdu2HkTableDataset), pdu2HkTableDataset(this) {
|
||||||
}
|
}
|
||||||
|
|
||||||
PDU2Handler::~PDU2Handler() {
|
PDU2Handler::~PDU2Handler() {
|
||||||
@ -23,7 +23,7 @@ void PDU2Handler::letChildHandleHkReply(DeviceCommandId_t id, const uint8_t *pac
|
|||||||
|
|
||||||
/* Pointer points to beginning of payload data */
|
/* Pointer points to beginning of payload data */
|
||||||
pdu2HkTableDataset.read();
|
pdu2HkTableDataset.read();
|
||||||
const uint8_t* payloadPtr = packet + GOMSPACE::GS_HDR_LENGTH;
|
const uint8_t* payloadPtr = packet + 12;
|
||||||
size_t size = (size_t)hkTableSize;
|
size_t size = (size_t)hkTableSize;
|
||||||
result = pdu2HkTableDataset.deSerialize(&payloadPtr, &size, SerializeIF::Endianness::BIG);
|
result = pdu2HkTableDataset.deSerialize(&payloadPtr, &size, SerializeIF::Endianness::BIG);
|
||||||
if (result != RETURN_OK) {
|
if (result != RETURN_OK) {
|
||||||
@ -67,7 +67,10 @@ ReturnValue_t PDU2Handler::initializeLocalDataPool(
|
|||||||
localDataPoolMap.emplace(P60System::PDU2_VCC, new PoolEntry<int16_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_VCC, new PoolEntry<int16_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_VBAT, new PoolEntry<int16_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_VBAT, new PoolEntry<int16_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_TEMPERATURE, new PoolEntry<int16_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_TEMPERATURE, new PoolEntry<int16_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_CONV_EN, new PoolEntry<uint8_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_CONV_EN_1, new PoolEntry<uint8_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_CONV_EN_2, new PoolEntry<uint8_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_CONV_EN_3, new PoolEntry<uint8_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_DUMMY_BYTE_CONV_EN, new PoolEntry<uint8_t>( { 0 }));
|
||||||
|
|
||||||
localDataPoolMap.emplace(P60System::PDU2_OUT_EN_Q7S, new PoolEntry<uint8_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_OUT_EN_Q7S, new PoolEntry<uint8_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_OUT_EN_PAYLOAD_PCDU_CH1, new PoolEntry<uint8_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_OUT_EN_PAYLOAD_PCDU_CH1, new PoolEntry<uint8_t>( { 0 }));
|
||||||
@ -82,12 +85,25 @@ ReturnValue_t PDU2Handler::initializeLocalDataPool(
|
|||||||
localDataPoolMap.emplace(P60System::PDU2_OUT_EN_PAYLOAD_PCDU_CH6, new PoolEntry<uint8_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_OUT_EN_PAYLOAD_PCDU_CH6, new PoolEntry<uint8_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_OUT_EN_ACS_BOARD_SIDE_B, new PoolEntry<uint8_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_OUT_EN_ACS_BOARD_SIDE_B, new PoolEntry<uint8_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_OUT_EN_PAYLOAD_CAMERA, new PoolEntry<uint8_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_OUT_EN_PAYLOAD_CAMERA, new PoolEntry<uint8_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_DUMMY_BYTE_OUT_EN, new PoolEntry<uint8_t>( { 0 }));
|
||||||
|
|
||||||
localDataPoolMap.emplace(P60System::PDU2_BOOTCAUSE, new PoolEntry<uint32_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_BOOTCAUSE, new PoolEntry<uint32_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_BOOTCNT, new PoolEntry<uint32_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_BOOTCNT, new PoolEntry<uint32_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_UPTIME, new PoolEntry<uint32_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_UPTIME, new PoolEntry<uint32_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_RESETCAUSE, new PoolEntry<uint16_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_RESETCAUSE, new PoolEntry<uint16_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_BATT_MODE, new PoolEntry<uint8_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_BATT_MODE, new PoolEntry<uint8_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_DUMMY_BYTE_BATT_MODE, new PoolEntry<uint8_t>( { 0 }));
|
||||||
|
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_LATCHUP_Q7S, new PoolEntry<uint16_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_LATCHUP_PAYLOAD_PCDU_CH1, new PoolEntry<uint16_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_LATCHUP_RW, new PoolEntry<uint16_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_LATCHUP_TCS_BOARD_HEATER_IN, new PoolEntry<uint16_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_LATCHUP_TCS_BOARD_HEATER_IN, new PoolEntry<uint16_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_LATCHUP_SUS_REDUNDANT, new PoolEntry<uint16_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_LATCHUP_DEPLOYMENT_MECHANISM, new PoolEntry<uint16_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_LATCHUP_PAYLOAD_PCDU_CH6, new PoolEntry<uint16_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_LATCHUP_ACS_BOARD_SIDE_B, new PoolEntry<uint16_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_LATCHUP_PAYLOAD_CAMERA, new PoolEntry<uint16_t>( { 0 }));
|
||||||
|
|
||||||
localDataPoolMap.emplace(P60System::PDU2_DEVICE_0, new PoolEntry<uint8_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_DEVICE_0, new PoolEntry<uint8_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_DEVICE_1, new PoolEntry<uint8_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_DEVICE_1, new PoolEntry<uint8_t>( { 0 }));
|
||||||
@ -106,15 +122,18 @@ ReturnValue_t PDU2Handler::initializeLocalDataPool(
|
|||||||
localDataPoolMap.emplace(P60System::PDU2_DEVICE_5_STATUS, new PoolEntry<uint8_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_DEVICE_5_STATUS, new PoolEntry<uint8_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_DEVICE_6_STATUS, new PoolEntry<uint8_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_DEVICE_6_STATUS, new PoolEntry<uint8_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_DEVICE_7_STATUS, new PoolEntry<uint8_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_DEVICE_7_STATUS, new PoolEntry<uint8_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_DUMMY_DEVICE_STATUS, new PoolEntry<uint16_t>( { 0 }));
|
||||||
|
|
||||||
localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_GND, new PoolEntry<uint32_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_GND, new PoolEntry<uint32_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_I2C, new PoolEntry<uint32_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_I2C, new PoolEntry<uint32_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_CAN, new PoolEntry<uint32_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_CAN, new PoolEntry<uint32_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_CSP, new PoolEntry<uint32_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_CSP1, new PoolEntry<uint32_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_CSP2, new PoolEntry<uint32_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_WDT_GND_LEFT, new PoolEntry<uint32_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_WDT_GND_LEFT, new PoolEntry<uint32_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_WDT_I2C_LEFT, new PoolEntry<uint32_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_WDT_I2C_LEFT, new PoolEntry<uint32_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_WDT_CAN_LEFT, new PoolEntry<uint32_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_WDT_CAN_LEFT, new PoolEntry<uint32_t>( { 0 }));
|
||||||
localDataPoolMap.emplace(P60System::PDU2_WDT_CSP_LEFT, new PoolEntry<uint32_t>( { 0 }));
|
localDataPoolMap.emplace(P60System::PDU2_WDT_CSP_LEFT1, new PoolEntry<uint8_t>( { 0 }));
|
||||||
|
localDataPoolMap.emplace(P60System::PDU2_WDT_CSP_LEFT2, new PoolEntry<uint8_t>( { 0 }));
|
||||||
|
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
}
|
}
|
||||||
|
@ -159,7 +159,10 @@ namespace P60System {
|
|||||||
PDU1_VCC,
|
PDU1_VCC,
|
||||||
PDU1_VBAT,
|
PDU1_VBAT,
|
||||||
PDU1_TEMPERATURE,
|
PDU1_TEMPERATURE,
|
||||||
PDU1_CONV_EN,
|
PDU1_CONV_EN_1,
|
||||||
|
PDU1_CONV_EN_2,
|
||||||
|
PDU1_CONV_EN_3,
|
||||||
|
PDU1_DUMMY_BYTE_CONV_EN,
|
||||||
PDU1_OUT_EN_TCS_BOARD_3V3,
|
PDU1_OUT_EN_TCS_BOARD_3V3,
|
||||||
PDU1_OUT_EN_SYRLINKS,
|
PDU1_OUT_EN_SYRLINKS,
|
||||||
PDU1_OUT_EN_STAR_TRACKER,
|
PDU1_OUT_EN_STAR_TRACKER,
|
||||||
@ -169,12 +172,22 @@ namespace P60System {
|
|||||||
PDU1_OUT_EN_PLOC,
|
PDU1_OUT_EN_PLOC,
|
||||||
PDU1_OUT_EN_ACS_BOARD_SIDE_A,
|
PDU1_OUT_EN_ACS_BOARD_SIDE_A,
|
||||||
PDU1_OUT_EN_CHANNEL8,
|
PDU1_OUT_EN_CHANNEL8,
|
||||||
|
PDU1_DUMMY_BYTE_OUT_EN,
|
||||||
PDU1_BOOTCAUSE,
|
PDU1_BOOTCAUSE,
|
||||||
PDU1_BOOTCNT,
|
PDU1_BOOTCNT,
|
||||||
PDU1_UPTIME,
|
PDU1_UPTIME,
|
||||||
PDU1_RESETCAUSE,
|
PDU1_RESETCAUSE,
|
||||||
PDU1_BATT_MODE,
|
PDU1_BATT_MODE,
|
||||||
PDU1_LATCHUP,
|
PDU1_DUMMY_BYTE_BATT_MODE,
|
||||||
|
PDU1_LATCHUP_TCS_BOARD_3V3,
|
||||||
|
PDU1_LATCHUP_SYRLINKS,
|
||||||
|
PDU1_LATCHUP_STAR_TRACKER,
|
||||||
|
PDU1_LATCHUP_MGT,
|
||||||
|
PDU1_LATCHUP_SUS_NOMINAL,
|
||||||
|
PDU1_LATCHUP_SOLAR_CELL_EXP,
|
||||||
|
PDU1_LATCHUP_PLOC,
|
||||||
|
PDU1_LATCHUP_ACS_BOARD_SIDE_A,
|
||||||
|
PDU1_LATCHUP_CHANNEL8,
|
||||||
PDU1_DEVICE_0,
|
PDU1_DEVICE_0,
|
||||||
PDU1_DEVICE_1,
|
PDU1_DEVICE_1,
|
||||||
PDU1_DEVICE_2,
|
PDU1_DEVICE_2,
|
||||||
@ -191,14 +204,17 @@ namespace P60System {
|
|||||||
PDU1_DEVICE_5_STATUS,
|
PDU1_DEVICE_5_STATUS,
|
||||||
PDU1_DEVICE_6_STATUS,
|
PDU1_DEVICE_6_STATUS,
|
||||||
PDU1_DEVICE_7_STATUS,
|
PDU1_DEVICE_7_STATUS,
|
||||||
|
PDU1_DUMMY_DEVICE_STATUS,
|
||||||
PDU1_WDT_CNT_GND,
|
PDU1_WDT_CNT_GND,
|
||||||
PDU1_WDT_CNT_I2C,
|
PDU1_WDT_CNT_I2C,
|
||||||
PDU1_WDT_CNT_CAN,
|
PDU1_WDT_CNT_CAN,
|
||||||
PDU1_WDT_CNT_CSP,
|
PDU1_WDT_CNT_CSP1,
|
||||||
|
PDU1_WDT_CNT_CSP2,
|
||||||
PDU1_WDT_GND_LEFT,
|
PDU1_WDT_GND_LEFT,
|
||||||
PDU1_WDT_I2C_LEFT,
|
PDU1_WDT_I2C_LEFT,
|
||||||
PDU1_WDT_CAN_LEFT,
|
PDU1_WDT_CAN_LEFT,
|
||||||
PDU1_WDT_CSP_LEFT,
|
PDU1_WDT_CSP_LEFT1,
|
||||||
|
PDU1_WDT_CSP_LEFT2,
|
||||||
|
|
||||||
/** PDU2 Ids */
|
/** PDU2 Ids */
|
||||||
PDU2_CURRENT_OUT_Q7S,
|
PDU2_CURRENT_OUT_Q7S,
|
||||||
@ -222,7 +238,10 @@ namespace P60System {
|
|||||||
PDU2_VCC,
|
PDU2_VCC,
|
||||||
PDU2_VBAT,
|
PDU2_VBAT,
|
||||||
PDU2_TEMPERATURE,
|
PDU2_TEMPERATURE,
|
||||||
PDU2_CONV_EN,
|
PDU2_CONV_EN_1,
|
||||||
|
PDU2_CONV_EN_2,
|
||||||
|
PDU2_CONV_EN_3,
|
||||||
|
PDU2_DUMMY_BYTE_CONV_EN,
|
||||||
PDU2_OUT_EN_Q7S,
|
PDU2_OUT_EN_Q7S,
|
||||||
PDU2_OUT_EN_PAYLOAD_PCDU_CH1,
|
PDU2_OUT_EN_PAYLOAD_PCDU_CH1,
|
||||||
PDU2_OUT_EN_RW,
|
PDU2_OUT_EN_RW,
|
||||||
@ -232,20 +251,22 @@ namespace P60System {
|
|||||||
PDU2_OUT_EN_PAYLOAD_PCDU_CH6,
|
PDU2_OUT_EN_PAYLOAD_PCDU_CH6,
|
||||||
PDU2_OUT_EN_ACS_BOARD_SIDE_B,
|
PDU2_OUT_EN_ACS_BOARD_SIDE_B,
|
||||||
PDU2_OUT_EN_PAYLOAD_CAMERA,
|
PDU2_OUT_EN_PAYLOAD_CAMERA,
|
||||||
|
PDU2_DUMMY_BYTE_OUT_EN,
|
||||||
PDU2_BOOTCAUSE,
|
PDU2_BOOTCAUSE,
|
||||||
PDU2_BOOTCNT,
|
PDU2_BOOTCNT,
|
||||||
PDU2_UPTIME,
|
PDU2_UPTIME,
|
||||||
PDU2_RESETCAUSE,
|
PDU2_RESETCAUSE,
|
||||||
PDU2_BATT_MODE,
|
PDU2_BATT_MODE,
|
||||||
PDU2_LATCHUP_OUT_Q7S,
|
PDU2_DUMMY_BYTE_BATT_MODE,
|
||||||
PDU2_LATCHUP_OUT_PAYLOAD_PCDU_CH1,
|
PDU2_LATCHUP_Q7S,
|
||||||
PDU2_LATCHUP_OUT_RW,
|
PDU2_LATCHUP_PAYLOAD_PCDU_CH1,
|
||||||
PDU2_LATCHUP_OUT_TCS_BOARD_HEATER_IN,
|
PDU2_LATCHUP_RW,
|
||||||
PDU2_LATCHUP_OUT_SUS_REDUNDANT,
|
PDU2_LATCHUP_TCS_BOARD_HEATER_IN,
|
||||||
PDU2_LATCHUP_OUT_DEPLOYMENT_MECHANISM,
|
PDU2_LATCHUP_SUS_REDUNDANT,
|
||||||
PDU2_LATCHUP_OUT_PAYLOAD_PCDU_CH6,
|
PDU2_LATCHUP_DEPLOYMENT_MECHANISM,
|
||||||
PDU2_LATCHUP_OUT_ACS_BOARD_SIDE_B,
|
PDU2_LATCHUP_PAYLOAD_PCDU_CH6,
|
||||||
PDU2_LATCHUP_OUT_PAYLOAD_CAMERA,
|
PDU2_LATCHUP_ACS_BOARD_SIDE_B,
|
||||||
|
PDU2_LATCHUP_PAYLOAD_CAMERA,
|
||||||
PDU2_DEVICE_0,
|
PDU2_DEVICE_0,
|
||||||
PDU2_DEVICE_1,
|
PDU2_DEVICE_1,
|
||||||
PDU2_DEVICE_2,
|
PDU2_DEVICE_2,
|
||||||
@ -262,14 +283,17 @@ namespace P60System {
|
|||||||
PDU2_DEVICE_5_STATUS,
|
PDU2_DEVICE_5_STATUS,
|
||||||
PDU2_DEVICE_6_STATUS,
|
PDU2_DEVICE_6_STATUS,
|
||||||
PDU2_DEVICE_7_STATUS,
|
PDU2_DEVICE_7_STATUS,
|
||||||
|
PDU2_DUMMY_DEVICE_STATUS,
|
||||||
PDU2_WDT_CNT_GND,
|
PDU2_WDT_CNT_GND,
|
||||||
PDU2_WDT_CNT_I2C,
|
PDU2_WDT_CNT_I2C,
|
||||||
PDU2_WDT_CNT_CAN,
|
PDU2_WDT_CNT_CAN,
|
||||||
PDU2_WDT_CNT_CSP,
|
PDU2_WDT_CNT_CSP1,
|
||||||
|
PDU2_WDT_CNT_CSP2,
|
||||||
PDU2_WDT_GND_LEFT,
|
PDU2_WDT_GND_LEFT,
|
||||||
PDU2_WDT_I2C_LEFT,
|
PDU2_WDT_I2C_LEFT,
|
||||||
PDU2_WDT_CAN_LEFT,
|
PDU2_WDT_CAN_LEFT,
|
||||||
PDU2_WDT_CSP_LEFT,
|
PDU2_WDT_CSP_LEFT1,
|
||||||
|
PDU2_WDT_CSP_LEFT2,
|
||||||
|
|
||||||
/** ACU Ids */
|
/** ACU Ids */
|
||||||
ACU_CURRENT_IN_CHANNEL0,
|
ACU_CURRENT_IN_CHANNEL0,
|
||||||
@ -587,12 +611,15 @@ namespace P60Dock {
|
|||||||
* @brief Constants common for both PDU1 and PDU2.
|
* @brief Constants common for both PDU1 and PDU2.
|
||||||
*/
|
*/
|
||||||
namespace PDU{
|
namespace PDU{
|
||||||
/* When retrieving full configuration parameter table */
|
/** When retrieving full configuration parameter table */
|
||||||
static const uint16_t MAX_REPLY_LENGTH = 318;
|
static const uint16_t MAX_REPLY_LENGTH = 318;
|
||||||
static const uint16_t MAX_CONFIGTABLE_ADDRESS = 316;
|
static const uint16_t MAX_CONFIGTABLE_ADDRESS = 316;
|
||||||
static const uint16_t MAX_HKTABLE_ADDRESS = 142;
|
static const uint16_t MAX_HKTABLE_ADDRESS = 141;
|
||||||
static const uint16_t HK_TABLE_SIZE = 143;
|
// static const uint16_t HK_TABLE_SIZE = 142;
|
||||||
|
static const uint16_t HK_TABLE_REPLY_SIZE = 303;
|
||||||
static const uint8_t HK_TABLE_ENTRIES = 60;
|
static const uint8_t HK_TABLE_ENTRIES = 60;
|
||||||
|
/** The length of the header holding information about the received housekeeping table reply */
|
||||||
|
static const uint8_t HK_REPLY_HEADER_LENGTH = 13;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -674,8 +701,15 @@ namespace PDU1 {
|
|||||||
lp_var_t<int16_t> temperature = lp_var_t<int16_t>(sid.objectId,
|
lp_var_t<int16_t> temperature = lp_var_t<int16_t>(sid.objectId,
|
||||||
P60System::PDU1_TEMPERATURE, this);
|
P60System::PDU1_TEMPERATURE, this);
|
||||||
/** Output converter enable status */
|
/** Output converter enable status */
|
||||||
lp_var_t<uint8_t> converterEnable = lp_var_t<uint8_t>(sid.objectId,
|
lp_var_t<uint8_t> converterEnable1 = lp_var_t<uint8_t>(sid.objectId,
|
||||||
P60System::PDU1_CONV_EN, this);
|
P60System::PDU1_CONV_EN_1, this);
|
||||||
|
lp_var_t<uint8_t> converterEnable2 = lp_var_t<uint8_t>(sid.objectId,
|
||||||
|
P60System::PDU1_CONV_EN_2, this);
|
||||||
|
lp_var_t<uint8_t> converterEnable3 = lp_var_t<uint8_t>(sid.objectId,
|
||||||
|
P60System::PDU1_CONV_EN_3, this);
|
||||||
|
/** Dummy byte inserted by the full hk table request. */
|
||||||
|
lp_var_t<uint8_t> dummyByteConvEn = lp_var_t<uint8_t>(sid.objectId,
|
||||||
|
P60System::PDU1_DUMMY_BYTE_CONV_EN, this);
|
||||||
/** Output channels enable status */
|
/** Output channels enable status */
|
||||||
lp_var_t<uint8_t> outEnabledTCSBoard3V3 = lp_var_t<uint8_t>(sid.objectId,
|
lp_var_t<uint8_t> outEnabledTCSBoard3V3 = lp_var_t<uint8_t>(sid.objectId,
|
||||||
P60System::PDU1_OUT_EN_TCS_BOARD_3V3, this);
|
P60System::PDU1_OUT_EN_TCS_BOARD_3V3, this);
|
||||||
@ -708,6 +742,30 @@ namespace PDU1 {
|
|||||||
/** Battery mode: 1 = Critical, 2 = Safe, 3 = Normal, 4 = Full */
|
/** Battery mode: 1 = Critical, 2 = Safe, 3 = Normal, 4 = Full */
|
||||||
lp_var_t<uint8_t> battMode = lp_var_t<uint8_t>(sid.objectId,
|
lp_var_t<uint8_t> battMode = lp_var_t<uint8_t>(sid.objectId,
|
||||||
P60System::PDU1_BATT_MODE, this);
|
P60System::PDU1_BATT_MODE, this);
|
||||||
|
/** Dummy byte which is received with full hk table request: */
|
||||||
|
lp_var_t<uint8_t> dummyByteBattMode = lp_var_t<uint8_t>(sid.objectId,
|
||||||
|
P60System::PDU1_DUMMY_BYTE_BATT_MODE, this);
|
||||||
|
|
||||||
|
/** Number of detected latchups on each output channel */
|
||||||
|
lp_var_t<uint16_t> latchupsTcsBoard3V3 = lp_var_t<uint16_t>(sid.objectId,
|
||||||
|
P60System::PDU1_LATCHUP_TCS_BOARD_3V3, this);
|
||||||
|
lp_var_t<uint16_t> latchupsSyrlinks = lp_var_t<uint16_t>(sid.objectId,
|
||||||
|
P60System::PDU1_LATCHUP_SYRLINKS, this);
|
||||||
|
lp_var_t<uint16_t> latchupsStarTracker = lp_var_t<uint16_t>(sid.objectId,
|
||||||
|
P60System::PDU1_LATCHUP_STAR_TRACKER, this);
|
||||||
|
lp_var_t<uint16_t> latchupsMgt = lp_var_t<uint16_t>(sid.objectId,
|
||||||
|
P60System::PDU1_LATCHUP_MGT, this);
|
||||||
|
lp_var_t<uint16_t> latchupsSusNominal = lp_var_t<uint16_t>(sid.objectId,
|
||||||
|
P60System::PDU1_LATCHUP_SUS_NOMINAL, this);
|
||||||
|
lp_var_t<uint16_t> latchupsSolarCellExp = lp_var_t<uint16_t>(sid.objectId,
|
||||||
|
P60System::PDU1_LATCHUP_SOLAR_CELL_EXP, this);
|
||||||
|
lp_var_t<uint16_t> latchupsPloc = lp_var_t<uint16_t>(sid.objectId,
|
||||||
|
P60System::PDU1_LATCHUP_PLOC, this);
|
||||||
|
lp_var_t<uint16_t> latchupsAcsBoardSideA = lp_var_t<uint16_t>(sid.objectId,
|
||||||
|
P60System::PDU1_LATCHUP_ACS_BOARD_SIDE_A, this);
|
||||||
|
lp_var_t<uint16_t> latchupsChannel8 = lp_var_t<uint16_t>(sid.objectId,
|
||||||
|
P60System::PDU1_LATCHUP_CHANNEL8, this);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* There are 8 devices on the PDU. FRAM, ADCs, temperature sensor etc. Each device is
|
* There are 8 devices on the PDU. FRAM, ADCs, temperature sensor etc. Each device is
|
||||||
* identified by an ID. Refer also to gs-man-nanopower-p60-pdu-200-1.pdf on pages 17 and 18.
|
* identified by an ID. Refer also to gs-man-nanopower-p60-pdu-200-1.pdf on pages 17 and 18.
|
||||||
@ -745,6 +803,9 @@ namespace PDU1 {
|
|||||||
P60System::PDU1_DEVICE_6_STATUS, this);
|
P60System::PDU1_DEVICE_6_STATUS, this);
|
||||||
lp_var_t<uint8_t> device7Status = lp_var_t<uint8_t>(sid.objectId,
|
lp_var_t<uint8_t> device7Status = lp_var_t<uint8_t>(sid.objectId,
|
||||||
P60System::PDU1_DEVICE_7_STATUS, this);
|
P60System::PDU1_DEVICE_7_STATUS, this);
|
||||||
|
/** Two dummy bytes will be inserted here by a full hk table request. */
|
||||||
|
lp_var_t<uint16_t> dummyBytesdeviceStatus = lp_var_t<uint16_t>(sid.objectId,
|
||||||
|
P60System::PDU1_DUMMY_DEVICE_STATUS, this);
|
||||||
/** Number of reboots triggered by the ground watchdog */
|
/** Number of reboots triggered by the ground watchdog */
|
||||||
lp_var_t<uint32_t> gndWdtReboots = lp_var_t<uint32_t>(sid.objectId,
|
lp_var_t<uint32_t> gndWdtReboots = lp_var_t<uint32_t>(sid.objectId,
|
||||||
P60System::PDU1_WDT_CNT_GND, this);
|
P60System::PDU1_WDT_CNT_GND, this);
|
||||||
@ -755,8 +816,10 @@ namespace PDU1 {
|
|||||||
lp_var_t<uint32_t> canWdtReboots = lp_var_t<uint32_t>(sid.objectId,
|
lp_var_t<uint32_t> canWdtReboots = lp_var_t<uint32_t>(sid.objectId,
|
||||||
P60System::PDU1_WDT_CNT_CAN, this);
|
P60System::PDU1_WDT_CNT_CAN, this);
|
||||||
/** Number of reboots triggered through the CSP watchdog */
|
/** Number of reboots triggered through the CSP watchdog */
|
||||||
lp_var_t<uint32_t> cspWdtReboots = lp_var_t<uint32_t>(sid.objectId,
|
lp_var_t<uint32_t> csp1WdtReboots = lp_var_t<uint32_t>(sid.objectId,
|
||||||
P60System::PDU1_WDT_CNT_CSP, this);
|
P60System::PDU1_WDT_CNT_CSP1, this);
|
||||||
|
lp_var_t<uint32_t> csp2WdtReboots = lp_var_t<uint32_t>(sid.objectId,
|
||||||
|
P60System::PDU1_WDT_CNT_CSP2, this);
|
||||||
/** Ground watchdog remaining seconds before rebooting */
|
/** Ground watchdog remaining seconds before rebooting */
|
||||||
lp_var_t<uint32_t> groundWatchdogSecondsLeft = lp_var_t<uint32_t>(sid.objectId,
|
lp_var_t<uint32_t> groundWatchdogSecondsLeft = lp_var_t<uint32_t>(sid.objectId,
|
||||||
P60System::PDU1_WDT_GND_LEFT, this);
|
P60System::PDU1_WDT_GND_LEFT, this);
|
||||||
@ -766,9 +829,11 @@ namespace PDU1 {
|
|||||||
/** CAN watchdog remaining seconds before rebooting. */
|
/** CAN watchdog remaining seconds before rebooting. */
|
||||||
lp_var_t<uint32_t> canWatchdogSecondsLeft = lp_var_t<uint32_t>(sid.objectId,
|
lp_var_t<uint32_t> canWatchdogSecondsLeft = lp_var_t<uint32_t>(sid.objectId,
|
||||||
P60System::PDU1_WDT_CAN_LEFT, this);
|
P60System::PDU1_WDT_CAN_LEFT, this);
|
||||||
/** CSP watchdog remaining seconds before rebooting. */
|
/** CSP watchdogs remaining pings before rebooting. */
|
||||||
lp_var_t<uint32_t> cspWatchdogSecondsLeft = lp_var_t<uint32_t>(sid.objectId,
|
lp_var_t<uint8_t> csp2WatchdogSecondsLeft = lp_var_t<uint8_t>(sid.objectId,
|
||||||
P60System::PDU1_WDT_CSP_LEFT, this);
|
P60System::PDU1_WDT_CSP_LEFT1, this);
|
||||||
|
lp_var_t<uint8_t> csp1WatchdogSecondsLeft = lp_var_t<uint8_t>(sid.objectId,
|
||||||
|
P60System::PDU1_WDT_CSP_LEFT2, this);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -851,8 +916,14 @@ namespace PDU2 {
|
|||||||
lp_var_t<int16_t> temperature = lp_var_t<int16_t>(sid.objectId,
|
lp_var_t<int16_t> temperature = lp_var_t<int16_t>(sid.objectId,
|
||||||
P60System::PDU2_TEMPERATURE, this);
|
P60System::PDU2_TEMPERATURE, this);
|
||||||
/** Output converter enable status */
|
/** Output converter enable status */
|
||||||
lp_var_t<uint8_t> converterEnable = lp_var_t<uint8_t>(sid.objectId,
|
lp_var_t<uint8_t> converterEnable1 = lp_var_t<uint8_t>(sid.objectId,
|
||||||
P60System::PDU2_CONV_EN, this);
|
P60System::PDU2_CONV_EN_1, this);
|
||||||
|
lp_var_t<uint8_t> converterEnable2 = lp_var_t<uint8_t>(sid.objectId,
|
||||||
|
P60System::PDU2_CONV_EN_2, this);
|
||||||
|
lp_var_t<uint8_t> converterEnable3 = lp_var_t<uint8_t>(sid.objectId,
|
||||||
|
P60System::PDU2_CONV_EN_3, this);
|
||||||
|
lp_var_t<uint8_t> dummyByteConvEn = lp_var_t<uint8_t>(sid.objectId,
|
||||||
|
P60System::PDU2_DUMMY_BYTE_CONV_EN, this);
|
||||||
/** Output channels enable status */
|
/** Output channels enable status */
|
||||||
lp_var_t<uint8_t> outEnabledQ7S = lp_var_t<uint8_t>(sid.objectId,
|
lp_var_t<uint8_t> outEnabledQ7S = lp_var_t<uint8_t>(sid.objectId,
|
||||||
P60System::PDU2_OUT_EN_Q7S, this);
|
P60System::PDU2_OUT_EN_Q7S, this);
|
||||||
@ -872,6 +943,9 @@ namespace PDU2 {
|
|||||||
P60System::PDU2_OUT_EN_ACS_BOARD_SIDE_B, this);
|
P60System::PDU2_OUT_EN_ACS_BOARD_SIDE_B, this);
|
||||||
lp_var_t<uint8_t> outEnabledPayloadCamera = lp_var_t<uint8_t>(sid.objectId,
|
lp_var_t<uint8_t> outEnabledPayloadCamera = lp_var_t<uint8_t>(sid.objectId,
|
||||||
P60System::PDU2_OUT_EN_PAYLOAD_CAMERA, this);
|
P60System::PDU2_OUT_EN_PAYLOAD_CAMERA, this);
|
||||||
|
/** Dummy byte which is received with a full hk table request. */
|
||||||
|
lp_var_t<uint8_t> dummyByteOutEn = lp_var_t<uint8_t>(sid.objectId,
|
||||||
|
P60System::PDU2_DUMMY_BYTE_OUT_EN, this);
|
||||||
|
|
||||||
lp_var_t<uint32_t> bootcause = lp_var_t<uint32_t>(sid.objectId,
|
lp_var_t<uint32_t> bootcause = lp_var_t<uint32_t>(sid.objectId,
|
||||||
P60System::PDU2_BOOTCAUSE, this);
|
P60System::PDU2_BOOTCAUSE, this);
|
||||||
@ -886,26 +960,30 @@ namespace PDU2 {
|
|||||||
/** Battery mode: 1 = Critical, 2 = Safe, 3 = Normal, 4 = Full */
|
/** Battery mode: 1 = Critical, 2 = Safe, 3 = Normal, 4 = Full */
|
||||||
lp_var_t<uint8_t> battMode = lp_var_t<uint8_t>(sid.objectId,
|
lp_var_t<uint8_t> battMode = lp_var_t<uint8_t>(sid.objectId,
|
||||||
P60System::PDU2_BATT_MODE, this);
|
P60System::PDU2_BATT_MODE, this);
|
||||||
|
/** Dummy byte which is received with full hk table request: */
|
||||||
|
lp_var_t<uint8_t> dummyByteBattMode = lp_var_t<uint8_t>(sid.objectId,
|
||||||
|
P60System::PDU2_DUMMY_BYTE_BATT_MODE, this);
|
||||||
|
|
||||||
/** Number of detected latchups on each output channel */
|
/** Number of detected latchups on each output channel */
|
||||||
lp_var_t<uint16_t> latchupsQ7S = lp_var_t<uint16_t>(sid.objectId,
|
lp_var_t<uint16_t> latchupsQ7S = lp_var_t<uint16_t>(sid.objectId,
|
||||||
P60System::P_LATCHUP_, this);
|
P60System::PDU2_LATCHUP_Q7S, this);
|
||||||
lp_var_t<uint16_t> latchupsPdu1Vcc = lp_var_t<uint16_t>(sid.objectId,
|
lp_var_t<uint16_t> latchupsPayloadPcduCh1 = lp_var_t<uint16_t>(sid.objectId,
|
||||||
P60System::P60DOCK_LATCHUP_PDU1_VCC, this);
|
P60System::PDU2_LATCHUP_PAYLOAD_PCDU_CH1, this);
|
||||||
lp_var_t<uint16_t> latchupsX3IdleVcc = lp_var_t<uint16_t>(sid.objectId,
|
lp_var_t<uint16_t> latchupsRw = lp_var_t<uint16_t>(sid.objectId,
|
||||||
P60System::P60DOCK_LATCHUP_X3_IDLE_VCC, this);
|
P60System::PDU2_LATCHUP_RW, this);
|
||||||
lp_var_t<uint16_t> latchupsPdu2Vcc = lp_var_t<uint16_t>(sid.objectId,
|
lp_var_t<uint16_t> latchupsTcsBoardHeaterIn = lp_var_t<uint16_t>(sid.objectId,
|
||||||
P60System::P60DOCK_LATCHUP_PDU2_VCC, this);
|
P60System::PDU2_LATCHUP_TCS_BOARD_HEATER_IN, this);
|
||||||
lp_var_t<uint16_t> latchupsAcuVbat = lp_var_t<uint16_t>(sid.objectId,
|
lp_var_t<uint16_t> latchupsSusRedundant = lp_var_t<uint16_t>(sid.objectId,
|
||||||
P60System::P60DOCK_LATCHUP_ACU_VBAT, this);
|
P60System::PDU2_LATCHUP_SUS_REDUNDANT, this);
|
||||||
lp_var_t<uint16_t> latchupsPdu1Vbat = lp_var_t<uint16_t>(sid.objectId,
|
lp_var_t<uint16_t> latchupsDeplMenchanism = lp_var_t<uint16_t>(sid.objectId,
|
||||||
P60System::P60DOCK_LATCHUP_PDU1_VBAT, this);
|
P60System::PDU2_LATCHUP_DEPLOYMENT_MECHANISM, this);
|
||||||
lp_var_t<uint16_t> latchupsX3IdleVbat = lp_var_t<uint16_t>(sid.objectId,
|
lp_var_t<uint16_t> latchupsPayloadPcduCh6 = lp_var_t<uint16_t>(sid.objectId,
|
||||||
P60System::P60DOCK_LATCHUP_X3_IDLE_VBAT, this);
|
P60System::PDU2_LATCHUP_PAYLOAD_PCDU_CH6, this);
|
||||||
lp_var_t<uint16_t> latchupsPdu2Vbat = lp_var_t<uint16_t>(sid.objectId,
|
lp_var_t<uint16_t> latchupsAcsBoardSideB = lp_var_t<uint16_t>(sid.objectId,
|
||||||
P60System::P60DOCK_LATCHUP_PDU2_VBAT, this);
|
P60System::PDU2_LATCHUP_ACS_BOARD_SIDE_B, this);
|
||||||
lp_var_t<uint16_t> latchupsStackVbata = lp_var_t<uint16_t>(sid.objectId,
|
lp_var_t<uint16_t> latchupsPayloadCamera = lp_var_t<uint16_t>(sid.objectId,
|
||||||
P60System::P60DOCK_LATCHUP_STACK_VBAT, this);
|
P60System::PDU2_LATCHUP_PAYLOAD_CAMERA, this);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* There are 8 devices on the PDU. FRAM, ADCs, temperature sensor etc. Each device is
|
* There are 8 devices on the PDU. FRAM, ADCs, temperature sensor etc. Each device is
|
||||||
* identified by an ID. Refer also to gs-man-nanopower-p60-pdu-200-1.pdf on pages 17 and 18.
|
* identified by an ID. Refer also to gs-man-nanopower-p60-pdu-200-1.pdf on pages 17 and 18.
|
||||||
@ -943,6 +1021,10 @@ namespace PDU2 {
|
|||||||
P60System::PDU2_DEVICE_6_STATUS, this);
|
P60System::PDU2_DEVICE_6_STATUS, this);
|
||||||
lp_var_t<uint8_t> device7Status = lp_var_t<uint8_t>(sid.objectId,
|
lp_var_t<uint8_t> device7Status = lp_var_t<uint8_t>(sid.objectId,
|
||||||
P60System::PDU2_DEVICE_7_STATUS, this);
|
P60System::PDU2_DEVICE_7_STATUS, this);
|
||||||
|
/** Two dummy bytes will be inserted here by a full hk table request. */
|
||||||
|
lp_var_t<uint16_t> dummyBytesdeviceStatus = lp_var_t<uint16_t>(sid.objectId,
|
||||||
|
P60System::PDU2_DUMMY_DEVICE_STATUS, this);
|
||||||
|
|
||||||
/** Number of reboots triggered by the ground watchdog */
|
/** Number of reboots triggered by the ground watchdog */
|
||||||
lp_var_t<uint32_t> gndWdtReboots = lp_var_t<uint32_t>(sid.objectId,
|
lp_var_t<uint32_t> gndWdtReboots = lp_var_t<uint32_t>(sid.objectId,
|
||||||
P60System::PDU2_WDT_CNT_GND, this);
|
P60System::PDU2_WDT_CNT_GND, this);
|
||||||
@ -953,8 +1035,10 @@ namespace PDU2 {
|
|||||||
lp_var_t<uint32_t> canWdtReboots = lp_var_t<uint32_t>(sid.objectId,
|
lp_var_t<uint32_t> canWdtReboots = lp_var_t<uint32_t>(sid.objectId,
|
||||||
P60System::PDU2_WDT_CNT_CAN, this);
|
P60System::PDU2_WDT_CNT_CAN, this);
|
||||||
/** Number of reboots triggered through the CSP watchdog */
|
/** Number of reboots triggered through the CSP watchdog */
|
||||||
lp_var_t<uint32_t> cspWdtReboots = lp_var_t<uint32_t>(sid.objectId,
|
lp_var_t<uint32_t> csp1WdtReboots = lp_var_t<uint32_t>(sid.objectId,
|
||||||
P60System::PDU2_WDT_CNT_CSP, this);
|
P60System::PDU2_WDT_CNT_CSP1, this);
|
||||||
|
lp_var_t<uint32_t> cs2pWdtReboots = lp_var_t<uint32_t>(sid.objectId,
|
||||||
|
P60System::PDU2_WDT_CNT_CSP2, this);
|
||||||
/** Ground watchdog remaining seconds before rebooting */
|
/** Ground watchdog remaining seconds before rebooting */
|
||||||
lp_var_t<uint32_t> groundWatchdogSecondsLeft = lp_var_t<uint32_t>(sid.objectId,
|
lp_var_t<uint32_t> groundWatchdogSecondsLeft = lp_var_t<uint32_t>(sid.objectId,
|
||||||
P60System::PDU2_WDT_GND_LEFT, this);
|
P60System::PDU2_WDT_GND_LEFT, this);
|
||||||
@ -964,9 +1048,11 @@ namespace PDU2 {
|
|||||||
/** CAN watchdog remaining seconds before rebooting. */
|
/** CAN watchdog remaining seconds before rebooting. */
|
||||||
lp_var_t<uint32_t> canWatchdogSecondsLeft = lp_var_t<uint32_t>(sid.objectId,
|
lp_var_t<uint32_t> canWatchdogSecondsLeft = lp_var_t<uint32_t>(sid.objectId,
|
||||||
P60System::PDU2_WDT_CAN_LEFT, this);
|
P60System::PDU2_WDT_CAN_LEFT, this);
|
||||||
/** CSP watchdog remaining seconds before rebooting. */
|
/** CSP watchdog remaining pings before rebooting. */
|
||||||
lp_var_t<uint32_t> cspWatchdogSecondsLeft = lp_var_t<uint32_t>(sid.objectId,
|
lp_var_t<uint8_t> csp1WatchdogSecondsLeft = lp_var_t<uint8_t>(sid.objectId,
|
||||||
P60System::PDU2_WDT_CSP_LEFT, this);
|
P60System::PDU2_WDT_CSP_LEFT1, this);
|
||||||
|
lp_var_t<uint8_t> csp2WatchdogSecondsLeft = lp_var_t<uint8_t>(sid.objectId,
|
||||||
|
P60System::PDU2_WDT_CSP_LEFT2, this);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user