Преглед на файлове

Shutdown Last Recovery Count 5분 보정 / SelfTest On/Off 시 ALC,AGC On/OFF 같이 동작

Shutdown Count가 1이상이면 무조건 Shutdown Alarm 발생
PYJ преди 4 години
родител
ревизия
dd53a58a5a
променени са 2 файла, в които са добавени 84 реда и са изтрити 105 реда
  1. 82 103
      Bluecell_Src/Bluecell_operate.c
  2. 2 2
      Inc/main.h

+ 82 - 103
Bluecell_Src/Bluecell_operate.c

@@ -95,6 +95,9 @@ extern uint8_t Led_ToggleCntSet;
95 95
 extern volatile uint32_t SelfTestLifeCnt;
96 96
 volatile uint8_t Prev_ALC_OnOff = 0;
97 97
 volatile uint8_t Prev_AGC_OnOff = 0;
98
+volatile uint8_t Prev_DL_Shutdown_OnOff = 0;
99
+volatile uint8_t Prev_UL_Shutdown_OnOff = 0;
100
+
98 101
 
99 102
 volatile bool timeset_init = false;
100 103
 
@@ -1866,6 +1869,62 @@ void Table_LengSet(){
1866 1869
 }
1867 1870
 
1868 1871
 
1872
+void SelfTest_Operate(uint8_t onoff){
1873
+//        printf("SelfTest %d \r\n ",data[BLUECELL_DATA]);
1874
+    SelfTest_Ctrl(SelfTest1,
1875
+        onoff,
1876
+        &bluecell_Currdatastatus.SelfTest,
1877
+        &bluecell_Currdatastatus.ATT_DL1_H,
1878
+        &bluecell_Currdatastatus.ATT_UL1_H,
1879
+        &bluecell_Currdatastatus.SelfTest_ATT_DL1_H,
1880
+        &bluecell_Currdatastatus.SelfTest_ATT_UL1_H,
1881
+        &bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_H,
1882
+        &bluecell_Currdatastatus.Prev_ATT_ALC1_H);
1883
+    SelfTest_Ctrl(SelfTest2,onoff,
1884
+        &bluecell_Currdatastatus.SelfTest,
1885
+        &bluecell_Currdatastatus.ATT_DL2_H,
1886
+        &bluecell_Currdatastatus.ATT_UL2_H,
1887
+        &bluecell_Currdatastatus.SelfTest_ATT_DL2_H,
1888
+        &bluecell_Currdatastatus.SelfTest_ATT_UL2_H,
1889
+        &bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_H,
1890
+        &bluecell_Currdatastatus.Prev_ATT_ALC2_H);
1891
+    SelfTest_Ctrl(SelfTest3,
1892
+        onoff,
1893
+        &bluecell_Currdatastatus.SelfTest,
1894
+        &bluecell_Currdatastatus.ATT_DL3_H,
1895
+        &bluecell_Currdatastatus.ATT_UL3_H,
1896
+        &bluecell_Currdatastatus.SelfTest_ATT_DL3_H,
1897
+        &bluecell_Currdatastatus.SelfTest_ATT_UL3_H,
1898
+        &bluecell_Currdatastatus.MBIC_ULO_ALC_Atten3_H,
1899
+        &bluecell_Currdatastatus.Prev_ATT_ALC3_H);
1900
+    SelfTest_Ctrl(SelfTest4,onoff,
1901
+        &bluecell_Currdatastatus.SelfTest,
1902
+        &bluecell_Currdatastatus.ATT_DL4_H,
1903
+        &bluecell_Currdatastatus.ATT_UL4_H,
1904
+        &bluecell_Currdatastatus.SelfTest_ATT_DL4_H,
1905
+        &bluecell_Currdatastatus.SelfTest_ATT_UL4_H,
1906
+        &bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_H,
1907
+        &bluecell_Currdatastatus.Prev_ATT_ALC4_H);
1908
+    HAL_Delay(500);/*HFR Request List*/
1909
+    if(onoff == true){
1910
+        Prev_ALC_OnOff = bluecell_Currdatastatus.ULO_ALC_ON_OFF;
1911
+        Prev_AGC_OnOff = bluecell_Currdatastatus.DLI_AGC_ON_OFF;
1912
+        Prev_DL_Shutdown_OnOff = bluecell_Currdatastatus.DLI_Shutdown_ON_OFF;
1913
+        Prev_UL_Shutdown_OnOff = bluecell_Currdatastatus.ULO_Shutdown_ON_OFF;
1914
+        bluecell_Currdatastatus.DLI_AGC_ON_OFF = false;
1915
+        bluecell_Currdatastatus.ULO_ALC_ON_OFF = false;
1916
+        bluecell_Currdatastatus.DLI_Shutdown_ON_OFF = false;
1917
+        bluecell_Currdatastatus.ULO_Shutdown_ON_OFF = false;
1918
+        
1919
+//        printf("ALC AGC OFF\r\n");
1920
+    }else{
1921
+        bluecell_Currdatastatus.ULO_ALC_ON_OFF = Prev_ALC_OnOff;
1922
+        bluecell_Currdatastatus.DLI_AGC_ON_OFF = Prev_AGC_OnOff;
1923
+        bluecell_Currdatastatus.DLI_Shutdown_ON_OFF = Prev_DL_Shutdown_OnOff;
1924
+        bluecell_Currdatastatus.ULO_Shutdown_ON_OFF = Prev_UL_Shutdown_OnOff;
1925
+    }
1926
+}
1927
+
1869 1928
 bool Bluecell_Operate(uint8_t* data){
1870 1929
   uint8_t datatype = data[BLUECELL_TYPE];
1871 1930
 
@@ -2110,21 +2169,7 @@ bool Bluecell_Operate(uint8_t* data){
2110 2169
 //        printf("Function : %s Line %d \r\n",__func__,__LINE__);
2111 2170
 		break;
2112 2171
 	case ATT_SelfTest		 :
2113
-//        printf("SelfTest %d \r\n ",data[BLUECELL_DATA]);
2114
-        SelfTest_Ctrl(SelfTest1,data[BLUECELL_DATA],&bluecell_Currdatastatus.SelfTest,&bluecell_Currdatastatus.ATT_DL1_H,&bluecell_Currdatastatus.ATT_UL1_H,&bluecell_Currdatastatus.SelfTest_ATT_DL1_H,&bluecell_Currdatastatus.SelfTest_ATT_UL1_H,&bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_H,&bluecell_Currdatastatus.Prev_ATT_ALC1_H);
2115
-        SelfTest_Ctrl(SelfTest2,data[BLUECELL_DATA],&bluecell_Currdatastatus.SelfTest,&bluecell_Currdatastatus.ATT_DL2_H,&bluecell_Currdatastatus.ATT_UL2_H,&bluecell_Currdatastatus.SelfTest_ATT_DL2_H,&bluecell_Currdatastatus.SelfTest_ATT_UL2_H,&bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_H,&bluecell_Currdatastatus.Prev_ATT_ALC2_H);
2116
-        SelfTest_Ctrl(SelfTest3,data[BLUECELL_DATA],&bluecell_Currdatastatus.SelfTest,&bluecell_Currdatastatus.ATT_DL3_H,&bluecell_Currdatastatus.ATT_UL3_H,&bluecell_Currdatastatus.SelfTest_ATT_DL3_H,&bluecell_Currdatastatus.SelfTest_ATT_UL3_H,&bluecell_Currdatastatus.MBIC_ULO_ALC_Atten3_H,&bluecell_Currdatastatus.Prev_ATT_ALC3_H);
2117
-        SelfTest_Ctrl(SelfTest4,data[BLUECELL_DATA],&bluecell_Currdatastatus.SelfTest,&bluecell_Currdatastatus.ATT_DL4_H,&bluecell_Currdatastatus.ATT_UL4_H,&bluecell_Currdatastatus.SelfTest_ATT_DL4_H,&bluecell_Currdatastatus.SelfTest_ATT_UL4_H,&bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_H,&bluecell_Currdatastatus.Prev_ATT_ALC4_H);
2118
-        HAL_Delay(500);
2119
-        if(bluecell_Currdatastatus.SelfTest == true){
2120
-            Prev_ALC_OnOff = bluecell_Currdatastatus.ULO_ALC_ON_OFF;
2121
-            Prev_AGC_OnOff = bluecell_Currdatastatus.DLI_AGC_ON_OFF;
2122
-            bluecell_Currdatastatus.DLI_AGC_ON_OFF = false;
2123
-            bluecell_Currdatastatus.ULO_ALC_ON_OFF = false;
2124
-        }else{
2125
-            bluecell_Currdatastatus.ULO_ALC_ON_OFF = Prev_ALC_OnOff;
2126
-            bluecell_Currdatastatus.DLI_AGC_ON_OFF = Prev_AGC_OnOff;
2127
-        }
2172
+        SelfTest_Operate(data[BLUECELL_DATA]);
2128 2173
        
2129 2174
 //        printf("bluecell_Currdatastatus.SelfTest : %d \r\n",bluecell_Currdatastatus.SelfTest);
2130 2175
 		break;
@@ -5629,91 +5674,8 @@ bool MBIC_Operate(uint8_t* data){
5629 5674
                 bluecell_Currdatastatus.Path4_GainValue = data[MBIC_PAYLOADSTART + 3];
5630 5675
                 break;
5631 5676
             case ULO_SelfTest_ONOFF:
5632
-                SelfTest_Ctrl(SelfTest1,data[MBIC_PAYLOADSTART + 3],&bluecell_Currdatastatus.SelfTest,&bluecell_Currdatastatus.ATT_DL1_H,&bluecell_Currdatastatus.ATT_UL1_H,&bluecell_Currdatastatus.SelfTest_ATT_DL1_H,&bluecell_Currdatastatus.SelfTest_ATT_UL1_H,&bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_H,&bluecell_Currdatastatus.Prev_ATT_ALC1_H);
5633
-                SelfTest_Ctrl(SelfTest2,data[MBIC_PAYLOADSTART + 3],&bluecell_Currdatastatus.SelfTest,&bluecell_Currdatastatus.ATT_DL2_H,&bluecell_Currdatastatus.ATT_UL2_H,&bluecell_Currdatastatus.SelfTest_ATT_DL2_H,&bluecell_Currdatastatus.SelfTest_ATT_UL2_H,&bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_H,&bluecell_Currdatastatus.Prev_ATT_ALC2_H);
5634
-                SelfTest_Ctrl(SelfTest3,data[MBIC_PAYLOADSTART + 3],&bluecell_Currdatastatus.SelfTest,&bluecell_Currdatastatus.ATT_DL3_H,&bluecell_Currdatastatus.ATT_UL3_H,&bluecell_Currdatastatus.SelfTest_ATT_DL3_H,&bluecell_Currdatastatus.SelfTest_ATT_UL3_H,&bluecell_Currdatastatus.MBIC_ULO_ALC_Atten3_H,&bluecell_Currdatastatus.Prev_ATT_ALC3_H);
5635
-                SelfTest_Ctrl(SelfTest4,data[MBIC_PAYLOADSTART + 3],&bluecell_Currdatastatus.SelfTest,&bluecell_Currdatastatus.ATT_DL4_H,&bluecell_Currdatastatus.ATT_UL4_H,&bluecell_Currdatastatus.SelfTest_ATT_DL4_H,&bluecell_Currdatastatus.SelfTest_ATT_UL4_H,&bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_H,&bluecell_Currdatastatus.Prev_ATT_ALC4_H);
5636
-                HAL_Delay(500);
5637
-                if(bluecell_Currdatastatus.SelfTest == true){
5638
-                    Prev_ALC_OnOff = bluecell_Currdatastatus.ULO_ALC_ON_OFF;
5639
-                    Prev_AGC_OnOff = bluecell_Currdatastatus.DLI_AGC_ON_OFF;
5640
-                    bluecell_Currdatastatus.DLI_AGC_ON_OFF = false;
5641
-                    bluecell_Currdatastatus.ULO_ALC_ON_OFF = false;
5642
-                }else{
5643
-                    bluecell_Currdatastatus.ULO_ALC_ON_OFF = Prev_ALC_OnOff;
5644
-                    bluecell_Currdatastatus.DLI_AGC_ON_OFF = Prev_AGC_OnOff;
5645
-                }
5646
-
5647
-#if 0 // PYJ.2020.09.03_BEGIN -- 
5648
-                if(bluecell_Currdatastatus.SelfTest == false){
5649
-                    printf("SelfTest ON\r\n");
5650
-                    bluecell_Currdatastatus.SelfTest_ATT_DL1_H = bluecell_Currdatastatus.ATT_DL1_H;
5651
-                    bluecell_Currdatastatus.SelfTest_ATT_DL2_H = bluecell_Currdatastatus.ATT_DL2_H;
5652
-                    bluecell_Currdatastatus.SelfTest_ATT_DL3_H = bluecell_Currdatastatus.ATT_DL3_H;
5653
-                    bluecell_Currdatastatus.SelfTest_ATT_DL4_H = bluecell_Currdatastatus.ATT_DL4_H;
5654
-
5655
-                    bluecell_Currdatastatus.SelfTest_ATT_DL1_L = bluecell_Currdatastatus.ATT_DL1_L;
5656
-                    bluecell_Currdatastatus.SelfTest_ATT_DL2_L = bluecell_Currdatastatus.ATT_DL2_L;
5657
-                    bluecell_Currdatastatus.SelfTest_ATT_DL3_L = bluecell_Currdatastatus.ATT_DL3_L;
5658
-                    bluecell_Currdatastatus.SelfTest_ATT_DL4_L = bluecell_Currdatastatus.ATT_DL4_L;                    
5659
-
5660
-                    bluecell_Currdatastatus.SelfTest_ATT_UL1_H = bluecell_Currdatastatus.ATT_UL1_H;
5661
-                    bluecell_Currdatastatus.SelfTest_ATT_UL2_H = bluecell_Currdatastatus.ATT_UL2_H;
5662
-                    bluecell_Currdatastatus.SelfTest_ATT_UL3_H = bluecell_Currdatastatus.ATT_UL3_H;
5663
-                    bluecell_Currdatastatus.SelfTest_ATT_UL4_H = bluecell_Currdatastatus.ATT_UL4_H;
5664
-
5665
-                    bluecell_Currdatastatus.SelfTest_ATT_UL1_L = bluecell_Currdatastatus.ATT_UL1_L;
5666
-                    bluecell_Currdatastatus.SelfTest_ATT_UL2_L = bluecell_Currdatastatus.ATT_UL2_L;
5667
-                    bluecell_Currdatastatus.SelfTest_ATT_UL3_L = bluecell_Currdatastatus.ATT_UL3_L;
5668
-                    bluecell_Currdatastatus.SelfTest_ATT_UL4_L = bluecell_Currdatastatus.ATT_UL4_L;                    
5669
-
5670
-                    bluecell_Currdatastatus.ATT_DL1_H = 0;
5671
-                    bluecell_Currdatastatus.ATT_DL2_H = 0;
5672
-                    bluecell_Currdatastatus.ATT_DL3_H = 0;
5673
-                    bluecell_Currdatastatus.ATT_DL4_H = 0;
5674
-
5675
-                    bluecell_Currdatastatus.ATT_DL1_L = 0;
5676
-                    bluecell_Currdatastatus.ATT_DL2_L = 0;
5677
-                    bluecell_Currdatastatus.ATT_DL3_L = 0;
5678
-                    bluecell_Currdatastatus.ATT_DL4_L = 0;                    
5679
-
5680
-                    bluecell_Currdatastatus.ATT_UL1_H = 0;
5681
-                    bluecell_Currdatastatus.ATT_UL2_H = 0;
5682
-                    bluecell_Currdatastatus.ATT_UL3_H = 0;
5683
-                    bluecell_Currdatastatus.ATT_UL4_H = 0;
5684
-
5685
-                    bluecell_Currdatastatus.ATT_UL1_L = 0;
5686
-                    bluecell_Currdatastatus.ATT_UL2_L = 0;
5687
-                    bluecell_Currdatastatus.ATT_UL3_L = 0;
5688
-                    bluecell_Currdatastatus.ATT_UL4_L = 0;                        
5689
-                    
5690
-                }
5691
-                else{
5692
-                    printf("SelfTest OFF\r\n");
5693
-                    bluecell_Currdatastatus.ATT_DL1_H = bluecell_Currdatastatus.SelfTest_ATT_DL1_H ;
5694
-                    bluecell_Currdatastatus.ATT_DL2_H = bluecell_Currdatastatus.SelfTest_ATT_DL2_H ;
5695
-                    bluecell_Currdatastatus.ATT_DL3_H = bluecell_Currdatastatus.SelfTest_ATT_DL3_H ;
5696
-                    bluecell_Currdatastatus.ATT_DL4_H = bluecell_Currdatastatus.SelfTest_ATT_DL4_H ;
5697
-
5698
-                    bluecell_Currdatastatus.ATT_DL1_L = bluecell_Currdatastatus.SelfTest_ATT_DL1_L ;
5699
-                    bluecell_Currdatastatus.ATT_DL2_L = bluecell_Currdatastatus.SelfTest_ATT_DL2_L ;
5700
-                    bluecell_Currdatastatus.ATT_DL3_L = bluecell_Currdatastatus.SelfTest_ATT_DL3_L ;
5701
-                    bluecell_Currdatastatus.ATT_DL4_L = bluecell_Currdatastatus.SelfTest_ATT_DL4_L ;                    
5702
-
5703
-                    bluecell_Currdatastatus.ATT_UL1_H = bluecell_Currdatastatus.SelfTest_ATT_UL1_H ;
5704
-                    bluecell_Currdatastatus.ATT_UL2_H = bluecell_Currdatastatus.SelfTest_ATT_UL2_H ;
5705
-                    bluecell_Currdatastatus.ATT_UL3_H = bluecell_Currdatastatus.SelfTest_ATT_UL3_H ;
5706
-                    bluecell_Currdatastatus.ATT_UL4_H = bluecell_Currdatastatus.SelfTest_ATT_UL4_H ;
5707
-
5708
-                    bluecell_Currdatastatus.ATT_UL1_L = bluecell_Currdatastatus.SelfTest_ATT_UL1_L ;
5709
-                    bluecell_Currdatastatus.ATT_UL2_L = bluecell_Currdatastatus.SelfTest_ATT_UL2_L ;
5710
-                    bluecell_Currdatastatus.ATT_UL3_L = bluecell_Currdatastatus.SelfTest_ATT_UL3_L ;
5711
-                    bluecell_Currdatastatus.ATT_UL4_L = bluecell_Currdatastatus.SelfTest_ATT_UL4_L ;                    
5712
-
5713
-                }
5714
-#endif // PYJ.2020.09.03_END -- 
5715
-
5716
-            break;
5677
+                SelfTest_Operate(data[MBIC_PAYLOADSTART + 3]);
5678
+                break;
5717 5679
             case  ULO_ALC_ON_OFF                   :
5718 5680
                 bluecell_Currdatastatus.ULO_ALC_ON_OFF = data[MBIC_PAYLOADSTART + 3]; 
5719 5681
                 if(bluecell_Currdatastatus.ULO_ALC_ON_OFF == 0)
@@ -8771,11 +8733,22 @@ void DL_Shutdown_Operate(uint8_t index,uint8_t* path,uint8_t* retrycnt,uint8_t*
8771 8733
         (*retrycnt)++;
8772 8734
         DET_DL_Shutdown_On_AlarmTimerCnt[index] = 0;
8773 8735
         
8736
+#if 1 // PYJ.2020.09.17_BEGIN -- 
8774 8737
         if((*retrycnt) >= RETRYCNT_MAX){
8775 8738
             (*retrycnt) = RETRYCNT_MAX;
8739
+//            bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN |= AlarmFlag;
8740
+//            *ShutdownAlarm       = true;
8741
+        }
8742
+    
8743
+#else
8744
+        /*HFR Request list */
8745
+        if((*retrycnt) >= 1){
8746
+//            (*retrycnt) = 1;
8776 8747
             bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN |= AlarmFlag;
8777 8748
             *ShutdownAlarm       = true;
8778 8749
         }
8750
+
8751
+#endif // PYJ.2020.09.17_END -- 
8779 8752
     }
8780 8753
     else{
8781 8754
         if(DET_DL_Shutdown_Off_AlarmTimerCnt[index] >= MBIC_OFF_MAINTAIN_SEC
@@ -8784,6 +8757,11 @@ void DL_Shutdown_Operate(uint8_t index,uint8_t* path,uint8_t* retrycnt,uint8_t*
8784 8757
             *ShutdownAlarm       = false;            
8785 8758
         }
8786 8759
     } 
8760
+    if((*retrycnt) >= 1){
8761
+        //            (*retrycnt) = 1;
8762
+        bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN |= AlarmFlag;
8763
+        *ShutdownAlarm       = true;
8764
+    }    
8787 8765
 
8788 8766
 
8789 8767
 }
@@ -8885,9 +8863,6 @@ void UL_Shutdown_Operate(uint8_t Index,uint8_t* Path,uint8_t* PrevATT,uint8_t* R
8885 8863
         
8886 8864
         if((*RetryCnt) >= RETRYCNT_MAX){
8887 8865
             (*RetryCnt) = RETRYCNT_MAX;
8888
-            bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN |= AlarmFlag;
8889
-            *ShutdownAlarm       = true;
8890
-        }else{
8891 8866
         }
8892 8867
 
8893 8868
     }
@@ -8898,6 +8873,10 @@ void UL_Shutdown_Operate(uint8_t Index,uint8_t* Path,uint8_t* PrevATT,uint8_t* R
8898 8873
             *ShutdownAlarm       = false;            
8899 8874
         }
8900 8875
     } 
8876
+    if((*RetryCnt) >= 1){
8877
+        bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN |= AlarmFlag;
8878
+        *ShutdownAlarm       = true;
8879
+    }
8901 8880
 
8902 8881
 }
8903 8882
 

+ 2 - 2
Inc/main.h

@@ -185,8 +185,8 @@ extern I2C_HandleTypeDef hi2c2;
185 185
 #define MBIC_ON_MAINTAIN_SEC 3000
186 186
 #define MBIC_ON_SHUTDOWN_MAINTAIN_SEC 15000//5
187 187
 #define MBIC_RECOVERY_SHUTDOWN_MAINTAIN_SEC 30000//30
188
-#define MBIC_RECOVERY_LAST_SHUTDOWN_MAINTAIN_SEC 60000 * 5 //5min
189
-#define MBIC_RECOVERY_SELFTEST_TIMER_SEC (60000 * 30) //30min
188
+#define MBIC_RECOVERY_LAST_SHUTDOWN_MAINTAIN_SEC 52000 * 5 //5min
189
+#define MBIC_RECOVERY_SELFTEST_TIMER_SEC 1800000 //30min
190 190
 
191 191
 
192 192