uint8_t wake=wakeup;
if (en_pin == PIN_NONE)
{
- printf("cat1_api_wakeup_cat1 en_pin is none\r\n");
+ // printf("cat1_api_wakeup_cat1 en_pin is none\r\n");
return ;
}
static app_task_definition_t ln_send_taskcfg = {0};
static app_task_definition_t ln_recv_taskcfg = {0};
-#define LN_HTTP_BOARD_TASK_SIZE 0x3000
+#define LN_HTTP_BOARD_TASK_SIZE 0x2500
static unsigned long g_ln_send_queue = 0xFFFFFFFF;
static unsigned long g_ln_recv_queue = 0xFFFFFFFF;
/* 记录最近一次 OTA 查询的升级类型与保存路径 */
int g_ln_last_update_type = -1; // -1:未知 0:可选 1:强制
-char g_ln_last_saved_path[256] = {0}; // 最近一次保存的 OTA 包路径
-char g_ln_last_package_url[512] = {0}; // 最近一次查询到的 OTA 包 URL
-char g_ln_last_target_version[64] = {0}; // 最近一次查询到的 OTA 包目标版本
-char g_ln_last_package_md5[65] = {0}; // 最近一次查询到的 OTA 包 MD5
+char *g_ln_last_saved_path = NULL; // 最近一次保存的 OTA 包路径(动态分配)
+char *g_ln_last_package_url = NULL; // 最近一次查询到的 OTA 包 URL(动态分配)
+char *g_ln_last_target_version = NULL; // 最近一次查询到的 OTA 包目标版本(动态分配)
+char *g_ln_last_package_md5 = NULL; // 最近一次查询到的 OTA 包 MD5(动态分配)
int g_ln_last_package_size = 0; // 最近一次查询到的 OTA 包大小(字节)
static int g_ln_audio_download_cancel = 0; /* 0=正常, 1=取消 */
int g_ln_is_device_bound = 0; /* 设备绑定状态 */
/* 提供给外部查询最近一次保存的 OTA 包路径 */
const char *uapi_ln_ota_get_saved_path(void)
{
- return (g_ln_last_saved_path[0] != '\0') ? g_ln_last_saved_path : NULL;
+ return (g_ln_last_saved_path && g_ln_last_saved_path[0] != '\0') ? g_ln_last_saved_path : NULL;
}
/* 获取语音对话流录音音频路径 */
(packageUrl && cJSON_IsString(packageUrl)) ? packageUrl->valuestring : "<null>",
(packageMd5 && cJSON_IsString(packageMd5)) ? packageMd5->valuestring : "<null>");
/* 记录必要字段供后续 AT^LN_OTA_DOWNLOAD 使用 */
- memset(g_ln_last_target_version, 0, sizeof(g_ln_last_target_version)); // 目标版本
- memset(g_ln_last_package_url, 0, sizeof(g_ln_last_package_url)); // 升级包URL
- memset(g_ln_last_package_md5, 0, sizeof(g_ln_last_package_md5)); // 升级包MD5
+ if (g_ln_last_target_version) { free(g_ln_last_target_version); g_ln_last_target_version = NULL; }
+ if (g_ln_last_package_url) { free(g_ln_last_package_url); g_ln_last_package_url = NULL; }
+ if (g_ln_last_package_md5) { free(g_ln_last_package_md5); g_ln_last_package_md5 = NULL; }
g_ln_last_package_size = 0;
if (targetVersion && cJSON_IsString(targetVersion)) {
- strncpy(g_ln_last_target_version, targetVersion->valuestring, sizeof(g_ln_last_target_version) - 1);
+ size_t len = strlen(targetVersion->valuestring);
+ g_ln_last_target_version = (char *)malloc(len + 1);
+ if (g_ln_last_target_version) memcpy(g_ln_last_target_version, targetVersion->valuestring, len + 1);
}
if (packageUrl && cJSON_IsString(packageUrl)) {
- strncpy(g_ln_last_package_url, packageUrl->valuestring, sizeof(g_ln_last_package_url) - 1);
+ size_t len = strlen(packageUrl->valuestring);
+ g_ln_last_package_url = (char *)malloc(len + 1);
+ if (g_ln_last_package_url) memcpy(g_ln_last_package_url, packageUrl->valuestring, len + 1);
}
if (packageMd5 && cJSON_IsString(packageMd5)) {
- strncpy(g_ln_last_package_md5, packageMd5->valuestring, sizeof(g_ln_last_package_md5) - 1);
+ size_t len = strlen(packageMd5->valuestring);
+ g_ln_last_package_md5 = (char *)malloc(len + 1);
+ if (g_ln_last_package_md5) memcpy(g_ln_last_package_md5, packageMd5->valuestring, len + 1);
}
if (packageSize && cJSON_IsNumber(packageSize)) {
g_ln_last_package_size = (int)packageSize->valuedouble;
+ if (g_ln_last_package_size < 0) g_ln_last_package_size = 0;
}
if (ut == 1)
printf("free(mail.data)\n");
free(mail.data);
}
+
}
}
ln_recv_taskcfg.create_queue_handle = create_ln_http_recv_queue;
ln_recv_taskcfg.attr.name = "ln_http_server_recv_task";
ln_recv_taskcfg.attr.priority = osPriorityNormal;
- ln_recv_taskcfg.attr.stack_size = LN_HTTP_BOARD_TASK_SIZE;
+ ln_recv_taskcfg.attr.stack_size = 0x1000;
ln_recv_taskcfg.func = ln_http_server_recv_task;
ln_recv_taskcfg.use_mem = USE_EXTEND_MEM;
/* ============================== 共享全局状态(跨文件) ============================== */
extern char *g_device_token;
extern int g_ln_last_update_type;
-extern char g_ln_last_saved_path[256];
-extern char g_ln_last_package_url[512];
-extern char g_ln_last_target_version[64];
-extern char g_ln_last_package_md5[65];
+extern char *g_ln_last_saved_path; /* 最近一次保存的 OTA 包路径(动态分配)*/
+extern char *g_ln_last_package_url; /* 最近一次查询到的 OTA 包 URL(动态分配)*/
+extern char *g_ln_last_target_version; /* 最近一次查询到的 OTA 包目标版本(动态分配)*/
+extern char *g_ln_last_package_md5; /* 最近一次查询到的 OTA 包 MD5(动态分配)*/
extern int g_ln_last_package_size;
/* 全局角色配置结构体实例 */
extern LnCharacterConfig g_ln_character_config;
cat1_api_add_cat1_vote();
cat1_api_wakeup_cat1(1);
cat1_api_keep_wakeup(1);
- cat1_api_disable_cat1_cmd(1);
+ cat1_api_disable_cat1_cmd(0);
LOS_Msleep(200);
#endif
client.isHttp = false;
client.remotePort = 443;
- char *header_buf = (char*)malloc(512);
- if (!header_buf) return ERRCODE_FAIL;
+ char *header_buf = (char *)malloc(512);
+ if (!header_buf)
+ return ERRCODE_FAIL;
int hdr = snprintf(header_buf, 512,
"deviceId: %s\r\n"
"deviceToken: %s\r\n"
cat1_api_add_cat1_vote();
cat1_api_wakeup_cat1(1);
cat1_api_keep_wakeup(1);
- cat1_api_disable_cat1_cmd(1);
+ cat1_api_disable_cat1_cmd(0);
LOS_Msleep(200);
#endif
client.isHttp = false;
client.remotePort = 443;
- char *header_buf2 = (char*)malloc(512);
- if (!header_buf2) return ERRCODE_FAIL;
+ char *header_buf2 = (char *)malloc(512);
+ if (!header_buf2)
+ return ERRCODE_FAIL;
int hdr = snprintf(header_buf2, 512,
"deviceId: %s\r\n"
"deviceToken: %s\r\n"
cat1_api_add_cat1_vote();
cat1_api_wakeup_cat1(1);
cat1_api_keep_wakeup(1);
- cat1_api_disable_cat1_cmd(1);
+ cat1_api_disable_cat1_cmd(0);
LOS_Msleep(200);
#endif
client.isHttp = false;
client.remotePort = 443;
- char *header_buf3 = (char*)malloc(512);
- if (!header_buf3) {
+ char *header_buf3 = (char *)malloc(512);
+ if (!header_buf3)
+ {
return ERRCODE_FAIL;
}
int hdr = snprintf(header_buf3, 512,
{
if (!client || !device_id || !device_token)
return -1;
- char *header_buf = (char*)malloc(512);
- if (!header_buf) return -1;
+ char *header_buf = (char *)malloc(512);
+ if (!header_buf)
+ return -1;
int hdr = snprintf(header_buf, 512,
"deviceId: %s\r\n"
"deviceToken: %s\r\n"
cat1_api_add_cat1_vote();
cat1_api_wakeup_cat1(1);
cat1_api_keep_wakeup(1);
- cat1_api_disable_cat1_cmd(1);
+ cat1_api_disable_cat1_cmd(0);
LOS_Msleep(200);
#endif
cat1_api_add_cat1_vote();
cat1_api_wakeup_cat1(1);
cat1_api_keep_wakeup(1);
- cat1_api_disable_cat1_cmd(1);
+ cat1_api_disable_cat1_cmd(0);
LOS_Msleep(200);
#endif
cat1_api_add_cat1_vote();
cat1_api_wakeup_cat1(1);
cat1_api_keep_wakeup(1);
- cat1_api_disable_cat1_cmd(1);
+ cat1_api_disable_cat1_cmd(0);
LOS_Msleep(200);
#endif
end:
HttpClientUnprepare(&clientData);
HttpClientClse(&client);
- if (header_buf) free(header_buf);
- if (url_with_params) free(url_with_params);
+ if (header_buf)
+ free(header_buf);
+ if (url_with_params)
+ free(url_with_params);
return ERRCODE_SUCC;
}
cat1_api_add_cat1_vote();
cat1_api_wakeup_cat1(1);
cat1_api_keep_wakeup(1);
- cat1_api_disable_cat1_cmd(1);
+ cat1_api_disable_cat1_cmd(0);
LOS_Msleep(500); // 等待模块就绪
#endif
total_written += written;
// 进度上报(使用已知的total_size计算)
int percent = (int)((total_written * 100) / total_size);
- if (percent > 100) percent = 100; // 防止超过100%
+ if (percent > 100)
+ percent = 100; // 防止超过100%
if (percent != last_percent)
{
last_percent = percent;
fclose(fd);
HttpClientClse(&client);
HttpClientUnprepare(&client_data);
- if (prog) free(prog);
+ if (prog)
+ free(prog);
printf("[OTA] download process finished\n");
return ret;
(void)device_id;
(void)device_token;
(void)source_version;
- if (g_ln_last_target_version[0] == '\0' || g_ln_last_package_url[0] == '\0')
+ if (!g_ln_last_target_version || !g_ln_last_package_url || g_ln_last_target_version[0] == '\0' || g_ln_last_package_url[0] == '\0')
{
printf("[OTA] no cached task to download, please GET_TASK first\n");
return ERRCODE_FAIL;
return ERRCODE_FAIL;
}
snprintf(save_path, sp_cap, LN_OTA_SAVE_DIR "/%s.fwpkg", g_ln_last_target_version);
- memset(g_ln_last_saved_path, 0, sizeof(g_ln_last_saved_path));
- strncpy(g_ln_last_saved_path, save_path, sizeof(g_ln_last_saved_path) - 1);
+ if (g_ln_last_saved_path)
+ {
+ free(g_ln_last_saved_path);
+ g_ln_last_saved_path = NULL;
+ }
+ g_ln_last_saved_path = (char *)malloc(strlen(save_path) + 1);
+ if (g_ln_last_saved_path)
+ strcpy(g_ln_last_saved_path, save_path);
printf("[OTA] download only: version=%s, url=%s -> %s\n", g_ln_last_target_version, g_ln_last_package_url, save_path);
int dres;
return ERRCODE_FAIL;
}
- size_t done_cap = 64 + strlen(save_path) + strlen(g_ln_last_package_md5);
+ size_t done_cap = 64 + strlen(save_path) + (g_ln_last_package_md5 ? strlen(g_ln_last_package_md5) : 0);
char *done = (char *)malloc(done_cap);
if (done)
{
- int m = snprintf(done, done_cap, "{\"status\":%d,\"filePath\":\"%s\",\"md5\":\"%s\"}", OTA_DOWNLOAD_STATUS_COMPLETED, save_path, g_ln_last_package_md5);
+ int m = snprintf(done, done_cap, "{\"status\":%d,\"filePath\":\"%s\",\"md5\":\"%s\"}", OTA_DOWNLOAD_STATUS_COMPLETED, save_path, g_ln_last_package_md5 ? g_ln_last_package_md5 : "");
if (m > 0)
do_ln_http_server_recv_data(LN_HTTP_RECV_OTA_DOWNLOAD_MSG, done, (uint32_t)m);
free(done);
{
if (!boundary || !filename || !file_data || file_len <= 0 || !out_body || !out_len)
return -1;
- char *head = (char*)malloc(512);
- if (!head) return -1;
+ char *head = (char *)malloc(512);
+ if (!head)
+ return -1;
int head_len = snprintf(head, 512,
"--%s\r\n"
"Content-Disposition: form-data; name=\"file\"; filename=\"%s\"\r\n"
"Content-Type: audio/mpeg\r\n\r\n",
boundary, filename);
- char *tail = (char*)malloc(128);
- if (!tail) { free(head); return -1; }
+ char *tail = (char *)malloc(128);
+ if (!tail)
+ {
+ free(head);
+ return -1;
+ }
int tail_len = snprintf(tail, 128, "\r\n--%s--\r\n", boundary);
int total = head_len + file_len + tail_len;
char *body = (char *)malloc((size_t)total);
uint8_t *audio_buf = ln_read_file_all_speech_chat(audio_path, &audio_len);
if (!audio_buf)
{
- printf("chatstream: read audio failed\n");
+ printf("chatstream: read audio failed,读取音频报错\n");
return ERRCODE_FAIL;
}
printf("chatstream: audio length = %d\n", audio_len);
cat1_api_add_cat1_vote();
cat1_api_wakeup_cat1(1);
cat1_api_keep_wakeup(1);
- cat1_api_disable_cat1_cmd(1);
+ cat1_api_disable_cat1_cmd(0);
LOS_Msleep(500);
#endif
HttpClientData clientData = (HttpClientData){0};
/* 自定义头:仅保留自定义业务头,Content-Type 交由 postContentType 指定 */
- char *header_buf = (char*)malloc(512);
- if (!header_buf) { free(body); return ERRCODE_FAIL; }
+ char *header_buf = (char *)malloc(512);
+ if (!header_buf)
+ {
+ free(body);
+ return ERRCODE_FAIL;
+ }
int hdr = snprintf(header_buf, 512,
"deviceId: %s\r\n"
"deviceToken: %s\r\n"
{
if (!boundary || !filename || !file_data || file_len <= 0 || !out_body || !out_len)
return -1;
- char *head = (char*)malloc(512);
- if (!head) return -1;
+ char *head = (char *)malloc(512);
+ if (!head)
+ return -1;
int head_len = snprintf(head, 512,
"--%s\r\n"
"Content-Disposition: form-data; name=\"file\"; filename=\"%s\"\r\n"
"Content-Type: audio/mpeg\r\n\r\n",
boundary, filename);
- char *tail = (char*)malloc(128);
- if (!tail) { free(head); return -1; }
+ char *tail = (char *)malloc(128);
+ if (!tail)
+ {
+ free(head);
+ return -1;
+ }
int tail_len = snprintf(tail, 128, "\r\n--%s--\r\n", boundary);
int total = head_len + file_len + tail_len;
char *body = (char *)malloc((size_t)total);
cat1_api_add_cat1_vote();
cat1_api_wakeup_cat1(1);
cat1_api_keep_wakeup(1);
- cat1_api_disable_cat1_cmd(1);
+ cat1_api_disable_cat1_cmd(0);
LOS_Msleep(500);
#endif
HttpClientData clientData = {0};
/* 设置请求头:精简头部,避免重复(Host/Connection 交由库设置) */
- char *header_buf = (char*)malloc(1024);
- if (!header_buf) { free(body); return ERRCODE_FAIL; }
+ char *header_buf = (char *)malloc(1024);
+ if (!header_buf)
+ {
+ free(body);
+ return ERRCODE_FAIL;
+ }
int hdr = snprintf(header_buf, 1024,
"deviceId: %s\r\n"
"deviceToken: %s\r\n"
{
if (!device_id || !device_token)
return ERRCODE_FAIL;
- #ifdef SUPPORT_CAT1_SERVICE
+#ifdef SUPPORT_CAT1_SERVICE
/* CAT1 保活 */
cat1_api_add_cat1_vote();
cat1_api_wakeup_cat1(1);
cat1_api_keep_wakeup(1);
- cat1_api_disable_cat1_cmd(1);
+ cat1_api_disable_cat1_cmd(0);
LOS_Msleep(200);
- #endif
+#endif
HttpClient client = (HttpClient){0};
HttpClientData clientData = (HttpClientData){0};
client.remotePort = 443;
/* 普通JSON头 */
- char *header_buf = (char*)malloc(512);
- if (!header_buf) return ERRCODE_FAIL;
+ char *header_buf = (char *)malloc(512);
+ if (!header_buf)
+ return ERRCODE_FAIL;
int hdr = snprintf(header_buf, 512,
"deviceId: %s\r\ndeviceToken: %s\r\nContent-Type: application/json\r\n",
device_id, device_token);
end:
HttpClientUnprepare(&clientData);
HttpClientClse(&client);
- if (header_buf) free(header_buf);
+ if (header_buf)
+ free(header_buf);
return ERRCODE_SUCC;
}
{
if (!device_id || !device_token)
return ERRCODE_FAIL;
-
- #ifdef SUPPORT_CAT1_SERVICE
+
+#ifdef SUPPORT_CAT1_SERVICE
/* CAT1 保活 */
cat1_api_add_cat1_vote();
cat1_api_wakeup_cat1(1);
cat1_api_keep_wakeup(1);
- cat1_api_disable_cat1_cmd(1);
+ cat1_api_disable_cat1_cmd(0);
LOS_Msleep(200);
- #endif
+#endif
HttpClient client = (HttpClient){0};
HttpClientData clientData = (HttpClientData){0};
client.isHttp = false;
client.remotePort = 443;
- char *header_buf = (char*)malloc(512);
- if (!header_buf) return ERRCODE_FAIL;
+ char *header_buf = (char *)malloc(512);
+ if (!header_buf)
+ return ERRCODE_FAIL;
int hdr = snprintf(header_buf, 512,
"deviceId: %s\r\ndeviceToken: %s\r\nContent-Type: application/json\r\n",
device_id, device_token);
cat1_api_add_cat1_vote();
cat1_api_wakeup_cat1(1);
cat1_api_keep_wakeup(1);
- cat1_api_disable_cat1_cmd(1);
+ cat1_api_disable_cat1_cmd(0);
LOS_Msleep(500);
#endif
client.remotePort = 443;
/* 设置请求头(包含Content-Type,保持与Python一致) */
- char *header_buf = (char*)malloc(1024);
- if (!header_buf) return ERRCODE_FAIL;
+ char *header_buf = (char *)malloc(1024);
+ if (!header_buf)
+ return ERRCODE_FAIL;
int hdr = snprintf(header_buf, 1024,
"deviceId: %s\r\n"
"deviceToken: %s\r\n"
}
/* 构建 JSON 请求体(增加转义处理,避免格式错误)*/
- char *json_body = (char*)malloc(256);
- char *escaped_theme = (char*)malloc(256);
+ char *json_body = (char *)malloc(256);
+ char *escaped_theme = (char *)malloc(256);
if (!json_body || !escaped_theme)
{
- if (json_body) free(json_body);
- if (escaped_theme) free(escaped_theme);
+ if (json_body)
+ free(json_body);
+ if (escaped_theme)
+ free(escaped_theme);
free(header_buf);
return ERRCODE_FAIL;
}
{
if (!path)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ln_mkdir_p: path is NULL");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ln_mkdir_p: path is NULL");
return;
}
(void)mkdir(path, 0755);
{
if (token == NULL || token[0] == '\0')
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ln_token_save_json: token is NULL");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ln_token_save_json: token is NULL");
return ERRCODE_FAIL;
}
ln_mkdir_p(LN_DATA_PATH);
FILE *fp = fopen(LN_TOKEN_FILE, "wb+");
if (!fp)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ln_token_save_json: fopen failed");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ln_token_save_json: fopen failed");
free(text);
return ERRCODE_FAIL;
}
size_t n = fwrite(text, 1, strlen(text), fp);
if (n != strlen(text))
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ln_token_save_json: fwrite failed");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ln_token_save_json: fwrite failed");
fclose(fp);
free(text);
return ERRCODE_FAIL;
}
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ln_token_save_json: fwrite success");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ln_token_save_json: fwrite success");
/* 打印保存的json */
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ln_token_save_json: save json=%s", text);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ln_token_save_json: save json=%s", text);
fclose(fp);
free(text);
return (n > 0) ? ERRCODE_SUCC : ERRCODE_FAIL;
*/
uint32_t ln_token_is_expired(int *expired_out)
{
- if (expired_out) *expired_out = 1; /* 默认过期 */
+ if (expired_out)
+ *expired_out = 1; /* 默认过期 */
FILE *fp = fopen(LN_TOKEN_FILE, "rb");
- if (!fp) return ERRCODE_FAIL;
+ if (!fp)
+ return ERRCODE_FAIL;
fseek(fp, 0, SEEK_END);
long len = ftell(fp);
fseek(fp, 0, SEEK_SET);
- if (len <= 0 || len > 64 * 1024) { fclose(fp); return ERRCODE_FAIL; }
- char *buf = (char*)malloc((size_t)len + 1);
- if (!buf) { fclose(fp); return ERRCODE_FAIL; }
+ if (len <= 0 || len > 64 * 1024)
+ {
+ fclose(fp);
+ return ERRCODE_FAIL;
+ }
+ char *buf = (char *)malloc((size_t)len + 1);
+ if (!buf)
+ {
+ fclose(fp);
+ return ERRCODE_FAIL;
+ }
size_t n = fread(buf, 1, (size_t)len, fp);
fclose(fp);
buf[n] = '\0';
cJSON *root = cJSON_Parse(buf);
- if (!root) { free(buf); return ERRCODE_FAIL; }
+ if (!root)
+ {
+ free(buf);
+ return ERRCODE_FAIL;
+ }
cJSON *exp = cJSON_GetObjectItem(root, "expire_timestamp");
time_t now_s = time(NULL);
int expired = 1; /* 默认过期 */
- if (exp && cJSON_IsNumber(exp)) {
+ if (exp && cJSON_IsNumber(exp))
+ {
uint64_t saved_ts = (uint64_t)exp->valuedouble; /* 保存时的当前时间戳(秒) */
- const uint64_t TTL_30D = 2592000ULL; /* 30 * 24 * 3600 */
+ const uint64_t TTL_30D = 2592000ULL; /* 30 * 24 * 3600 */
expired = ((uint64_t)now_s - saved_ts > TTL_30D) ? 1 : 0;
}
- if (expired_out) *expired_out = expired;
+ if (expired_out)
+ *expired_out = expired;
cJSON_Delete(root);
free(buf);
return ERRCODE_SUCC;
{
if (device_id == NULL || device_iccid == NULL)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ln_get_device_token_http: invalid parameters");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ln_get_device_token_http: invalid parameters");
return ERRCODE_FAIL;
}
/* 2. 计算签名: deviceId:deviceIccid:timestamp:nonce */
size_t sd_cap = strlen(device_id) + strlen(device_iccid) + strlen(timestamp) + strlen(nonce) + 4 + 1;
- char *sign_data = (char*)malloc(sd_cap);
- if (!sign_data) return ERRCODE_FAIL;
+ char *sign_data = (char *)malloc(sd_cap);
+ if (!sign_data)
+ return ERRCODE_FAIL;
(void)snprintf(sign_data, sd_cap, "%s:%s:%s:%s", device_id, device_iccid, timestamp, nonce);
char signature[65] = {0};
if (ln_hmac_sha256_hex(LN_SIGN_SECRET, sign_data, signature, sizeof(signature)) != 0)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ln_get_device_token_http: hmac calc failed");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ln_get_device_token_http: hmac calc failed");
return ERRCODE_FAIL;
}
/* 3. 组织自定义请求头 */
- char *header_buf = (char*)malloc(1024);
- if (!header_buf) { free(sign_data); return ERRCODE_FAIL; }
+ char *header_buf = (char *)malloc(1024);
+ if (!header_buf)
+ {
+ free(sign_data);
+ return ERRCODE_FAIL;
+ }
int hdr_len = snprintf(header_buf, 1024,
"deviceId: %s\r\n"
"deviceIccid: %s\r\n"
(device_version && device_version[0]) ? device_version : "1.0.0");
if (hdr_len <= 0)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ln_get_device_token_http: header build failed");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ln_get_device_token_http: header build failed");
free(sign_data);
free(header_buf);
return ERRCODE_FAIL;
cat1_api_add_cat1_vote();
cat1_api_wakeup_cat1(1);
cat1_api_keep_wakeup(1);
- cat1_api_disable_cat1_cmd(1);
+ cat1_api_disable_cat1_cmd(0);
LOS_Msleep(500);
#endif
HTTPC_RESULT prep = HttpClientPrepare(&clientData, 2048, 4096);
if (prep != HTTP_SUCCESS)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ln_get_device_token_http: HttpClientPrepare failed %d", prep);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ln_get_device_token_http: HttpClientPrepare failed %d", prep);
free(sign_data);
free(header_buf);
return ERRCODE_FAIL;
HTTPC_RESULT res = HttpClientGetRequest(&client, LN_FULL_URL, &clientData);
if (res != HTTP_SUCCESS)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ln_get_device_token_http: request failed %d", res);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ln_get_device_token_http: request failed %d", res);
HttpClientUnprepare(&clientData);
HttpClientClse(&client);
free(sign_data);
int code = HttpClientGetResponseCode(&client);
if (code != 200)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ln_get_device_token_http: HTTP %d", code);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ln_get_device_token_http: HTTP %d", code);
HttpClientUnprepare(&clientData);
HttpClientClse(&client);
free(sign_data);
/* 6. 解析响应JSON */
if (clientData.responseBuf == NULL || clientData.responseBufLen <= 0)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ln_get_device_token_http: empty body");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ln_get_device_token_http: empty body");
HttpClientUnprepare(&clientData);
HttpClientClse(&client);
free(sign_data);
cJSON *root = cJSON_Parse(json_text);
if (!root)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ln_get_device_token_http: JSON parse failed");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ln_get_device_token_http: JSON parse failed");
free(json_text);
HttpClientUnprepare(&clientData);
HttpClientClse(&client);
{
cJSON *msg = cJSON_GetObjectItem(root, "message");
/* 失败响应,打印errorCode和message 并返回失败 */
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ln_get_device_token_http: failed, err=%s", errorCode && cJSON_IsString(errorCode) ? errorCode->valuestring : "unknown");
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ln_get_device_token_http: failed, message=%s", msg && cJSON_IsString(msg) ? msg->valuestring : "unknown");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ln_get_device_token_http: failed, err=%s", errorCode && cJSON_IsString(errorCode) ? errorCode->valuestring : "unknown");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ln_get_device_token_http: failed, message=%s", msg && cJSON_IsString(msg) ? msg->valuestring : "unknown");
cJSON_Delete(root);
free(json_text);
HttpClientUnprepare(&clientData);
}
else
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ln_get_device_token_http: no data field");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ln_get_device_token_http: no data field");
}
cJSON_Delete(root);