From f4f033ec7ab116689db1e2a417ea91dc7eee8421 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=83=C2=83=C3=82=C2=BCng?= Date: Mon, 18 Sep 2017 12:49:07 +0200 Subject: [PATCH] FileManager: add createDirectory method --- src/uas/FileManager.cc | 21 +++++++++++++++++++++ src/uas/FileManager.h | 4 ++++ 2 files changed, 25 insertions(+) diff --git a/src/uas/FileManager.cc b/src/uas/FileManager.cc index 15f6ea623..4c345f5a7 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 60efc5a15..787ee25fb 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); -- 2.22.0