27 void setFileList(
const QStringList &fileList) { _fileList = fileList; }
41 QList<LogFile>
logFiles()
const {
return _logFiles; }
95 QByteArray
uploadedFileContents(
const QString& remotePath)
const {
return _uploadedFiles.value(remotePath); }
157 void _sendAck(uint8_t targetSystemId, uint8_t targetComponentId, uint16_t seqNumber,
MavlinkFTP::OpCode_t reqOpCode);
159 void _sendNakErrno(uint8_t targetSystemId, uint8_t targetComponentId, uint8_t nakErrno, uint16_t seqNumber,
MavlinkFTP::OpCode_t reqOpCode);
161 void _sendResponse(uint8_t targetSystemId, uint8_t targetComponentId, MavlinkFTP::Request *request, uint16_t seqNumber);
163 void _listCommand(uint8_t senderSystemId, uint8_t senderComponentId, MavlinkFTP::Request *request, uint16_t seqNumber,
bool withTime);
164 void _openCommand(uint8_t senderSystemId, uint8_t senderComponentId, MavlinkFTP::Request *request, uint16_t seqNumber);
165 void _createFileCommand(uint8_t senderSystemId, uint8_t senderComponentId, MavlinkFTP::Request *request, uint16_t seqNumber);
166 void _openFileWOCommand(uint8_t senderSystemId, uint8_t senderComponentId, MavlinkFTP::Request *request, uint16_t seqNumber);
167 void _readCommand(uint8_t senderSystemId, uint8_t senderComponentId, MavlinkFTP::Request *request, uint16_t seqNumber);
168 void _burstReadCommand(uint8_t senderSystemId, uint8_t senderComponentId, MavlinkFTP::Request *request, uint16_t seqNumber);
169 void _removeFileCommand(uint8_t senderSystemId, uint8_t senderComponentId, MavlinkFTP::Request *request, uint16_t seqNumber);
170 void _terminateCommand(uint8_t senderSystemId, uint8_t senderComponentId, MavlinkFTP::Request *request, uint16_t seqNumber);
171 void _resetCommand(uint8_t senderSystemId, uint8_t senderComponentId, uint16_t seqNumber);
172 void _writeCommand(uint8_t senderSystemId, uint8_t senderComponentId, MavlinkFTP::Request *request, uint16_t seqNumber);
173 void _finalizeActiveUpload();
176 uint16_t _nextSeqNumber(uint16_t seqNumber)
const;
177 static QString _createTestTempFile(
int size);
178 QString _generateParamPck(
bool withDefaults);
179 QString _logFileTempPath(
const QString &name);
181 std::optional<QStringList> _logDirectoryEntries(
const QString& subdir,
bool withTime)
const;
182 static QByteArray _generateLogFileContents(
const QString &name,
int size);
185 static void ensureNullTemination(MavlinkFTP::Request *request);
187 const uint8_t _systemIdServer;
188 const uint8_t _componentIdServer;
191 bool _lastReplyValid =
false;
192 bool _randomDropsEnabled =
false;
193 int _burstReadDelayMs = 0;
195 bool _listDirectoryWithTimeSupported =
true;
197 bool _logDirEntriesWithTime =
false;
198 bool _logDirDotEntries =
false;
199 bool _paramPckEnabled =
true;
200 bool _singleSessionEnforced =
false;
201 bool _ignoreResetSessions =
false;
202 int _expireSessionAfterBursts = 0;
203 int _burstsServed = 0;
204 uint32_t _dropBurstPacketOffset = 0;
205 bool _dropBurstPacketPending =
false;
206 uint32_t _reorderBurstPacketOffset = 0;
207 bool _reorderBurstPacketPending =
false;
208 int _openFileROCount = 0;
209 int _readFileCount = 0;
210 int _lastBurstReadRequestSize = -1;
211 int _lastReadFileRequestSize = -1;
214 QString _paramPckTempFile;
215 struct UploadSession {
226 UploadSession _uploadSession;
227 QHash<QString, QByteArray> _uploadedFiles;
228 QStringList _fileList;
229 QList<LogFile> _logFiles;
230 QHash<QString, QString> _logFileTempPaths;
231 uint16_t _lastReplySequence = 0;
233 static constexpr uint8_t _sessionId = 1;