all parameter requests implemented
This commit is contained in:
@ -270,6 +270,7 @@ void StarTrackerHandler::doStartUp() {
|
||||
}
|
||||
return;
|
||||
case StartupState::DONE:
|
||||
startupState = StartupState::IDLE;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
@ -405,8 +406,9 @@ ReturnValue_t StarTrackerHandler::buildCommandFromCommand(DeviceCommandId_t devi
|
||||
prepareTakeImageCommand(commandData);
|
||||
return RETURN_OK;
|
||||
}
|
||||
case (StarTracker::SUBSCRIBE_TO_TM): {
|
||||
prepareSubscriptionCommand(commandData);
|
||||
case (StarTracker::SUBSCRIPTION): {
|
||||
Subscription subscription;
|
||||
result = prepareParamCommand(commandData, commandDataLen, subscription);
|
||||
return RETURN_OK;
|
||||
}
|
||||
case (StarTracker::REQ_SOLUTION): {
|
||||
@ -479,6 +481,21 @@ ReturnValue_t StarTrackerHandler::buildCommandFromCommand(DeviceCommandId_t devi
|
||||
result = prepareParamCommand(commandData, commandDataLen, tracking);
|
||||
return result;
|
||||
}
|
||||
case (StarTracker::LOGLEVEL): {
|
||||
LogLevel logLevel;
|
||||
result = prepareParamCommand(commandData, commandDataLen, logLevel);
|
||||
return result;
|
||||
}
|
||||
case (StarTracker::LOGSUBSCRIPTION): {
|
||||
LogSubscription logSubscription;
|
||||
result = prepareParamCommand(commandData, commandDataLen, logSubscription);
|
||||
return result;
|
||||
}
|
||||
case (StarTracker::DEBUG_CAMERA): {
|
||||
DebugCamera debugCamera;
|
||||
result = prepareParamCommand(commandData, commandDataLen, debugCamera);
|
||||
return result;
|
||||
}
|
||||
case (StarTracker::ERASE): {
|
||||
result = prepareEraseCommand(commandData, commandDataLen);
|
||||
return result;
|
||||
@ -536,7 +553,7 @@ ReturnValue_t StarTrackerHandler::buildCommandFromCommand(DeviceCommandId_t devi
|
||||
return result;
|
||||
}
|
||||
case (StarTracker::REQ_IMAGE_PROCESSOR): {
|
||||
result = prepareRequestMountignParams();
|
||||
result = prepareRequestImageProcessorParams();
|
||||
return result;
|
||||
}
|
||||
case (StarTracker::REQ_CENTROIDING): {
|
||||
@ -548,7 +565,7 @@ ReturnValue_t StarTrackerHandler::buildCommandFromCommand(DeviceCommandId_t devi
|
||||
return result;
|
||||
}
|
||||
case (StarTracker::REQ_MATCHING): {
|
||||
result = prepareRequetMatchingParams();
|
||||
result = prepareRequestMatchingParams();
|
||||
return result;
|
||||
}
|
||||
case (StarTracker::REQ_TRACKING): {
|
||||
@ -571,6 +588,10 @@ ReturnValue_t StarTrackerHandler::buildCommandFromCommand(DeviceCommandId_t devi
|
||||
result = prepareRequestLogSubscriptionParams();
|
||||
return result;
|
||||
}
|
||||
case (StarTracker::REQ_DEBUG_CAMERA): {
|
||||
result = prepareRequestDebugCameraParams();
|
||||
return result;
|
||||
}
|
||||
default:
|
||||
return DeviceHandlerIF::COMMAND_NOT_IMPLEMENTED;
|
||||
}
|
||||
@ -595,7 +616,7 @@ void StarTrackerHandler::fillCommandAndReplyMap() {
|
||||
StarTracker::MAX_FRAME_SIZE * 2 + 2);
|
||||
// Reboot has no reply. Star tracker reboots immediately
|
||||
this->insertInCommandMap(StarTracker::SWITCH_TO_BOOTLOADER_PROGRAM);
|
||||
this->insertInCommandAndReplyMap(StarTracker::SUBSCRIBE_TO_TM, 3, nullptr,
|
||||
this->insertInCommandAndReplyMap(StarTracker::SUBSCRIPTION, 3, nullptr,
|
||||
StarTracker::MAX_FRAME_SIZE * 2 + 2);
|
||||
this->insertInCommandAndReplyMap(StarTracker::REQ_SOLUTION, 3, &solutionSet,
|
||||
StarTracker::MAX_FRAME_SIZE * 2 + 2);
|
||||
@ -605,6 +626,12 @@ void StarTrackerHandler::fillCommandAndReplyMap() {
|
||||
StarTracker::MAX_FRAME_SIZE * 2 + 2);
|
||||
this->insertInCommandAndReplyMap(StarTracker::REQ_CONTRAST, 3, &contrastSet,
|
||||
StarTracker::MAX_FRAME_SIZE * 2 + 2);
|
||||
this->insertInCommandAndReplyMap(StarTracker::LOGLEVEL, 3, nullptr,
|
||||
StarTracker::MAX_FRAME_SIZE * 2 + 2);
|
||||
this->insertInCommandAndReplyMap(StarTracker::LOGSUBSCRIPTION, 3, nullptr,
|
||||
StarTracker::MAX_FRAME_SIZE * 2 + 2);
|
||||
this->insertInCommandAndReplyMap(StarTracker::DEBUG_CAMERA, 3, nullptr,
|
||||
StarTracker::MAX_FRAME_SIZE * 2 + 2);
|
||||
this->insertInCommandAndReplyMap(StarTracker::LIMITS, 3, nullptr,
|
||||
StarTracker::MAX_FRAME_SIZE * 2 + 2);
|
||||
this->insertInCommandAndReplyMap(StarTracker::MOUNTING, 3, nullptr,
|
||||
@ -739,10 +766,6 @@ ReturnValue_t StarTrackerHandler::interpretDeviceReply(DeviceCommandId_t id,
|
||||
ReturnValue_t result = RETURN_OK;
|
||||
|
||||
switch (id) {
|
||||
case (StarTracker::SUBSCRIBE_TO_TM): {
|
||||
result = handleSetParamReply();
|
||||
break;
|
||||
}
|
||||
case (StarTracker::REQ_TIME): {
|
||||
result = handleTm(timeSet, StarTracker::TimeSet::SIZE);
|
||||
break;
|
||||
@ -823,6 +846,10 @@ ReturnValue_t StarTrackerHandler::interpretDeviceReply(DeviceCommandId_t id,
|
||||
result = handleTm(contrastSet, StarTracker::ContrastSet::SIZE);
|
||||
break;
|
||||
}
|
||||
case (StarTracker::SUBSCRIPTION):
|
||||
case (StarTracker::LOGLEVEL):
|
||||
case (StarTracker::LOGSUBSCRIPTION):
|
||||
case (StarTracker::DEBUG_CAMERA):
|
||||
case (StarTracker::LIMITS):
|
||||
case (StarTracker::MOUNTING):
|
||||
case (StarTracker::CAMERA):
|
||||
@ -844,13 +871,60 @@ ReturnValue_t StarTrackerHandler::interpretDeviceReply(DeviceCommandId_t id,
|
||||
handleParamRequest(limitsSet, StarTracker::LimitsSet::SIZE);
|
||||
break;
|
||||
}
|
||||
case (StarTracker::REQ_LOG_LEVEL): {
|
||||
handleParamRequest(loglevelSet, StarTracker::LogLevelSet::SIZE);
|
||||
break;
|
||||
}
|
||||
case (StarTracker::REQ_MOUNTING): {
|
||||
handleParamRequest(mountingSet, StarTracker::MountingSet::SIZE);
|
||||
break;
|
||||
}
|
||||
case (StarTracker::REQ_IMAGE_PROCESSOR): {
|
||||
handleParamRequest(imageProcessorSet, StarTracker::ImageProcessorSet::SIZE);
|
||||
break;
|
||||
}
|
||||
case (StarTracker::REQ_CENTROIDING): {
|
||||
handleParamRequest(centroidingSet, StarTracker::CentroidingSet::SIZE);
|
||||
break;
|
||||
}
|
||||
case (StarTracker::REQ_LISA): {
|
||||
handleParamRequest(lisaSet, StarTracker::LisaSet::SIZE);
|
||||
break;
|
||||
}
|
||||
case (StarTracker::REQ_MATCHING): {
|
||||
handleParamRequest(matchingSet, StarTracker::MatchingSet::SIZE);
|
||||
break;
|
||||
}
|
||||
case (StarTracker::REQ_TRACKING): {
|
||||
handleParamRequest(trackingSet, StarTracker::TrackingSet::SIZE);
|
||||
break;
|
||||
}
|
||||
case (StarTracker::REQ_VALIDATION): {
|
||||
handleParamRequest(validationSet, StarTracker::ValidationSet::SIZE);
|
||||
break;
|
||||
}
|
||||
case (StarTracker::REQ_ALGO): {
|
||||
handleParamRequest(algoSet, StarTracker::AlgoSet::SIZE);
|
||||
break;
|
||||
}
|
||||
case (StarTracker::REQ_SUBSCRIPTION): {
|
||||
handleParamRequest(subscriptionSet, StarTracker::SubscriptionSet::SIZE);
|
||||
break;
|
||||
}
|
||||
case (StarTracker::REQ_LOG_SUBSCRIPTION): {
|
||||
handleParamRequest(logSubscriptionSet, StarTracker::LogSubscriptionSet::SIZE);
|
||||
break;
|
||||
}
|
||||
case (StarTracker::REQ_DEBUG_CAMERA): {
|
||||
handleParamRequest(debugCameraSet, StarTracker::DebugCameraSet::SIZE);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
sif::debug << "StarTrackerHandler::interpretDeviceReply: Unknown device reply id:" << id
|
||||
<< std::endl;
|
||||
result = DeviceHandlerIF::UNKNOWN_DEVICE_REPLY;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -1147,7 +1221,7 @@ ReturnValue_t StarTrackerHandler::initializeLocalDataPool(localpool::DataPool& l
|
||||
localDataPoolMap.emplace(StarTracker::TRACKING_THIN_LIMIT, new PoolEntry<float>({0}));
|
||||
localDataPoolMap.emplace(StarTracker::TRACKING_OUTLIER_THRESHOLD, new PoolEntry<float>({0}));
|
||||
localDataPoolMap.emplace(StarTracker::TRACKING_OUTLIER_THRESHOLD_QUEST, new PoolEntry<float>({0}));
|
||||
localDataPoolMap.emplace(StarTracker::TRACKING_TRACKER_CHOICE, new PoolEntry<float>({0}));
|
||||
localDataPoolMap.emplace(StarTracker::TRACKING_TRACKER_CHOICE, new PoolEntry<uint8_t>({0}));
|
||||
|
||||
localDataPoolMap.emplace(StarTracker::VALIDATION_STABLE_COUNT, new PoolEntry<uint8_t>({0}));
|
||||
localDataPoolMap.emplace(StarTracker::VALIDATION_MAX_DIFFERENCE, new PoolEntry<float>({0}));
|
||||
@ -1182,8 +1256,8 @@ ReturnValue_t StarTrackerHandler::initializeLocalDataPool(localpool::DataPool& l
|
||||
localDataPoolMap.emplace(StarTracker::LOG_SUBSCRIPTION_LEVEL2, new PoolEntry<uint8_t>({0}));
|
||||
localDataPoolMap.emplace(StarTracker::LOG_SUBSCRIPTION_MODULE2, new PoolEntry<uint8_t>({0}));
|
||||
|
||||
localDataPoolMap.emplace(StarTracker::DEBUG_CAMERA_TIMING, new PoolEntry<uint8_t>({0}));
|
||||
localDataPoolMap.emplace(StarTracker::DEBUG_CAMERA_TEST, new PoolEntry<uint8_t>({0}));
|
||||
localDataPoolMap.emplace(StarTracker::DEBUG_CAMERA_TIMING, new PoolEntry<uint32_t>({0}));
|
||||
localDataPoolMap.emplace(StarTracker::DEBUG_CAMERA_TEST, new PoolEntry<uint32_t>({0}));
|
||||
|
||||
return RETURN_OK;
|
||||
}
|
||||
@ -1280,7 +1354,7 @@ ReturnValue_t StarTrackerHandler::scanForActionReply(DeviceCommandId_t* foundId)
|
||||
break;
|
||||
}
|
||||
default:
|
||||
sif::warning << "StarTrackerHandler::scanForParameterReply: Unknown parameter reply id"
|
||||
sif::warning << "StarTrackerHandler::scanForActionReply: Unknown parameter reply id"
|
||||
<< std::endl;
|
||||
return RETURN_FAILED;
|
||||
}
|
||||
@ -1291,7 +1365,7 @@ ReturnValue_t StarTrackerHandler::scanForSetParameterReply(DeviceCommandId_t* fo
|
||||
const uint8_t* reply = dataLinkLayer.getReply();
|
||||
switch (*reply) {
|
||||
case (StarTracker::ID::SUBSCRIPTION): {
|
||||
*foundId = StarTracker::SUBSCRIBE_TO_TM;
|
||||
*foundId = StarTracker::SUBSCRIPTION;
|
||||
break;
|
||||
}
|
||||
case (StarTracker::ID::LIMITS): {
|
||||
@ -1334,6 +1408,18 @@ ReturnValue_t StarTrackerHandler::scanForSetParameterReply(DeviceCommandId_t* fo
|
||||
*foundId = StarTracker::ALGO;
|
||||
break;
|
||||
}
|
||||
case (StarTracker::ID::LOG_LEVEL): {
|
||||
*foundId = StarTracker::LOGLEVEL;
|
||||
break;
|
||||
}
|
||||
case (StarTracker::ID::DEBUG_CAMERA): {
|
||||
*foundId = StarTracker::DEBUG_CAMERA;
|
||||
break;
|
||||
}
|
||||
case (StarTracker::ID::LOG_SUBSCRIPTION): {
|
||||
*foundId = StarTracker::LOGSUBSCRIPTION;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
sif::debug << "StarTrackerHandler::scanForParameterReply: Unknown parameter reply id"
|
||||
<< std::endl;
|
||||
@ -1390,7 +1476,7 @@ ReturnValue_t StarTrackerHandler::scanForGetParameterReply(DeviceCommandId_t* fo
|
||||
break;
|
||||
}
|
||||
case (StarTracker::ID::SUBSCRIPTION): {
|
||||
*foundId = StarTracker::SUBSCRIPTION;
|
||||
*foundId = StarTracker::REQ_SUBSCRIPTION;
|
||||
break;
|
||||
}
|
||||
case (StarTracker::ID::LOG_SUBSCRIPTION): {
|
||||
@ -1862,32 +1948,6 @@ void StarTrackerHandler::prepareTakeImageCommand(const uint8_t* commandData) {
|
||||
rawPacketLen = dataLinkLayer.getEncodedLength();
|
||||
}
|
||||
|
||||
void StarTrackerHandler::prepareSubscriptionCommand(const uint8_t* tmId) {
|
||||
uint32_t length = 18;
|
||||
commandBuffer[0] = TMTC_SETPARAMREQ;
|
||||
commandBuffer[1] = StarTracker::ID::SUBSCRIPTION;
|
||||
// Fill all other fields with invalid tm id
|
||||
commandBuffer[2] = *tmId;
|
||||
commandBuffer[3] = 0;
|
||||
commandBuffer[4] = 0;
|
||||
commandBuffer[5] = 0;
|
||||
commandBuffer[6] = 0;
|
||||
commandBuffer[7] = 0;
|
||||
commandBuffer[8] = 0;
|
||||
commandBuffer[9] = 0;
|
||||
commandBuffer[10] = 0;
|
||||
commandBuffer[11] = 0;
|
||||
commandBuffer[12] = 0;
|
||||
commandBuffer[13] = 0;
|
||||
commandBuffer[14] = 0;
|
||||
commandBuffer[15] = 0;
|
||||
commandBuffer[16] = 0;
|
||||
commandBuffer[17] = 0;
|
||||
dataLinkLayer.encodeFrame(commandBuffer, length);
|
||||
rawPacket = dataLinkLayer.getEncodedFrame();
|
||||
rawPacketLen = dataLinkLayer.getEncodedLength();
|
||||
}
|
||||
|
||||
void StarTrackerHandler::prepareSolutionRequest() {
|
||||
uint32_t length = 0;
|
||||
arc_tm_pack_solution_req(commandBuffer, &length);
|
||||
@ -2033,7 +2093,7 @@ ReturnValue_t StarTrackerHandler::prepareRequestLimitsParams() {
|
||||
return RETURN_OK;
|
||||
}
|
||||
|
||||
ReturnValue_t StarTrackerHandler::prepareRequestPropertyParams() {
|
||||
ReturnValue_t StarTrackerHandler::prepareRequestLogLevelParams() {
|
||||
uint32_t length = 0;
|
||||
arc_pack_loglevel_parameter_req(commandBuffer, &length);
|
||||
dataLinkLayer.encodeFrame(commandBuffer, length);
|
||||
@ -2042,6 +2102,105 @@ ReturnValue_t StarTrackerHandler::prepareRequestPropertyParams() {
|
||||
return RETURN_OK;
|
||||
}
|
||||
|
||||
ReturnValue_t StarTrackerHandler::prepareRequestMountingParams() {
|
||||
uint32_t length = 0;
|
||||
arc_pack_mounting_parameter_req(commandBuffer, &length);
|
||||
dataLinkLayer.encodeFrame(commandBuffer, length);
|
||||
rawPacket = dataLinkLayer.getEncodedFrame();
|
||||
rawPacketLen = dataLinkLayer.getEncodedLength();
|
||||
return RETURN_OK;
|
||||
}
|
||||
|
||||
ReturnValue_t StarTrackerHandler::prepareRequestImageProcessorParams() {
|
||||
uint32_t length = 0;
|
||||
arc_pack_imageprocessor_parameter_req(commandBuffer, &length);
|
||||
dataLinkLayer.encodeFrame(commandBuffer, length);
|
||||
rawPacket = dataLinkLayer.getEncodedFrame();
|
||||
rawPacketLen = dataLinkLayer.getEncodedLength();
|
||||
return RETURN_OK;
|
||||
}
|
||||
|
||||
ReturnValue_t StarTrackerHandler::prepareRequestCentroidingParams() {
|
||||
uint32_t length = 0;
|
||||
arc_pack_centroiding_parameter_req(commandBuffer, &length);
|
||||
dataLinkLayer.encodeFrame(commandBuffer, length);
|
||||
rawPacket = dataLinkLayer.getEncodedFrame();
|
||||
rawPacketLen = dataLinkLayer.getEncodedLength();
|
||||
return RETURN_OK;
|
||||
}
|
||||
|
||||
ReturnValue_t StarTrackerHandler::prepareRequestLisaParams() {
|
||||
uint32_t length = 0;
|
||||
arc_pack_lisa_parameter_req(commandBuffer, &length);
|
||||
dataLinkLayer.encodeFrame(commandBuffer, length);
|
||||
rawPacket = dataLinkLayer.getEncodedFrame();
|
||||
rawPacketLen = dataLinkLayer.getEncodedLength();
|
||||
return RETURN_OK;
|
||||
}
|
||||
|
||||
ReturnValue_t StarTrackerHandler::prepareRequestMatchingParams() {
|
||||
uint32_t length = 0;
|
||||
arc_pack_matching_parameter_req(commandBuffer, &length);
|
||||
dataLinkLayer.encodeFrame(commandBuffer, length);
|
||||
rawPacket = dataLinkLayer.getEncodedFrame();
|
||||
rawPacketLen = dataLinkLayer.getEncodedLength();
|
||||
return RETURN_OK;
|
||||
}
|
||||
|
||||
ReturnValue_t StarTrackerHandler::prepareRequestTrackingParams() {
|
||||
uint32_t length = 0;
|
||||
arc_pack_tracking_parameter_req(commandBuffer, &length);
|
||||
dataLinkLayer.encodeFrame(commandBuffer, length);
|
||||
rawPacket = dataLinkLayer.getEncodedFrame();
|
||||
rawPacketLen = dataLinkLayer.getEncodedLength();
|
||||
return RETURN_OK;
|
||||
}
|
||||
|
||||
ReturnValue_t StarTrackerHandler::prepareRequestValidationParams() {
|
||||
uint32_t length = 0;
|
||||
arc_pack_validation_parameter_req(commandBuffer, &length);
|
||||
dataLinkLayer.encodeFrame(commandBuffer, length);
|
||||
rawPacket = dataLinkLayer.getEncodedFrame();
|
||||
rawPacketLen = dataLinkLayer.getEncodedLength();
|
||||
return RETURN_OK;
|
||||
}
|
||||
|
||||
ReturnValue_t StarTrackerHandler::prepareRequestAlgoParams() {
|
||||
uint32_t length = 0;
|
||||
arc_pack_algo_parameter_req(commandBuffer, &length);
|
||||
dataLinkLayer.encodeFrame(commandBuffer, length);
|
||||
rawPacket = dataLinkLayer.getEncodedFrame();
|
||||
rawPacketLen = dataLinkLayer.getEncodedLength();
|
||||
return RETURN_OK;
|
||||
}
|
||||
|
||||
ReturnValue_t StarTrackerHandler::prepareRequestSubscriptionParams() {
|
||||
uint32_t length = 0;
|
||||
arc_pack_subscription_parameter_req(commandBuffer, &length);
|
||||
dataLinkLayer.encodeFrame(commandBuffer, length);
|
||||
rawPacket = dataLinkLayer.getEncodedFrame();
|
||||
rawPacketLen = dataLinkLayer.getEncodedLength();
|
||||
return RETURN_OK;
|
||||
}
|
||||
|
||||
ReturnValue_t StarTrackerHandler::prepareRequestLogSubscriptionParams() {
|
||||
uint32_t length = 0;
|
||||
arc_pack_logsubscription_parameter_req(commandBuffer, &length);
|
||||
dataLinkLayer.encodeFrame(commandBuffer, length);
|
||||
rawPacket = dataLinkLayer.getEncodedFrame();
|
||||
rawPacketLen = dataLinkLayer.getEncodedLength();
|
||||
return RETURN_OK;
|
||||
}
|
||||
|
||||
ReturnValue_t StarTrackerHandler::prepareRequestDebugCameraParams() {
|
||||
uint32_t length = 0;
|
||||
arc_pack_debugcamera_parameter_req(commandBuffer, &length);
|
||||
dataLinkLayer.encodeFrame(commandBuffer, length);
|
||||
rawPacket = dataLinkLayer.getEncodedFrame();
|
||||
rawPacketLen = dataLinkLayer.getEncodedLength();
|
||||
return RETURN_OK;
|
||||
}
|
||||
|
||||
ReturnValue_t StarTrackerHandler::handleSetParamReply() {
|
||||
const uint8_t* reply = dataLinkLayer.getReply();
|
||||
uint8_t status = *(reply + STATUS_OFFSET);
|
||||
|
Reference in New Issue
Block a user