From 6e3f1f560d618b37ee1a47fa2b0f682b70c3ef1c Mon Sep 17 00:00:00 2001
From: jinlicong <493886250@qq.com>
Date: Wed, 19 Jun 2024 17:25:45 +0800
Subject: [PATCH] 增加OTA协议

---
 Function/VALVE/valve_control.c |   88 ++++++++++++++++++++++++++++++++++----------
 1 files changed, 68 insertions(+), 20 deletions(-)

diff --git a/Function/VALVE/valve_control.c b/Function/VALVE/valve_control.c
index c18bc1c..c06e231 100644
--- a/Function/VALVE/valve_control.c
+++ b/Function/VALVE/valve_control.c
@@ -3,6 +3,8 @@
 #include "system_mem_para.h"
 #include "power_manage.h"
 #include "linked_list.h"
+#include "sizhu_alarm_record.h"
+#include "sizhu_event_record.h"
 
 __IO VALVE_CTRL_PARA_T	valve_ctrl_para_g;
 
@@ -59,12 +61,14 @@
 void ValveMotorCloseRun(void)
 {
 	
-	//�ж��Ƿ���Ҫ���ط�,����磬����������Ƴ�״̬�½��
-	if(__SYS_STATUS_BYTES_GET(alka_remove) == SET && __SYS_STATUS_BYTES_GET(alka_down) == SET){
-		if(__SYS_STATUS_BYTES_GET(power_state) == RESET){
-			borrow_Pwr_GPIO_Clk_Init();
-			BORROW_PWR_ON;
-			delay_ms(1);
+	//�ж��Ƿ���Ҫ���ط�,����磬����������Ƴ�״̬�½�㣬﮵�Ҫ������״̬
+	if(__SYS_STATUS_BYTES_GET(alka_remove) == SET || __SYS_STATUS_BYTES_GET(alka_down) == SET){
+		if(__SYS_STATUS_BYTES_GET(lith_low) == RESET && __SYS_STATUS_BYTES_GET(lith_down) == RESET && __SYS_STATUS_BYTES_GET(lith_remove) == RESET){
+			if(__SYS_STATUS_BYTES_GET(power_state) == RESET){
+				borrow_Pwr_GPIO_Clk_Init();
+				BORROW_PWR_ON;
+				delay_ms(1);
+			}
 		}
 	}
 	
@@ -172,10 +176,11 @@
 			ValveMotorStop();
 			save_valve_para_g.valve_status = VALVE_OPEN;
 			valve_ctrl_para_g.close_time_cnt = 0;
+			sizhuValveActionLogHandle(valve_ctrl_para_g.valve_ctrl_source, valve_ctrl_para_g.valve_ctrl_order,ALARM_ID_NORMAL);
 			valve_ctrl_para_g.valve_ctrl_order = VC_NONE;
 			
 		}else{
-			if(sys_fun_run_ctrl_p->rs485_ctrl_flag.running_flag==SET||sys_fun_run_ctrl_p->wrc_ctrl_flag.running_flag==SET){ //?Զ����485�ɼ���������ӳ�ִ�з��Ŷ���
+			if(sys_fun_run_ctrl_p->rs485_ctrl_flag.running_flag==SET||sys_fun_run_ctrl_p->wrc_ctrl_flag.running_flag==SET){ //Զ����485�ɼ���������ӳ�ִ�з��Ŷ���
 				;
 			}else{
 				valve_ctrl_para_g.open_time_cnt = GetValveRunMaxTime(caliber_type_l);
@@ -183,20 +188,27 @@
 				ValveMotorOpenRun();
 
 				save_valve_para_g.valve_status = VALVE_OPENING;
+				sizhuValveActionLogHandle(valve_ctrl_para_g.valve_ctrl_source, valve_ctrl_para_g.valve_ctrl_order,ALARM_ID_NORMAL);
 				valve_ctrl_para_g.valve_ctrl_order = VC_NONE;
 				delay_ms(10);  //�Ӻ���ն�
 				GPIO_EXTI_Init( Motor_OP_PORT, Motor_OP_PIN, EXTI_FALLING, ENABLE);
 			}
 		}
-	}else if(valve_ctrl_para_g.valve_ctrl_order == VC_CLOSE){
+	}else if((valve_ctrl_para_g.valve_ctrl_order == VC_CLOSE)||(valve_ctrl_para_g.valve_ctrl_order == VC_CLOSE_AND_LOCK )){
 		if(Read_OP_CL_VALVE_Status(0) == VALVE_CLOSE){
 			ValveMotorStop();
 			save_valve_para_g.valve_status = VALVE_CLOSE;
 			valve_ctrl_para_g.open_time_cnt = 0;
+			if((save_valve_para_g.valve_lock_state == VL_UNLOCK)&&(valve_ctrl_para_g.valve_ctrl_order == VC_CLOSE_AND_LOCK))
+			{
+				save_valve_para_g.valve_lock_state = VL_LOCK ;				
+			}
+			sizhuValveActionLogHandle(valve_ctrl_para_g.valve_ctrl_source, valve_ctrl_para_g.valve_ctrl_order,save_valve_para_g.valve_close_ID);
 			valve_ctrl_para_g.valve_ctrl_order = VC_NONE;
 			
+			
 		}else{
-			if(sys_fun_run_ctrl_p->rs485_ctrl_flag.running_flag==SET||sys_fun_run_ctrl_p->wrc_ctrl_flag.running_flag==SET){ //?Զ����485�ɼ���������ӳ�ִ�з��Ŷ���
+			if(sys_fun_run_ctrl_p->rs485_ctrl_flag.running_flag==SET||sys_fun_run_ctrl_p->wrc_ctrl_flag.running_flag==SET){ //Զ����485�ɼ���������ӳ�ִ�з��Ŷ���
 				;
 			}else{
 				
@@ -204,22 +216,45 @@
 				ValveMotorCloseRun();
 
 				save_valve_para_g.valve_status = VALVE_CLOSING;
+				
+				if((save_valve_para_g.valve_lock_state == VL_UNLOCK)&&(valve_ctrl_para_g.valve_ctrl_order == VC_CLOSE_AND_LOCK))
+				{
+					save_valve_para_g.valve_lock_state = VL_LOCK ;
+				}
+				
+				sizhuValveActionLogHandle(valve_ctrl_para_g.valve_ctrl_source, valve_ctrl_para_g.valve_ctrl_order,save_valve_para_g.valve_close_ID);
 				valve_ctrl_para_g.valve_ctrl_order = VC_NONE;	
+
 				delay_ms(10);  //�Ӻ���ն�
 				GPIO_EXTI_Init( Motor_CL_PORT, Motor_CL_PIN, EXTI_FALLING, ENABLE);
 			}
 		}
+	}else if(valve_ctrl_para_g.valve_ctrl_order == VC_LOCK){
+		if(save_valve_para_g.valve_lock_state == VL_UNLOCK)
+		{
+			save_valve_para_g.valve_lock_state = VL_LOCK ;
+			sizhuValveActionLogHandle(valve_ctrl_para_g.valve_ctrl_source, valve_ctrl_para_g.valve_ctrl_order,ALARM_ID_NORMAL);
+		}
+		valve_ctrl_para_g.valve_ctrl_order = VC_NONE;	
+		
+	}else if(valve_ctrl_para_g.valve_ctrl_order == VC_UNLOCK){
+		if(save_valve_para_g.valve_lock_state == VL_LOCK)
+		{
+			save_valve_para_g.valve_lock_state =  VL_UNLOCK;
+			sizhuValveActionLogHandle(valve_ctrl_para_g.valve_ctrl_source, valve_ctrl_para_g.valve_ctrl_order,ALARM_ID_NORMAL);
+		}
+		valve_ctrl_para_g.valve_ctrl_order = VC_NONE;	
 	}else{
 
 	}
 	
-	//?�жϿ��ط��Ƿ�λ
+	//�жϿ��ط��Ƿ�λ
 	if(save_valve_para_g.valve_status==VALVE_OPENING){
 		if(Read_OP_CL_VALVE_Status(0) ==VALVE_OPEN){
 			ValveMotorStop();//�ر�����
 			save_valve_para_g.valve_status = VALVE_OPEN;
 		}else if(valve_ctrl_para_g.open_time_cnt==0){
-			//?��ʱ����
+			//��ʱ����
 			ValveMotorStop();
 			save_valve_para_g.valve_status = VALVE_ERROR;
 			
@@ -236,7 +271,7 @@
 			ValveMotorStop();//�ر�����
 			save_valve_para_g.valve_status = VALVE_CLOSE;
 		}else if(valve_ctrl_para_g.close_time_cnt==0){
-			//?��ʱ����
+			//��ʱ����
 			ValveMotorStop();
 			save_valve_para_g.valve_status = VALVE_ERROR;
 			
@@ -281,11 +316,16 @@
 
 
 //���Ų�������������������������У������ط�������Ҫֹͣ������ת�����йط�
-ErrorStatus ValveCtrlOrder(VALVE_CTRL_TYPE_T valve_ctrl_order_l) 
+ErrorStatus ValveCtrlOrder(VALVE_CTRL_TYPE_T valve_ctrl_order_l,VALVE_CTRL_SOURCE_T valve_ctrl_source) 
 {
+	valve_ctrl_para_g.valve_ctrl_source = valve_ctrl_source;
 	switch(valve_ctrl_order_l){
 		case VC_NONE:break;
 		case VC_OPEN:
+			
+			if((__SYS_STATUS_BYTES_GET(alka_remove) == SET || __SYS_STATUS_BYTES_GET(alka_down) == SET)&&(__SYS_STATUS_BYTES_GET(power_state) ==RESET)){
+				return FAIL;//���û����û����磬��������
+			}
 			if((save_valve_para_g.valve_status == VALVE_CLOSE)&&(valve_ctrl_para_g.force_open_status==RESET)){
 				valve_ctrl_para_g.valve_ctrl_order = VC_OPEN;
 				pwr_vol_g.alka_flag = AMS_VALVE_CTRL_BEFORE;
@@ -297,17 +337,25 @@
 			if((save_valve_para_g.valve_status != VALVE_CLOSE)&&(save_valve_para_g.valve_status != VALVE_CLOSING)&&(valve_ctrl_para_g.force_open_status==RESET)){
 				valve_ctrl_para_g.valve_ctrl_order = VC_CLOSE;
 				pwr_vol_g.alka_flag = AMS_VALVE_CTRL_BEFORE;
-				return PASS;
 			}
-		break;
+			return PASS;
+//		break;
+		case VC_CLOSE_AND_LOCK:
+				valve_ctrl_para_g.valve_ctrl_order = VC_LOCK; //�Ƚ����������жϷ���״̬���費��Ҫִ�йط�
+			if((save_valve_para_g.valve_status != VALVE_CLOSE)&&(save_valve_para_g.valve_status != VALVE_CLOSING)&&(valve_ctrl_para_g.force_open_status==RESET)){
+				valve_ctrl_para_g.valve_ctrl_order = VC_CLOSE_AND_LOCK;
+				pwr_vol_g.alka_flag = AMS_VALVE_CTRL_BEFORE;
+				
+			}
+			return PASS;
 		
 		case VC_UNLOCK:
-			save_valve_para_g.valve_lock_state = VL_UNLOCK;
+			valve_ctrl_para_g.valve_ctrl_order = VC_UNLOCK;
 			return PASS;
 //		break;
 		
 		case VC_LOCK:
-			save_valve_para_g.valve_lock_state = VL_LOCK;
+			valve_ctrl_para_g.valve_ctrl_order = VC_LOCK;
 			return PASS;
 //		break;
 		
@@ -332,7 +380,7 @@
 		if(valve_ctrl_para_g.force_open_status !=SET){
 			valve_ctrl_para_g.force_open_status =SET;
 			//��ʼ����ǿ��
-			
+			sizhuValveActionLogHandle(VALVE_CTRL_FORCE_OPEN, VC_FORCE_OPEN,ALARM_ID_NORMAL);
 		}
 			
 		
@@ -354,10 +402,10 @@
 	
 }
 
-void	valveCtrlPro(FUN_START_CTRL_PARA_T * sys_fun_run_ctrl_p) //?  ���Ҫ������������ú���ValveCtrlOrder��VC_OPEN��;��δ����������
+void	valveCtrlPro(FUN_START_CTRL_PARA_T * sys_fun_run_ctrl_p) //���Ҫ������������ú���ValveCtrlOrder��VC_OPEN��;��δ����������
 {
 	
-	ValveForceOpenSignalCheck();//?ǿ���жϴ���
+	ValveForceOpenSignalCheck();//ǿ���жϴ���
 	
 	ValveCtrlHade(equipment_basic_inf_g.caliber_type,sys_fun_run_ctrl_p);//���·��Ų���������
 	

--
Gitblit v1.9.3