diff --git a/bsp/inc/bsp_ml307r.h b/bsp/inc/bsp_ml307r.h index 05add73..5659bf9 100644 --- a/bsp/inc/bsp_ml307r.h +++ b/bsp/inc/bsp_ml307r.h @@ -139,22 +139,14 @@ typedef struct { extern IotFlagStruct IotFlag_t; extern struct tm Network_Time_t; - -static void BSP_Ml307_Power_Off(void); - - void BSP_Ml307r_Init(void); void Iot_Send_Data(TeFrameCmd cmd); void Ml307r_Loop(void); -void BSP_Module_Emergency_Send(uint8_t* data, uint8_t len); -void BSP_ML307_StartTimeoutTimer(void); -void BSP_ML307_SetActive(void); void BSP_ML307_SendMessage(void); -static void BSP_Read_Module(void); static void BSP_simcom_init(void); static void BSP_Get_Module_Info(void); -static void BSP_Module_Connect_CtWing(void); static void BSP_SendMessage(void); +static void BSP_Ml307_Power_Off(void); uint8_t BSP_4G_Generate_Response(Ts4GJsonData *p4GData, uint32_t timestamp, TeFrameCmd responseCmd); // ״̬ϱṹ diff --git a/bsp/inc/bsp_valve.h b/bsp/inc/bsp_valve.h index c2da650..90b283b 100644 --- a/bsp/inc/bsp_valve.h +++ b/bsp/inc/bsp_valve.h @@ -67,7 +67,7 @@ typedef enum kValveCmdOpenWithStove, // 开灶开阀 kValveCmdCloseWithStove, // 关灶关阀 kValveCmdOverTemperature, // 超温关阀 - kValveCmdDelayClose, // 延时关阀 + kValveCmdDelayClose, // 恒流超时关阀 kValveCmdManualClose, // 手动关阀 KValveCmdTimeSet, // 设置定时关阀时间 kValveCmdTimeResp, // 设置定时关阀时间响应 @@ -159,7 +159,7 @@ uint8_t BSP_VALVE_Open(TeFrameCmd open_reason); uint8_t BSP_VALVE_Lock(TeFrameCmd lock_reason); // 锁定阀门 uint8_t BSP_VALVE_Unlock(void); // 解锁阀门 uint8_t BSP_VALVE_CheckHazardCleared(void); // 检查隐患是否已排除 -static uint8_t BSP_VALVE_SetTimerClose(uint32_t minutes); +uint8_t BSP_VALVE_SetTimerClose(uint32_t minutes); static uint8_t BSP_VALVE_CancelTimerClose(void); static uint32_t BSP_VALVE_GetRemainingMinutes(void); #endif // ! __BSP_VALVE_H__ diff --git a/bsp/src/bsp_ml307r.c b/bsp/src/bsp_ml307r.c index c7cf033..8adc6dd 100644 --- a/bsp/src/bsp_ml307r.c +++ b/bsp/src/bsp_ml307r.c @@ -136,32 +136,14 @@ void Send_CallBack(MultiTimer* timer, void* userData) IotFlag_t.send_error_flag = 1; } -// //Loopص -// void Loop_CallBack(MultiTimer* timer, void* userData) -// { -// state = 0; -// IotFlag_t.Loop_count_flag++; -// IotFlag_t.module_init_flag = 1; -// IotFlag_t.Iot_Retry_flag = 0; -// } - //StopTaskʱص void StopTask_CallBack(MultiTimer* timer, void* userData) { logDebug("BSP_Ml307_Power_Off\r\n"); - // IotFlag_t.Loop_count_flag = 0; - // if(IotFlag_t.PowerOn_error_flag == 1) - // { - IotFlag_t.PowerOn_error_flag = 0; - // tmos_stop_task(ml307_task_id, ML307_PERIODIC_EVT); - // PFIC_DisableIRQ(UART1_IRQn); - // BSP_RequestSleep(); - // }else{ - // BSP_Ml307_Power_Off(); //ػ - tmos_stop_task(ml307_task_id, ML307_PERIODIC_EVT); - PFIC_DisableIRQ(UART1_IRQn); - BSP_RequestSleep(); - // } + IotFlag_t.PowerOn_error_flag = 0; + tmos_stop_task(ml307_task_id, ML307_PERIODIC_EVT); + PFIC_DisableIRQ(UART1_IRQn); + BSP_RequestSleep(); IotFlag_t.Date_Sending_flag = 0; } @@ -177,13 +159,11 @@ static int _parse_server_json_data(const char* json_str) lwjson_token_t tokens[64]; const lwjson_token_t* token; - // ʼlwjson if (lwjson_init(&lwjson, tokens, LWJSON_ARRAYSIZE(tokens)) != lwjsonOK) { logDebug("lwjson init failed\r\n"); return -1; } - // JSONַ if (lwjson_parse(&lwjson, json_str) != lwjsonOK) { logDebug("JSON parse failed\r\n"); lwjson_free(&lwjson); @@ -191,7 +171,6 @@ static int _parse_server_json_data(const char* json_str) } logDebug("JSON parse success\r\n"); - // 豸к token = lwjson_find(&lwjson, "sn"); if (token != NULL && token->type == LWJSON_TYPE_STRING) { char sn_str[32] = {0}; @@ -202,7 +181,6 @@ static int _parse_server_json_data(const char* json_str) } } - // ʱ uint32_t timestamp = 0; token = lwjson_find(&lwjson, "time"); if (token != NULL && token->type == LWJSON_TYPE_NUM_INT) { @@ -210,7 +188,6 @@ static int _parse_server_json_data(const char* json_str) logDebug("Timestamp: %u\r\n", timestamp); } - // TeFrameCmd msg_cmd = kCmdCfg; token = lwjson_find(&lwjson, "cmd"); if (token != NULL && token->type == LWJSON_TYPE_NUM_INT) { @@ -218,7 +195,6 @@ static int _parse_server_json_data(const char* json_str) logDebug("Message cmd: %d\r\n", msg_cmd); } - // ݲͬͽض switch (msg_cmd) { case kCmdCfg: logDebug("Data response %d\r\n", msg_cmd); @@ -230,7 +206,7 @@ static int _parse_server_json_data(const char* json_str) logDebug("Switch status: %d\r\n", switch_status); if (switch_status == 0) { logDebug("Command: Close valve\r\n"); - // BSP_VALVE_Close(); // ȡעִʵʲ + // BSP_VALVE_Close(); IotFlag_t.Valve_Close_flag = 1; } } @@ -242,7 +218,7 @@ static int _parse_server_json_data(const char* json_str) logDebug("Switch status: %d\r\n", switch_status); if (switch_status == 1) { logDebug("Command: Open valve\r\n"); - // BSP_VALVE_Open(); // ȡעִʵʲ + // BSP_VALVE_Open(); IotFlag_t.Valve_Open_flag = 1; } } @@ -252,6 +228,7 @@ static int _parse_server_json_data(const char* json_str) if (token != NULL && token->type == LWJSON_TYPE_NUM_INT) { uint32_t timer_minutes = (uint32_t)token->u.num_int; logDebug("Delay close time: %d minutes\r\n", timer_minutes); + BSP_VALVE_SetTimerClose(timer_minutes); } break; case kValveCmdOverPressure: @@ -259,7 +236,6 @@ static int _parse_server_json_data(const char* json_str) if (token != NULL && token->type == LWJSON_TYPE_NUM_INT) { uint16_t over_press = (uint16_t)token->u.num_int; logDebug("Over pressure threshold: %d Pa\r\n", over_press); - // ·ųѹֵ ValveInfo.over_press = over_press; } break; @@ -268,7 +244,6 @@ static int _parse_server_json_data(const char* json_str) if (token != NULL && token->type == LWJSON_TYPE_NUM_INT) { uint16_t low_press = (uint16_t)token->u.num_int; logDebug("Low pressure threshold: %d Pa\r\n", low_press); - // ·Ƿѹֵ ValveInfo.low_press = low_press; } break; @@ -277,7 +252,6 @@ static int _parse_server_json_data(const char* json_str) if (token != NULL && token->type == LWJSON_TYPE_NUM_INT) { uint32_t delay_close_time = (uint32_t)token->u.num_int; logDebug("Delay close time: %d minutes\r\n", delay_close_time); - // ·ʱ ValveInfo.delay_close_count = delay_close_time/5; logDebug("delay_close_count: %d \r\n", ValveInfo.delay_close_count); } @@ -287,27 +261,20 @@ static int _parse_server_json_data(const char* json_str) if (token != NULL && token->type == LWJSON_TYPE_NUM_INT) { uint8_t over_temp = (uint8_t)token->u.num_int; logDebug("Over temperature threshold: %dC\r\n", over_temp); - // ·ųֵ ValveInfo.over_temp = over_temp; } break; default: - // - logDebug("Unhandled command type: %d\r\n", msg_cmd); + logDebug("Unhandled command: %d\r\n", msg_cmd); break; } if (msg_cmd != kCmdCfg) { - // Ӧ Ts4GJsonData responseData; BSP_4G_Generate_Response(&responseData, timestamp, msg_cmd); - - // ڴ沢JSONַ char* response_json = (char *)tmos_msg_allocate(responseData.length + 1); if (response_json != NULL) { strcpy(response_json, responseData.json_buffer); logDebug("Response JSON: %s\r\n", response_json); - - // 浽ȫֱԱ㷢 json_data = response_json; BSP_SendMessage(); } else { @@ -813,7 +780,7 @@ static int MQTT_CfgConnSub(at_env_t *e) e->reset_timer(e); e->state++; } - if (e->is_timeout(e, 3000)) + if (e->is_timeout(e, 6000)) { e->state--; if (++e->i > 3) @@ -851,53 +818,6 @@ static void BSP_MQTT_CfgConnSub(void) at_do_work(ml307r_obj, NULL, MQTT_CfgConnSub); } - - -/* - * @brief 豸 - * @return - */ -static int BSP_Module_Connect_CtWing_Handle(at_env_t *e) -{ - switch (e->state) - { - case 0: - logDebug("create device...\r\n"); - e->println(e, "AT+MIPOPEN=0,\"TCP\",\"112.125.89.8\",46696,,1"); // 8.135.10.183,32994 - e->reset_timer(e); - e->state++; - break; - case 1: - if (e->contains(e, "CONNECT")) - { - IotFlag_t.Connect_success_flag = 1; - logDebug("create device complete\r\n"); - e->finish(e, AT_RESP_OK); - } - else if (e->is_timeout(e, 5000)) - { - e->state--; - if (++e->i > 3) - { - logDebug("create device error\r\n"); - IotFlag_t.Connect_error_flag = 1; - e->finish(e, AT_RESP_ERROR); - } - } - break; - default: - break; - } - return 0; -} -//ӷ -static void BSP_Module_Connect_CtWing(void) -{ - BSP_MQTT_CfgConnSub(); - // at_do_work(ml307r_obj, NULL, BSP_Module_Connect_CtWing_Handle);//豸 -} - - // void BSP_Module_Send_Data(uint8_t* data, uint8_t len) { @@ -1030,13 +950,11 @@ uint8_t BSP_4G_Generate_Response(Ts4GJsonData *p4GData, uint32_t timestamp, TeFr gValveData.switch_status ); - logDebug("4GӦJSON:\r\n%s", p4GData->json_buffer); + logDebug("4G Response JSON data:\r\n%s", p4GData->json_buffer); return 0; } - - static int SendMessage(at_env_t *e) { switch (e->state) @@ -1107,7 +1025,6 @@ void BSP_ML307_SendMessage(void) // JSON BSP_4G_Generate_JsonData(&g4GJsonData, cmd); - // ڴ沢JSONַ json_data = (char *)tmos_msg_allocate(g4GJsonData.length + 1); if (json_data != NULL) { @@ -1410,7 +1327,7 @@ static void BSP_Iot_Loop(void) { IotFlag_t.ModInfo_success_flag = 0; MultiTimerStart(&Multi_Connect_t, CONNECT_RETRY_INTERVAL_TIME, Connect_CallBack, NULL); - BSP_Module_Connect_CtWing(); + BSP_MQTT_CfgConnSub(); } if (IotFlag_t.Connect_success_flag) // ӳɹ { @@ -1476,8 +1393,7 @@ static void BSP_Iot_Loop(void) tmos_msg_deallocate((uint8_t *)json_data); json_data = NULL; } - - // Ƿд͵ + //TODO:ʹAT CommandŻ if (lwrb_get_full(&iot_send_queue) >= sizeof(TsIotSendRequest)) { logDebug("The queue has data to be sent, continue\r\n"); IotFlag_t.Connect_success_flag = 1; diff --git a/bsp/src/bsp_valve.c b/bsp/src/bsp_valve.c index ea9c2cf..ced1597 100644 --- a/bsp/src/bsp_valve.c +++ b/bsp/src/bsp_valve.c @@ -567,7 +567,7 @@ void BSP_VAVLE_Init(void) // 阀门初始化函数 gValveData.switch_status = kClosed; // 初始化阀门状态为关闭 } -static uint8_t BSP_VALVE_SetTimerClose(uint32_t minutes) +uint8_t BSP_VALVE_SetTimerClose(uint32_t minutes) { // 参数验证 if (minutes == 0 || minutes > 1440) { // 1分钟到24小时