miscellaneous_interface.c 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. /**
  2. * @Author: 李建
  3. * @Date: 2023/12/14 11:20:56
  4. * @LastEditors: 李建
  5. * @LastEditTime: 2023/12/14 11:20:56
  6. * Description: 存储
  7. * Copyright: Copyright (©)}) 2023 永续绿建. All rights reserved.
  8. */
  9. #include "miscellaneous_interface.h"
  10. #include "esp_mac.h"
  11. #include "esp_log.h"
  12. #include "esp_wifi.h"
  13. #include "nvs.h"
  14. #include "app/include/wifi.h"
  15. #include "esp_sntp.h"
  16. #include "esp_system.h"
  17. #include "esp_spiffs.h"
  18. #include "esp_app_desc.h"
  19. #include "esp_chip_info.h"
  20. static const char *TAG = "storage";
  21. uint64_t get_sys_time_ms() {
  22. time_t timenow;
  23. time(&timenow);
  24. return (uint64_t) timenow * 1000;
  25. }
  26. bool net_connect_check() {
  27. return get_wifi_status();
  28. }
  29. esp_err_t nvs_set_uint16(uint16_t code, const char *key) {
  30. esp_err_t err;
  31. nvs_handle handle;
  32. err = nvs_open(AC_CODE_NAMESPACE, NVS_READWRITE, &handle);
  33. if (err != ESP_OK) {
  34. printf("nvs open fail\n");
  35. return err;
  36. }
  37. err = nvs_set_u16(handle, key, code);
  38. if (err != ESP_OK) {
  39. return err;
  40. }
  41. // 提交
  42. err = nvs_commit(handle);
  43. if (err != ESP_OK) {
  44. return err;
  45. }
  46. // 记得关闭
  47. nvs_close(handle);
  48. return ESP_OK;
  49. }
  50. esp_err_t nvs_set_int8(int8_t code, const char *key) {
  51. esp_err_t err;
  52. nvs_handle handle;
  53. err = nvs_open(AC_CODE_NAMESPACE, NVS_READWRITE, &handle);
  54. if (err != ESP_OK) {
  55. printf("nvs open fail\n");
  56. return err;
  57. }
  58. err = nvs_set_i8(handle, key, code);
  59. if (err != ESP_OK) {
  60. return err;
  61. }
  62. // 提交
  63. err = nvs_commit(handle);
  64. if (err != ESP_OK) {
  65. return err;
  66. }
  67. // 记得关闭
  68. nvs_close(handle);
  69. return ESP_OK;
  70. }
  71. int8_t *nvs_get_int8(const char *key) {
  72. nvs_handle handle;
  73. esp_err_t err;
  74. int8_t *code;
  75. err = nvs_open(AC_CODE_NAMESPACE, NVS_READWRITE, &handle);
  76. if (err != ESP_OK) {
  77. ESP_LOGI(TAG, "nvs open fail");
  78. return NULL;
  79. }
  80. code = (int8_t *) malloc(sizeof(int8_t));
  81. // 检查存在
  82. err = nvs_get_i8(handle, key, code);
  83. if (err != ESP_OK) {
  84. ESP_LOGI(TAG, "get i8 error,err = %d,key = %s", err, key);
  85. free(code);
  86. return NULL;
  87. }
  88. printf("get code = %u from nvs", *code);
  89. nvs_close(handle);
  90. return code;
  91. }
  92. esp_err_t nvs_set_uint8(uint8_t code, const char *key) {
  93. esp_err_t err;
  94. nvs_handle handle;
  95. err = nvs_open(AC_CODE_NAMESPACE, NVS_READWRITE, &handle);
  96. if (err != ESP_OK) {
  97. printf("nvs open fail\n");
  98. return err;
  99. }
  100. err = nvs_set_u8(handle, key, code);
  101. if (err != ESP_OK) {
  102. return err;
  103. }
  104. // 提交
  105. err = nvs_commit(handle);
  106. if (err != ESP_OK) {
  107. return err;
  108. }
  109. // 记得关闭
  110. nvs_close(handle);
  111. return ESP_OK;
  112. }
  113. uint8_t *nvs_get_uint8(const char *key) {
  114. nvs_handle handle;
  115. esp_err_t err;
  116. uint8_t *code;
  117. err = nvs_open(AC_CODE_NAMESPACE, NVS_READWRITE, &handle);
  118. if (err != ESP_OK) {
  119. ESP_LOGI(TAG, "nvs open fail");
  120. return NULL;
  121. }
  122. code = (uint8_t *) malloc(sizeof(uint8_t));
  123. // 检查存在
  124. err = nvs_get_u8(handle, key, code);
  125. if (err != ESP_OK) {
  126. ESP_LOGI(TAG, "get u8 error,err = %d,key = %s", err, key);
  127. free(code);
  128. return NULL;
  129. }
  130. nvs_close(handle);
  131. return code;
  132. }
  133. uint16_t *nvs_get_uint16(const char *key) {
  134. nvs_handle handle;
  135. esp_err_t err;
  136. uint16_t *code;
  137. err = nvs_open(AC_CODE_NAMESPACE, NVS_READWRITE, &handle);
  138. if (err != ESP_OK) {
  139. ESP_LOGI(TAG, "nvs open fail");
  140. return NULL;
  141. }
  142. code = (uint16_t *) malloc(sizeof(uint16_t));
  143. // 检查存在
  144. err = nvs_get_u16(handle, key, code);
  145. if (err != ESP_OK) {
  146. ESP_LOGI(TAG, "get u8 error,err = %d,key = %s", err, key);
  147. free(code);
  148. return NULL;
  149. }
  150. printf("get code = %u from nvs", *code);
  151. nvs_close(handle);
  152. return code;
  153. }
  154. void get_device_serial(char *serial_buf) {
  155. u_int8_t mapAddr[6];
  156. esp_read_mac(mapAddr, ESP_MAC_WIFI_STA);
  157. sprintf(serial_buf, "%02X%02X%02X%02X%02X%02X", mapAddr[0], mapAddr[1], mapAddr[2], mapAddr[3], mapAddr[4],
  158. mapAddr[5]);
  159. }
  160. char *yx_data_get(char *key) {
  161. nvs_handle_t nvsHandle;
  162. ESP_ERROR_CHECK(nvs_open(YX_NVS_NAME_SPACE, NVS_READWRITE, &nvsHandle));
  163. size_t required_size;
  164. nvs_get_str(nvsHandle, key, NULL, &required_size);
  165. if (required_size == 0)
  166. return NULL;
  167. char *result = malloc(required_size);
  168. nvs_get_str(nvsHandle, key, result, &required_size);
  169. nvs_close(nvsHandle);
  170. return result;
  171. }
  172. /**
  173. * 获取本地保存的按键原始码
  174. * @param key 按键Id
  175. * @param out_value 原始码数组
  176. * @return
  177. */
  178. esp_err_t nvs_get_study_code(const char *key, uint16_t *out_value, size_t *out_len) {
  179. esp_err_t err;
  180. nvs_handle handle;
  181. err = nvs_open(YX_NVS_NAME_SPACE, NVS_READWRITE, &handle);
  182. if (err != ESP_OK) {
  183. printf("nvs open fail\n");
  184. return err;
  185. }
  186. err = nvs_get_blob(handle, key, out_value, out_len);
  187. if (err != ESP_OK) {
  188. return err;
  189. }
  190. nvs_close(handle);
  191. return err;
  192. }
  193. /**
  194. * 保存红外学习的按键原始数据
  195. * @param code 原始码
  196. * @param key 按键Id
  197. * @param len 原始码长度
  198. * @return
  199. */
  200. esp_err_t nvs_save_study_code(uint16_t *code, size_t len, const char *key) {
  201. esp_err_t err;
  202. nvs_handle handle;
  203. err = nvs_open(YX_NVS_NAME_SPACE, NVS_READWRITE, &handle);
  204. if (err != ESP_OK) {
  205. printf("nvs open fail, %s", esp_err_to_name(err));
  206. return err;
  207. }
  208. printf("code len :%d\n", len);
  209. err = nvs_set_blob(handle, key, code, len);
  210. if (err != ESP_OK) {
  211. printf("nvs set fail, %s", esp_err_to_name(err));
  212. return err;
  213. }
  214. // 提交
  215. err = nvs_commit(handle);
  216. if (err != ESP_OK) {
  217. return err;
  218. }
  219. // 记得关闭
  220. nvs_close(handle);
  221. return ESP_OK;
  222. }
  223. void yx_data_set(char *key, char *value) {
  224. nvs_handle_t nvsHandle;
  225. ESP_ERROR_CHECK(nvs_open(YX_NVS_NAME_SPACE, NVS_READWRITE, &nvsHandle));
  226. ESP_ERROR_CHECK(nvs_set_str(nvsHandle, key, value));
  227. ESP_ERROR_CHECK(nvs_commit(nvsHandle));
  228. nvs_close(nvsHandle);
  229. }
  230. void yx_data_clear(char * key) {
  231. nvs_handle_t nvsHandle;
  232. ESP_ERROR_CHECK(nvs_open(YX_NVS_NAME_SPACE, NVS_READWRITE, &nvsHandle));
  233. nvs_erase_key(nvsHandle, key);
  234. nvs_commit(nvsHandle);
  235. nvs_close(nvsHandle);
  236. }
  237. // 获取网关系统信息
  238. void get_sys_info(gateway_sys_info *info) {
  239. if (info == NULL)
  240. return;
  241. size_t total = 0, used = 0;
  242. esp_err_t ret = esp_spiffs_info(NULL, &total, &used);
  243. if (ret == ESP_OK) {
  244. info->used = used;
  245. info->total = total;
  246. }
  247. u_int8_t mapAddr[6];
  248. esp_read_mac(mapAddr, ESP_MAC_WIFI_STA);
  249. char str_device_serial[21];
  250. sprintf(str_device_serial, "%02X:%02X:%02X:%02X:%02X:%02X", mapAddr[0], mapAddr[1], mapAddr[2], mapAddr[3],
  251. mapAddr[4], mapAddr[5]);
  252. strcpy(info->mac, str_device_serial);
  253. esp_chip_info_t chip_info = {0};
  254. esp_chip_info(&chip_info);
  255. info->cores = chip_info.cores;
  256. info->revision = chip_info.revision;
  257. const esp_app_desc_t *desc = esp_app_get_description();
  258. strcpy(info->idf_version, desc->idf_ver);
  259. strcpy(info->version, desc->version);
  260. }