#include "cat1_ctl.h"
#include "tcxo.h"
#include "custom_utils.h"
-#include "cmsis_os2.h"
+#include "cmsis_os.h"
static int g_listen_sock = 0;
struct sockaddr_in sourceAddr = {0};
-osTimerId_t g_timer_time_sync = NULL;
-osTimerId_t g_timer_cat1_sleep = NULL;
+static osTimerId_t g_timer_time_sync = NULL;
+static osTimerId_t g_timer_cat1_sleep = NULL;
static uint8_t g_time_synced = 0;
#define MAX_TIME_SYNC_RETRY_TIME 5
static uint8_t g_time_sync_retry_time = 0;
if( len > 0 ) {
err = sendto(g_listen_sock, tx_buffer, len, 0, (struct sockaddr *)&sourceAddr, sizeof(sourceAddr));
if (err < 0) {
- printf("Error occured during sending: errno %d\n", errno);
+ PRINT("Error occured during sending: errno %d\n", errno);
}
} else {
- printf("Error occured unkown send data\n");
+ PRINT("Error occured unkown send data\n");
}
}
#include "uart_porting.h"
if (!uapi_cat1_get_power_stat())
{
- printf("Error cat1 poweroff skipp send data\n");
+ PRINT("Error cat1 poweroff skipp send data\n");
return ;
}
uapi_cat1_wakeup_cat1(1);
}
void cat1_gettime(void)
{
- printf("UDP_CMD_GET_TIME\n");
+ PRINT("UDP_CMD_GET_TIME\n");
udp_send_msg_toCat1(UDP_CMD_GET_TIME,"0");
}
static void timeout_handler_sleep_cat1(void)
{
- printf("sleep mcu\n");
- uapi_cat1_remove_audio_vote(); //接收到指令,让自己可以睡
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"sleep mcu\n");
// uapi_cat1_wakeup_cat1(0);// 反馈给cat1,它也可以自己睡
if(osTimerIsRunning(g_timer_cat1_sleep)==1 )
{
- osTimerStop(g_timer_cat1_sleep);
+ osStatus_t ret = osTimerStop(g_timer_cat1_sleep);
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"osTimerStop g_timer_cat1_sleep ret %d\n",ret);
}
+ uapi_cat1_remove_cat1_vote(); //接收到指令,让自己可以睡
+
}
//目前只在 被cat1唤醒的中断函数里执行,
void restart_sleep_cat1_timer(void)
{
- if (g_timer_cat1_sleep == NULL) return ;
+ if (g_timer_cat1_sleep == NULL)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"g_timer_cat1_sleep is NULL \n");
+ return ;
+ }
if(osTimerIsRunning(g_timer_cat1_sleep)==1 )
{
- osTimerStop(g_timer_cat1_sleep);
+ osStatus_t ret = osTimerStop(g_timer_cat1_sleep);
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"osTimerStop g_timer_cat1_sleep ret %d\n",ret);
}
if(osTimerIsRunning(g_timer_cat1_sleep)==0 )
{
- // WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"restart_sleep_cat1_timer \n");
- osTimerStart(g_timer_cat1_sleep,5000); //20秒后重试同步时间
+ uint32_t tick = (uint32_t )osMs2Tick(5000); // 5 seconds
+ osStatus_t ret = osTimerStart(g_timer_cat1_sleep,tick); //5秒后重试同步时间
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"osTimerStart g_timer_cat1_sleep ret %d\n",ret);
}
}
static void time_sync_func(void)
{
- printf("time_sync_func\n");
+ PRINT("time_sync_func\n");
cat1_gettime();
if(osTimerIsRunning(g_timer_time_sync)==1 && g_time_synced == 1 )
{
- osTimerStop(g_timer_time_sync);
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 g_time_synced == 1 stop timer \n");
+ osStatus_t ret = osTimerStop(g_timer_time_sync);
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 g_time_synced == 1 stop timer , ret %d\n",ret);
}else{
g_time_sync_retry_time ++;
}
if( g_time_sync_retry_time >= MAX_TIME_SYNC_RETRY_TIME)
{
- osTimerStop(g_timer_time_sync);
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 g_time_sync_retry_time >= %d stop timer \n",MAX_TIME_SYNC_RETRY_TIME);
+ osStatus_t ret = osTimerStop(g_timer_time_sync);
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 g_time_sync_retry_time >= %d stop timer ,ret %d\n",MAX_TIME_SYNC_RETRY_TIME,ret);
}
}
g_time_sync_retry_time = 0;
if(osTimerIsRunning(g_timer_time_sync)==0 )
{
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 restart_time_sync timer \n");
- osTimerStart(g_timer_time_sync,5000); //20秒后重试同步时间
+ // WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 restart_time_sync timer \n");
+ uint32_t tick = (uint32_t )osMs2Tick(5000); // 60000: seconds of a minute
+ osStatus_t ret = osTimerStart(g_timer_time_sync,tick); //5秒后重试同步时间
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 restart_time_sync timer ret %d\n",ret);
}
}
index = cat1_handle_call_disconnected(msg);
break;
case UDP_CMD_CAT1_OTA_UPDATE:
- printf("CAT1_OTA_UPDATE reply %s\n",msg->buffer);
+ PRINT("CAT1_OTA_UPDATE reply %s\n",msg->buffer);
break;
case UDP_MSG_REPLY:
- printf("UDP_MSG_REPLY reply %s\n",msg->buffer);
+ PRINT("UDP_MSG_REPLY reply %s\n",msg->buffer);
//"BOOTUP,pyVer,PY_SRV_V4,modemVer,EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_BETA0312"
if(strstr(msg->buffer,"BOOTUP")!=NULL)
{
index = cat1_handle_networ_msg(msg);
break;
default:
- printf("error message: %s\n", rx_buffer);
+ PRINT("error message: %s\n", rx_buffer);
index = 1;
break;
}
// if (index > 0) //需要反馈的指令才返回OK
// udp_send_msg_toCat1( msg->head[1], "OK");
} else {
- printf("wrong format msg and exit\n");
+ PRINT("wrong format msg and exit\n");
index = 1;
}
int listen_sock = socket(addr_family, SOCK_DGRAM, ip_protocol);
if (listen_sock < 0) {
- printf("Unable to create socket: errno %d\n", errno);
+ PRINT("Unable to create socket: errno %d\n", errno);
return -1;
}
setsockopt(listen_sock, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
int err = bind(listen_sock, (struct sockaddr *)&destAddr, sizeof(destAddr));
if (err != 0) {
- printf("Socket unable to bind: errno %d\n", errno);
+ PRINT("Socket unable to bind: errno %d\n", errno);
return -1;
}
if( g_listen_sock > 0 ) close(g_listen_sock);
g_listen_sock = udp_socket_init();
if( g_listen_sock < 0 ) {
- printf("socket init fail and retry\n");
+ PRINT("socket init fail and retry\n");
// vTaskDelay(1000/portTICK_RATE_MS);
cat1_msleep(1000);
continue;
int len = recvfrom(g_listen_sock, rx_buffer, sizeof(rx_buffer) - 1, 0, (struct sockaddr *)&sourceAddr, &addrLen);
// Error occured during receiving
if (len < 0) {
- printf("recv failed: errno %d\n", errno);
+ PRINT("recv failed: errno %d\n", errno);
break;
} else if (len == 0) {
- printf("Connection closed\n");
+ PRINT("Connection closed\n");
break;
}
// Data received
rx_buffer[len] = '\0'; // Null-terminate whatever we received and treat like a string
- printf("Received %d bytes, rx_buffer: %s\n", len, rx_buffer);
+ PRINT("Received %d bytes, rx_buffer: %s\n", len, rx_buffer);
index = udp_packet_parse(rx_buffer, len);
// if( index >= 0 ) {
// udp_send_response(tx_buffer, rx_buffer, "OK"/* msg_wifi_resp[index]*/);
int index = resolve_msg_wifi_status(NULL);
char *head = "FF";
int len = pack_tlv_format(tx_buffer, head, msg_wifi_status[index]);
- printf("wifi_status len = %d, msg = [%s]\n",len, tx_buffer);
+ PRINT("wifi_status len = %d, msg = [%s]\n",len, tx_buffer);
}
#endif
}
g_timer_time_sync = osTimerNew((osTimerFunc_t)time_sync_func, osTimerPeriodic, NULL, NULL);
-
- // if ( poweron_cat1_on_bootup_flag() )
- // {
- // uapi_cat1_power_on(1);
- // uapi_cat1_reset(0);
- // }
if (g_timer_time_sync == NULL)
- printf("g_timer_time_sync create failed\n");
+ PRINT("g_timer_time_sync create failed\n");
g_timer_cat1_sleep = osTimerNew((osTimerFunc_t)timeout_handler_sleep_cat1, osTimerPeriodic, NULL, NULL);
if (g_timer_cat1_sleep == NULL)
- printf("g_timer_cat1_sleep create failed\n");
-
+ PRINT("g_timer_cat1_sleep create failed\n");
+ //第一次启动,要确保去除已经添加过的cat1 Vote
+ restart_sleep_cat1_timer();
+
return ERRCODE_SUCC;
}
--- /dev/null
+/**
+ * Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. \n
+ *
+ * Description: Test adc source \n
+ * Author: @CompanyNameTag \n
+ * History: \n
+ * 2022-08-16, Create file. \n
+ */
+#include "pinctrl.h"
+#include "debug_print.h"
+#include "soc_osal.h"
+#include "tcxo.h"
+#include "irmalloc.h"
+#include "errcode.h"
+#include "common_def.h"
+
+#include "chip_core_irq.h"
+#include "chip_io.h"
+#include "gpio.h"
+#include "pm_veto.h"
+
+#include "rtc.h"
+#include "timer.h"
+#include "systick.h"
+
+#include "tcxo.h"
+
+#include "cmsis_os2.h"
+
+#include "los_printf.h"
+
+#include "custom_utils.h"
+
+typedef struct
+{
+ uint8_t cmd;
+ // uint8_t data[2];
+} custom_cmd_cmd_t;
+/***
+ * 其他cmd在Header里定义,对外开放
+ */
+
+static bool g_bat_timer_is_running = false;
+static unsigned long g_custom_cmd_queue;
+
+
+
+static bool custom_cmd_service_running_stat = false;
+
+void do_custom_cmd_service_check_msg(int cmd)
+{
+ int ret;
+
+ custom_cmd_cmd_t mail = {0};
+ mail.cmd = cmd;
+ // mail.data[0] = data[0];
+ // mail.data[1] = data[1];
+ ret = osal_msg_queue_write_copy(g_custom_cmd_queue, (void *)&mail, sizeof(custom_cmd_cmd_t), 0);
+ if (ret != OSAL_SUCCESS)
+ {
+ PRINT("Error custom_cmd Check MSG 0x%02X send failed! err=0x%x! \r\n", cmd, ret);
+ }
+}
+
+static void custom_cmd_service_check_task(void const *arg)
+{
+ unused(arg);
+ int32_t ret;
+ custom_cmd_cmd_t mail;
+ uint32_t msgsize = (uint32_t)sizeof(custom_cmd_cmd_t);
+ custom_cmd_service_running_stat = true;
+
+ while (1)
+ {
+ ret = osal_msg_queue_read_copy(g_custom_cmd_queue, (void *)&mail, &msgsize,
+ OSAL_MSGQ_WAIT_FOREVER);
+ if (ret != OSAL_SUCCESS)
+ {
+ continue;
+ }
+
+ if (mail.cmd == CUSTOM_CMD_MSG_TYPE_REMOVE_CAT1VOTE)
+ {
+ restart_sleep_cat1_timer();
+ }
+ else
+ {
+ PRINT("unknown CUSTOM_CMD_MSG cmd 0x%2X \r\n",mail.cmd);
+ }
+ }
+}
+#define CUSTOM_CMD_APP_BOARD_MSG_COUNT 10
+#define CUSTOM_CMD_APP_BOARD_TASK_SIZE 0x800
+#define CUSTOM_CMD_BOARD_TASK_PRIO 7
+void create_custom_cmd_queue(void)
+{
+ if (osal_msg_queue_create("custom_cmd_service_queue", CUSTOM_CMD_APP_BOARD_MSG_COUNT, &g_custom_cmd_queue,
+ 0, sizeof(custom_cmd_cmd_t)) != ERRCODE_SUCC)
+ {
+ printf("[custom_cmd][service] app create mail fail\n");
+ }
+}
+errcode_t uapi_custom_cmd_service_init(void)
+{
+
+ PRINT("uapi_custom_cmd_service_init !\r\n");
+ app_task_definition_t taskcfg = {0};
+ taskcfg.create_queue_handle = create_custom_cmd_queue;
+ taskcfg.attr.name = "custom_cmd_service";
+ taskcfg.attr.priority = osPriorityNormal;
+ taskcfg.attr.stack_size = CUSTOM_CMD_APP_BOARD_TASK_SIZE;
+ taskcfg.func = custom_cmd_service_check_task;
+ taskcfg.use_mem = USE_EXTEND_MEM;
+
+ errcode_t ret = uapi_create_osThread_custom(&taskcfg);
+ if (ret != ERRCODE_SUCC)
+ {
+ PRINT("create custom_cmd_service failed %d!\r\n", ret);
+ return ERRCODE_FAIL;
+ }
+
+ // g_custom_cmd_service_timer = osTimerNew((osTimerFunc_t)custom_cmd_service_check_timer_callback, osTimerPeriodic, NULL, NULL);
+
+ // do_custom_cmd_service_check_msg(CUSTOM_CMD_SERVICE_CMD_START_CHECK, NULL);
+
+ return ERRCODE_SUCC;
+}
+
+// void custom_cmd_service_service_resume(void)
+// {
+// PRINT("custom_cmd_service_service resume!\r\n");
+// custom_cmd_service_check_timer_callback(0);
+// }
+// void custom_cmd_service_service_suspend(void)
+// {
+// PRINT("custom_cmd_service_service suspend!\r\n");
+// }
+
+// void custom_cmd_service_service_resume(void)
+// {
+// PRINT("custom_cmd_service_service resume!\r\n");
+// custom_cmd_service_check_timer_callback(0);
+// }
+// void custom_cmd_service_service_suspend(void)
+// {
+// PRINT("custom_cmd_service_service suspend!\r\n");
+// }
\ No newline at end of file