diff --git a/src/uas/FileManager.cc b/src/uas/FileManager.cc index 15f6ea623245c1cf1174a89debc36b7b906d88aa..4c345f5a723d6738e237c110be4fe5430c2aa44c 100644 --- a/src/uas/FileManager.cc +++ b/src/uas/FileManager.cc @@ -406,6 +406,9 @@ void FileManager::receiveMessage(mavlink_message_t message) } else if (request->hdr.req_opcode == kCmdCreateFile) { _emitErrorMessage(tr("Nak received creating file, error: %1").arg(errorString(request->data[0]))); return; + } else if (request->hdr.req_opcode == kCmdCreateDirectory) { + _emitErrorMessage(tr("Nak received creating directory, error: %1").arg(errorString(request->data[0]))); + return; } else { // Generic Nak handling if (request->hdr.req_opcode == kCmdReadFile || request->hdr.req_opcode == kCmdBurstReadFile) { @@ -584,6 +587,24 @@ void FileManager::uploadPath(const QString& toPath, const QFileInfo& uploadFile) _sendRequest(&request); } +void FileManager::createDirectory(const QString& directory) +{ + if(_currentOperation != kCOIdle){ + _emitErrorMessage(tr("UAS File manager busy. Try again later")); + return; + } + + _currentOperation = kCOCreateDir; + + Request request; + request.hdr.session = 0; + request.hdr.opcode = kCmdCreateDirectory; + request.hdr.offset = 0; + request.hdr.size = 0; + _fillRequestWithString(&request, directory); + _sendRequest(&request); +} + QString FileManager::errorString(uint8_t errorCode) { switch(errorCode) { diff --git a/src/uas/FileManager.h b/src/uas/FileManager.h index 60efc5a156e824562a12994763f2314259a16858..787ee25fb72f11fd582a298f3c7e26018dda01dc 100644 --- a/src/uas/FileManager.h +++ b/src/uas/FileManager.h @@ -61,6 +61,9 @@ public: /// Upload the specified file to the specified location void uploadPath(const QString& toPath, const QFileInfo& uploadFile); + /// Create a remote directory + void createDirectory(const QString& directory); + signals: // Signals associated with the listDirectory method @@ -174,6 +177,7 @@ private: kCOBurst, // waiting for Burst response kCOWrite, // waiting for Write response kCOCreate, // waiting for Create response + kCOCreateDir, // waiting for Create Directory response }; bool _sendOpcodeOnlyCmd(uint8_t opcode, OperationState newOpState);