PM_ID_MOTOR,//新增,马达
PM_ID_GSENSOR,//新增,加速计
PM_ID_CAT1,//Cat1 communication
+ PM_ID_CAT1_APP,//Cat1APP communication
PM_ID_P_TEST,//产测
PM_ID_BUTTON_GPIO,//gpio按键
PM_ID_BP,//血压
"PM_ID_SPI_DMA",
"PM_ID_I2C_DMA",
"PM_ID_UART_DMA",
- "PM_ID_HEART",//����������оƬ
- "PM_ID_MOTOR",//����������
- "PM_ID_GSENSOR",//���������ټ�
+ "PM_ID_HEART",//新增,心率芯片
+ "PM_ID_MOTOR",//新增,马达
+ "PM_ID_GSENSOR",//新增,加速计
"PM_ID_CAT1",//Cat1 communication
- "PM_ID_P_TEST",
- "PM_ID_BUTTON_GPIO",//GPIO����
- "PM_ID_4G_AI",//AI投票
+ "PM_ID_CAT1_APP",//Cat1APP communication
+ "PM_ID_P_TEST",//产测
+ "PM_ID_BUTTON_GPIO",//gpio按键
+ "PM_ID_BP",//血压
+ "PM_ID_4G_AI",//4g AI
+ "PM_ID_GPS",//4g AI
#ifdef SUPPORT_ALIPAY_SEC
"PM_ID_ALIPAY",//支付宝
#endif
#define SIO_IRQ_PROCESS_TASK_PRIO 24 // 处理线程优先级
#define SIO_IRQ_PROCESS_STACK_SIZE 4096 // 处理线程栈大小
-/* CAT1 vote 管理配置(与PPP保持一致) */
-#ifdef SUPPORT_CAT1_SERVICE
-#define SIO_CAT1_VOTE_IDLE_MS 3000 // 3秒空闲后移除CAT1 vote
-#endif
+
/* 乒乓缓冲区状态 */
typedef enum {
.rx_buffer_size = SIO_UART_RX_BUFFER_SIZE
};
+static bool g_sio_debug_enabled = false;
+void sio_set_debug_enabled(bool debug_enabled)
+{
+ g_sio_debug_enabled = debug_enabled;
+}
/* SIO UART state */
static bool g_sio_uart_initialized = false;
/* 数据处理回调函数指针 - 用于将数据传递给SLIP */
static void (*g_sio_data_callback)(const uint8_t *data, uint32_t len) = NULL;
-#ifdef SUPPORT_CAT1_SERVICE
-/* CAT1 vote 状态管理(与PPP保持一致) */
-static volatile bool g_sio_cat1_vote_added = false;
-static volatile uint32_t g_sio_last_rx_time_ms = 0; // 最后接收数据时间
-/* 外部函数声明(CAT1 API) */
-extern void cat1_api_add_cat1_vote(void);
-extern void cat1_api_remove_cat1_vote(void);
-#endif
/* 内部函数声明 */
static uint32_t sio_get_current_time_ms(void);
// 每333次(约10秒)打印一次完整统计信息
// 30ms * 333 ≈ 10秒
- if ((timer_call_count % 333) == 0) {
+ if ((timer_call_count % 333) == 0 && g_sio_debug_enabled) {
sio_print_stats();
}
// ⚠️ 更新全局时间戳(供ISR使用,ISR中不能调用时间函数)
g_sio_timer_timestamp_ms = current_time;
-#ifdef SUPPORT_CAT1_SERVICE
- // ✅ CAT1 vote 管理:检测 idle 状态,超过阈值时移除 vote
- if (g_sio_cat1_vote_added) {
- if (g_sio_last_rx_time_ms > 0) {
- uint32_t idle_time = current_time - g_sio_last_rx_time_ms;
- if (idle_time >= SIO_CAT1_VOTE_IDLE_MS) {
- // 空闲时间超过阈值,移除 vote 允许 CAT1 休眠
- cat1_api_remove_cat1_vote();
- g_sio_cat1_vote_added = false;
- printf("[SIO_CAT1_VOTE] Removed vote after %ums idle\n", idle_time);
- }
- }
- }
-#endif
+
if (g_sio_ping_pong_buffers == NULL) {
goto restart_timer;
g_sio_stats.total_interrupts++;
g_sio_stats.total_bytes_received += length;
-#ifdef SUPPORT_CAT1_SERVICE
- // ✅ 更新最后接收时间(用于空闲检测)
- g_sio_last_rx_time_ms = g_sio_timer_timestamp_ms;
-
- // ✅ CAT1 vote 管理:接收数据时添加 vote(保持 CAT1 唤醒)
- if (!g_sio_cat1_vote_added) {
- cat1_api_add_cat1_vote();
- g_sio_cat1_vote_added = true;
- }
-#endif
+
uint8_t current_idx = g_sio_current_buffer_index;
sio_ping_pong_buffer_t *current_buffer = &g_sio_ping_pong_buffers[current_idx];
}
g_sio_current_buffer_index = 0;
-#ifdef SUPPORT_CAT1_SERVICE
- // 初始化 CAT1 vote 状态
- g_sio_cat1_vote_added = false;
- g_sio_last_rx_time_ms = 0;
-#endif
+
printf("[SIO] Allocated %d x %d bytes = %.2f KB total\n",
SIO_PING_PONG_BUFFER_COUNT, SIO_PING_PONG_BUFFER_SIZE,
// 6. 清零统计
memset(&g_sio_stats, 0, sizeof(sio_stats_t));
-#ifdef SUPPORT_CAT1_SERVICE
- // 7. 清理 CAT1 vote(如果之前添加过)
- if (g_sio_cat1_vote_added) {
- cat1_api_remove_cat1_vote();
- g_sio_cat1_vote_added = false;
- printf("[SIO] CAT1 vote removed during disable\n");
- }
- g_sio_last_rx_time_ms = 0;
-#endif
+
g_sio_interrupt_enabled = false;
g_sio_irq_process_task = 0;
{
printf("=== SIO Interrupt Statistics (Ping-Pong Mode) ===\n");
printf("Interrupt Status: %s\n", g_sio_interrupt_enabled ? "ENABLED" : "DISABLED");
-#ifdef SUPPORT_CAT1_SERVICE
- printf("CAT1 Vote Status: %s\n",
- g_sio_cat1_vote_added ? "ADDED (awake)" : "REMOVED (sleep)");
- if (g_sio_last_rx_time_ms > 0) {
- uint32_t idle_time = sio_get_current_time_ms() - g_sio_last_rx_time_ms;
- printf("RX Idle Time: %u ms\n", idle_time);
- }
-#endif
printf("Ping-Pong Buffers: %d x %d bytes = %d KB total\n",
SIO_PING_PONG_BUFFER_COUNT, SIO_PING_PONG_BUFFER_SIZE,
(SIO_PING_PONG_BUFFER_COUNT * SIO_PING_PONG_BUFFER_SIZE) / 1024);
#define LWIP_DEFINE_SWITCH 0
#define LOSCFG_CONFIG_MQTT 1
-#define LWIP_LOWPOWER 0
+#define LWIP_LOWPOWER 1
/* time unit */
#define MS_PER_SECOND 1000
#if SLIP_RX_FROM_ISR
struct pbuf *rxpackets;
sys_mutex_t rxqueue_mutex; // 接收队列互斥锁
+ sys_sem_t rxqueue_sem; // 接收队列信号量,用于唤醒处理线程
#endif
};
u8_t c;
LWIP_DEBUGF(SLIP_DEBUG, ("slipif_loop_thread: started, netif=%p, priv=%p, sd=%p\n",
netif, priv, priv->sd));
-
while (1) {
/* 检查线程运行状态,如果被挂起则进入长时间休眠 */
if (!slipif_thread_running) {
}
// printf("slipif_loop_thread \n");
#if SLIP_RX_FROM_ISR
- /* 处理接收队列 */
- u16_t processed_count = slipif_process_rxqueue(netif);
+ /* 使用信号量等待数据包到达,超时时间500ms作为保底检查 */
+ u32_t wait_result = sys_arch_sem_wait(&priv->rxqueue_sem, 500);
- /* 简化的休眠策略:根据处理结果决定休眠时间 */
- if (processed_count == 0) {
- /* 没有数据包处理,长时间休眠 */
- LOS_Msleep(50); /* 50ms休眠,减少CPU占用 */
- } else if (processed_count < 5) {
- /* 处理少量数据包,中等时间休眠 */
- LOS_Msleep(20); /* 20ms休眠 */
- } else {
- /* 处理大量数据包,短暂休眠 */
- LOS_Msleep(5); /* 5ms休眠 */
+ if (wait_result == SYS_ARCH_TIMEOUT) {
+ /* 超时:可能是长时间无数据,进行一次检查后继续等待 */
+ slipif_process_rxqueue(netif);
+ continue;
}
+
+ /* 有数据包到达,持续处理直到队列为空 */
+ u16_t processed_count;
+ const u16_t MAX_PACKETS_PER_CALL = 10; // 与 slipif_process_rxqueue 中的常量保持一致
+ do {
+ processed_count = slipif_process_rxqueue(netif);
+ if (processed_count > 0) {
+ /* 如果处理了最大数量的包,可能还有更多数据,短暂休眠后继续处理 */
+ if (processed_count >= MAX_PACKETS_PER_CALL) {
+ LOS_Msleep(1); // 短暂休眠,让其他任务有机会运行
+ }
+ }
+ } while (processed_count > 0);
#else
if (sio_tryread(priv->sd, &c, 1) > 0) {
LWIP_DEBUGF(SLIP_DEBUG, ("slipif_loop_thread: received byte 0x%02x\n", c));
mem_free(priv);
return ERR_MEM;
}
+ if (sys_sem_new(&priv->rxqueue_sem, 0) != ERR_OK) {
+ LWIP_DEBUGF(SLIP_DEBUG, ("ERROR: slipif_init: failed to create rxqueue_sem\n"));
+ sys_mutex_free(&priv->rxqueue_mutex);
+ mem_free(priv);
+ return ERR_MEM;
+ }
#endif
LWIP_DEBUGF(SLIP_DEBUG, ("slipif_init: netif configured, name=%c%c, flags=0x%x\n",
/* opening the serial device failed, free priv and return */
printf("ERROR: slipif_init: sio_open failed for SLIP_IFNUM=%d\n", SLIP_IFNUM);
#if SLIP_RX_FROM_ISR
+ sys_sem_free(&priv->rxqueue_sem);
sys_mutex_free(&priv->rxqueue_mutex);
#endif
mem_free(priv);
priv->rxpackets = p;
sys_mutex_unlock(&priv->rxqueue_mutex);
+ /* 发送信号量唤醒处理线程 */
+ sys_sem_signal(&priv->rxqueue_sem);
+
LWIP_DEBUGF(SLIP_DEBUG, ("slipif_rxbyte_enqueue: enqueued pbuf 0x%p, rxpackets now 0x%p\n", p, priv->rxpackets));
}
}
* @brief 用户实现,在cat1指令执行前,添加投票
*/
void cat1_api_add_cat1_vote(void);
-
+/**
+ * @brief 用户实现,在cat1指令执行前,添加投票
+*/
+void cat1_api_remove_cat1_app_vote(void);
+/**
+ * @brief 用户实现,在cat1指令执行前,添加投票
+*/
+void cat1_api_add_cat1_app_vote(void);
/**
* @brief 用户自行实现,电话开始时切换语音通路
* @return 0 success
cat1_print_dbg("\r\nCAT1 SERVICE MCU WAKEUP SUCCESS\r\n");
}
+void cat1_api_remove_cat1_app_vote(void)
+{
+ uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1_APP);
+ if (cnt == 1) {
+ uapi_pm_remove_sleep_veto(PM_ID_CAT1_APP);
+ } else {
+ // cat1_print_dbg("CAT1 SERVICE MCU has delete pm_id_cat1 vote\r\n");
+ }
+ cat1_print_dbg("\r\nCAT1 APP VOTE REMOVE SUCCESS\r\n");
+}
+void cat1_api_add_cat1_app_vote(void)
+{
+ uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1_APP);
+ if (cnt == 0) {
+ uapi_pm_add_sleep_veto(PM_ID_CAT1_APP);
+ } else {
+ // cat1_print_dbg("CAT1 SERVICE MCU has got pm_id_cat1 vote\r\n");
+ }
+ cat1_print_dbg("\r\nCAT1 APP VOTE ADD SUCCESS\r\n");
+}
static uint8_t cat1_voice=0;
uint8_t cat1_api_get_cat1_volte_voice_state(void)
#ifdef SUPPORT_CAT1_SERVICE
/* CAT1 保活 */
- cat1_api_add_cat1_vote();
+ cat1_api_add_cat1_app_vote();
cat1_api_disable_cat1_cmd(0);
LOS_Msleep(200);
#endif
if (!header_buf)
{
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
{
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
printf("device getCharacter prepare failed %d\n", prep);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
HttpClientClse(&client);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_SUCC;
}
#ifdef SUPPORT_CAT1_SERVICE
/* CAT1 保活 */
- cat1_api_add_cat1_vote();
+ cat1_api_add_cat1_app_vote();
cat1_api_disable_cat1_cmd(0);
LOS_Msleep(200);
#endif
if (!header_buf2)
{
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
{
free(header_buf2);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
printf("device getUserId prepare failed %d\n", prep);
free(header_buf2);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
HttpClientClse(&client);
free(header_buf2);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_SUCC;
}
}
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_add_cat1_vote();
+ cat1_api_add_cat1_app_vote();
cat1_api_disable_cat1_cmd(0);
LOS_Msleep(200);
#endif
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CHAT_STAMINA] malloc failed for header_buf");
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
free(header_buf);
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CHAT_STAMINA] snprintf failed for header_buf");
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CHAT_STAMINA] prepare failed: %d", prep);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
HttpClientClse(&client);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
HttpClientClse(&client);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
HttpClientClse(&client);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
HttpClientClse(&client);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
HttpClientClse(&client);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
HttpClientClse(&client);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
HttpClientClse(&client);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_SUCC;
}
\ No newline at end of file
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[EMOJI_REPORT_STATUS] starting");
// CAT1 保活
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_add_cat1_vote();
+ cat1_api_add_cat1_app_vote();
cat1_api_disable_cat1_cmd(0);
LOS_Msleep(200);
#endif
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[EMOJI_REPORT_STATUS] malloc header_buf failed");
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
free(header_buf);
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[EMOJI_REPORT_STATUS] build header failed");
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[EMOJI_REPORT_STATUS] create root object failed");
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[EMOJI_REPORT_STATUS] print unformatted failed");
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
free(header_buf);
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[EMOJI_REPORT_STATUS] prepare auto failed");
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
free(header_buf);
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[EMOJI_REPORT_STATUS] request failed");
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
free(header_buf);
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[EMOJI_REPORT_STATUS] response code not 200");
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
HttpClientUnprepare(&clientData);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_SUCC;
}
if (!device_id || !device_token || (!groups && group_count > 0) || group_count < 0)
{
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_add_cat1_vote();
+ cat1_api_add_cat1_app_vote();
cat1_api_disable_cat1_cmd(0);
LOS_Msleep(200);
#endif
if (!header_buf)
{
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
{
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
{
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
cJSON_Delete(root);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
{
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
#ifdef SUPPORT_CAT1_SERVICE
/* CAT1 保活 */
- cat1_api_add_cat1_vote();
+ cat1_api_add_cat1_app_vote();
cat1_api_disable_cat1_cmd(0);
LOS_Msleep(200);
#endif
if (!header_buf)
{
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
{
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
printf("[OTA] getTask prepare failed %d\n", prep);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
HttpClientUnprepare(&clientData);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
free(header_buf);
free(url_with_params);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
if (url_with_params)
free(url_with_params);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_SUCC;
}
#ifdef SUPPORT_CAT1_SERVICE
/* CAT1 网络保活处理 */
- cat1_api_add_cat1_vote();
+ cat1_api_add_cat1_app_vote();
cat1_api_disable_cat1_cmd(0);
LOS_Msleep(500); // 等待模块就绪
#endif
{
printf("[OTA] local file already complete: %lld >= %d\n", resume_offset, total_size);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return 0; // 视为已完成
{
printf("[OTA] fopen failed for %s:\n", save_path);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return -1;
printf("[OTA] range prepare failed: %d\n", prep);
fclose(fd);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return -1;
HttpClientUnprepare(&client_data);
fclose(fd);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return -1;
HttpClientUnprepare(&client_data);
fclose(fd);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return -1;
fclose(fd);
HttpClientUnprepare(&client_data);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return ret;
fclose(fd);
HttpClientUnprepare(&client_data);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return ret;
fclose(fd);
HttpClientUnprepare(&client_data);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return -1;
HttpClientClse(&client);
HttpClientUnprepare(&client_data);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return -1;
HttpClientClse(&client);
HttpClientUnprepare(&client_data);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return -1;
HttpClientClse(&client);
HttpClientUnprepare(&client_data);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return -1;
HttpClientClse(&client);
HttpClientUnprepare(&client_data);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return -1;
HttpClientClse(&client);
HttpClientUnprepare(&client_data);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
#ifdef SUPPORT_CAT1_SERVICE
/* CAT1 保活 */
- cat1_api_add_cat1_vote();
+ cat1_api_add_cat1_app_vote();
cat1_api_disable_cat1_cmd(0);
LOS_Msleep(500);
#endif
{
free(body);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
free(body);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
free(body);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
HttpClientUnprepare(&clientData);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ret;
}
HttpClientUnprepare(&clientData);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ret;
}
HttpClientUnprepare(&clientData);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
fclose(fd);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
fclose(fd);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
#ifdef SUPPORT_CAT1_SERVICE
/* CAT1 网络保活处理 */
- cat1_api_add_cat1_vote();
+ cat1_api_add_cat1_app_vote();
cat1_api_disable_cat1_cmd(0);
LOS_Msleep(500);
#endif
{
free(body);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
free(body);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
free(body);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
HttpClientUnprepare(&clientData);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ret;
}
HttpClientUnprepare(&clientData);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ret;
}
HttpClientUnprepare(&clientData);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
fclose(fd);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
fclose(fd);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_SUCC;
return ERRCODE_FAIL;
#ifdef SUPPORT_CAT1_SERVICE
/* CAT1 保活 */
- cat1_api_add_cat1_vote();
+ cat1_api_add_cat1_app_vote();
cat1_api_disable_cat1_cmd(0);
LOS_Msleep(200);
#endif
if (!header_buf)
{
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
{
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
if (prep != HTTP_SUCCESS)
{
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
if (header_buf)
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_SUCC;
}
#ifdef SUPPORT_CAT1_SERVICE
/* CAT1 保活 */
- cat1_api_add_cat1_vote();
+ cat1_api_add_cat1_app_vote();
cat1_api_disable_cat1_cmd(0);
LOS_Msleep(200);
#endif
if (!header_buf)
{
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
{
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
{
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
HttpClientClse(&client);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_SUCC;
}
#ifdef SUPPORT_CAT1_SERVICE
/* CAT1 网络保活处理 */
- cat1_api_add_cat1_vote();
+ cat1_api_add_cat1_app_vote();
cat1_api_disable_cat1_cmd(0);
LOS_Msleep(500);
#endif
{
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
printf("story random: prepare HTTP buffer failed (code: %d)\n", prep);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
free(escaped_theme);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
free(json_body);
free(escaped_theme);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
free(escaped_theme);
HttpClientUnprepare(&clientData);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ret;
}
free(escaped_theme);
HttpClientUnprepare(&clientData);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ret;
}
free(escaped_theme);
HttpClientUnprepare(&clientData);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
free(escaped_theme);
HttpClientUnprepare(&clientData);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_FAIL;
}
free(json_body);
free(escaped_theme);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
return ERRCODE_SUCC;
}
return ERRCODE_FAIL;
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_add_cat1_vote();
+ cat1_api_add_cat1_app_vote();
cat1_api_disable_cat1_cmd(0);
LOS_Msleep(200);
#endif
if (!header_buf)
{
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return ERRCODE_FAIL;
{
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return ERRCODE_FAIL;
{
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return ERRCODE_FAIL;
HttpClientClse(&client);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return ERRCODE_SUCC;
#ifdef SUPPORT_CAT1_SERVICE
/* 4. 保活CAT1,准备网络 */
- cat1_api_add_cat1_vote();
+ cat1_api_add_cat1_app_vote();
cat1_api_disable_cat1_cmd(0);
LOS_Msleep(500);
#endif
free(sign_data);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return ERRCODE_FAIL;
free(sign_data);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return ERRCODE_FAIL;
free(sign_data);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return ERRCODE_FAIL;
free(sign_data);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return ERRCODE_FAIL;
free(sign_data);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return ERRCODE_FAIL;
free(sign_data);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return ERRCODE_FAIL;
HttpClientUnprepare(&clientData);
HttpClientClse(&client);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return ERRCODE_FAIL;
free(sign_data);
free(header_buf);
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
#endif
uapi_ln_remove_vote();
return ERRCODE_SUCC;
// HTTP请求失败,清理CAT1资源
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
cat1_api_keep_wakeup(0);
cat1_api_wakeup_cat1(0);
#endif
#ifdef SUPPORT_CAT1_SERVICE
cat1_api_wakeup_cat1(1);
cat1_api_keep_wakeup(1);
- cat1_api_add_cat1_vote();
+ cat1_api_add_cat1_app_vote();
#endif
// 等待CAT1就绪
LOS_Msleep(500); // 修改:减少等待时间,参考ln_api_device_info.c
}
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
cat1_api_keep_wakeup(0);
cat1_api_wakeup_cat1(0);
#endif
// 下载取消,清理CAT1资源
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
cat1_api_keep_wakeup(0);
cat1_api_wakeup_cat1(0);
#endif
// 下载取消,清理CAT1资源
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
cat1_api_keep_wakeup(0);
cat1_api_wakeup_cat1(0);
#endif
}
#ifdef SUPPORT_CAT1_SERVICE
- cat1_api_remove_cat1_vote();
+ cat1_api_remove_cat1_app_vote();
cat1_api_keep_wakeup(0);
cat1_api_wakeup_cat1(0);
#endif
return ERRCODE_SUCC;
}
+extern void sio_set_debug_enabled(bool debug_enabled);
+static uint32_t custom_sio_debug_enable(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+ UNUSED(strCommonCmd);
+ UNUSED(para);
+ UNUSED(paraLen);
+ sio_set_debug_enabled(true);
+ return ERRCODE_SUCC;
+}
static const at_cmd_table_t g_custom_utils_cmd[] = {
{ (char *)"AT^CUSTOM_SN", custom_utils_setsn, (char *)"123456789ABCDEF2345678" },
{ (char *)"AT^POWEROFF", custom_at_poweroff, (char *)" " },
{ (char *)"AT^GPIO", custom_at_gpio, (char *)" " },
{ (char *)"AT^AITEST", AI_TEST, (char *)" " },
-
+ { (char *)"AT^SIODEBUG", custom_sio_debug_enable, (char *)" " },
// { (char *)"AT^CROWNKEYTEST", crown_test_control, (char *)" " },
{ (char *)"AT^LCDTEST", lcd_test_control, (char *)" " },
{ (char *)"AT^PPPTESTVIEW", ppp_test_control, (char *)" " },