#include <soc_osal.h>
#include <osal_list.h>
#include <securec.h>
+#include <stdlib.h>
#include "cmsis_os2.h"
#include "systick.h"
#include "soc_errno.h"
osal_list_add_tail((struct osal_list_head *)node, &g_auto_ota_found_dev_list_head);
}
+//直接写入需要升级的设备进列表
+void AT_auto_ota_add_node_to_found_dev_list(uint8_t *char_addr)
+{
+ if(strlen((char *)char_addr)<12)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "char_addr erro"); /* addr下标 0 1 2 3 */
+ return;
+ }
+ bd_addr_t bd_addr={};
+ int y=0;
+ for(int i=0;i<6;i+=1)
+ {
+
+ char buf[3]={0};
+ memcpy_s(buf,2,char_addr+y,2);
+ y+=2;
+ bd_addr.addr[i]= (uint8_t)strtol(buf,NULL,16);
+ }
+
+ int cod = gap_get_device_class(&bd_addr);
+ uint8_t *name=(uint8_t *)"test watch";
+
+
+
+ auto_ota_found_dev_list_node *node =
+ (auto_ota_found_dev_list_node *)(void *)oal_mem_alloc(sizeof(auto_ota_found_dev_list_node));
+ if (node == NULL) {
+ return;
+ }
+ (void)memset_s(node, sizeof(auto_ota_found_dev_list_node), 0, sizeof(auto_ota_found_dev_list_node));
+
+ if (memcpy_s(&node->bd_addr, sizeof(node->bd_addr), &bd_addr, sizeof(bd_addr_t)) != EOK) {
+ oal_mem_free(node);
+ return;
+ }
+
+ if (memcpy_s(node->name, sizeof(node->name), name, BD_NAME_LEN) != EOK) {
+ oal_mem_free(node);
+ return;
+ }
+
+ node->cod = cod;
+ node->rssi = 0xffff;
+ osal_list_add_tail((struct osal_list_head *)node, &g_auto_ota_found_dev_list_head);
+}
+
+
+
static void auto_ota_sort_found_dev_list(void)
{
struct osal_list_head *list_head = &g_auto_ota_found_dev_list_head;
WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "auto_ota_discovery_result_callback end\n");
return;
}
+//方便直接生成版本文件
+void write_ver_txt(uint8_t V_1,uint8_t V_2,uint8_t V_3)
+{
+ FILE *fp = NULL;
+
+ fp = fopen(AUTO_OTA_DST_UPG_VER_PATH, "wb+");
+ if (fp == NULL) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "open %s fail.\r\n", AUTO_OTA_DST_UPG_VER_PATH);
+ return ;
+ }
+ char buf[32]={0};
+
+ sprintf(buf,"%d.%d.%d",V_1,V_2,V_3);
+
+ fwrite(buf,1,strlen(buf)+1,fp);
+
+ fclose(fp);
+
+
+}
static bool auto_ota_upg_check(void)
{
#endif
return ERRCODE_SUCC;
}
+
+static uint32_t Add_addrss_atuoota(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+ UNUSED(strCommonCmd);
+ uint8_t argv[CUSTOM_UTILS_MAX_ARGC][CUSTOM_UTILS_MAX_ARGV_LEN] = { 0 };
+ uint32_t argc = 0;
+ uint8_t send_data[8] = {0};
+
+
+ int ret = ConvertCmdToParam(para, paraLen, argv, &argc);
+ if (ret != CUSTOM_UTILS_SUCCESS) {
+ wstp_print("CUSTOM_UTILSTEST ATCMD Convert Command Failed\n");
+ return ERRCODE_FAIL;
+ }
+ #ifdef SUPPORT_AUTO_OTA
+ AT_auto_ota_add_node_to_found_dev_list((uint8_t*)argv[0]);
+ #endif
+ return ERRCODE_SUCC;
+
+}
+
+static uint32_t Add_VER_txt_atuoota(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+ UNUSED(strCommonCmd);
+ uint8_t argv[CUSTOM_UTILS_MAX_ARGC][CUSTOM_UTILS_MAX_ARGV_LEN] = { 0 };
+ uint32_t argc = 0;
+ uint8_t send_data[8] = {0};
+
+
+ int ret = ConvertCmdToParam(para, paraLen, argv, &argc);
+ if (ret != CUSTOM_UTILS_SUCCESS) {
+ wstp_print("CUSTOM_UTILSTEST ATCMD Convert Command Failed\n");
+ return ERRCODE_FAIL;
+ }
+ #ifdef SUPPORT_AUTO_OTA
+ write_ver_txt(
+ (uint8_t)atoi((char*)argv[0]),
+ (uint8_t)atoi((char*)argv[1]),
+ (uint8_t)atoi((char*)argv[2]));
+ #endif
+ return ERRCODE_SUCC;
+
+}
+
+
+
+
+
static const at_cmd_table_t g_custom_utils_cmd[] = {
{ (char *)"AT^CUSTOM_SN", custom_utils_setsn, (char *)"123456789ABCDEF2345678" },
{ (char *)"AT^CUSTOM_SN_REQ", custom_utils_getsn, (char *)" " },
{ (char *)"AT^LEANTEST", leantest, (char *)" " },
{ (char *)"AT^ENABLEDRAG", enabledrag, (char *)" " },
{ (char *)"AT^SETDRAGLIMIT", setdraglimit, (char *)" " },
+ { (char *)"AT^ADDADRESSAUTOOTA", Add_addrss_atuoota, (char *)" " },
+ { (char *)"AT^ADDVRETXT", Add_VER_txt_atuoota, (char *)" " },
};