2024-10-14 22:11:43 +08:00
|
|
|
|
#include "stdio.h"
|
|
|
|
|
|
#include "stdlib.h"
|
|
|
|
|
|
// #include "cm_demo_main.h"
|
|
|
|
|
|
// #include "cm_demo_uart.h"
|
|
|
|
|
|
// #include "cm_demo_asocket.h"
|
|
|
|
|
|
// #include "cm_demo_fs.h"
|
|
|
|
|
|
#include "cm_fs.h"
|
|
|
|
|
|
#include "cm_mem.h"
|
|
|
|
|
|
#include "cm_sys.h"
|
|
|
|
|
|
#include "cm_sim.h"
|
|
|
|
|
|
#include "cm_virt_at.h"
|
|
|
|
|
|
#include "cm_rtc.h"
|
|
|
|
|
|
#include "cm_gpio.h"
|
|
|
|
|
|
#include "cm_iomux.h"
|
2024-11-08 18:02:29 +08:00
|
|
|
|
#include "cm_modem.h"
|
2024-10-14 22:11:43 +08:00
|
|
|
|
#include "app_uart.h"
|
|
|
|
|
|
#include "gps_config.h"
|
2024-11-08 18:02:29 +08:00
|
|
|
|
#include "app_common.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "jt808_msg_pkg.h"
|
|
|
|
|
|
#include "jt808_msg_parse.h"
|
|
|
|
|
|
#include "jt808_pkg_transmit.h"
|
|
|
|
|
|
#include "tcp_client.h"
|
2024-11-23 16:22:04 +08:00
|
|
|
|
#include "control_out.h"
|
2025-02-11 22:42:05 +08:00
|
|
|
|
#include "radar.h"
|
2024-11-08 18:02:29 +08:00
|
|
|
|
|
|
|
|
|
|
#include "local_tts.h"
|
|
|
|
|
|
|
2025-02-28 01:06:37 +08:00
|
|
|
|
#if 0
|
|
|
|
|
|
#include "app_uart.h"
|
|
|
|
|
|
#define DEBUG(fmt, args...) app_printf("[main]" fmt, ##args)
|
|
|
|
|
|
#else
|
|
|
|
|
|
#include "app_uart.h"
|
|
|
|
|
|
#define DEBUG(fmt, ...)
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
2024-10-14 22:11:43 +08:00
|
|
|
|
osThreadId_t OC_APP_TaskHandle;
|
|
|
|
|
|
|
2024-11-08 18:02:29 +08:00
|
|
|
|
void print_network_info(void){
|
|
|
|
|
|
cm_cereg_state_t cereg_state = {0};
|
|
|
|
|
|
|
|
|
|
|
|
if(0 == cm_modem_get_cpin()){
|
2025-02-28 01:06:37 +08:00
|
|
|
|
DEBUG("sim card ready!\r\n");
|
2024-11-08 18:02:29 +08:00
|
|
|
|
}else{
|
2025-02-28 01:06:37 +08:00
|
|
|
|
DEBUG("sim card not ready!\r\n");
|
2024-11-08 18:02:29 +08:00
|
|
|
|
}
|
|
|
|
|
|
if(0 ==cm_modem_get_cereg_state(&cereg_state)){ // 获取PS网络注册状态
|
2025-02-28 01:06:37 +08:00
|
|
|
|
DEBUG("cereg_state:%d\n",cereg_state.state); // 注册状态
|
2024-11-08 18:02:29 +08:00
|
|
|
|
}else{
|
2025-02-28 01:06:37 +08:00
|
|
|
|
DEBUG("cereg_get_state fail!\n");
|
2024-11-08 18:02:29 +08:00
|
|
|
|
}
|
|
|
|
|
|
if(cm_modem_get_pdp_state(1) == 1){ //网络就绪
|
2025-02-28 01:06:37 +08:00
|
|
|
|
DEBUG("network ready\n");
|
2024-11-08 18:02:29 +08:00
|
|
|
|
}else{
|
2025-02-28 01:06:37 +08:00
|
|
|
|
DEBUG("waiting for network...\n");
|
2024-11-08 18:02:29 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
osEventFlagsId_t LED_EventFlags = NULL;
|
|
|
|
|
|
|
2024-11-25 22:16:49 +08:00
|
|
|
|
void led_set_event(led_event_t event){ // 支持多线程并发调用
|
2024-11-08 18:02:29 +08:00
|
|
|
|
if(NULL == LED_EventFlags){
|
2025-02-28 01:06:37 +08:00
|
|
|
|
DEBUG("LED_EventFlags is NULL\n");
|
2024-11-25 22:16:49 +08:00
|
|
|
|
return;
|
2024-11-08 18:02:29 +08:00
|
|
|
|
}
|
2024-11-25 22:16:49 +08:00
|
|
|
|
osEventFlagsSet(LED_EventFlags, event);
|
2024-11-08 18:02:29 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2024-11-25 22:16:49 +08:00
|
|
|
|
|
|
|
|
|
|
void led_task(char *param){
|
|
|
|
|
|
led_status_t led_status = {0};
|
2024-11-08 18:02:29 +08:00
|
|
|
|
uint32_t led_event = 0;
|
2024-10-14 22:11:43 +08:00
|
|
|
|
while(1){
|
2024-11-08 18:02:29 +08:00
|
|
|
|
led_event = osEventFlagsWait(LED_EventFlags, 0x0000000f, osFlagsWaitAny, 0); //0等待
|
|
|
|
|
|
if (led_event & 0x80000000) { // 错误处理
|
2025-02-28 01:06:37 +08:00
|
|
|
|
// DEBUG("led task error\n");
|
2024-11-08 18:02:29 +08:00
|
|
|
|
}else if(led_event & EVENT_NETWORK_READY){ // 网络就绪
|
2025-02-28 01:06:37 +08:00
|
|
|
|
DEBUG("led network ready\n");
|
2024-11-08 18:02:29 +08:00
|
|
|
|
led_status.network_ready = 1;
|
|
|
|
|
|
}else if(led_event & EVENT_NETWORK_DISCONNECT){ // 网络断开
|
2025-02-28 01:06:37 +08:00
|
|
|
|
DEBUG("led network disconnect\n");
|
2024-11-08 18:02:29 +08:00
|
|
|
|
led_status.network_ready = 0;
|
|
|
|
|
|
}else if(led_event & EVENT_GPS_LOCATE_SUCCESS){ // GPS定位成功
|
2025-02-28 01:06:37 +08:00
|
|
|
|
DEBUG("led GPS locate success\n");
|
2024-11-08 18:02:29 +08:00
|
|
|
|
led_status.gps_ready = 1;
|
|
|
|
|
|
}else if(led_event & EVENT_GPS_NO_LOCATE){ // GPS无定位
|
2025-02-28 01:06:37 +08:00
|
|
|
|
DEBUG("led GPS no locate\n");
|
2024-11-08 18:02:29 +08:00
|
|
|
|
led_status.gps_ready = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(led_status.network_ready && led_status.gps_ready){ // 网络就绪,GPS定位成功
|
|
|
|
|
|
cm_gpio_set_level(CM_GPIO_NUM_0, 1); // 常亮
|
|
|
|
|
|
osDelay(1000/5);//300ms
|
|
|
|
|
|
}else if(led_status.network_ready && (0 ==led_status.gps_ready)){ // 网络就绪,GPS无定位
|
|
|
|
|
|
cm_gpio_set_level(CM_GPIO_NUM_0, 1);
|
|
|
|
|
|
osDelay(500/5);//300ms
|
|
|
|
|
|
cm_gpio_set_level(CM_GPIO_NUM_0, 0);
|
|
|
|
|
|
osDelay(500/5);//300ms
|
|
|
|
|
|
}else if((0 ==led_status.network_ready) && led_status.gps_ready){ // 网络断开,GPS定位成功
|
|
|
|
|
|
for(int i=0;i<5;i++){ // 快闪500ms,灭500ms
|
|
|
|
|
|
cm_gpio_set_level(CM_GPIO_NUM_0, 1);
|
|
|
|
|
|
osDelay(100/5);//300ms
|
|
|
|
|
|
cm_gpio_set_level(CM_GPIO_NUM_0, 0);
|
|
|
|
|
|
osDelay(100/5);//300ms
|
|
|
|
|
|
}
|
|
|
|
|
|
cm_gpio_set_level(CM_GPIO_NUM_0, 0);
|
|
|
|
|
|
osDelay(500/5);//300ms
|
|
|
|
|
|
}else{ // 网络断开,GPS无定位
|
|
|
|
|
|
cm_gpio_set_level(CM_GPIO_NUM_0, 1); // 快闪
|
|
|
|
|
|
osDelay(100/5);//300ms
|
|
|
|
|
|
cm_gpio_set_level(CM_GPIO_NUM_0, 0);
|
|
|
|
|
|
osDelay(100/5);//300ms
|
|
|
|
|
|
}
|
2024-10-14 22:11:43 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-09-02 17:54:29 +08:00
|
|
|
|
|
2024-11-25 22:16:49 +08:00
|
|
|
|
void led_task_init(void){
|
|
|
|
|
|
LED_EventFlags =osEventFlagsNew(NULL);
|
2024-11-08 18:02:29 +08:00
|
|
|
|
if(NULL == LED_EventFlags){
|
2025-02-28 01:06:37 +08:00
|
|
|
|
DEBUG("LED_EventFlags create fail\n");
|
2024-11-25 22:16:49 +08:00
|
|
|
|
}
|
|
|
|
|
|
cm_gpio_cfg_t cfg = {0};
|
|
|
|
|
|
cfg.direction = CM_GPIO_DIRECTION_OUTPUT;
|
|
|
|
|
|
cfg.pull = CM_GPIO_PULL_UP;
|
|
|
|
|
|
cm_iomux_set_pin_func(CM_IOMUX_PIN_16, CM_IOMUX_FUNC_FUNCTION1);//初始化之前一定要先设置引脚复用
|
|
|
|
|
|
cm_gpio_init(CM_GPIO_NUM_0, &cfg);
|
|
|
|
|
|
cm_gpio_set_level(CM_GPIO_NUM_0, 0);
|
|
|
|
|
|
osThreadAttr_t led_task_attr = {
|
|
|
|
|
|
.name = "led_task",
|
|
|
|
|
|
.stack_size = 1024,
|
|
|
|
|
|
.priority = osPriorityNormal,
|
|
|
|
|
|
};
|
|
|
|
|
|
osThreadNew((osThreadFunc_t)led_task,0,&led_task_attr);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void my_appimg_enter(char *param){
|
|
|
|
|
|
app_uart_init();
|
|
|
|
|
|
led_task_init();
|
|
|
|
|
|
|
|
|
|
|
|
cm_uart_write(0, "\n\n---zsxfly---\n\n", 16, 1000);
|
|
|
|
|
|
if(1){
|
|
|
|
|
|
char buf[CM_VER_LEN] = {0};
|
|
|
|
|
|
cm_fs_system_info_t info = {0, 0};
|
|
|
|
|
|
cm_heap_stats_t stats = {0};
|
2025-02-28 01:06:37 +08:00
|
|
|
|
DEBUG("\n\n\n\n\n");
|
|
|
|
|
|
DEBUG("CM OpenCPU Starts\n");
|
2024-11-25 22:16:49 +08:00
|
|
|
|
cm_sys_get_cm_ver(buf, CM_VER_LEN);
|
2025-02-28 01:06:37 +08:00
|
|
|
|
DEBUG("SDK VERSION:%s\n", buf);
|
2024-11-25 22:16:49 +08:00
|
|
|
|
cm_fs_getinfo(&info);
|
|
|
|
|
|
cm_mem_get_heap_stats(&stats);
|
2025-02-28 01:06:37 +08:00
|
|
|
|
DEBUG("fs total:%d,remain:%d\n", info.total_size, info.free_size);
|
|
|
|
|
|
DEBUG("heap total:%d,remain:%d\n",stats.total_size,stats.free);
|
2024-11-25 22:16:49 +08:00
|
|
|
|
}
|
|
|
|
|
|
local_tts_init();
|
|
|
|
|
|
// local_tts_mute(0);// 取消静音
|
|
|
|
|
|
local_tts_volume(50); // 设置音量为55
|
|
|
|
|
|
// local_tts_set(7, 7, CM_LOCAL_TTS_DIGIT_AUTO);
|
|
|
|
|
|
local_tts_text_play("设备已开机",0,0);
|
|
|
|
|
|
|
|
|
|
|
|
control_out_init();
|
|
|
|
|
|
// /*
|
|
|
|
|
|
if( 0 ){
|
|
|
|
|
|
while(1){
|
|
|
|
|
|
cm_gpio_set_level(CM_GPIO_NUM_0, 1);
|
|
|
|
|
|
osDelay(500/5);
|
|
|
|
|
|
cm_gpio_set_level(CM_GPIO_NUM_0, 0);
|
|
|
|
|
|
osDelay(500/5);
|
|
|
|
|
|
}
|
|
|
|
|
|
}else if( 0 ){
|
|
|
|
|
|
// cm_gpio_level_e level = 0;
|
|
|
|
|
|
while(1){
|
|
|
|
|
|
// // cm_gpio_set_level(CM_GPIO_NUM_0, 1);
|
|
|
|
|
|
// cm_gpio_set_pull(CM_GPIO_NUM_0, CM_GPIO_PULL_UP);
|
|
|
|
|
|
// cm_gpio_set_direction(CM_GPIO_NUM_0, CM_GPIO_DIRECTION_INPUT);
|
2025-02-28 01:06:37 +08:00
|
|
|
|
// // DEBUG("set_level 1\r\n");
|
2024-11-25 22:16:49 +08:00
|
|
|
|
// if(0 ==cm_gpio_get_level(CM_GPIO_NUM_0, &level)){ // 更新状态
|
2025-02-28 01:06:37 +08:00
|
|
|
|
// // DEBUG("gpio_get_level:%d\r\n",level);
|
2024-11-25 22:16:49 +08:00
|
|
|
|
// }
|
|
|
|
|
|
// osDelay(800/5);
|
|
|
|
|
|
|
|
|
|
|
|
// cm_gpio_set_direction(CM_GPIO_NUM_0, CM_GPIO_DIRECTION_OUTPUT);
|
|
|
|
|
|
// cm_gpio_set_level(CM_GPIO_NUM_0, 0);
|
|
|
|
|
|
// // cm_gpio_set_pull(CM_GPIO_NUM_0, CM_GPIO_PULL_DOWN);
|
2025-02-28 01:06:37 +08:00
|
|
|
|
// // DEBUG("set_level 0\r\n");
|
2024-11-25 22:16:49 +08:00
|
|
|
|
// if(0 ==cm_gpio_get_level(CM_GPIO_NUM_0, &level)){ // 更新状态
|
2025-02-28 01:06:37 +08:00
|
|
|
|
// // DEBUG("gpio_get_level:%d\r\n",level);
|
2024-11-25 22:16:49 +08:00
|
|
|
|
// }
|
|
|
|
|
|
// osDelay(800/5);
|
|
|
|
|
|
// local_tts_set(7, 7, CM_LOCAL_TTS_DIGIT_AUTO);
|
|
|
|
|
|
// local_tts_text_play("风和日丽的日子。阳光,洒下诸多幻影,让我重温当初。漫步时光,携一身清爽走一程简单的凉薄,回味中,",0,0);
|
|
|
|
|
|
// local_tts_text_play("是否,悠然还在?一路足迹,是否还可以寻回当初?是否青春的影子还残留在那些剪影中?",0,0);
|
|
|
|
|
|
// local_tts_text_play("回望沿途的风景,朦胧中,似乎少了几许张扬的味道,多了几许成熟的风韵。",0,0);
|
|
|
|
|
|
// local_tts_text_play("轻盈步伐,让流逝的永远流逝,让脚下的路延伸到尽头,依一素颜,走自己该走的路..…",0,0);
|
|
|
|
|
|
// osDelay(25000/5);
|
|
|
|
|
|
|
|
|
|
|
|
local_tts_volume(5);
|
|
|
|
|
|
// local_tts_set(2, 2, CM_LOCAL_TTS_DIGIT_AUTO);
|
|
|
|
|
|
cm_gpio_set_level(CM_GPIO_NUM_0, 1);
|
|
|
|
|
|
local_tts_text_play("测试0",0 ,1);
|
|
|
|
|
|
local_tts_text_play("测试1",0 ,1);
|
|
|
|
|
|
local_tts_text_play("测试2",0 ,1);
|
|
|
|
|
|
cm_gpio_set_level(CM_GPIO_NUM_0, 0);
|
2025-02-26 17:10:45 +08:00
|
|
|
|
local_tts_text_play("测试3",0 ,0);
|
2024-11-25 22:16:49 +08:00
|
|
|
|
osDelay(5000/5);
|
|
|
|
|
|
|
|
|
|
|
|
local_tts_volume(25);
|
|
|
|
|
|
// local_tts_set(7, 7, CM_LOCAL_TTS_DIGIT_AUTO);
|
|
|
|
|
|
cm_gpio_set_level(CM_GPIO_NUM_0, 1);
|
|
|
|
|
|
local_tts_text_play("测试4",0 ,1);
|
|
|
|
|
|
local_tts_text_play("测试5",0 ,1); // 不可打断
|
|
|
|
|
|
local_tts_text_play("测试6",0 ,1);
|
|
|
|
|
|
cm_gpio_set_level(CM_GPIO_NUM_0, 0);
|
|
|
|
|
|
local_tts_text_play("测试7",0 ,1);
|
|
|
|
|
|
osDelay(5000/5);
|
|
|
|
|
|
|
|
|
|
|
|
local_tts_volume(50);
|
|
|
|
|
|
// local_tts_set(7, 12, CM_LOCAL_TTS_DIGIT_AUTO);
|
|
|
|
|
|
cm_gpio_set_level(CM_GPIO_NUM_0, 1);
|
|
|
|
|
|
local_tts_text_play("测试8",0 ,1);
|
|
|
|
|
|
local_tts_text_play("测试9",0 ,1); // 不可打断
|
|
|
|
|
|
local_tts_text_play("测试10",0 ,1);
|
|
|
|
|
|
cm_gpio_set_level(CM_GPIO_NUM_0, 0);
|
|
|
|
|
|
local_tts_text_play("测试11",0 ,1);
|
|
|
|
|
|
osDelay(5000/5);
|
|
|
|
|
|
|
|
|
|
|
|
local_tts_volume(75);
|
|
|
|
|
|
// local_tts_set(7, 15, CM_LOCAL_TTS_DIGIT_AUTO);
|
|
|
|
|
|
cm_gpio_set_level(CM_GPIO_NUM_0, 1);
|
|
|
|
|
|
local_tts_text_play("测试12",0 ,1);
|
|
|
|
|
|
local_tts_text_play("测试13",0 ,1); // 不可打断
|
|
|
|
|
|
local_tts_text_play("测试14",0 ,1);
|
|
|
|
|
|
cm_gpio_set_level(CM_GPIO_NUM_0, 0);
|
|
|
|
|
|
local_tts_text_play("测试15",0 ,0);
|
|
|
|
|
|
osDelay(5000/5);
|
|
|
|
|
|
|
|
|
|
|
|
local_tts_volume(100);
|
|
|
|
|
|
// local_tts_set(6, 0, CM_LOCAL_TTS_DIGIT_AUTO);
|
|
|
|
|
|
cm_gpio_set_level(CM_GPIO_NUM_0, 1);
|
|
|
|
|
|
local_tts_text_play("测试16",0 ,1);
|
|
|
|
|
|
local_tts_text_play("测试17",0 ,1); // 不可打断
|
|
|
|
|
|
local_tts_text_play("测试18",0 ,1);
|
|
|
|
|
|
cm_gpio_set_level(CM_GPIO_NUM_0, 0);
|
|
|
|
|
|
local_tts_text_play("测试19",0 ,0);
|
|
|
|
|
|
osDelay(5000/5);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// */
|
|
|
|
|
|
jt808_set_term_param_init();
|
|
|
|
|
|
jt808_init();
|
|
|
|
|
|
tcp_client_init();
|
|
|
|
|
|
gps_config_init();
|
2025-02-11 22:42:05 +08:00
|
|
|
|
radar_init();// 雷达测离初始化
|
2024-11-25 22:16:49 +08:00
|
|
|
|
while(1){
|
|
|
|
|
|
osDelay(1000/5);
|
2024-11-08 18:02:29 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-09-02 17:54:29 +08:00
|
|
|
|
int cm_opencpu_entry(char * param)
|
|
|
|
|
|
{
|
2024-10-14 22:11:43 +08:00
|
|
|
|
osThreadAttr_t app_task_attr = {0};
|
|
|
|
|
|
app_task_attr.name = "main_task";
|
2024-11-08 18:02:29 +08:00
|
|
|
|
app_task_attr.stack_size = 4096 * 4;
|
2024-10-14 22:11:43 +08:00
|
|
|
|
app_task_attr.priority = osPriorityNormal;
|
|
|
|
|
|
|
|
|
|
|
|
OC_APP_TaskHandle = osThreadNew((osThreadFunc_t)my_appimg_enter,0,&app_task_attr);
|
|
|
|
|
|
|
2024-09-02 17:54:29 +08:00
|
|
|
|
return 0;
|
|
|
|
|
|
}
|