2021-07-22 18:25:57 +02:00
|
|
|
(function () {
|
2021-08-06 13:06:21 +02:00
|
|
|
p7.commands = {
|
|
|
|
/* ---------------------RAM filesystem commands--------------------- */
|
|
|
|
ram: {
|
|
|
|
/* ---------------------Single commands--------------------- */
|
|
|
|
/* Create a directory */
|
|
|
|
createDirectory: (name) =>
|
|
|
|
p7.send.singleCommand(ramCommandSubtype.createDirectory, 0, 0, [name, '', '', '', '', ''])
|
|
|
|
.catch((err) => {
|
|
|
|
err.message = "Couldn't create directory: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
2021-07-22 18:25:57 +02:00
|
|
|
|
2021-08-06 13:06:21 +02:00
|
|
|
/* Delete a directory */
|
|
|
|
deleteDirectory: (name) =>
|
|
|
|
p7.send.singleCommand(ramCommandSubtype.deleteDirectory, 0, 0, [name, '', '', '', '', ''])
|
|
|
|
.catch((err) => {
|
|
|
|
err.message = "Couldn't delete directory: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
|
|
|
|
|
|
|
/* Rename a directory */
|
|
|
|
renameDirectory: (oldName, newName) =>
|
|
|
|
p7.send.singleCommand(ramCommandSubtype.renameDirectory, 0, 0, [oldName, newName, '', '', '', ''])
|
|
|
|
.catch((err) => {
|
|
|
|
err.message = "Couldn't rename directory: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
|
|
|
|
|
|
|
/* Change working directory */
|
|
|
|
changeDirectory: (name) =>
|
|
|
|
p7.send.singleCommand(ramCommandSubtype.changeDirectory, 0, 0, [name, '', '', '', '', ''])
|
|
|
|
.catch((err) => {
|
|
|
|
err.message = "Couldn't change working directory: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
|
|
|
|
|
|
|
/* Delete a file */
|
|
|
|
deleteFile: (datatype, fileSize, directory, name, groupName) =>
|
|
|
|
p7.send.singleCommand(ramCommandSubtype.deleteFile, datatype, fileSize, [directory, name, groupName, '', '', ''])
|
|
|
|
.catch((err) => {
|
|
|
|
err.message = "Couldn't delete file: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
|
|
|
|
|
|
|
/* Rename a file */
|
|
|
|
renameFile: (datatype, directory, oldName, newName) =>
|
|
|
|
p7.send.singleCommand(ramCommandSubtype.renameFile, datatype, 0, [directory, oldName, newName, '', '', ''])
|
|
|
|
.catch((err) => {
|
|
|
|
err.message = "Couldn't rename file: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
|
|
|
|
|
|
|
/* Copy a file */
|
|
|
|
copyFile: (datatype, oldDirectory, oldName, newDirectory, newName) =>
|
|
|
|
p7.send.singleCommand(ramCommandSubtype.copyFile, datatype, 0, [oldDirectory, oldName, newDirectory, newName, '', ''])
|
|
|
|
.catch((err) => {
|
|
|
|
err.message = "Couldn't copy file: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
|
|
|
|
|
|
|
/* Reset */
|
|
|
|
reset: () =>
|
|
|
|
p7.send.packet(p7.make.basicPacket(p7PacketType.command, ramCommandSubtype.reset))
|
|
|
|
.catch((err) => {
|
|
|
|
err.message = "Couldn't reset RAM filesystem: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
2021-07-22 18:25:57 +02:00
|
|
|
|
2021-08-06 13:06:21 +02:00
|
|
|
/* ---------------------Single command requests--------------------- */
|
|
|
|
|
|
|
|
/* Get free space */
|
|
|
|
getCapacity: () =>
|
|
|
|
p7.send.singleCommandRoleswap(ramCommandSubtype.capacityTransmitRequest, 0, 0, ['', '', '', '', '', ''],
|
|
|
|
(buffer) => buffer.commandPacketFileSize()
|
|
|
|
).then((filteredData) => filteredData[0])
|
|
|
|
.catch((err) => {
|
|
|
|
err.message = "Couldn't get the size of the free space: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
|
|
|
|
|
|
|
/* List files */
|
|
|
|
list: () =>
|
|
|
|
p7.send.singleCommandRoleswap(ramCommandSubtype.fileInfoTransferAllRequest, 0, 0, ['', '', '', '', '', ''],
|
|
|
|
(buffer) => ({
|
|
|
|
datatype: buffer.commandPacketDataType(),
|
|
|
|
size: buffer.commandPacketFileSize(),
|
|
|
|
directoryName: buffer.commandPacketDataField(1),
|
|
|
|
name: buffer.commandPacketDataField(2),
|
|
|
|
groupName: buffer.commandPacketDataField(3)
|
|
|
|
})
|
|
|
|
).catch((err) => {
|
|
|
|
err.message = "Couldn't list files: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
2021-07-22 18:25:57 +02:00
|
|
|
|
2021-08-06 13:06:21 +02:00
|
|
|
/* Transfer setup entry ? */
|
|
|
|
getSetupEntry: (setupEntry) =>
|
|
|
|
p7.send.singleCommandRoleswap(ramCommandSubtype.setupEntryTransferRequest, 0, 0, [setupEntry, '', '', '', '', ''],
|
|
|
|
(buffer) => ({
|
|
|
|
name: buffer.commandPacketDataField(1),
|
|
|
|
data: buffer.commandPacketDataField(2).asciiToHex()
|
|
|
|
})
|
|
|
|
).catch((err) => {
|
|
|
|
err.message = "Couldn't transfer setup entry: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
2021-07-22 18:25:57 +02:00
|
|
|
|
2021-08-06 13:06:21 +02:00
|
|
|
/* ---------------------Data commands--------------------- */
|
2021-07-22 18:25:57 +02:00
|
|
|
|
2021-08-06 13:06:21 +02:00
|
|
|
/* ---------------------Data command requests--------------------- */
|
2021-07-22 18:25:57 +02:00
|
|
|
|
2021-08-06 13:06:21 +02:00
|
|
|
/* Receive a file */
|
|
|
|
getFile: (dataType, directory, name, groupName) =>
|
|
|
|
p7.send.dataCommandRoleswap(ramCommandSubtype.fileTransferRequest, dataType, 0, [directory, name, groupName, '', '', ''],
|
|
|
|
(command, data) => ({
|
|
|
|
dataType: command.commandPacketDataType(),
|
|
|
|
size: command.commandPacketFileSize(),
|
|
|
|
directoryName: command.commandPacketDataField(1),
|
|
|
|
name: command.commandPacketDataField(2),
|
|
|
|
groupName: command.commandPacketDataField(3),
|
|
|
|
data: data
|
|
|
|
})
|
|
|
|
).catch((err) => {
|
|
|
|
err.message = "Couldn't receive file: " + err.message;
|
|
|
|
throw err;
|
|
|
|
})
|
|
|
|
},
|
2021-07-22 18:25:57 +02:00
|
|
|
|
2021-08-06 13:06:21 +02:00
|
|
|
/* ---------------------Flash memory filesystem commands--------------------- */
|
2021-07-22 18:25:57 +02:00
|
|
|
|
2021-08-06 13:06:21 +02:00
|
|
|
flash: {
|
|
|
|
/* ---------------------Single commands--------------------- */
|
2021-07-25 21:43:43 +02:00
|
|
|
|
2021-08-06 13:06:21 +02:00
|
|
|
/* Create a directory */
|
|
|
|
createDirectory: (name, filesystem = 'fls0') =>
|
|
|
|
p7.send.singleCommand(flashCommandSubtype.createDirectory, 0, 0, [name, '', '', '', filesystem, ''])
|
|
|
|
.catch((err) => {
|
|
|
|
err.message = "Couldn't create directory: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
|
|
|
|
|
|
|
/* Delete a directory */
|
|
|
|
deleteDirectory: (name, filesystem = 'fls0') =>
|
|
|
|
p7.send.singleCommand(flashCommandSubtype.deleteDirectory, 0, 0, [name, '', '', '', filesystem, ''])
|
|
|
|
.catch((err) => {
|
|
|
|
err.message = "Couldn't delete directory: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
|
|
|
|
|
|
|
/* Rename a directory */
|
|
|
|
renameDirectory: (oldName, newName, filesystem = 'fls0') =>
|
|
|
|
p7.send.singleCommand(flashCommandSubtype.renameDirectory, 0, 0, [oldName, newName, '', '', filesystem, ''])
|
|
|
|
.catch((err) => {
|
|
|
|
err.message = "Couldn't rename directory: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
|
|
|
|
|
|
|
/* Change working directory */
|
|
|
|
changeDirectory: (name, filesystem = 'fls0') =>
|
|
|
|
p7.send.singleCommand(flashCommandSubtype.changeDirectory, 0, 0, [name, '', '', '', filesystem, ''])
|
|
|
|
.catch((err) => {
|
|
|
|
err.message = "Couldn't change working directory: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
|
|
|
|
|
|
|
/* Delete a file */
|
|
|
|
deleteFile: (directory, name, filesystem = 'fls0') =>
|
|
|
|
p7.send.singleCommand(flashCommandSubtype.deleteFile, 0, 0, [directory, name, '', '', filesystem, ''])
|
|
|
|
.catch((err) => {
|
|
|
|
err.message = "Couldn't delete file: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
|
|
|
|
|
|
|
/* Rename a file */
|
|
|
|
renameFile: (directory, oldName, newName, filesystem = 'fls0') =>
|
|
|
|
p7.send.singleCommand(flashCommandSubtype.renameFile, 0, 0, [directory, oldName, newName, '', filesystem, ''])
|
|
|
|
.catch((err) => {
|
|
|
|
err.message = "Couldn't rename file: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
|
|
|
|
|
|
|
/* Copy a file */
|
|
|
|
copyFile: (oldDirectory, oldName, newDirectory, newName, filesystem = 'fls0') =>
|
|
|
|
p7.send.singleCommand(flashCommandSubtype.copyFile, 0, 0, [oldDirectory, oldName, newDirectory, newName, filesystem, ''])
|
|
|
|
.catch((err) => {
|
|
|
|
err.message = "Couldn't copy file: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
|
|
|
|
|
|
|
/* Reset */
|
|
|
|
reset: (filesystem = 'fls0') =>
|
|
|
|
p7.send.singleCommand(flashCommandSubtype.resetFlash, 0, 0, ['', '', '', '', filesystem, ''])
|
|
|
|
.catch((err) => {
|
|
|
|
err.message = "Couldn't reset flash: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
|
|
|
|
|
|
|
/* Optimize filesystem */
|
|
|
|
optimize: (filesystem = 'fls0') =>
|
|
|
|
p7.send.singleCommand(flashCommandSubtype.optimizeFileSystem, 0, 0, ['', '', '', '', filesystem, ''])
|
|
|
|
.catch((err) => {
|
|
|
|
err.message = "Couldn't optimize flash: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
|
|
|
|
|
|
|
|
|
|
|
/* ---------------------Single command requests--------------------- */
|
|
|
|
|
|
|
|
/* Get free space */
|
|
|
|
getCapacity: (filesystem = 'fls0') =>
|
|
|
|
p7.send.singleCommandRoleswap(flashCommandSubtype.capacityTransmitRequest, 0, 0, ['', '', '', '', filesystem, ''],
|
|
|
|
(buffer) => buffer.commandPacketFileSize()
|
|
|
|
).then((filteredData) => filteredData[0])
|
|
|
|
.catch((err) => {
|
|
|
|
err.message = "Couldn't get the size of the free space: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
|
|
|
|
|
|
|
/* List files */
|
|
|
|
list: (filesystem = 'fls0') =>
|
|
|
|
p7.send.singleCommandRoleswap(flashCommandSubtype.fileInfoTransferAllRequest, 0, 0, ['', '', '', '', filesystem, ''],
|
|
|
|
(buffer) => ({
|
|
|
|
size: buffer.commandPacketFileSize(),
|
|
|
|
directoryName: buffer.commandPacketDataField(1),
|
|
|
|
name: buffer.commandPacketDataField(2)
|
|
|
|
})
|
|
|
|
).catch((err) => {
|
|
|
|
err.message = "Couldn't list files: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
2021-07-22 18:25:57 +02:00
|
|
|
|
2021-08-06 13:06:21 +02:00
|
|
|
/* ---------------------Data commands--------------------- */
|
2021-07-22 18:25:57 +02:00
|
|
|
|
2021-08-06 13:06:21 +02:00
|
|
|
sendFile: (file, directory, filesystem = 'fls0') =>
|
|
|
|
file.arrayBuffer()
|
|
|
|
.then((fileContent) => p7.send.dataCommand(flashCommandSubtype.fileTransfer, 0, fileContent.length, [directory, file.name.substring(0, 12), "", "", filesystem, ""], fileContent))
|
|
|
|
.catch((err) => {
|
|
|
|
err.message = "Couldn't send file: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
2021-07-22 18:25:57 +02:00
|
|
|
|
2021-08-06 13:06:21 +02:00
|
|
|
/* ---------------------Data command requests--------------------- */
|
2021-07-25 21:43:43 +02:00
|
|
|
|
2021-08-06 13:06:21 +02:00
|
|
|
getFile: (directory, name, filesystem = 'fls0') =>
|
|
|
|
p7.send.dataCommandRoleswap(flashCommandSubtype.fileTransferRequest, 0, 0, [directory, name, '', '', filesystem, ''],
|
|
|
|
(command, data) => ({
|
|
|
|
size: command.commandPacketFileSize(),
|
|
|
|
directory : command.commandPacketDataField(1),
|
|
|
|
name: command.commandPacketDataField(2),
|
|
|
|
filesystem: command.commandPacketDataField(5),
|
|
|
|
data: data
|
|
|
|
})
|
|
|
|
).then((filteredData) => filteredData[0])
|
|
|
|
.catch((err) => {
|
|
|
|
err.message = "Couldn't receive file: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
|
|
|
|
|
|
|
getAllFiles: (filesystem = 'fls0') =>
|
|
|
|
p7.send.dataCommandRoleswap(flashCommandSubtype.fileTransferAllRequest, 0, 0, ['', '', '', '', filesystem, ''],
|
|
|
|
(command, data) => ({
|
|
|
|
size: command.commandPacketFileSize(),
|
|
|
|
directory : command.commandPacketDataField(1),
|
|
|
|
name: command.commandPacketDataField(2),
|
|
|
|
filesystem: command.commandPacketDataField(5),
|
|
|
|
data: data
|
|
|
|
})
|
|
|
|
).catch((err) => {
|
|
|
|
err.message = "Couldn't receive all files: " + err.message;
|
|
|
|
throw err;
|
|
|
|
}),
|
|
|
|
|
|
|
|
getFlashImage: (filesystem = 'fls0') =>
|
|
|
|
p7.send.dataCommandRoleswap(flashCommandSubtype.flashImageTransferRequest, 0, 0, ['', '', '', '', filesystem, ''],
|
|
|
|
(command, data)=> ({
|
|
|
|
filesystem: command.commandPacketDataField(5),
|
|
|
|
data: data
|
|
|
|
})
|
|
|
|
).catch((err) => {
|
|
|
|
err.message = "Couldn't dump flash image: " + err.message;
|
|
|
|
throw err;
|
|
|
|
})
|
|
|
|
}
|
|
|
|
};
|
2021-07-25 21:43:43 +02:00
|
|
|
}) ();
|