Skip to content

Commit

Permalink
Add docs for flash partitioning
Browse files Browse the repository at this point in the history
  • Loading branch information
MaJerle committed Jun 10, 2023
1 parent fe98387 commit be02218
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 7 deletions.
5 changes: 3 additions & 2 deletions lwesp/src/include/lwesp/lwesp_flash_partitions.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,20 +38,21 @@
* #define LWESP_FLASH_PARTITION(enum_type, at_string)
*/

LWESP_FLASH_PARTITION(BLE_DATA, "ble_data")
LWESP_FLASH_PARTITION(SERVER_CERT, "server_cert")
LWESP_FLASH_PARTITION(SERVER_KEY, "server_key")
LWESP_FLASH_PARTITION(SERVER_CA, "server_ca")
LWESP_FLASH_PARTITION(CLIENT_CERT, "client_cert")
LWESP_FLASH_PARTITION(CLIENT_KEY, "client_key")
LWESP_FLASH_PARTITION(CLIENT_CA, "client_ca")
LWESP_FLASH_PARTITION(FACTORY_PARAM, "factory_param")
LWESP_FLASH_PARTITION(WPA2_CERT, "wpa2_cert")
LWESP_FLASH_PARTITION(WPA2_KEY, "wpa2_key")
LWESP_FLASH_PARTITION(WPA2_CA, "wpa2_ca")
LWESP_FLASH_PARTITION(MQTT_CERT, "mqtt_cert")
LWESP_FLASH_PARTITION(MQTT_KEY, "mqtt_key")
LWESP_FLASH_PARTITION(MQTT_CA, "mqtt_ca")
LWESP_FLASH_PARTITION(PKI_END, "") /* Special case -> PKI part ends here */
LWESP_FLASH_PARTITION(FATFS, "fatfs")
LWESP_FLASH_PARTITION(BLE_DATA, "ble_data")
LWESP_FLASH_PARTITION(FACTORY_PARAM, "factory_param")

#undef LWESP_FLASH_PARTITION
21 changes: 16 additions & 5 deletions lwesp/src/lwesp/lwesp_flash.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,20 +66,31 @@ lwesp_flash_erase(lwesp_flash_partition_t partition, uint32_t offset, uint32_t l
return lwespi_send_msg_to_producer_mbox(&LWESP_MSG_VAR_REF(msg), lwespi_initiate_cmd, 5000);
}

/**
* \brief Write data to flash partition
* \param[in] partition: Partition to write to
* \param[in] offset: Offset from start of partition to start writing at
* \param[in] length: Number of bytes to write
* \param[in] data: Actual data to write. Must not be `NULL`
* \param[in] evt_fn: Callback function called when command has finished. Set to `NULL` when not used
* \param[in] evt_arg: Custom argument for event callback function
* \param[in] blocking: Status whether command should be blocking or not
* \return \ref lwespOK on success, member of \ref lwespr_t enumeration otherwise
*/
lwespr_t
lwesp_flash_write(lwesp_flash_partition_t partition, uint32_t offset, uint32_t length, const void* data,
const lwesp_api_cmd_evt_fn evt_fn, void* const evt_arg, const uint32_t blocking) {
LWESP_MSG_VAR_DEFINE(msg);

LWESP_ASSERT(length > 0);
LWESP_ASSERT(data != NULL);
LWESP_ASSERT(partition < LWESP_FLASH_PARTITION_END && partition != LWESP_FLASH_PARTITION_PKI_END);

/*
* Check alignment if used - according to the ESP-AT commands,
* it is necessary to
* it is necessary to have 4-bytes alignment when loading PKI data
*/
if (partition == LWESP_FLASH_PARTITION_CLIENT_CA || partition == LWESP_FLASH_PARTITION_CLIENT_CERT
|| partition == LWESP_FLASH_PARTITION_CLIENT_KEY) {
/* TODO: Do we need server too? */
if (partition < LWESP_FLASH_PARTITION_PKI_END) {
LWESP_ASSERT((length & 0x03) == 0);
}

Expand Down

0 comments on commit be02218

Please sign in to comment.