upload fpga image command
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
This commit is contained in:
@ -107,7 +107,7 @@ ReturnValue_t StarTrackerHandler::executeAction(ActionId_t actionId, MessageQueu
|
||||
if (result != RETURN_OK) {
|
||||
return result;
|
||||
}
|
||||
if (size > MAX_PATH_SIZE) {
|
||||
if (size > MAX_PATH_SIZE + MAX_FILE_NAME) {
|
||||
return FILE_PATH_TOO_LONG;
|
||||
}
|
||||
result = strHelper->startImageUpload(
|
||||
@ -167,6 +167,13 @@ ReturnValue_t StarTrackerHandler::executeAction(ActionId_t actionId, MessageQueu
|
||||
std::string(reinterpret_cast<const char*>(data), size));
|
||||
return EXECUTION_FINISHED;
|
||||
}
|
||||
case(StarTracker::CHANGE_FPGA_DOWNLOAD_FILE): {
|
||||
if (size > MAX_FILE_NAME) {
|
||||
return FILENAME_TOO_LONG;
|
||||
}
|
||||
strHelper->setDownloadFpgaImage(std::string(reinterpret_cast<const char*>(data), size));
|
||||
return EXECUTION_FINISHED;
|
||||
}
|
||||
case(StarTracker::SET_READ_FILENAME): {
|
||||
if (size > MAX_FILE_NAME) {
|
||||
return FILENAME_TOO_LONG;
|
||||
@ -190,6 +197,21 @@ ReturnValue_t StarTrackerHandler::executeAction(ActionId_t actionId, MessageQueu
|
||||
strHelperExecuting = true;
|
||||
return EXECUTION_FINISHED;
|
||||
}
|
||||
case(StarTracker::UPLOAD_FPGA_IMAGE): {
|
||||
result = DeviceHandlerBase::acceptExternalDeviceCommands();
|
||||
if (result != RETURN_OK) {
|
||||
return result;
|
||||
}
|
||||
if (size > MAX_PATH_SIZE + MAX_FILE_NAME) {
|
||||
return FILE_PATH_TOO_LONG;
|
||||
}
|
||||
result = strHelper->startFpgaUpload(std::string(reinterpret_cast<const char*>(data), size));
|
||||
if (result != RETURN_OK) {
|
||||
return result;
|
||||
}
|
||||
strHelperExecuting = true;
|
||||
return EXECUTION_FINISHED;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -469,6 +491,10 @@ ReturnValue_t StarTrackerHandler::buildCommandFromCommand(DeviceCommandId_t devi
|
||||
result = prepareDownloadBlobPixelCommand(commandData, commandDataLen);
|
||||
return result;
|
||||
}
|
||||
case (StarTracker::FPGA_ACTION): {
|
||||
result = prepareFpgaActionCommand(commandData, commandDataLen);
|
||||
return result;
|
||||
}
|
||||
default:
|
||||
return DeviceHandlerIF::COMMAND_NOT_IMPLEMENTED;
|
||||
}
|
||||
@ -545,6 +571,8 @@ void StarTrackerHandler::fillCommandAndReplyMap() {
|
||||
StarTracker::MAX_FRAME_SIZE * 2 + 2);
|
||||
this->insertInCommandAndReplyMap(StarTracker::DOWNLOAD_BLOBPIXEL, 3, &downloadBlobPixel,
|
||||
StarTracker::MAX_FRAME_SIZE * 2 + 2);
|
||||
this->insertInCommandAndReplyMap(StarTracker::FPGA_ACTION, 3, nullptr,
|
||||
StarTracker::MAX_FRAME_SIZE * 2 + 2);
|
||||
}
|
||||
|
||||
ReturnValue_t StarTrackerHandler::scanForReply(const uint8_t *start, size_t remainingSize,
|
||||
@ -617,7 +645,8 @@ ReturnValue_t StarTrackerHandler::interpretDeviceReply(DeviceCommandId_t id, con
|
||||
case (StarTracker::TAKE_IMAGE):
|
||||
case (StarTracker::RESET_ERROR):
|
||||
case (StarTracker::UNLOCK):
|
||||
case (StarTracker::SET_TIME): {
|
||||
case (StarTracker::SET_TIME):
|
||||
case (StarTracker::FPGA_ACTION): {
|
||||
result = handleActionReply();
|
||||
break;
|
||||
}
|
||||
@ -995,6 +1024,10 @@ ReturnValue_t StarTrackerHandler::scanForActionReply(DeviceCommandId_t *foundId)
|
||||
*foundId = StarTracker::DOWNLOAD_BLOBPIXEL;
|
||||
break;
|
||||
}
|
||||
case (StarTracker::ID::FPGA_ACTION): {
|
||||
*foundId = StarTracker::FPGA_ACTION;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
sif::warning << "StarTrackerHandler::scanForParameterReply: Unknown parameter reply id"
|
||||
<< std::endl;
|
||||
@ -1649,6 +1682,24 @@ ReturnValue_t StarTrackerHandler::prepareDownloadBlobPixelCommand(const uint8_t*
|
||||
return RETURN_OK;
|
||||
}
|
||||
|
||||
ReturnValue_t StarTrackerHandler::prepareFpgaActionCommand(const uint8_t* commandData,
|
||||
size_t commandDataLen) {
|
||||
if (commandDataLen != FpgaActionCmd::LENGTH) {
|
||||
return INVALID_LENGTH;
|
||||
}
|
||||
struct FPGAActionActionRequest req;
|
||||
req.id = *commandData;
|
||||
if (req.id != FpgaActionCmd::ID) {
|
||||
return INVALID_ID;
|
||||
}
|
||||
uint32_t length = 0;
|
||||
arc_pack_fpgaaction_action_req(&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