Browse Source

Shutdown Timer 추가 Shutdown 기능 구현 검증 필요.

PYJ 5 years ago
parent
commit
0275fb2d33
4 changed files with 1014 additions and 359 deletions
  1. 8 0
      Bluecell_Inc/Bluecell_operate.h
  2. 718 314
      Bluecell_Src/Bluecell_operate.c
  3. 4 0
      Inc/main.h
  4. 284 45
      Src/main.c

+ 8 - 0
Bluecell_Inc/Bluecell_operate.h

@@ -107,6 +107,13 @@ typedef enum{
107
     AGC_Alarm_DL4_Index,            
107
     AGC_Alarm_DL4_Index,            
108
     AGC_Alarm_DL_Index_MAX,      
108
     AGC_Alarm_DL_Index_MAX,      
109
 };
109
 };
110
+typedef enum{
111
+    ALC_Alarm_UL1_Index = 0,
112
+    ALC_Alarm_UL2_Index,        
113
+    ALC_Alarm_UL3_Index,        
114
+    ALC_Alarm_UL4_Index,            
115
+    ALC_Alarm_UL_Index_MAX,            
116
+};
110
 
117
 
111
 typedef enum{
118
 typedef enum{
112
 	Alarm_Bit_List = 0xE000,
119
 	Alarm_Bit_List = 0xE000,
@@ -400,6 +407,7 @@ ULO_Shutdown_Alarm4,
400
 }SERIAL_UL_t;
407
 }SERIAL_UL_t;
401
 
408
 
402
 
409
 
410
+#define RETRYCNT_MAX 4
403
 
411
 
404
 
412
 
405
 #define MBIC_HEADER_SIZE 18
413
 #define MBIC_HEADER_SIZE 18

File diff suppressed because it is too large
+ 718 - 314
Bluecell_Src/Bluecell_operate.c


+ 4 - 0
Inc/main.h

@@ -173,6 +173,10 @@ extern I2C_HandleTypeDef hi2c2;
173
 #define ATT_EN_DL1_GPIO_Port GPIOB
173
 #define ATT_EN_DL1_GPIO_Port GPIOB
174
 /* USER CODE BEGIN Private defines */
174
 /* USER CODE BEGIN Private defines */
175
 #define MBIC_ON_MAINTAIN_SEC 3000
175
 #define MBIC_ON_MAINTAIN_SEC 3000
176
+#define MBIC_ON_SHUTDOWN_MAINTAIN_SEC 5000
177
+#define MBIC_RECOVERY_SHUTDOWN_MAINTAIN_SEC 35000
178
+
179
+
176
 #define MBIC_OFF_MAINTAIN_SEC 10000
180
 #define MBIC_OFF_MAINTAIN_SEC 10000
177
 
181
 
178
 #define ADC_AVERAGECNT 500
182
 #define ADC_AVERAGECNT 500

+ 284 - 45
Src/main.c

@@ -72,30 +72,47 @@ volatile uint32_t AdcTimerCnt = 0;
72
 volatile uint32_t LedTimerCnt = 0;
72
 volatile uint32_t LedTimerCnt = 0;
73
 volatile uint32_t UartRxTimerCnt = 0;
73
 volatile uint32_t UartRxTimerCnt = 0;
74
 volatile uint32_t LDTimerCnt = 0;
74
 volatile uint32_t LDTimerCnt = 0;
75
+
75
 volatile uint32_t ALCTimerCnt = 0;
76
 volatile uint32_t ALCTimerCnt = 0;
76
 volatile uint32_t AGCTimerCnt = 0;
77
 volatile uint32_t AGCTimerCnt = 0;
77
-volatile uint32_t AGCAlarmTimerCnt[AGC_Alarm_DL_Index_MAX] = {0,};
78
+
79
+volatile uint32_t AGC_On_AlarmTimerCnt[AGC_Alarm_DL_Index_MAX] = {0,};
80
+volatile uint32_t AGC_Off_AlarmTimerCnt[AGC_Alarm_DL_Index_MAX] = {0,};
81
+
82
+volatile uint32_t ALC_On_AlarmTimerCnt[ALC_Alarm_UL_Index_MAX] = {0,};
83
+volatile uint32_t ALC_Off_AlarmTimerCnt[ALC_Alarm_UL_Index_MAX] = {0,};
84
+
85
+
78
 volatile uint32_t DET_UL_On_AlarmTimerCnt[DET_Alarm_UL_Index_MAX] = {0,};
86
 volatile uint32_t DET_UL_On_AlarmTimerCnt[DET_Alarm_UL_Index_MAX] = {0,};
79
-volatile uint32_t DET_DL_On_AlarmTimerCnt[DET_Alarm_DL_Index_MAX] = {0,};
80
 volatile uint32_t DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL_Index_MAX] = {0,};
87
 volatile uint32_t DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL_Index_MAX] = {0,};
81
-volatile uint32_t DET_DL_Off_AlarmTimerCnt[DET_Alarm_DL_Index_MAX] = {0,};
82
 
88
 
89
+volatile uint32_t DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL_Index_MAX] = {0,};
90
+volatile uint32_t DET_DL_High_On_AlarmTimerCnt[DET_Alarm_DL_Index_MAX] = {0,};
91
+volatile uint32_t DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL_Index_MAX] = {0,};
92
+volatile uint32_t DET_DL_High_Off_AlarmTimerCnt[DET_Alarm_DL_Index_MAX] = {0,};
93
+
94
+
95
+volatile uint32_t DET_UL_Shutdown_On_AlarmTimerCnt[DET_Alarm_UL_Index_MAX] = {0,};
96
+volatile uint32_t DET_UL_Shutdown_Off_AlarmTimerCnt[DET_Alarm_UL_Index_MAX] = {0,};
97
+
98
+volatile uint32_t DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL_Index_MAX] = {0,};
99
+volatile uint32_t DET_DL_Shutdown_Off_AlarmTimerCnt[DET_Alarm_DL_Index_MAX] = {0,};
83
 
100
 
84
 
101
 
85
-volatile bool     AlarmTimerOnSet = 0;
86
-volatile bool     AlarmTimerOffSet = 0;
87
 volatile uint32_t AlarmTimerOffCnt = 0;
102
 volatile uint32_t AlarmTimerOffCnt = 0;
88
 volatile uint32_t AlarmTimerOnCnt = 0;
103
 volatile uint32_t AlarmTimerOnCnt = 0;
89
 
104
 
90
 
105
 
91
-extern bool AGC_AlarmTimerSet[AGC_Alarm_DL_Index_MAX];
106
+volatile bool     AlarmTimerOnSet = 0;
107
+volatile bool     AlarmTimerOffSet = 0;
108
+//extern bool AGC_AlarmTimerSet[AGC_Alarm_DL_Index_MAX];
92
 extern bool ADC_Alarm_DL_High_Set[DET_Alarm_DL_Index_MAX];
109
 extern bool ADC_Alarm_DL_High_Set[DET_Alarm_DL_Index_MAX];
93
 extern bool ADC_Alarm_DL_Low_Set[DET_Alarm_DL_Index_MAX];
110
 extern bool ADC_Alarm_DL_Low_Set[DET_Alarm_DL_Index_MAX];
94
 
111
 
95
 extern bool ADC_Alarm_UL_Set[DET_Alarm_UL_Index_MAX];
112
 extern bool ADC_Alarm_UL_Set[DET_Alarm_UL_Index_MAX];
96
-
97
-
98
-
113
+extern uint8_t ALC_AlarmSet[ALC_Alarm_UL_Index_MAX];
114
+extern bool AGC_AlarmSet[AGC_Alarm_DL_Index_MAX];
115
+extern bool ADC_Alarm_UL_Shutdown_Set[DET_Alarm_UL_Shutdown_Index_MAX];
99
 /* USER CODE END PV */
116
 /* USER CODE END PV */
100
 
117
 
101
 /* Private function prototypes -----------------------------------------------*/
118
 /* Private function prototypes -----------------------------------------------*/
@@ -879,104 +896,326 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
879
       LDTimerCnt++;
896
       LDTimerCnt++;
880
       ALCTimerCnt++;
897
       ALCTimerCnt++;
881
       AGCTimerCnt++;
898
       AGCTimerCnt++;
882
-      if(AGC_AlarmTimerSet[AGC_Alarm_DL1_Index] == true){
883
-          AGCAlarmTimerCnt[AGC_Alarm_DL1_Index]++;
884
-          if(AGCAlarmTimerCnt[AGC_Alarm_DL1_Index] == 0xFFFFFFFF){
885
-            AGCAlarmTimerCnt[AGC_Alarm_DL1_Index] = MBIC_ON_MAINTAIN_SEC;
899
+
900
+
901
+      if(ADC_Alarm_UL_Shutdown_Set[DET_Alarm_UL1_Shutdown_Index] == true){
902
+              DET_UL_Shutdown_Off_AlarmTimerCnt[ALC_Alarm_UL1_Index] = 0;
903
+              DET_UL_Shutdown_On_AlarmTimerCnt[ALC_Alarm_UL1_Index]++;
904
+              if(DET_UL_Shutdown_On_AlarmTimerCnt[ALC_Alarm_UL1_Index] == 0xFFFFFFFF){
905
+                DET_UL_Shutdown_On_AlarmTimerCnt[ALC_Alarm_UL1_Index] = MBIC_ON_MAINTAIN_SEC;
906
+              }
907
+          }else{
908
+              DET_UL_Shutdown_On_AlarmTimerCnt[ALC_Alarm_UL1_Index] = 0;
909
+              DET_UL_Shutdown_Off_AlarmTimerCnt[ALC_Alarm_UL1_Index]++;
910
+              if(DET_UL_Shutdown_Off_AlarmTimerCnt[ALC_Alarm_UL1_Index] == 0xFFFFFFFF){
911
+                DET_UL_Shutdown_Off_AlarmTimerCnt[ALC_Alarm_UL1_Index] = MBIC_OFF_MAINTAIN_SEC;
912
+              }
913
+
914
+
915
+      }
916
+      /*ALC Alarm timer start*/
917
+      if(ALC_AlarmSet[ALC_Alarm_UL1_Index] == true){
918
+          ALC_Off_AlarmTimerCnt[ALC_Alarm_UL1_Index] = 0;
919
+          ALC_On_AlarmTimerCnt[ALC_Alarm_UL1_Index]++;
920
+          if(ALC_On_AlarmTimerCnt[ALC_Alarm_UL1_Index] == 0xFFFFFFFF){
921
+            ALC_On_AlarmTimerCnt[ALC_Alarm_UL1_Index] = MBIC_ON_MAINTAIN_SEC;
886
           }
922
           }
923
+      }else{
924
+          ALC_On_AlarmTimerCnt[ALC_Alarm_UL1_Index] = 0;
925
+          ALC_Off_AlarmTimerCnt[ALC_Alarm_UL1_Index]++;
926
+          if(ALC_Off_AlarmTimerCnt[ALC_Alarm_UL1_Index] == 0xFFFFFFFF){
927
+            ALC_Off_AlarmTimerCnt[ALC_Alarm_UL1_Index] = MBIC_OFF_MAINTAIN_SEC;
928
+          }          
887
       }
929
       }
888
-      if(AGC_AlarmTimerSet[AGC_Alarm_DL2_Index] == true){
889
-          AGCAlarmTimerCnt[AGC_Alarm_DL2_Index]++;
890
-          if(AGCAlarmTimerCnt[AGC_Alarm_DL2_Index] == 0xFFFFFFFF){
891
-            AGCAlarmTimerCnt[AGC_Alarm_DL2_Index] = MBIC_ON_MAINTAIN_SEC;
930
+
931
+      if(ALC_AlarmSet[ALC_Alarm_UL2_Index] == true){
932
+          ALC_On_AlarmTimerCnt[ALC_Alarm_UL2_Index]++;
933
+          ALC_Off_AlarmTimerCnt[ALC_Alarm_UL2_Index] = 0;
934
+          if(ALC_On_AlarmTimerCnt[ALC_Alarm_UL2_Index] == 0xFFFFFFFF){
935
+            ALC_On_AlarmTimerCnt[ALC_Alarm_UL2_Index] = MBIC_ON_MAINTAIN_SEC;
892
           }
936
           }
893
-          
937
+      }else{
938
+          ALC_On_AlarmTimerCnt[ALC_Alarm_UL2_Index] = 0;
939
+          ALC_Off_AlarmTimerCnt[ALC_Alarm_UL2_Index]++;
940
+          if(ALC_Off_AlarmTimerCnt[ALC_Alarm_UL2_Index] == 0xFFFFFFFF){
941
+            ALC_Off_AlarmTimerCnt[ALC_Alarm_UL2_Index] = MBIC_OFF_MAINTAIN_SEC;
942
+          }          
894
       }
943
       }
895
-      if(AGC_AlarmTimerSet[AGC_Alarm_DL3_Index] == true){
896
-          AGCAlarmTimerCnt[AGC_Alarm_DL3_Index]++;
897
-          if(AGCAlarmTimerCnt[AGC_Alarm_DL3_Index] == 0xFFFFFFFF){
898
-            AGCAlarmTimerCnt[AGC_Alarm_DL3_Index] = MBIC_ON_MAINTAIN_SEC;
944
+      if(ALC_AlarmSet[ALC_Alarm_UL3_Index] == true){
945
+          ALC_On_AlarmTimerCnt[ALC_Alarm_UL3_Index]++;
946
+          ALC_Off_AlarmTimerCnt[ALC_Alarm_UL3_Index] = 0;
947
+          if(ALC_On_AlarmTimerCnt[ALC_Alarm_UL3_Index] == 0xFFFFFFFF){
948
+            ALC_On_AlarmTimerCnt[ALC_Alarm_UL3_Index] = MBIC_ON_MAINTAIN_SEC;
949
+          }
950
+      }else{
951
+          ALC_On_AlarmTimerCnt[ALC_Alarm_UL3_Index] = 0;
952
+          ALC_Off_AlarmTimerCnt[ALC_Alarm_UL3_Index]++;
953
+          if(ALC_Off_AlarmTimerCnt[ALC_Alarm_UL3_Index] == 0xFFFFFFFF){
954
+            ALC_Off_AlarmTimerCnt[ALC_Alarm_UL3_Index] = MBIC_OFF_MAINTAIN_SEC;
899
           }          
955
           }          
900
       }
956
       }
901
-      if(AGC_AlarmTimerSet[AGC_Alarm_DL4_Index] == true){
902
-          AGCAlarmTimerCnt[AGC_Alarm_DL4_Index]++;  
903
-          if(AGCAlarmTimerCnt[AGC_Alarm_DL4_Index] == 0xFFFFFFFF){
904
-            AGCAlarmTimerCnt[AGC_Alarm_DL4_Index] = MBIC_ON_MAINTAIN_SEC;
957
+      if(ALC_AlarmSet[ALC_Alarm_UL4_Index] == true){
958
+          ALC_On_AlarmTimerCnt[ALC_Alarm_UL4_Index]++;
959
+          ALC_Off_AlarmTimerCnt[ALC_Alarm_UL4_Index] = 0;
960
+          if(ALC_On_AlarmTimerCnt[ALC_Alarm_UL4_Index] == 0xFFFFFFFF){
961
+            ALC_On_AlarmTimerCnt[ALC_Alarm_UL4_Index] = MBIC_ON_MAINTAIN_SEC;
962
+          }
963
+      }else{
964
+          ALC_On_AlarmTimerCnt[ALC_Alarm_UL4_Index] = 0;
965
+          ALC_Off_AlarmTimerCnt[ALC_Alarm_UL4_Index]++;
966
+          if(ALC_Off_AlarmTimerCnt[ALC_Alarm_UL4_Index] == 0xFFFFFFFF){
967
+            ALC_Off_AlarmTimerCnt[ALC_Alarm_UL4_Index] = MBIC_OFF_MAINTAIN_SEC;
968
+          }          
969
+      }     
970
+
971
+      /*AGC Alarm timer start*/      
972
+      if(AGC_AlarmSet[AGC_Alarm_DL1_Index] == true){
973
+          AGC_On_AlarmTimerCnt[AGC_Alarm_DL1_Index]++;
974
+          AGC_Off_AlarmTimerCnt[AGC_Alarm_DL1_Index] = 0;
975
+          if(AGC_On_AlarmTimerCnt[AGC_Alarm_DL1_Index] == 0xFFFFFFFF){
976
+            AGC_On_AlarmTimerCnt[AGC_Alarm_DL1_Index] = MBIC_ON_MAINTAIN_SEC;
977
+          }
978
+      }else{
979
+          AGC_On_AlarmTimerCnt[AGC_Alarm_DL1_Index] = 0;
980
+          AGC_Off_AlarmTimerCnt[AGC_Alarm_DL1_Index]++;
981
+          if(AGC_Off_AlarmTimerCnt[AGC_Alarm_DL1_Index] == 0xFFFFFFFF){
982
+            AGC_Off_AlarmTimerCnt[AGC_Alarm_DL1_Index] = MBIC_OFF_MAINTAIN_SEC;
905
           }          
983
           }          
906
       }
984
       }
907
 
985
 
986
+      if(AGC_AlarmSet[AGC_Alarm_DL2_Index] == true){
987
+          AGC_On_AlarmTimerCnt[AGC_Alarm_DL2_Index]++;
988
+          AGC_Off_AlarmTimerCnt[AGC_Alarm_DL2_Index] = 0;
989
+          if(AGC_On_AlarmTimerCnt[AGC_Alarm_DL2_Index] == 0xFFFFFFFF){
990
+            AGC_On_AlarmTimerCnt[AGC_Alarm_DL2_Index] = MBIC_ON_MAINTAIN_SEC;
991
+          }
992
+      }else{
993
+          AGC_On_AlarmTimerCnt[AGC_Alarm_DL2_Index] = 0;
994
+          AGC_Off_AlarmTimerCnt[AGC_Alarm_DL2_Index]++;
995
+          if(AGC_Off_AlarmTimerCnt[AGC_Alarm_DL2_Index] == 0xFFFFFFFF){
996
+            AGC_Off_AlarmTimerCnt[AGC_Alarm_DL2_Index] = MBIC_OFF_MAINTAIN_SEC;
997
+          }          
998
+      }
999
+      if(AGC_AlarmSet[AGC_Alarm_DL3_Index] == true){
1000
+          AGC_On_AlarmTimerCnt[AGC_Alarm_DL3_Index]++;
1001
+          AGC_Off_AlarmTimerCnt[AGC_Alarm_DL3_Index] = 0;
1002
+          if(AGC_On_AlarmTimerCnt[AGC_Alarm_DL3_Index] == 0xFFFFFFFF){
1003
+            AGC_On_AlarmTimerCnt[AGC_Alarm_DL3_Index] = MBIC_ON_MAINTAIN_SEC;
1004
+          }
1005
+      }else{
1006
+          AGC_On_AlarmTimerCnt[AGC_Alarm_DL3_Index] = 0;
1007
+          AGC_Off_AlarmTimerCnt[AGC_Alarm_DL3_Index]++;
1008
+          if(AGC_Off_AlarmTimerCnt[AGC_Alarm_DL3_Index] == 0xFFFFFFFF){
1009
+            AGC_Off_AlarmTimerCnt[AGC_Alarm_DL3_Index] = MBIC_OFF_MAINTAIN_SEC;
1010
+          }          
1011
+      }
1012
+      if(AGC_AlarmSet[AGC_Alarm_DL4_Index] == true){
1013
+          AGC_On_AlarmTimerCnt[AGC_Alarm_DL4_Index]++;
1014
+          AGC_Off_AlarmTimerCnt[AGC_Alarm_DL4_Index] = 0;
1015
+          if(AGC_On_AlarmTimerCnt[AGC_Alarm_DL4_Index] == 0xFFFFFFFF){
1016
+            AGC_On_AlarmTimerCnt[AGC_Alarm_DL4_Index] = MBIC_ON_MAINTAIN_SEC;
1017
+          }
1018
+      }else{
1019
+          AGC_On_AlarmTimerCnt[AGC_Alarm_DL4_Index] = 0;
1020
+          AGC_Off_AlarmTimerCnt[AGC_Alarm_DL4_Index]++;
1021
+          if(AGC_Off_AlarmTimerCnt[AGC_Alarm_DL4_Index] == 0xFFFFFFFF){
1022
+            AGC_Off_AlarmTimerCnt[AGC_Alarm_DL4_Index] = MBIC_OFF_MAINTAIN_SEC;
1023
+          }          
1024
+      }      
1025
+    
1026
+
1027
+
1028
+    /*********************UL LEVEL HIGH START****************************/
908
 
1029
 
909
     if(ADC_Alarm_UL_Set[DET_Alarm_UL1_Index ] == true){
1030
     if(ADC_Alarm_UL_Set[DET_Alarm_UL1_Index ] == true){
1031
+        
910
         DET_UL_On_AlarmTimerCnt[DET_Alarm_UL1_Index]++;
1032
         DET_UL_On_AlarmTimerCnt[DET_Alarm_UL1_Index]++;
911
         DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL1_Index] = 0;
1033
         DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL1_Index] = 0;
912
-
913
         if(DET_UL_On_AlarmTimerCnt[DET_Alarm_UL1_Index] == 0xFFFFFFFF){
1034
         if(DET_UL_On_AlarmTimerCnt[DET_Alarm_UL1_Index] == 0xFFFFFFFF){
914
             DET_UL_On_AlarmTimerCnt[DET_Alarm_UL1_Index] = MBIC_ON_MAINTAIN_SEC;
1035
             DET_UL_On_AlarmTimerCnt[DET_Alarm_UL1_Index] = MBIC_ON_MAINTAIN_SEC;
915
-        }   
916
-        
1036
+        }
917
     }
1037
     }
918
     else{
1038
     else{
919
         DET_UL_On_AlarmTimerCnt[DET_Alarm_UL1_Index] = 0;
1039
         DET_UL_On_AlarmTimerCnt[DET_Alarm_UL1_Index] = 0;
920
         DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL1_Index]++;
1040
         DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL1_Index]++;
921
-
922
         if(DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL1_Index] == 0xFFFFFFFF){
1041
         if(DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL1_Index] == 0xFFFFFFFF){
923
             DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL1_Index] = MBIC_OFF_MAINTAIN_SEC;
1042
             DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL1_Index] = MBIC_OFF_MAINTAIN_SEC;
924
-        }           
1043
+        }    
925
     }
1044
     }
926
-#if 0 // PYJ.2020.05.27_BEGIN -- 
927
 
1045
 
928
     if(ADC_Alarm_UL_Set[DET_Alarm_UL2_Index ] == true){
1046
     if(ADC_Alarm_UL_Set[DET_Alarm_UL2_Index ] == true){
929
         DET_UL_On_AlarmTimerCnt[DET_Alarm_UL2_Index]++;
1047
         DET_UL_On_AlarmTimerCnt[DET_Alarm_UL2_Index]++;
1048
+        DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL2_Index] = 0;
1049
+        if(DET_UL_On_AlarmTimerCnt[DET_Alarm_UL2_Index] == 0xFFFFFFFF){
1050
+            DET_UL_On_AlarmTimerCnt[DET_Alarm_UL2_Index] = MBIC_ON_MAINTAIN_SEC;
1051
+        }    
930
     }
1052
     }
931
     else{
1053
     else{
932
         DET_UL_On_AlarmTimerCnt[DET_Alarm_UL2_Index] = 0;
1054
         DET_UL_On_AlarmTimerCnt[DET_Alarm_UL2_Index] = 0;
1055
+        DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL2_Index]++;
1056
+        if(DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL2_Index] == 0xFFFFFFFF){
1057
+            DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL2_Index] = MBIC_OFF_MAINTAIN_SEC;
1058
+        }     
933
     }
1059
     }
934
 
1060
 
935
     if(ADC_Alarm_UL_Set[DET_Alarm_UL3_Index ] == true){
1061
     if(ADC_Alarm_UL_Set[DET_Alarm_UL3_Index ] == true){
936
         DET_UL_On_AlarmTimerCnt[DET_Alarm_UL3_Index]++;
1062
         DET_UL_On_AlarmTimerCnt[DET_Alarm_UL3_Index]++;
1063
+        DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL3_Index] = 0;     
1064
+        if(DET_UL_On_AlarmTimerCnt[DET_Alarm_UL3_Index] == 0xFFFFFFFF){
1065
+            DET_UL_On_AlarmTimerCnt[DET_Alarm_UL3_Index] = MBIC_ON_MAINTAIN_SEC;
1066
+        }    
937
     }
1067
     }
938
     else{
1068
     else{
939
         DET_UL_On_AlarmTimerCnt[DET_Alarm_UL3_Index] = 0;
1069
         DET_UL_On_AlarmTimerCnt[DET_Alarm_UL3_Index] = 0;
1070
+        DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL3_Index]++;  
1071
+        if(DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL3_Index] == 0xFFFFFFFF){
1072
+            DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL3_Index] = MBIC_OFF_MAINTAIN_SEC;
1073
+        }     
940
     }
1074
     }
941
 
1075
 
942
     if(ADC_Alarm_UL_Set[DET_Alarm_UL4_Index ] == true){
1076
     if(ADC_Alarm_UL_Set[DET_Alarm_UL4_Index ] == true){
943
         DET_UL_On_AlarmTimerCnt[DET_Alarm_UL4_Index]++;
1077
         DET_UL_On_AlarmTimerCnt[DET_Alarm_UL4_Index]++;
1078
+        DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL4_Index] = 0;    
1079
+        if(DET_UL_On_AlarmTimerCnt[DET_Alarm_UL4_Index] == 0xFFFFFFFF){
1080
+            DET_UL_On_AlarmTimerCnt[DET_Alarm_UL4_Index] = MBIC_ON_MAINTAIN_SEC;
1081
+        }    
944
     }
1082
     }
945
     else{
1083
     else{
946
         DET_UL_On_AlarmTimerCnt[DET_Alarm_UL4_Index] = 0;
1084
         DET_UL_On_AlarmTimerCnt[DET_Alarm_UL4_Index] = 0;
1085
+        DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL4_Index]++;       
1086
+        if(DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL4_Index] == 0xFFFFFFFF){
1087
+            DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL4_Index] = MBIC_OFF_MAINTAIN_SEC;
1088
+        }     
947
     }
1089
     }
948
 
1090
 
949
 
1091
 
950
 
1092
 
951
 
1093
 
952
-    if(ADC_Alarm_DL_Set[DET_Alarm_DL1_Index ] == true){
953
-        DET_DL_On_AlarmTimerCnt[DET_Alarm_DL1_Index]++;
1094
+
1095
+    /*********************DL LEVEL LOW START****************************/
1096
+    if(ADC_Alarm_DL_Low_Set[DET_Alarm_DL1_Index ] == true){
1097
+        
1098
+        DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL1_Index]++;
1099
+        DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL1_Index] = 0;
1100
+        if(DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL1_Index] == 0xFFFFFFFF){
1101
+            DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL1_Index] = MBIC_ON_MAINTAIN_SEC;
1102
+        }
1103
+    }
1104
+    else{
1105
+        DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL1_Index] = 0;
1106
+        DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL1_Index]++;
1107
+        if(DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL1_Index] == 0xFFFFFFFF){
1108
+            DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL1_Index] = MBIC_OFF_MAINTAIN_SEC;
1109
+        }    
1110
+    }
1111
+
1112
+    if(ADC_Alarm_DL_Low_Set[DET_Alarm_DL2_Index ] == true){
1113
+        DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL2_Index]++;
1114
+        DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL2_Index] = 0;
1115
+        if(DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL2_Index] == 0xFFFFFFFF){
1116
+            DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL2_Index] = MBIC_ON_MAINTAIN_SEC;
1117
+        }    
1118
+    }
1119
+    else{
1120
+        DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL2_Index] = 0;
1121
+        DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL2_Index]++;
1122
+        if(DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL2_Index] == 0xFFFFFFFF){
1123
+            DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL2_Index] = MBIC_OFF_MAINTAIN_SEC;
1124
+        }     
1125
+    }
1126
+
1127
+    if(ADC_Alarm_DL_Low_Set[DET_Alarm_DL3_Index ] == true){
1128
+        DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL3_Index]++;
1129
+        DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL3_Index] = 0;     
1130
+        if(DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL3_Index] == 0xFFFFFFFF){
1131
+            DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL3_Index] = MBIC_ON_MAINTAIN_SEC;
1132
+        }    
1133
+    }
1134
+    else{
1135
+        DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL3_Index] = 0;
1136
+        DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL3_Index]++;  
1137
+        if(DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL3_Index] == 0xFFFFFFFF){
1138
+            DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL3_Index] = MBIC_OFF_MAINTAIN_SEC;
1139
+        }     
1140
+    }
1141
+
1142
+    if(ADC_Alarm_DL_Low_Set[DET_Alarm_DL4_Index ] == true){
1143
+        DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL4_Index]++;
1144
+        DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL4_Index] = 0;    
1145
+        if(DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL4_Index] == 0xFFFFFFFF){
1146
+            DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL4_Index] = MBIC_ON_MAINTAIN_SEC;
1147
+        }    
1148
+    }
1149
+    else{
1150
+        DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL4_Index] = 0;
1151
+        DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL4_Index]++;       
1152
+        if(DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL4_Index] == 0xFFFFFFFF){
1153
+            DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL4_Index] = MBIC_OFF_MAINTAIN_SEC;
1154
+        }     
1155
+    }
1156
+    /*********************DL LEVEL LOW END****************************/    
1157
+    /*********************DL LEVEL HIGH START***************************/
1158
+    if(ADC_Alarm_DL_High_Set[DET_Alarm_DL1_Index ] == true){
1159
+        
1160
+        DET_DL_High_On_AlarmTimerCnt[DET_Alarm_DL1_Index]++;
1161
+        DET_DL_High_Off_AlarmTimerCnt[DET_Alarm_DL1_Index] = 0;
1162
+        if(DET_DL_High_On_AlarmTimerCnt[DET_Alarm_DL1_Index] == 0xFFFFFFFF){
1163
+            DET_DL_High_On_AlarmTimerCnt[DET_Alarm_DL1_Index] = MBIC_ON_MAINTAIN_SEC;
1164
+        }
954
     }
1165
     }
955
     else{
1166
     else{
956
-        DET_DL_On_AlarmTimerCnt[DET_Alarm_DL1_Index] = 0;
1167
+        DET_DL_High_On_AlarmTimerCnt[DET_Alarm_DL1_Index] = 0;
1168
+        DET_DL_High_Off_AlarmTimerCnt[DET_Alarm_DL1_Index]++;
1169
+        if(DET_DL_High_Off_AlarmTimerCnt[DET_Alarm_DL1_Index] == 0xFFFFFFFF){
1170
+            DET_DL_High_Off_AlarmTimerCnt[DET_Alarm_DL1_Index] = MBIC_OFF_MAINTAIN_SEC;
1171
+        }    
957
     }
1172
     }
958
 
1173
 
959
-    if(ADC_Alarm_DL_Set[DET_Alarm_DL2_Index ] == true){
960
-        DET_DL_On_AlarmTimerCnt[DET_Alarm_DL2_Index]++;
1174
+    if(ADC_Alarm_DL_High_Set[DET_Alarm_DL2_Index ] == true){
1175
+        DET_DL_High_On_AlarmTimerCnt[DET_Alarm_DL2_Index]++;
1176
+        DET_DL_High_Off_AlarmTimerCnt[DET_Alarm_DL2_Index] = 0;
1177
+        if(DET_DL_High_On_AlarmTimerCnt[DET_Alarm_DL2_Index] == 0xFFFFFFFF){
1178
+            DET_DL_High_On_AlarmTimerCnt[DET_Alarm_DL2_Index] = MBIC_ON_MAINTAIN_SEC;
1179
+        }    
961
     }
1180
     }
962
     else{
1181
     else{
963
-        DET_DL_On_AlarmTimerCnt[DET_Alarm_DL2_Index] = 0;
1182
+        DET_DL_High_On_AlarmTimerCnt[DET_Alarm_DL2_Index] = 0;
1183
+        DET_DL_High_Off_AlarmTimerCnt[DET_Alarm_DL2_Index]++;
1184
+        if(DET_DL_High_Off_AlarmTimerCnt[DET_Alarm_DL2_Index] == 0xFFFFFFFF){
1185
+            DET_DL_High_Off_AlarmTimerCnt[DET_Alarm_DL2_Index] = MBIC_OFF_MAINTAIN_SEC;
1186
+        }     
964
     }
1187
     }
965
 
1188
 
966
-    if(ADC_Alarm_DL_Set[DET_Alarm_DL3_Index ] == true){
967
-        DET_DL_On_AlarmTimerCnt[DET_Alarm_DL3_Index]++;
1189
+    if(ADC_Alarm_DL_High_Set[DET_Alarm_DL3_Index ] == true){
1190
+        DET_DL_High_On_AlarmTimerCnt[DET_Alarm_DL3_Index]++;
1191
+        DET_DL_High_Off_AlarmTimerCnt[DET_Alarm_DL3_Index] = 0;     
1192
+        if(DET_DL_High_On_AlarmTimerCnt[DET_Alarm_DL3_Index] == 0xFFFFFFFF){
1193
+            DET_DL_High_On_AlarmTimerCnt[DET_Alarm_DL3_Index] = MBIC_ON_MAINTAIN_SEC;
1194
+        }    
968
     }
1195
     }
969
     else{
1196
     else{
970
-        DET_DL_On_AlarmTimerCnt[DET_Alarm_DL3_Index] = 0;
1197
+        DET_DL_High_On_AlarmTimerCnt[DET_Alarm_DL3_Index] = 0;
1198
+        DET_DL_High_Off_AlarmTimerCnt[DET_Alarm_DL3_Index]++;  
1199
+        if(DET_DL_High_Off_AlarmTimerCnt[DET_Alarm_DL3_Index] == 0xFFFFFFFF){
1200
+            DET_DL_High_Off_AlarmTimerCnt[DET_Alarm_DL3_Index] = MBIC_OFF_MAINTAIN_SEC;
1201
+        }     
971
     }
1202
     }
972
 
1203
 
973
-    if(ADC_Alarm_DL_Set[DET_Alarm_DL4_Index ] == true){
974
-        DET_DL_On_AlarmTimerCnt[DET_Alarm_DL4_Index]++;
1204
+    if(ADC_Alarm_DL_High_Set[DET_Alarm_DL4_Index ] == true){
1205
+        DET_DL_High_On_AlarmTimerCnt[DET_Alarm_DL4_Index]++;
1206
+        DET_DL_High_Off_AlarmTimerCnt[DET_Alarm_DL4_Index] = 0;    
1207
+        if(DET_DL_High_On_AlarmTimerCnt[DET_Alarm_DL4_Index] == 0xFFFFFFFF){
1208
+            DET_DL_High_On_AlarmTimerCnt[DET_Alarm_DL4_Index] = MBIC_ON_MAINTAIN_SEC;
1209
+        }    
975
     }
1210
     }
976
     else{
1211
     else{
977
-        DET_DL_On_AlarmTimerCnt[DET_Alarm_DL4_Index] = 0;
1212
+        DET_DL_High_On_AlarmTimerCnt[DET_Alarm_DL4_Index] = 0;
1213
+        DET_DL_High_Off_AlarmTimerCnt[DET_Alarm_DL4_Index]++;       
1214
+        if(DET_DL_High_Off_AlarmTimerCnt[DET_Alarm_DL4_Index] == 0xFFFFFFFF){
1215
+            DET_DL_High_Off_AlarmTimerCnt[DET_Alarm_DL4_Index] = MBIC_OFF_MAINTAIN_SEC;
1216
+        }     
978
     }
1217
     }
979
-#endif // PYJ.2020.05.27_END -- 
1218
+      /*********************DL LEVEL HIGH END***************************/
980
 
1219
 
981
     
1220
     
982
       /*3 Sec Time Cnt */
1221
       /*3 Sec Time Cnt */