miscellaneous_interface.c 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  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_uint32(uint32_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_u32(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. esp_err_t nvs_set_int8(int8_t code, const char *key) {
  72. esp_err_t err;
  73. nvs_handle handle;
  74. err = nvs_open(AC_CODE_NAMESPACE, NVS_READWRITE, &handle);
  75. if (err != ESP_OK) {
  76. printf("nvs open fail\n");
  77. return err;
  78. }
  79. err = nvs_set_i8(handle, key, code);
  80. if (err != ESP_OK) {
  81. return err;
  82. }
  83. // 提交
  84. err = nvs_commit(handle);
  85. if (err != ESP_OK) {
  86. return err;
  87. }
  88. // 记得关闭
  89. nvs_close(handle);
  90. return ESP_OK;
  91. }
  92. int8_t *nvs_get_int8(const char *key) {
  93. nvs_handle handle;
  94. esp_err_t err;
  95. int8_t *code;
  96. err = nvs_open(AC_CODE_NAMESPACE, NVS_READWRITE, &handle);
  97. if (err != ESP_OK) {
  98. ESP_LOGI(TAG, "nvs open fail");
  99. return NULL;
  100. }
  101. code = (int8_t *) malloc(sizeof(int8_t));
  102. // 检查存在
  103. err = nvs_get_i8(handle, key, code);
  104. if (err != ESP_OK) {
  105. ESP_LOGI(TAG, "get i8 error,err = %d,key = %s", err, key);
  106. free(code);
  107. return NULL;
  108. }
  109. printf("get code = %u from nvs", *code);
  110. nvs_close(handle);
  111. return code;
  112. }
  113. esp_err_t nvs_set_uint8(uint8_t code, const char *key) {
  114. esp_err_t err;
  115. nvs_handle handle;
  116. err = nvs_open(AC_CODE_NAMESPACE, NVS_READWRITE, &handle);
  117. if (err != ESP_OK) {
  118. printf("nvs open fail\n");
  119. return err;
  120. }
  121. err = nvs_set_u8(handle, key, code);
  122. if (err != ESP_OK) {
  123. return err;
  124. }
  125. // 提交
  126. err = nvs_commit(handle);
  127. if (err != ESP_OK) {
  128. return err;
  129. }
  130. // 记得关闭
  131. nvs_close(handle);
  132. return ESP_OK;
  133. }
  134. uint8_t *nvs_get_uint8(const char *key) {
  135. nvs_handle handle;
  136. esp_err_t err;
  137. uint8_t *code;
  138. err = nvs_open(AC_CODE_NAMESPACE, NVS_READWRITE, &handle);
  139. if (err != ESP_OK) {
  140. ESP_LOGI(TAG, "nvs open fail");
  141. return NULL;
  142. }
  143. code = (uint8_t *) malloc(sizeof(uint8_t));
  144. // 检查存在
  145. err = nvs_get_u8(handle, key, code);
  146. if (err != ESP_OK) {
  147. ESP_LOGI(TAG, "get u8 error,err = %d,key = %s", err, key);
  148. free(code);
  149. return NULL;
  150. }
  151. nvs_close(handle);
  152. return code;
  153. }
  154. uint16_t *nvs_get_uint16(const char *key) {
  155. nvs_handle handle;
  156. esp_err_t err;
  157. uint16_t *code;
  158. err = nvs_open(AC_CODE_NAMESPACE, NVS_READWRITE, &handle);
  159. if (err != ESP_OK) {
  160. ESP_LOGI(TAG, "nvs open fail");
  161. return NULL;
  162. }
  163. code = (uint16_t *) malloc(sizeof(uint16_t));
  164. // 检查存在
  165. err = nvs_get_u16(handle, key, code);
  166. if (err != ESP_OK) {
  167. ESP_LOGI(TAG, "get u8 error,err = %d,key = %s", err, key);
  168. free(code);
  169. return NULL;
  170. }
  171. printf("get code = %u from nvs", *code);
  172. nvs_close(handle);
  173. return code;
  174. }
  175. uint32_t *nvs_get_uint32(const char *key) {
  176. nvs_handle handle;
  177. esp_err_t err;
  178. uint32_t *code;
  179. err = nvs_open(AC_CODE_NAMESPACE, NVS_READWRITE, &handle);
  180. if (err != ESP_OK) {
  181. ESP_LOGI(TAG, "nvs open fail");
  182. return NULL;
  183. }
  184. code = (uint32_t *) malloc(sizeof(uint32_t));
  185. // 检查存在
  186. err = nvs_get_u32(handle, key, code);
  187. if (err != ESP_OK) {
  188. ESP_LOGI(TAG, "get u8 error,err = %d,key = %s", err, key);
  189. free(code);
  190. return NULL;
  191. }
  192. printf("get code = %lu from nvs", *code);
  193. nvs_close(handle);
  194. return code;
  195. }
  196. void get_device_serial(char *serial_buf) {
  197. u_int8_t mapAddr[6];
  198. esp_read_mac(mapAddr, ESP_MAC_WIFI_STA);
  199. sprintf(serial_buf, "%02X%02X%02X%02X%02X%02X", mapAddr[0], mapAddr[1], mapAddr[2], mapAddr[3], mapAddr[4],
  200. mapAddr[5]);
  201. }
  202. char *yx_data_get(char *key) {
  203. nvs_handle_t nvsHandle;
  204. ESP_ERROR_CHECK(nvs_open(YX_NVS_NAME_SPACE, NVS_READWRITE, &nvsHandle));
  205. size_t required_size;
  206. nvs_get_str(nvsHandle, key, NULL, &required_size);
  207. if (required_size == 0)
  208. return NULL;
  209. char *result = malloc(required_size);
  210. nvs_get_str(nvsHandle, key, result, &required_size);
  211. nvs_close(nvsHandle);
  212. return result;
  213. }
  214. /**
  215. * 获取本地保存的按键原始码
  216. * @param key 按键Id
  217. * @param out_value 原始码数组
  218. * @return
  219. */
  220. esp_err_t nvs_get_study_code(const char *key, uint16_t *out_value, size_t *out_len) {
  221. esp_err_t err;
  222. nvs_handle handle;
  223. err = nvs_open(YX_NVS_NAME_SPACE, NVS_READWRITE, &handle);
  224. if (err != ESP_OK) {
  225. printf("nvs open fail\n");
  226. return err;
  227. }
  228. err = nvs_get_blob(handle, key, out_value, out_len);
  229. if (err != ESP_OK) {
  230. return err;
  231. }
  232. nvs_close(handle);
  233. return err;
  234. }
  235. /**
  236. * 保存红外学习的按键原始数据
  237. * @param code 原始码
  238. * @param key 按键Id
  239. * @param len 原始码长度
  240. * @return
  241. */
  242. esp_err_t nvs_save_study_code(uint16_t *code, size_t len, const char *key) {
  243. esp_err_t err;
  244. nvs_handle handle;
  245. err = nvs_open(YX_NVS_NAME_SPACE, NVS_READWRITE, &handle);
  246. if (err != ESP_OK) {
  247. printf("nvs open fail, %s", esp_err_to_name(err));
  248. return err;
  249. }
  250. printf("code len :%d\n", len);
  251. err = nvs_set_blob(handle, key, code, len);
  252. if (err != ESP_OK) {
  253. printf("nvs set fail, %s", esp_err_to_name(err));
  254. return err;
  255. }
  256. // 提交
  257. err = nvs_commit(handle);
  258. if (err != ESP_OK) {
  259. return err;
  260. }
  261. // 记得关闭
  262. nvs_close(handle);
  263. return ESP_OK;
  264. }
  265. void yx_data_set(char *key, char *value) {
  266. nvs_handle_t nvsHandle;
  267. ESP_ERROR_CHECK(nvs_open(YX_NVS_NAME_SPACE, NVS_READWRITE, &nvsHandle));
  268. ESP_ERROR_CHECK(nvs_set_str(nvsHandle, key, value));
  269. ESP_ERROR_CHECK(nvs_commit(nvsHandle));
  270. nvs_close(nvsHandle);
  271. }
  272. void yx_data_clear(char * key) {
  273. nvs_handle_t nvsHandle;
  274. ESP_ERROR_CHECK(nvs_open(YX_NVS_NAME_SPACE, NVS_READWRITE, &nvsHandle));
  275. nvs_erase_key(nvsHandle, key);
  276. nvs_commit(nvsHandle);
  277. nvs_close(nvsHandle);
  278. }
  279. // 获取网关系统信息
  280. void get_sys_info(gateway_sys_info *info) {
  281. if (info == NULL)
  282. return;
  283. size_t total = 0, used = 0;
  284. esp_err_t ret = esp_spiffs_info(NULL, &total, &used);
  285. if (ret == ESP_OK) {
  286. info->used = used;
  287. info->total = total;
  288. }
  289. u_int8_t mapAddr[6];
  290. esp_read_mac(mapAddr, ESP_MAC_WIFI_STA);
  291. char str_device_serial[21];
  292. sprintf(str_device_serial, "%02X:%02X:%02X:%02X:%02X:%02X", mapAddr[0], mapAddr[1], mapAddr[2], mapAddr[3],
  293. mapAddr[4], mapAddr[5]);
  294. strcpy(info->mac, str_device_serial);
  295. esp_chip_info_t chip_info = {0};
  296. esp_chip_info(&chip_info);
  297. info->cores = chip_info.cores;
  298. info->revision = chip_info.revision;
  299. const esp_app_desc_t *desc = esp_app_get_description();
  300. strcpy(info->idf_version, desc->idf_ver);
  301. strcpy(info->version, desc->version);
  302. }