diff --git a/.vscode/settings.json b/.vscode/settings.json index 535d1df..e6262bc 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -18,9 +18,9 @@ } ], "files.associations": { + "*.dbclient-js": "javascript", "*.sqlbook": "sql", "*.ndjson": "jsonl", - "*.dbclient-js": "javascript", "rtthread.h": "c", "user_sys.h": "c", "bsp_led.h": "c", @@ -76,6 +76,7 @@ "signal.h": "c", "xtr1common": "c", "stddef.h": "c", - "netdev_ipaddr.h": "c" + "netdev_ipaddr.h": "c", + "stdint.h": "c" } } diff --git a/applications/main.c b/applications/main.c index 1e1a052..510d5a5 100644 --- a/applications/main.c +++ b/applications/main.c @@ -365,7 +365,6 @@ void APP_Handle(void) Flash_Write_Record(kRecordFault); LED_Y_FAULT; - // BEEP_FAULT; #if (IOT_MODULE_SWITCH == 1) Ml307_Send_Event(kMl307FaultEvent); diff --git a/applications/user_sys.h b/applications/user_sys.h index babd9aa..faa0947 100644 --- a/applications/user_sys.h +++ b/applications/user_sys.h @@ -18,8 +18,8 @@ #define MAX_EXPIRATION_DAYS (uint16_t)(365 * 5 + 30 * 3) -#define SYS_HW_VERSION (0X11U) -#define SYS_SW_VERSION (0X11U) +#define SYS_HW_VERSION (0X13U) +#define SYS_SW_VERSION (0X12U) #define SYS_IOT_UPLOAD_CYCLE_MIN (0X003CU) // 高位在后,低位在前 #define SYS_IOT_RETRY (0X03U) #define SYS_TEMP_ALARM_THRESHOLD (0X32U) diff --git a/bsp/src/at_device_ml307.c b/bsp/src/at_device_ml307.c index 2ff83e8..a39297c 100644 --- a/bsp/src/at_device_ml307.c +++ b/bsp/src/at_device_ml307.c @@ -2,7 +2,7 @@ * @Author: mbw * @Date: 2024-11-30 15:46:21 * @LastEditors: mbw && 1600520629@qq.com - * @LastEditTime: 2025-04-16 10:10:33 + * @LastEditTime: 2025-05-21 11:18:55 * @FilePath: \ble_bjq_ch303rct6_ml307\bsp\src\at_device_ml307.c * @Description: * @@ -927,7 +927,7 @@ static void ml307_init_thread_entry(void *parameter) goto __exit; } /*设置包模式*/ - if (at_obj_exec_cmd(device->client, resp, "AT+MIPCFG=\"autofree\",0,0") != RT_EOK) + if (at_obj_exec_cmd(device->client, resp, "AT+MIPCFG=\"autofree\",0,1") != RT_EOK) { result = -RT_ERROR; goto __exit; diff --git a/bsp/src/bsp_button.c b/bsp/src/bsp_button.c index 5796e4c..f2f5770 100644 --- a/bsp/src/bsp_button.c +++ b/bsp/src/bsp_button.c @@ -13,12 +13,12 @@ #include #ifdef BUTTON_USE_THREAD -ALIGN(RT_ALIGN_SIZE) +ALIGN (RT_ALIGN_SIZE) static char button_thread_stack[BUTTON_THREAD_STACK_SIZE]; static struct rt_thread button_thread; #else static rt_timer_t button_timer; -#endif // !BUTTON_USE_THREAD +#endif // !BUTTON_USE_THREAD typedef enum { @@ -29,46 +29,72 @@ typedef enum static flex_button_t user_button[USER_BUTTON_MAX]; -static uint8_t _CommonBtnRead(void *arg) +static uint8_t _CommonBtnRead (void *arg) { - uint8_t value = 0; + uint8_t value = 0; flex_button_t *btn = (flex_button_t *)arg; switch (btn->id) { - case USER_BUTTON_0: - value = rt_pin_read(BUTTON_0); - break; - case USER_BUTTON_1: - value = rt_pin_read(BUTTON_1); - break; - default: - RT_ASSERT(0); + case USER_BUTTON_0: + value = rt_pin_read (BUTTON_0); + break; + case USER_BUTTON_1: + value = rt_pin_read (BUTTON_1); + break; + default: + RT_ASSERT (0); } return value; } -static void _CommonBtnEvtCb(void *arg) +static void _CommonBtnEvtCb (void *arg) { // static rt_uint8_t button_cnt = 0; - if (flex_button_event_read(&user_button[USER_BUTTON_1]) == FLEX_BTN_PRESS_DOUBLE_CLICK) + if (flex_button_event_read (&user_button[USER_BUTTON_1]) == FLEX_BTN_PRESS_DOUBLE_CLICK) { - if ( SysControl.status > kPreheatingEvent) + if (SysControl.status > kPreheatingEvent) { - Send_Laser_Alarm_Event(kSelfCheckEvent); + Send_Laser_Alarm_Event (kSelfCheckEvent); } } - else if (flex_button_event_read(&user_button[USER_BUTTON_0]) == FLEX_BTN_PRESS_CLICK) + else if (flex_button_event_read (&user_button[USER_BUTTON_0]) == FLEX_BTN_PRESS_CLICK) { if (SysControl.status == kAlarmEvent) { Send_Laser_Alarm_Event(KMuteEvent); } + + // if (button_cnt == 1) + // { + // LED_OFF (y); + // LED_OFF (r); + // LED_ON (g); + // LOG_D ("GREEN ON"); + // } + // else if (button_cnt == 2) + // { + // LED_OFF (g); + // LED_OFF (r); + // LED_ON (y); + // LOG_D ("Yellow ON"); + // } + // else if (button_cnt == 3) + // { + // LED_OFF (g); + // LED_OFF (y); + // LED_ON (r); + // LOG_D ("RED ON"); + // } + // else if (button_cnt >= 4) + // { + // button_cnt = 0; + // } + // button_cnt++; } - // else if ((flex_button_event_read(&user_button[USER_BUTTON_0]) == FLEX_BTN_PRESS_REPEAT_CLICK) && (flex_button_event_read(&user_button[USER_BUTTON_1]) == FLEX_BTN_PRESS_LONG_HOLD)) - else if (flex_button_event_read(&user_button[USER_BUTTON_1]) == FLEX_BTN_PRESS_LONG_HOLD) + else if (flex_button_event_read(&user_button[USER_BUTTON_1]) == FLEX_BTN_PRESS_LONG_HOLD) { LOG_I("本地清除阀门信息"); rt_uint8_t mac_addr[6] = {0}; @@ -99,76 +125,76 @@ static void _CommonBtnEvtCb(void *arg) } } -static void _BUTTON_Process(void *param) +static void _BUTTON_Process (void *param) { #ifdef BUTTON_USE_THREAD - LOG_D("BSP_BUTTON_thread"); + LOG_D ("BSP_BUTTON_thread"); while (1) { flex_button_scan(); - rt_thread_mdelay(20); + rt_thread_mdelay (20); } #else flex_button_scan(); // LOG_D("BSP_BUTTON_timer"); -#endif // !BUTTON_USE_THREAD +#endif // !BUTTON_USE_THREAD } -int BSP_BUTTON_Init(void) +int BSP_BUTTON_Init (void) { rt_uint8_t ret = 0; - rt_memset(&user_button[0], 0x0, sizeof(user_button)); + rt_memset (&user_button[0], 0x0, sizeof (user_button)); - rt_pin_mode(BUTTON_0, PIN_MODE_INPUT_PULLUP); /* set KEY pin mode to input */ - rt_pin_mode(BUTTON_1, PIN_MODE_INPUT_PULLUP); /* set KEY pin mode to input */ + rt_pin_mode (BUTTON_0, PIN_MODE_INPUT_PULLUP); /* set KEY pin mode to input */ + rt_pin_mode (BUTTON_1, PIN_MODE_INPUT_PULLUP); /* set KEY pin mode to input */ for (uint8_t i = 0; i < USER_BUTTON_MAX; i++) { - user_button[i].id = i; - user_button[i].usr_button_read = _CommonBtnRead; - user_button[i].cb = _CommonBtnEvtCb; - user_button[i].pressed_logic_level = PIN_LOW; - user_button[i].short_press_start_tick = FLEX_MS_TO_SCAN_CNT(1000); - user_button[i].long_press_start_tick = FLEX_MS_TO_SCAN_CNT(3000); - user_button[i].long_hold_start_tick = FLEX_MS_TO_SCAN_CNT(5000); + user_button[i].id = i; + user_button[i].usr_button_read = _CommonBtnRead; + user_button[i].cb = _CommonBtnEvtCb; + user_button[i].pressed_logic_level = PIN_LOW; + user_button[i].short_press_start_tick = FLEX_MS_TO_SCAN_CNT (1000); + user_button[i].long_press_start_tick = FLEX_MS_TO_SCAN_CNT (3000); + user_button[i].long_hold_start_tick = FLEX_MS_TO_SCAN_CNT (5000); - flex_button_register(&user_button[i]); + flex_button_register (&user_button[i]); } #ifdef BUTTON_USE_THREAD - ret = rt_thread_init(&button_thread, - "button_thread", - _BUTTON_Process, - RT_NULL, - &button_thread_stack[0], - sizeof(button_thread_stack), - BUTTON_THREAD_PRIORITY, - BUTTON_THREAD_TICKS); + ret = rt_thread_init (&button_thread, + "button_thread", + _BUTTON_Process, + RT_NULL, + &button_thread_stack[0], + sizeof (button_thread_stack), + BUTTON_THREAD_PRIORITY, + BUTTON_THREAD_TICKS); if (ret == RT_EOK) { - rt_thread_startup(&button_thread); + rt_thread_startup (&button_thread); return RT_EOK; } else { - LOG_E("button_thread create failed"); + LOG_E ("button_thread create failed"); return -RT_ERROR; } #else - button_timer = rt_timer_create("button_timer", _BUTTON_Process, - RT_NULL, 20, - RT_TIMER_FLAG_PERIODIC); + button_timer = rt_timer_create ("button_timer", _BUTTON_Process, + RT_NULL, 20, + RT_TIMER_FLAG_PERIODIC); if (button_timer != RT_NULL) { - rt_timer_start(button_timer); + rt_timer_start (button_timer); } else { - LOG_E("create button_timer fail"); + LOG_E ("create button_timer fail"); return -RT_ERROR; } -#endif // !BUTTON_USE_THREAD - LOG_I("BSP_BUTTON_Init!"); +#endif // !BUTTON_USE_THREAD + LOG_I ("BSP_BUTTON_Init!"); return -RT_ERROR; } diff --git a/bsp/src/bsp_flash.c b/bsp/src/bsp_flash.c index a8e6f2c..1241e9f 100644 --- a/bsp/src/bsp_flash.c +++ b/bsp/src/bsp_flash.c @@ -895,7 +895,7 @@ int BSP_Flash_Init (void) Flash_SetProductTimeLimit (2025, 2, 10, 13, 50, 20, kFactoryTimeId); Set_ExpirationTime (MAX_EXPIRATION_DAYS); - Flash_Set_Calibration_State(kSysGasCalibStatus); // 标定状态 + Flash_Set_Calibration_State(kNotCalibrated); // 标定状态 Flash_Set_Valve_Num(0); sci.hw_ver = SYS_HW_VERSION; sci.sw_ver = SYS_SW_VERSION; diff --git a/bsp/src/bsp_ml307.c b/bsp/src/bsp_ml307.c index 4e95fae..1fc25ce 100644 --- a/bsp/src/bsp_ml307.c +++ b/bsp/src/bsp_ml307.c @@ -2,7 +2,7 @@ * @Author: mbw * @Date: 2024-11-30 15:46:21 * @LastEditors: mbw && 1600520629@qq.com - * @LastEditTime: 2025-04-25 08:41:52 + * @LastEditTime: 2025-05-21 11:37:02 * @FilePath: \ble_bjq_ch303rct6_ml307\bsp\src\bsp_ml307.c * @Description: * @@ -314,7 +314,7 @@ int _Update_Valve_Data(struct Ml307_Ops *ops) { LOG_D("valve_num: %d", ops->body->valve_num); rt_memcpy(&ops->body->valve_data[0], &valve[0], sizeof(struct valve_t)); - rt_memset(&valve[0].valve_connct_status, 0, (sizeof(struct valve_t) - 7)); // 清空阀门包数据,等待下次更新,如果没更新说明断开了 + // rt_memset(&valve[0].valve_connct_status, 0, (sizeof(struct valve_t) - 7)); // 清空阀门包数据,等待下次更新,如果没更新说明断开了 } return RT_EOK; } @@ -359,7 +359,7 @@ int Ml307_Send_Data(struct Ml307_Ops *ops, rt_uint8_t data_num, rt_uint8_t cmd, rt_memset(ops->body, 0, sizeof(struct DataBody)); rt_mutex_take(ml307_mutex, RT_WAITING_FOREVER); - ret = ml307_ops.update_data(ops, device_type, event_type); + ret = ops->update_data(ops, device_type, event_type); if (ret == RT_EOK) { if (ops->body->valve_num == 0) @@ -737,7 +737,7 @@ int Ml307_Send_Power_Off(struct at_device *device, void *param) LOG_E("ml307 param error\n"); return RT_ERROR; } - + rt_memset(&valve[0].valve_connct_status, 0, (sizeof(struct valve_t) - 7));//当掉电事件时,直接清空阀门结构体,这样连接状态就为断开 if (ml307_ops->send(ml307_ops, DATA_SERIAL_NUM, CMD_TYPE_DEVICE_EVENT_REPORT, DEVICE_TYPE_ML307, EVENT_TYPE_POWER_OFF)) { LOG_E("ml307 send cmd[%X] failed\n", EVENT_TYPE_POWER_OFF); @@ -1091,12 +1091,14 @@ rt_err_t Handle_Close_Valve(struct Ml307_Ops *ops) if (rt_sem_take(&bt_ctr_sem, 10000) != RT_EOK) // 等待十秒获取信号量 { LOG_E("获取信号量失败\n"); + rt_sem_control(&bt_ctr_sem, RT_IPC_CMD_RESET, 0); ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_CLOSE_VALVE, temp, RESPONSE_CODE_ACTION_FAILURE); return RT_ERROR; } else { LOG_D("关阀成功\n"); + rt_sem_control(&bt_ctr_sem, RT_IPC_CMD_RESET, 0); ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_CLOSE_VALVE, temp, RESPONSE_CODE_SUCCESS); return RT_EOK; } @@ -1839,7 +1841,7 @@ static void Ml307_Life_Thread_Entry(void *parameter) { LOG_D("重连网络中...\n"); ml307_connect_sever_flag = 0; - resp = at_create_resp(128, 0, 5000); + resp = at_create_resp(256, 0, 5000); if (resp == RT_NULL) { LOG_E("No memory for response structure!"); @@ -1884,7 +1886,7 @@ static void Ml307_Life_Thread_Entry(void *parameter) goto __exit; } /*设置包模式*/ - if (at_obj_exec_cmd(device->client, resp, "AT+MIPCFG=\"autofree\",0,0") != RT_EOK) + if (at_obj_exec_cmd(device->client, resp, "AT+MIPCFG=\"autofree\",0,1") != RT_EOK) { result = -RT_ERROR; goto __exit; diff --git a/libraries/hal_drivers/drv_usart.c b/libraries/hal_drivers/drv_usart.c index 2cfc676..4e061f1 100644 --- a/libraries/hal_drivers/drv_usart.c +++ b/libraries/hal_drivers/drv_usart.c @@ -510,7 +510,7 @@ int rt_hw_usart_init(void) uart_obj[i].serial.ops = &ch32_uart_ops; uart_obj[i].serial.config = config; - if (uart_obj[i].config->name == "uart1") + if (uart_obj[i].config->Instance == USART1) { uart_obj[i].serial.config.baud_rate = BAUD_RATE_460800; }