在应用层中如何使用Token存储非易失性数据?
背景:
客户在开发应用程序时,经常需要存储一些非易失性数据,当设备复位或掉电之后数据依然保持不变。由于EM35x和EFR32MG芯片系列中没有内部EEPROM,EmberZnet使用部分内部Flash模拟EEPROM的功能来存储非易失性数据,比如网络参数信息、绑定表信息以及应用层存储非易失性数据等。在EmberZnet中,采用Token的方式对非易失性数据进行存储。
使用EmberZnet的Token来存储非易失性数据的方式可用于所需存储的非易失性数据不多(小于2KB或者小于8KB)的情形。而当需要存储大量的非易失性数据(数十KB甚至上百KB),就只能通过其它方式(增加外部EEPROM等)。
示例:
下面通过举例,介绍如何在应用层中使用应用层Token来存储非易失性数据。
// APP CREATORS #define CREATOR_APP_VERSION_INFO (0x8730) //BASIC #define CREATOR_APP_SENSOR_NAME (0x8731) //BASIC #define CREATOR_APP_SENSOR_PARAMETERS (0x8732) //BASIC #define CREATOR_APP_EUI64_BACKUP (0x8733) //BASIC #define CREATOR_APP_INDEXED_ARRAY_DATA (0x8734) //INDEX #define CREATOR_APP_COUNTER (0x8735) //COUNTER #if defined(DEFINETYPES) typedef uint16_t tokenTypeAppVersionInfo; typedef uint8_t tokenTypeSensorName[10]; typedef struct { uint8_t initValues[5]; uint8_t reportInterval; uint16_t calibrationValue; } tokenTypeSensorParameters; typedef uint8_t tokenTypeEUI64BackUp[8]; typedef uint8_t tokenTypeArrayData[10]; typedef uint32_t tokenTypeAppCounter; #endif //DEFINETYPES #ifdef DEFINETOKENS DEFINE_BASIC_TOKEN(APP_VERSION_INFO, tokenTypeAppVersionInfo, 0x0000) DEFINE_BASIC_TOKEN(APP_SENSOR_NAME, tokenTypeSensorName, {'U','N','N','A','M','E','D',' ',' ',' '}) DEFINE_BASIC_TOKEN(APP_SENSOR_PARAMETERS, tokenTypeSensorParameters, {{0x00,0x00,0x00,0x00,0x00},0x00,0x0000}) DEFINE_BASIC_TOKEN(APP_EUI64_BACKUP, tokenTypeEUI64BackUp, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}) DEFINE_INDEXED_TOKEN(APP_INDEXED_ARRAY_DATA, tokenTypeArrayData, 10, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}) DEFINE_COUNTER_TOKEN(APP_COUNTER, tokenTypeAppCounter, 0x00000000) #endif
// Write token tokenTypeAppVersionInfo tokenVerInfo = 0x0101; halCommonSetToken(TOKEN_APP_VERSION_INFO, &tokenVerInfo); // Read token tokenTypeAppVersionInfo tokenVerInfo; halCommonGetToken(&tokenVerInfo, TOKEN_APP_VERSION_INFO); emberAfCorePrintln("Read TOKEN_APP_VERSION_INFO: version info: %x.\n", tokenVerInfo);
参考资料:
更多信息请参考下面文档:
An703 Using the Simulated EEPROM for the EM35x and Mighty Gecko SoC Platforms
UG103-7 Tokens Fundamentals
在应用层中如何使用Token存储非易失性数据?
在应用层中如何使用Token存储非易失性数据?
背景:
客户在开发应用程序时,经常需要存储一些非易失性数据,当设备复位或掉电之后数据依然保持不变。由于EM35x和EFR32MG芯片系列中没有内部EEPROM,EmberZnet使用部分内部Flash模拟EEPROM的功能来存储非易失性数据,比如网络参数信息、绑定表信息以及应用层存储非易失性数据等。在EmberZnet中,采用Token的方式对非易失性数据进行存储。
使用EmberZnet的Token来存储非易失性数据的方式可用于所需存储的非易失性数据不多(小于2KB或者小于8KB)的情形。而当需要存储大量的非易失性数据(数十KB甚至上百KB),就只能通过其它方式(增加外部EEPROM等)。
示例:
下面通过举例,介绍如何在应用层中使用应用层Token来存储非易失性数据。
参考资料:
更多信息请参考下面文档:
An703 Using the Simulated EEPROM for the EM35x and Mighty Gecko SoC Platforms
UG103-7 Tokens Fundamentals