76 lines
2.0 KiB
C++
76 lines
2.0 KiB
C++
|
#include "StrImageLoader.h"
|
||
|
|
||
|
#include <filesystem>
|
||
|
|
||
|
StrImageLoader::StrImageLoader(object_id_t objectId) {
|
||
|
|
||
|
}
|
||
|
|
||
|
StrImageLoader::~StrImageLoader() {
|
||
|
}
|
||
|
|
||
|
ReturnValue_t StrImageLoader::initialize() {
|
||
|
sdcMan = SdCardManager::instance();
|
||
|
if (sdcMan == nullptr) {
|
||
|
sif::warning << "StrImageLoader::initialize: Invalid SD Card Manager" << std::endl;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
ReturnValue_t StrImageLoader::performOperation(uint8_t operationCode) {
|
||
|
semaphore.acquire();
|
||
|
while(true) {
|
||
|
switch(internalState) {
|
||
|
case InternalState::IDLE:
|
||
|
semaphore.acquire();
|
||
|
break;
|
||
|
case InternalState::UPLOAD_IMAGE:
|
||
|
uploadImage();
|
||
|
break;
|
||
|
case InternalState::DOWNLOAD_IMAGE:
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void StrImageLoader::setComIF(DeviceCommunicationIF* communicationInterface_) {
|
||
|
communicationInterface = communicationInterface_;
|
||
|
}
|
||
|
|
||
|
void StrImageLoader::setComCookie(CookieIF* comCookie_) {
|
||
|
comCookie = comCookie_;
|
||
|
}
|
||
|
|
||
|
ReturnValue_t StrImageLoader::startImageUpload(std::string image) {
|
||
|
|
||
|
//TODO: Use string part not data pointer
|
||
|
// Check if file is stored on SD card and if associated SD card is mounted
|
||
|
if (image.substr(0, sizeof(SdCardManager::SD_0_MOUNT_POINT))
|
||
|
== std::string(SdCardManager::SD_0_MOUNT_POINT)) {
|
||
|
if (!sdcMan->isSdCardMounted(sd::SLOT_0)) {
|
||
|
sif::warning << "StrImageLoader::getImageLocation: SD card 0 not mounted" << std::endl;
|
||
|
return SD_NOT_MOUNTED;
|
||
|
}
|
||
|
} else if (image.substr(0, sizeof(SdCardManager::SD_1_MOUNT_POINT))
|
||
|
== std::string(SdCardManager::SD_1_MOUNT_POINT)) {
|
||
|
if (!sdcMan->isSdCardMounted(sd::SLOT_0)) {
|
||
|
sif::warning << "StrImageLoader::getImageLocation: SD card 1 not mounted" << std::endl;
|
||
|
return SD_NOT_MOUNTED;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
uploadImage = image;
|
||
|
|
||
|
if(not std::filesystem::exists(uploadImage)) {
|
||
|
return FILE_NOT_EXISTS;
|
||
|
}
|
||
|
|
||
|
internalState = InternalState::UPLOAD_IMAGE;
|
||
|
|
||
|
semaphore.release();
|
||
|
}
|
||
|
|
||
|
ReturnValue_t StrImageLoader::uploadImage() {
|
||
|
|
||
|
}
|
||
|
|