mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-08-06 07:00:05 +08:00
feat(compatibility_upgrade): add function to get old SDK's target ap SSID and passowrd
Add error warning to check the wrong parition table.
This commit is contained in:
@ -23,11 +23,33 @@ extern "C" {
|
||||
|
||||
#define RTC_SYS_RAM_SIZE 256
|
||||
|
||||
/**
|
||||
* @brief Station's AP base information of old SDK
|
||||
*/
|
||||
struct old_ap_ssid {
|
||||
uint32_t len; //!< SSID length
|
||||
uint8_t ssid[32]; //!< SSID data
|
||||
uint8_t passwd[64]; //!< password data
|
||||
} __attribute__((packed));
|
||||
|
||||
/**
|
||||
* @brief System information of old SDK
|
||||
*/
|
||||
struct old_sysconf {
|
||||
uint8_t reserved_1[0x13C]; //!< reserved data
|
||||
uint8_t ap_number; //!< number of stored AP
|
||||
uint8_t ap_index; //!< index of current used AP
|
||||
uint8_t reserved_2[0x2]; //!< reserved data
|
||||
struct old_ap_ssid ap_ssid[5]; //!< station's AP base information
|
||||
} __attribute__((packed));
|
||||
|
||||
/**
|
||||
* The size of structure must not be larger than 256 bytes and all member varible must be uint32_t type
|
||||
*/
|
||||
struct _rtc_sys_info {
|
||||
uint32_t hint; // software reset reason
|
||||
uint32_t old_sysconf_addr; /*<! old SDK system configuration parameters base address,
|
||||
if your bootloader is older than v3.2, please don't use this */
|
||||
};
|
||||
|
||||
extern struct _rtc_sys_info rtc_sys_info;
|
||||
@ -56,6 +78,13 @@ void esp_reset_reason_set_hint(esp_reset_reason_t hint);
|
||||
*/
|
||||
esp_reset_reason_t esp_reset_reason_early(void);
|
||||
|
||||
/**
|
||||
* @brief Get old SDK configuration parameters base address
|
||||
*
|
||||
* @return 0 if it is not upgraded from old SDK or the absolute address of the flash
|
||||
*/
|
||||
uint32_t esp_get_old_sysconf_addr(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -41,12 +41,8 @@ static inline void esp_reset_reason_clear_hint()
|
||||
|
||||
static inline uint32_t esp_reset_reason_get_hint(uint32_t hw_reset)
|
||||
{
|
||||
if (hw_reset == POWERON_RESET && rtc_sys_info.hint != ESP_RST_SW) {
|
||||
uint32_t *p = (uint32_t *)&rtc_sys_info;
|
||||
|
||||
for (int i = 0; i < RTC_SYS_RAM_SIZE / sizeof(uint32_t); i++)
|
||||
*p++ = 0;
|
||||
}
|
||||
if (hw_reset == POWERON_RESET && rtc_sys_info.hint != ESP_RST_SW)
|
||||
rtc_sys_info.hint = 0;
|
||||
|
||||
return rtc_sys_info.hint;
|
||||
}
|
||||
|
@ -17,6 +17,7 @@
|
||||
|
||||
#include "esp_log.h"
|
||||
#include "esp_system.h"
|
||||
#include "internal/esp_system_internal.h"
|
||||
|
||||
#include "crc.h"
|
||||
|
||||
@ -352,3 +353,11 @@ uint32_t esp_get_minimum_free_heap_size(void)
|
||||
{
|
||||
return heap_caps_get_minimum_free_size(MALLOC_CAP_32BIT);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get old SDK configuration parameters base address
|
||||
*/
|
||||
uint32_t esp_get_old_sysconf_addr(void)
|
||||
{
|
||||
return rtc_sys_info.old_sysconf_addr;
|
||||
}
|
||||
|
Reference in New Issue
Block a user