Skip to content

Commit

Permalink
Adding 'rename' operation necessary for using the WiFiNiNa for OTA
Browse files Browse the repository at this point in the history
  • Loading branch information
aentinger committed Jun 10, 2020
1 parent 2219137 commit 49f9738
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/WiFiStorage.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ class WiFiStorageClass
WiFiDrv::deleteFile(filename, strlen(filename));
return true;
}
static bool rename(const char * old_file_name, const char * new_file_name) {
return (WiFiDrv::renameFile(old_file_name, strlen(old_file_name), new_file_name, strlen(new_file_name)) == 0);
}
static bool read(const char *filename, uint32_t offset, uint8_t* buffer, uint32_t buffer_len) {
WiFiDrv::readFile(filename, strlen(filename), offset, buffer, buffer_len);
return true;
Expand All @@ -59,6 +62,9 @@ class WiFiStorageClass
static bool remove(String filename) {
return remove(filename.c_str());
}
static bool rename(String old_file_name, String new_file_name) {
return rename(old_file_name.c_str(), new_file_name.c_str());
}
static bool read(String filename, uint32_t offset, uint8_t* buffer, uint32_t buffer_len) {
return read(filename.c_str(), offset, buffer, buffer_len);
}
Expand Down
32 changes: 32 additions & 0 deletions src/utility/wifi_drv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1110,6 +1110,38 @@ int8_t WiFiDrv::downloadFile(const char* url, uint8_t url_len, const char *filen
return _data;
}

int8_t renameFile(const char * old_file_name, uint8_t const old_file_name_len, const char * new_file_name, uint8_t const new_file_name_len)
{
WAIT_FOR_SLAVE_SELECT();
/* Send Command */
SpiDrv::sendCmd(RENAME_FILE, PARAM_NUMS_2);
SpiDrv::sendParam((uint8_t*)old_file_name, old_file_name_len, NO_LAST_PARAM);
SpiDrv::sendParam((uint8_t*)new_file_name, new_file_name_len, LAST_PARAM);

/* pad to multiple of 4 */
int commandSize = 6 + old_file_name_len + new_file_name_len;
while (commandSize % 4) {
SpiDrv::readChar();
commandSize++;
}

SpiDrv::spiSlaveDeselect();
/* Wait the reply elaboration */
SpiDrv::waitForSlaveReady();
SpiDrv::spiSlaveSelect();

/* Wait for reply */
uint8_t data = 0;
uint8_t dataLen = 0;
if (!SpiDrv::waitResponseCmd(DOWNLOAD_FILE, PARAM_NUMS_1, &data, &dataLen))
{
WARN("error waitResponse");
data = WL_FAILURE;
}
SpiDrv::spiSlaveDeselect();
return data;
}

int8_t WiFiDrv::fileOperation(uint8_t operation, const char *filename, uint8_t filename_len, uint32_t offset, uint8_t* buffer, uint32_t len)
{
WAIT_FOR_SLAVE_SELECT();
Expand Down
1 change: 1 addition & 0 deletions src/utility/wifi_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,7 @@ class WiFiDrv
static void analogWrite(uint8_t pin, uint8_t value);

static int8_t downloadFile(const char* url, uint8_t url_len, const char *filename, uint8_t filename_len);
static int8_t renameFile(const char * old_file_name, uint8_t const old_file_name_len, const char * new_file_name, uint8_t const new_file_name_len);

static int8_t fileOperation(uint8_t operation, const char *filename, uint8_t filename_len, uint32_t offset, uint8_t* buffer, uint32_t len);

Expand Down
1 change: 1 addition & 0 deletions src/utility/wifi_spi.h
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ enum {
EXISTS_FILE = 0x63,
DOWNLOAD_FILE = 0x64,
APPLY_OTA_COMMAND = 0x65,
RENAME_FILE = 0x66,
};


Expand Down

0 comments on commit 49f9738

Please sign in to comment.