fix in image upload function

This commit is contained in:
Jakob Meier
2021-12-09 15:02:58 +01:00
parent e64a3fb645
commit 1895d7c3db
5 changed files with 167 additions and 68 deletions

View File

@ -86,7 +86,7 @@ ReturnValue_t StarTrackerHandler::executeAction(ActionId_t actionId, MessageQueu
return EXECUTION_FINISHED;
}
case(StarTracker::DOWNLOAD_IMAGE): {
strImageLoader->startImageDownload();
strImageLoader->startImageDownload(std::string(reinterpret_cast<const char*>(data), size));
imageLoaderExecuting = true;
return EXECUTION_FINISHED;
}
@ -167,12 +167,6 @@ ReturnValue_t StarTrackerHandler::buildCommandFromCommand(DeviceCommandId_t devi
prepareInterfaceRequest();
return RETURN_OK;
}
case (StarTracker::UPLOAD_IMAGE): {
std::string uploadImage = std::string(reinterpret_cast<const char*>(commandData),
commandDataLen);
strImageLoader->startImageUpload(uploadImage);
return result;
}
case (StarTracker::REQ_POWER): {
preparePowerRequest();
return RETURN_OK;
@ -181,6 +175,10 @@ ReturnValue_t StarTrackerHandler::buildCommandFromCommand(DeviceCommandId_t devi
prepareRebootCommand();
return RETURN_OK;
}
case (StarTracker::TAKE_IMAGE): {
prepareTakeImageCommand();
return RETURN_OK;
}
case (StarTracker::SUBSCRIBE_TO_TM): {
prepareSubscriptionCommand(commandData);
return RETURN_OK;
@ -261,6 +259,7 @@ void StarTrackerHandler::fillCommandAndReplyMap() {
this->insertInCommandAndReplyMap(StarTracker::REQ_TIME, 3, &timeSet,
StarTracker::MAX_FRAME_SIZE * 2 + 2);
this->insertInCommandMap(StarTracker::UPLOAD_IMAGE);
this->insertInCommandMap(StarTracker::DOWNLOAD_IMAGE);
this->insertInCommandAndReplyMap(StarTracker::REQ_POWER, 3, &powerSet,
StarTracker::MAX_FRAME_SIZE * 2 + 2);
this->insertInCommandAndReplyMap(StarTracker::REQ_INTERFACE, 3, &interfaceSet,
@ -293,6 +292,8 @@ void StarTrackerHandler::fillCommandAndReplyMap() {
StarTracker::MAX_FRAME_SIZE * 2 + 2);
this->insertInCommandAndReplyMap(StarTracker::ALGO, 3, nullptr,
StarTracker::MAX_FRAME_SIZE * 2 + 2);
this->insertInCommandAndReplyMap(StarTracker::TAKE_IMAGE, 3, nullptr,
StarTracker::MAX_FRAME_SIZE * 2 + 2);
}
ReturnValue_t StarTrackerHandler::scanForReply(const uint8_t *start, size_t remainingSize,
@ -365,6 +366,10 @@ ReturnValue_t StarTrackerHandler::interpretDeviceReply(DeviceCommandId_t id, con
result = handleActionReply();
break;
}
case (StarTracker::TAKE_IMAGE): {
result = handleActionReply();
break;
}
case (StarTracker::REQ_VERSION): {
result = handleVersionTm();
break;
@ -522,6 +527,10 @@ ReturnValue_t StarTrackerHandler::scanForActionReply(DeviceCommandId_t *foundId)
*foundId = StarTracker::BOOT;
break;
}
case (StarTracker::ID::TAKE_IMAGE): {
*foundId = StarTracker::TAKE_IMAGE;
break;
}
case (StarTracker::ID::UPLOAD_IMAGE): {
*foundId = StarTracker::UPLOAD_IMAGE;
break;
@ -701,6 +710,15 @@ void StarTrackerHandler::prepareRebootCommand() {
rawPacketLen = dataLinkLayer.getEncodedLength();
}
void StarTrackerHandler::prepareTakeImageCommand() {
uint32_t length = 0;
struct CameraActionRequest camReq;
arc_pack_camera_action_req(&camReq, commandBuffer, &length);
dataLinkLayer.encodeFrame(commandBuffer, length);
rawPacket = dataLinkLayer.getEncodedFrame();
rawPacketLen = dataLinkLayer.getEncodedLength();
}
void StarTrackerHandler::prepareSubscriptionCommand(const uint8_t* tmId) {
uint32_t length = 18;
commandBuffer[0] = TMTC_SETPARAMREQ;