Browse Source

HFR 토요일 검수 전 수정 사항

1. Bluecell porotocol Time Setting Index 추가
2. FRBT Status Index 추가
3. FRBT 기능 추가
4.FRBT Save 기능 추가
5. Main 에서 FRBT 실시간으로 Check 후 Data Save
PYJ 5 years ago
parent
commit
aae2db338f
4 changed files with 254 additions and 58 deletions
  1. 7 6
      Bluecell_Inc/Bluecell_operate.h
  2. 241 51
      Bluecell_Src/Bluecell_operate.c
  3. 4 1
      Bluecell_Src/eeprom.c
  4. 2 0
      Src/main.c

+ 7 - 6
Bluecell_Inc/Bluecell_operate.h

@@ -110,12 +110,12 @@ typedef enum{
110 110
 	MBIC_SEQSUM_0, // 9Index
111 111
 	
112 112
 	MBIC_TTL_0, //10 INDEX
113
-	MBIC_TIME_0,
114
-	MBIC_TIME_1,
115
-	MBIC_TIME_2,
116
-	MBIC_TIME_3,
117
-	MBIC_TIME_4,
118
-	MBIC_TIME_5,
113
+	MBIC_TIME_0, // YEAR
114
+	MBIC_TIME_1,// Month
115
+	MBIC_TIME_2,// day
116
+	MBIC_TIME_3,// Hour
117
+	MBIC_TIME_4,// minute
118
+	MBIC_TIME_5,//second
119 119
 	MBIC_ERRRESPONSE_0,
120 120
 	MBIC_CMD_0,
121 121
 	
@@ -619,6 +619,7 @@ enum DATATYPE
619 619
     BLuecell_ATT_ALC3,
620 620
     BLuecell_ATT_ALC4,   
621 621
     Bluecell_BankSelect,
622
+    Bluecell_TimeSetting,
622 623
 };
623 624
 typedef enum{    
624 625
 	DLI_P1_Level_Table_Number = 0x00,

+ 241 - 51
Bluecell_Src/Bluecell_operate.c

@@ -148,7 +148,24 @@ int16_t DL_AGC_StartAtten[AGC_Alarm_DL_Index_MAX] = {0,};
148 148
 int16_t DL_PrevIwillgiveAtten[AGC_Alarm_DL_Index_MAX] = {0,};
149 149
 bool DL_PathUserHandl[4] = {0,};
150 150
 bool UL_PathUserHandl[4] = {0,};
151
+typedef enum{
152
+    DLI_FRBT_Time_Year = 0,
153
+    DLI_FRBT_Time_Month,
154
+    DLI_FRBT_Time_Day,
155
+    DLI_FRBT_Time_Hour,
156
+    DLI_FRBT_Time_Minute,
157
+    DLI_FRBT_Time_Second,    
158
+    DLI_FRBT_Time_Index_Max,        
159
+};
160
+volatile uint8_t StartTimeFRBT_Day[6] = {0,}; /*Start day Register*/
161
+uint8_t FRBT_Day[6] = {0,}; /*Curr day Register*/
162
+uint8_t PrevFRBT_Day[6] = {0,}; /*Prev day Register*/
151 163
 
164
+typedef enum{
165
+    FRBT_IDEL = 0,
166
+    FRBT_TRACKING,
167
+    FRBT_RUNNING,
168
+}FRBT_Status_I;
152 169
 
153 170
 
154 171
 #if 0 // PYJ.2020.05.21_BEGIN -- 
@@ -789,7 +806,7 @@ void CompareAttenData(BLUESTATUS_st Curr,BLUESTATUS_st Prev){
789 806
             val = MBIC_DL_PE43711_Calc(&Att_DL3.Table_0_0_dBm,// Table Offset
790 807
                             MBIC_Val,// Hidden Atten Low bit
791 808
                            MBIC_UserVal);// User Atten Low Bit
792
-        printf("%d val = %x \r\n",__LINE__,val);
809
+//        printf("%d val = %x \r\n",__LINE__,val);
793 810
         PE43711_atten_ctrl(ALL_ATT.ATT_DL3,val);
794 811
     }
795 812
 //    printf("\r\nCurr.ATT_DL3_H : %x \r\nPrev.ATT_DL3_H : %x \r\n",Curr.ATT_DL3_H,Prev.ATT_DL3_H);
@@ -805,14 +822,14 @@ void CompareAttenData(BLUESTATUS_st Curr,BLUESTATUS_st Prev){
805 822
             bluecell_Prevdatastatus.bluecell_User_DL4_H = bluecell_Currdatastatus.bluecell_User_DL4_H;
806 823
             bluecell_Prevdatastatus.bluecell_User_DL4_L = bluecell_Currdatastatus.bluecell_User_DL4_L;
807 824
             MBIC_Val = (Curr.ATT_DL4_H << 8 | Curr.ATT_DL4_L);
808
-            printf("\r\nCurr.ATT_DL4_H : %x \rCurr.ATT_DL4_L : %x \r\n",Curr.ATT_DL4_H,Curr.ATT_DL4_L);
825
+//            printf("\r\nCurr.ATT_DL4_H : %x \rCurr.ATT_DL4_L : %x \r\n",Curr.ATT_DL4_H,Curr.ATT_DL4_L);
809 826
             MBIC_UserVal = Curr.bluecell_User_DL4_H << 8 | Curr.bluecell_User_DL4_L;
810
-            printf("\r\nCurr.bluecell_User_DL4_H : %x \rCurr.bluecell_User_DL4_L : %x \r\n",Curr.bluecell_User_DL4_H,Curr.bluecell_User_DL4_L);
811
-            printf("MBIC_UserVal : %x \r\n",MBIC_UserVal); // 2
827
+//            printf("\r\nCurr.bluecell_User_DL4_H : %x \rCurr.bluecell_User_DL4_L : %x \r\n",Curr.bluecell_User_DL4_H,Curr.bluecell_User_DL4_L);
828
+//            printf("MBIC_UserVal : %x \r\n",MBIC_UserVal); // 2
812 829
             val = MBIC_DL_PE43711_Calc(&Att_DL4.Table_0_0_dBm,// Table Offset
813 830
                                 MBIC_Val,// Hidden Atten Low bit
814 831
                                MBIC_UserVal);// User Atten Low Bit
815
-            printf("%d val = %x \r\n",__LINE__,val);
832
+//            printf("%d val = %x \r\n",__LINE__,val);
816 833
             PE43711_atten_ctrl(ALL_ATT.ATT_DL4,val);
817 834
     }
818 835
 #else
@@ -2340,8 +2357,6 @@ bool Bluecell_Operate(uint8_t* data){
2340 2357
         }
2341 2358
         CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
2342 2359
 
2343
-
2344
-        
2345 2360
         printf("LINE : %d Curr ATTEN : %d \r\n",__LINE__,CurrAtten);
2346 2361
     
2347 2362
         /*
@@ -2726,27 +2741,60 @@ bool Bluecell_Operate(uint8_t* data){
2726 2741
 #if 1 // PYJ.2020.07.01_BEGIN -- 
2727 2742
         printf("===================START=======================\r\n");
2728 2743
         printf("ALC ON %d                   | AGC ON %d\r\n",bluecell_Currdatastatus.ULO_ALC_ON_OFF,bluecell_Currdatastatus.DLI_AGC_ON_OFF);
2729
-        printf("Shutdown DL ON OFF %d       | Shutdown UL ON OFF %d \r\n",bluecell_Currdatastatus.DLI_Shutdown_ON_OFF,bluecell_Currdatastatus.ULO_Shutdown_ON_OFF);
2730
-        printf("PATH1 %d|Shutdown DL1 CNT %d  | PATH1 %d|Shutdown UL1 CNT %d\r\n",bluecell_Currdatastatus.ATT_DL1_PATH,bluecell_Currdatastatus.DLI_Shutdown_Retry_Count1,bluecell_Currdatastatus.ATT_DL1_PATH,bluecell_Currdatastatus.ULO_Shutdown_Retry_Count1);
2744
+//        printf("Shutdown DL ON OFF %d       | Shutdown UL ON OFF %d \r\n",bluecell_Currdatastatus.DLI_Shutdown_ON_OFF,bluecell_Currdatastatus.ULO_Shutdown_ON_OFF);
2745
+//        printf("PATH1 %d|Shutdown DL1 CNT %d  | PATH1 %d|Shutdown UL1 CNT %d\r\n",bluecell_Currdatastatus.ATT_DL1_PATH,bluecell_Currdatastatus.DLI_Shutdown_Retry_Count1,bluecell_Currdatastatus.ATT_DL1_PATH,bluecell_Currdatastatus.ULO_Shutdown_Retry_Count1);
2731 2746
 //        printf("PATH2 %d|Shutdown DL2 CNT %d  | PATH2 %d|Shutdown UL2 CNT %d\r\n",bluecell_Currdatastatus.ATT_DL2_PATH,bluecell_Currdatastatus.DLI_Shutdown_Retry_Count2,bluecell_Currdatastatus.ATT_UL2_PATH,bluecell_Currdatastatus.ULO_Shutdown_Retry_Count2);
2732 2747
 //        printf("PATH3 %d|Shutdown DL3 CNT %d  | PATH3 %d|Shutdown UL3 CNT %d\r\n",bluecell_Currdatastatus.ATT_DL3_PATH,bluecell_Currdatastatus.DLI_Shutdown_Retry_Count3,bluecell_Currdatastatus.ATT_UL3_PATH,bluecell_Currdatastatus.ULO_Shutdown_Retry_Count3);
2733 2748
 //        printf("PATH4 %d|Shutdown DL4 CNT %d  | PATH4 %d|Shutdown UL4 CNT %d\r\n",bluecell_Currdatastatus.ATT_DL4_PATH,bluecell_Currdatastatus.DLI_Shutdown_Retry_Count4,bluecell_Currdatastatus.ATT_UL4_PATH,bluecell_Currdatastatus.ULO_Shutdown_Retry_Count4);
2734 2749
         tempdata = (( bluecell_Currdatastatus.DLI_Level_Low_Threshold_H << 8) & 0xFF00) ;
2735 2750
         tempdata +=  bluecell_Currdatastatus.DLI_Level_Low_Threshold_L ;
2736 2751
         tempdata /= 10;    
2737
-        printf("DL Thread Hold : %d \r\n",tempdata);
2738
-
2752
+//        printf("DL Thread Hold : %d \r\n",tempdata);
2753
+        tempdata = (( bluecell_Currdatastatus.ATT_DL1_H << 8) & 0xFF00) ;
2754
+        tempdata +=  bluecell_Currdatastatus.ATT_DL1_L ;
2755
+        tempdata /= 10;    
2756
+        printf("ATT_DL1 : %d \r\n",tempdata);
2757
+        tempdata = (( bluecell_Currdatastatus.ATT_DL4_H << 8) & 0xFF00) ;
2758
+        tempdata +=  bluecell_Currdatastatus.ATT_DL4_L ;
2759
+        tempdata /= 10;    
2760
+        printf("ATT_DL4 : %d \r\n",tempdata);
2761
+
2762
+        tempdata = (( bluecell_Currdatastatus.DLI_FRBT_Atten1_H << 8) & 0xFF00) ;
2763
+        tempdata +=  bluecell_Currdatastatus.DLI_FRBT_Atten1_L ;
2764
+         tempdata /= 10;    
2765
+        printf("FRBT 1 : %d \r\n",tempdata);
2766
+
2767
+        tempdata = (( bluecell_Currdatastatus.DLI_FRBT_Atten2_H << 8) & 0xFF00) ;
2768
+        tempdata +=  bluecell_Currdatastatus.DLI_FRBT_Atten2_L ;
2769
+         tempdata /= 10;    
2770
+        printf("FRBT 2 : %d \r\n",tempdata);
2771
+
2772
+        tempdata = (( bluecell_Currdatastatus.DLI_FRBT_Atten3_H << 8) & 0xFF00) ;
2773
+        tempdata +=  bluecell_Currdatastatus.DLI_FRBT_Atten3_L ;
2774
+         tempdata /= 10;    
2775
+        printf("FRBT 3 : %d \r\n",tempdata);
2776
+
2777
+        tempdata = (( bluecell_Currdatastatus.DLI_FRBT_Atten4_H << 8) & 0xFF00) ;
2778
+        tempdata +=  bluecell_Currdatastatus.DLI_FRBT_Atten4_L ;
2779
+         tempdata /= 10;    
2780
+        printf("FRBT 4 : %d \r\n",tempdata);
2781
+        printf("DLI_FRBT_D_Day : %d \r\n",bluecell_Currdatastatus.DLI_FRBT_D_Day);
2782
+        printf("DLI_FRBT_Status : %d \r\n",bluecell_Currdatastatus.DLI_FRBT_Status);        
2739 2783
         tempdata = (( bluecell_Currdatastatus.DLI_Level1_H << 8) & 0xFF00) ;
2740 2784
         tempdata +=  bluecell_Currdatastatus.DLI_Level1_L ;
2741 2785
 //        tempdata *= 0.1;    
2742 2786
         printf("DLI_Level1 : %d \r\n",tempdata);        
2787
+        tempdata = (( bluecell_Currdatastatus.DLI_Level4_H << 8) & 0xFF00) ;
2788
+        tempdata +=  bluecell_Currdatastatus.DLI_Level4_L ;
2789
+//        tempdata *= 0.1;    
2790
+        printf("DLI_Level4 : %d \r\n",tempdata);   
2743 2791
 
2744
-        printf("DL HIGH ALARM : %d \r\n", bluecell_Currdatastatus.DLI_Level_High_Alarm1);
2745
-        printf("DL LOW ALARM : %d \r\n", bluecell_Currdatastatus.DLI_Level_Low_Alarm1);
2792
+//        printf("DL HIGH ALARM : %d \r\n", bluecell_Currdatastatus.DLI_Level_High_Alarm1);
2793
+//        printf("DL LOW ALARM : %d \r\n", bluecell_Currdatastatus.DLI_Level_Low_Alarm1);
2746 2794
         tempdata = (( bluecell_Currdatastatus.DLI_Shutdown_Threshold_H << 8) & 0xFF00) ;
2747 2795
         tempdata +=  bluecell_Currdatastatus.DLI_Shutdown_Threshold_L ;
2748 2796
         tempdata /= 10;
2749
-        printf("DL Shutdown Threas : %d \r\n",tempdata);
2797
+//        printf("DL Shutdown Threas : %d \r\n",tempdata);
2750 2798
 #if 0 // PYJ.2020.07.01_BEGIN -- 
2751 2799
         tempdata = (( bluecell_Currdatastatus.ULO_Shutdown_Threshold_H << 8) & 0xFF00) ;
2752 2800
         tempdata +=  bluecell_Currdatastatus.ULO_Shutdown_Threshold_L ;
@@ -3053,7 +3101,6 @@ bool Bluecell_Operate(uint8_t* data){
3053 3101
         printf("Temp_High_Threshold : %d :   Det %d \r\n",bluecell_Currdatastatus.Temp_High_Threshold,bluecell_Currdatastatus.DET_TEMP);
3054 3102
         printf("Temp_High_Alarm : %d \r\n",bluecell_Currdatastatus.Temp_High_Alarm);
3055 3103
         printf("Txdata : %d \r\n",Txdata[201]);
3056
-    
3057 3104
         break;
3058 3105
     case Bluecell_Temp_High_Threshold_Default             :   
3059 3106
         bluecell_Currdatastatus.Temp_High_Threshold_Default = data[BLUECELL_DATA + i++];
@@ -3169,7 +3216,53 @@ bool Bluecell_Operate(uint8_t* data){
3169 3216
         bluecell_Currdatastatus.CPU_Bank_Select = data[BLUECELL_DATA + i++];
3170 3217
         printf("bluecell_Currdatastatus.CPU_Bank_Select : %d \r\n",bluecell_Currdatastatus.CPU_Bank_Select);
3171 3218
         break;
3172
-           
3219
+    case Bluecell_TimeSetting:
3220
+        if(bluecell_Currdatastatus.DLI_AGC_ON_OFF == true 
3221
+        && bluecell_Currdatastatus.DLI_FRBT_D_Day < 7
3222
+        && bluecell_Currdatastatus.DLI_FRBT_Status != FRBT_RUNNING){
3223
+            for(int i = 0; i < DLI_FRBT_Time_Index_Max; i++){
3224
+                FRBT_Day[DLI_FRBT_Time_Year + i] = data[BLUECELL_CRCINDEX + i]; /* Curr day */
3225
+                printf("data[BLUECELL_CRCINDEX + i] : %d \r\n",data[BLUECELL_CRCINDEX + i]);
3226
+            }
3227
+
3228
+            printf("BLUECELL TIME APPLY : %d - %d - %d - %d - %d - %d \r\n",
3229
+            FRBT_Day[DLI_FRBT_Time_Year],
3230
+            FRBT_Day[DLI_FRBT_Time_Month],
3231
+            FRBT_Day[DLI_FRBT_Time_Day],
3232
+            FRBT_Day[DLI_FRBT_Time_Hour],
3233
+            FRBT_Day[DLI_FRBT_Time_Minute],
3234
+            FRBT_Day[DLI_FRBT_Time_Second]);
3235
+            
3236
+            if(FRBT_Day[DLI_FRBT_Time_Day] != PrevFRBT_Day[DLI_FRBT_Time_Day]){
3237
+                printf("FRBT_Day[DLI_FRBT_Time_Day] : %d  PrevFRBT_Day[DLI_FRBT_D_Day] : %d \r\n",
3238
+                  FRBT_Day[DLI_FRBT_Time_Day] ,
3239
+                  PrevFRBT_Day[DLI_FRBT_Time_Day]);
3240
+#if 1 // PYJ.2020.07.02_BEGIN -- 
3241
+                bluecell_Currdatastatus.DLI_FRBT_D_Day++;
3242
+                bluecell_Currdatastatus.DLI_FRBT_Status = FRBT_TRACKING;
3243
+#else
3244
+            bluecell_Currdatastatus.DLI_FRBT_D_Day = 7;
3245
+            bluecell_Currdatastatus.DLI_FRBT_Status = FRBT_TRACKING;
3246
+#endif // PYJ.2020.07.02_END -- 
3247
+                printf("D day Plus : %d \r\n",bluecell_Currdatastatus.DLI_FRBT_D_Day);
3248
+            }
3249
+            
3250
+            for(int i = 0; i < DLI_FRBT_Time_Index_Max; i++){
3251
+                PrevFRBT_Day[DLI_FRBT_Time_Year + i] = FRBT_Day[DLI_FRBT_Time_Year + i]; /* Curr day */
3252
+            }   
3253
+            printf("BLUECELL TIME APPLY : %d - %d - %d - %d - %d - %d \r\n",
3254
+            PrevFRBT_Day[DLI_FRBT_Time_Year],
3255
+            PrevFRBT_Day[DLI_FRBT_Time_Month],
3256
+            PrevFRBT_Day[DLI_FRBT_Time_Day],
3257
+            PrevFRBT_Day[DLI_FRBT_Time_Hour],
3258
+            PrevFRBT_Day[DLI_FRBT_Time_Minute],
3259
+            PrevFRBT_Day[DLI_FRBT_Time_Second]);            
3260
+            printf("FRBT_Day[DLI_FRBT_Time_Day] : %d  PrevFRBT_Day[DLI_FRBT_D_Day] : %d \r\n",
3261
+            FRBT_Day[DLI_FRBT_Time_Day] ,
3262
+            PrevFRBT_Day[DLI_FRBT_Time_Day]);
3263
+        }
3264
+        printf("Time Set Complete\r\n");
3265
+        break;
3173 3266
   }
3174 3267
   
3175 3268
   if(datatype != Bluecell_StatusReq
@@ -3553,7 +3646,7 @@ uint32_t MBIC_DataSend(uint8_t* data){
3553 3646
     data[MBIC_PAYLOADSTART + i++] = Manufacture;
3554 3647
     data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
3555 3648
     Length += 1     ;      
3556
-    data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.Manufacture;
3649
+    data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.Manufacture = 0x01;
3557 3650
 
3558 3651
 
3559 3652
 
@@ -4148,6 +4241,8 @@ void Factory_Set(){
4148 4241
     
4149 4242
 
4150 4243
 }
4244
+
4245
+
4151 4246
 bool MBIC_Operate(uint8_t* data){
4152 4247
 	uint8_t datatype = data[MBIC_PAYLOADSTART + 1];
4153 4248
    // uint8_t Length = (data[MBIC_PROT_SUB_DATA_INDEX + 2]);
@@ -4159,6 +4254,21 @@ bool MBIC_Operate(uint8_t* data){
4159 4254
     //double temp = 0;
4160 4255
     //int16_t Level = 0;
4161 4256
     //int16_t tmpdata = 0;
4257
+    /*Day Save*/
4258
+    if(bluecell_Currdatastatus.DLI_AGC_ON_OFF == true && bluecell_Currdatastatus.DLI_FRBT_D_Day < 7
4259
+        && bluecell_Currdatastatus.DLI_FRBT_Status != FRBT_RUNNING){
4260
+        for(int i = 0; i < DLI_FRBT_Time_Index_Max; i++){
4261
+            FRBT_Day[DLI_FRBT_Time_Year + i] = data[MBIC_TIME_0 + i]; /* Curr day */
4262
+        }
4263
+
4264
+        if(FRBT_Day[DLI_FRBT_Time_Day] != PrevFRBT_Day[DLI_FRBT_D_Day])
4265
+            bluecell_Currdatastatus.DLI_FRBT_D_Day++;
4266
+        
4267
+        for(int i = 0; i < DLI_FRBT_Time_Index_Max; i++){
4268
+            PrevFRBT_Day[DLI_FRBT_Time_Year + i] = FRBT_Day[DLI_FRBT_Time_Year + i]; /* Curr day */
4269
+        }        
4270
+    }
4271
+    
4162 4272
     for(int k = 0; k < 2048; k++)
4163 4273
         TxData[k] = data[k];
4164 4274
     
@@ -4421,7 +4531,26 @@ bool MBIC_Operate(uint8_t* data){
4421 4531
                     AGC_AlarmSet[AGC_Alarm_DL2_Index] = false;
4422 4532
                     AGC_AlarmSet[AGC_Alarm_DL3_Index] = false;
4423 4533
                     AGC_AlarmSet[AGC_Alarm_DL4_Index] = false;
4534
+                    for(int i = 0; i < DLI_FRBT_Time_Index_Max; i++){
4535
+                       PrevFRBT_Day[DLI_FRBT_Time_Year + i] = FRBT_Day[DLI_FRBT_Time_Year + i] = 0;
4536
+                    }
4537
+
4538
+                    bluecell_Currdatastatus.DLI_FRBT_D_Day = 0;
4539
+                    bluecell_Currdatastatus.DLI_FRBT_Status = FRBT_IDEL;                    
4424 4540
                     bluecell_Currdatastatus.ALARM_DLI_AGC_Alarm = 0;
4541
+                }else{
4542
+                    for(int i = 0; i < DLI_FRBT_Time_Index_Max; i++){
4543
+                        StartTimeFRBT_Day[DLI_FRBT_Time_Year + i] = data[MBIC_TIME_0 + i]; /* Curr day */
4544
+                    }
4545
+                    bluecell_Currdatastatus.DLI_FRBT_Status = FRBT_TRACKING;   
4546
+                    printf("FRBT Tracking START \r\n");
4547
+                    printf("FRBT Start Time Save : %d Y %d M %d D %d H %d M %d S\r\n",
4548
+                    StartTimeFRBT_Day[DLI_FRBT_Time_Year],
4549
+                    StartTimeFRBT_Day[DLI_FRBT_Time_Month],
4550
+                    StartTimeFRBT_Day[DLI_FRBT_Time_Day],
4551
+                    StartTimeFRBT_Day[DLI_FRBT_Time_Hour],
4552
+                    StartTimeFRBT_Day[DLI_FRBT_Time_Minute],
4553
+                    StartTimeFRBT_Day[DLI_FRBT_Time_Second]);
4425 4554
                 }
4426 4555
                 DL_AGC_StartAtten[AGC_Alarm_DL1_Index] 
4427 4556
                     = bluecell_Currdatastatus.ATT_DL1_H << 8 | bluecell_Currdatastatus.ATT_DL1_L;
@@ -6785,6 +6914,13 @@ void AGC_Package_Operate(uint8_t* Threshold,uint8_t* DL_MainAtten,uint8_t Tablei
6785 6914
         int16_t IwillgiveAtten = 0;
6786 6915
         int16_t ResultData = 0;
6787 6916
         int8_t* AGC_Table;// = &DL_DET_Table_ref[MBIC_Table_DL1_INDEX][TABLE_MAX_VALUE];
6917
+        int16_t FRBT_Atten = 0;
6918
+
6919
+
6920
+        
6921
+        FRBT_Atten =  FRBT[DLI_AGC_H] << 8 | FRBT[DLI_AGC_L];   
6922
+        FRBT_Atten *= 0.1;
6923
+        
6788 6924
         Limitdata = Threshold[DLI_AGC_H] << 8;
6789 6925
         Limitdata += Threshold[DLI_AGC_L];
6790 6926
         Limitdata *= 0.1; 
@@ -6795,6 +6931,7 @@ void AGC_Package_Operate(uint8_t* Threshold,uint8_t* DL_MainAtten,uint8_t Tablei
6795 6931
         ret *= 0.001;
6796 6932
 
6797 6933
         CurrAtten = (int16_t)(DL_MainAtten[DLI_AGC_H] << 8 |  DL_MainAtten[DLI_AGC_L]);
6934
+        CurrAtten *= 0.1;
6798 6935
         ResdBm = (int8_t)Bluecell_TestPro(AGC_AutoControl_ADC_Compare(ret,&DL_Table->Table_Det5_dBm_H,DL_Table->Table_Length,AGC_Table));
6799 6936
         DLI_Level[DLI_AGC_H] = ((int16_t)ResdBm & 0xFF00) >> 8;
6800 6937
         DLI_Level[DLI_AGC_L] = ((int16_t)ResdBm & 0x00FF);
@@ -6810,8 +6947,8 @@ void AGC_Package_Operate(uint8_t* Threshold,uint8_t* DL_MainAtten,uint8_t Tablei
6810 6947
 //        printf("ResdBm : DL%d : %d \r\n",Tableindex+1,ResdBm);
6811 6948
 //        printf("I WILL GIVE YOU ATTEN  : %d\r\n",IwillgiveAtten);
6812 6949
 //        printf("AGC  : %d\r\n",Limitdata);
6813
-        if((CurrAtten / 10) < IwillgiveAtten)
6814
-            IwillgiveAtten = (CurrAtten / 10);
6950
+        if((CurrAtten) < IwillgiveAtten)
6951
+            IwillgiveAtten = (CurrAtten );
6815 6952
 
6816 6953
         if(ResdBm > Limitdata &&  DL_PrevIwillgiveAtten[Tableindex] > IwillgiveAtten){
6817 6954
 //            printf("IwillgiveAtten : %d \r\n",IwillgiveAtten);
@@ -6819,12 +6956,25 @@ void AGC_Package_Operate(uint8_t* Threshold,uint8_t* DL_MainAtten,uint8_t Tablei
6819 6956
             IwillgiveAtten = (DL_AGC_StartAtten[Tableindex]*0.1) + IwillgiveAtten;
6820 6957
 //            printf("WILLATTEN RET : %d \r\n",IwillgiveAtten);
6821 6958
             AGC_Alarm_Check(AGC_Alarm_DL1_Index + Tableindex,ret,&DL_Table->Table_Det5_dBm_H,IwillgiveAtten);
6959
+
6822 6960
             DL_MainAtten[DLI_AGC_H] = (((IwillgiveAtten * 10) & 0xFF00) >> 8) ;
6823 6961
             DL_MainAtten[DLI_AGC_L] = (((IwillgiveAtten * 10) & 0x00FF));   
6824
-            FRBT[DLI_AGC_H] = DL_MainAtten[DLI_AGC_H];
6825
-            FRBT[DLI_AGC_L] = DL_MainAtten[DLI_AGC_L];            
6826 6962
             CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
6827 6963
         }
6964
+        else if(bluecell_Currdatastatus.DLI_FRBT_Status == FRBT_RUNNING){
6965
+            if(CurrAtten == FRBT_Atten)
6966
+                return;
6967
+            
6968
+            if(CurrAtten + ResdBm <= Limitdata - 1){
6969
+                IwillgiveAtten = ((CurrAtten) + 1);
6970
+                
6971
+                DL_PrevIwillgiveAtten[Tableindex] = IwillgiveAtten;
6972
+                DL_MainAtten[DLI_AGC_H] = (((IwillgiveAtten * 10) & 0xFF00) >> 8) ;
6973
+                DL_MainAtten[DLI_AGC_L] = (((IwillgiveAtten * 10) & 0x00FF));   
6974
+                CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);            
6975
+            }
6976
+        }
6977
+        
6828 6978
 
6829 6979
 }
6830 6980
 #endif // PYJ.2020.06.27_END -- 
@@ -6860,7 +7010,7 @@ void AGC_Function(){//DL
6860 7010
         bluecell_Currdatastatus.ATT_DL4_H  << 8 | bluecell_Currdatastatus.ATT_DL4_L,        
6861 7011
     };
6862 7012
          
6863
-    if(AGCTimerCnt > 100){
7013
+    if(AGCTimerCnt > 500){
6864 7014
         
6865 7015
 
6866 7016
         if(bluecell_Currdatastatus.DLI_AGC_ON_OFF == true){
@@ -7146,10 +7296,10 @@ void AGC_Function(){//DL
7146 7296
             bluecell_Currdatastatus.DLI_Level1_H = (Levelret & 0xFF00) >> 8;
7147 7297
             bluecell_Currdatastatus.DLI_Level1_L = (Levelret & 0x00FF);
7148 7298
 #else
7149
-            DL_Det_Function(MBIC_Table_DL1_INDEX,&bluecell_Currdatastatus.DLI_P1_Level1_H,&Det_DL1.Table_Det5_dBm_H,&bluecell_Currdatastatus.DLI_Level1_H);
7150
-            DL_Det_Function(MBIC_Table_DL2_INDEX,&bluecell_Currdatastatus.DLI_P2_Level2_H,&Det_DL2.Table_Det5_dBm_H,&bluecell_Currdatastatus.DLI_Level2_H);
7151
-            DL_Det_Function(MBIC_Table_DL3_INDEX,&bluecell_Currdatastatus.DLI_P3_Level3_H,&Det_DL3.Table_Det5_dBm_H,&bluecell_Currdatastatus.DLI_Level3_H);
7152
-            DL_Det_Function(MBIC_Table_DL4_INDEX,&bluecell_Currdatastatus.DLI_P4_Level4_H,&Det_DL4.Table_Det5_dBm_H,&bluecell_Currdatastatus.DLI_Level4_H);
7299
+//            DL_Det_Function(MBIC_Table_DL1_INDEX,&bluecell_Currdatastatus.DLI_P1_Level1_H,&Det_DL1.Table_Det5_dBm_H,&bluecell_Currdatastatus.DLI_Level1_H);
7300
+//            DL_Det_Function(MBIC_Table_DL2_INDEX,&bluecell_Currdatastatus.DLI_P2_Level2_H,&Det_DL2.Table_Det5_dBm_H,&bluecell_Currdatastatus.DLI_Level2_H);
7301
+//            DL_Det_Function(MBIC_Table_DL3_INDEX,&bluecell_Currdatastatus.DLI_P3_Level3_H,&Det_DL3.Table_Det5_dBm_H,&bluecell_Currdatastatus.DLI_Level3_H);
7302
+//            DL_Det_Function(MBIC_Table_DL4_INDEX,&bluecell_Currdatastatus.DLI_P4_Level4_H,&Det_DL4.Table_Det5_dBm_H,&bluecell_Currdatastatus.DLI_Level4_H);
7153 7303
 
7154 7304
 
7155 7305
 #endif // PYJ.2020.07.01_END -- 
@@ -7204,6 +7354,10 @@ void AGC_Function(){//DL
7204 7354
 
7205 7355
 
7206 7356
         }
7357
+        DL_Det_Function(MBIC_Table_DL1_INDEX,&bluecell_Currdatastatus.DLI_P1_Level1_H,&Det_DL1.Table_Det5_dBm_H,&bluecell_Currdatastatus.DLI_Level1_H);
7358
+        DL_Det_Function(MBIC_Table_DL2_INDEX,&bluecell_Currdatastatus.DLI_P2_Level2_H,&Det_DL2.Table_Det5_dBm_H,&bluecell_Currdatastatus.DLI_Level2_H);
7359
+        DL_Det_Function(MBIC_Table_DL3_INDEX,&bluecell_Currdatastatus.DLI_P3_Level3_H,&Det_DL3.Table_Det5_dBm_H,&bluecell_Currdatastatus.DLI_Level3_H);
7360
+        DL_Det_Function(MBIC_Table_DL4_INDEX,&bluecell_Currdatastatus.DLI_P4_Level4_H,&Det_DL4.Table_Det5_dBm_H,&bluecell_Currdatastatus.DLI_Level4_H);        
7207 7361
         AGCTimerCnt = 0;
7208 7362
     }
7209 7363
 }
@@ -8556,36 +8710,72 @@ long totalday(int y, int m, int d)
8556 8710
 	return total;
8557 8711
 }
8558 8712
 #endif // PYJ.2020.06.28_END -- 
8713
+typedef enum{
8714
+    FRBT_H = 0,
8715
+    FRBT_L,        
8559 8716
 
8560
-void FRBT_Operate(){
8561
-    int16_t DL_Atten[DET_Alarm_DL_Index_MAX] = {0,};
8562
-    int16_t FRBT_DL_Atten[DET_Alarm_DL_Index_MAX] = {0,};
8717
+};
8563 8718
 
8564
-    FRBT_DL_Atten[DET_Alarm_DL1_Index] = bluecell_Currdatastatus.DLI_FRBT_Atten1_H << 8 | bluecell_Currdatastatus.DLI_FRBT_Atten1_L;
8565
-    FRBT_DL_Atten[DET_Alarm_DL1_Index] = bluecell_Currdatastatus.DLI_FRBT_Atten2_H << 8 | bluecell_Currdatastatus.DLI_FRBT_Atten2_L;
8566
-    FRBT_DL_Atten[DET_Alarm_DL1_Index] = bluecell_Currdatastatus.DLI_FRBT_Atten3_H << 8 | bluecell_Currdatastatus.DLI_FRBT_Atten3_L;
8567
-    FRBT_DL_Atten[DET_Alarm_DL1_Index] = bluecell_Currdatastatus.DLI_FRBT_Atten4_H << 8 | bluecell_Currdatastatus.DLI_FRBT_Atten4_L;
8719
+/*
8720
+uint8_t DLI_FRBT_D_Day;
8721
+uint8_t DLI_FRBT_Status;
8722
+*/
8723
+void FRBT_Tracking_Package(uint8_t Index, uint8_t* FRBT,uint8_t* DL_MainAtten,uint8_t path){
8724
+    int16_t DL_Atten = 0;
8725
+    int16_t FRBT_Atten = 0;
8726
+
8727
+    if(path == false)
8728
+        return;
8568 8729
     
8569
-    DL_Atten[DET_Alarm_DL1_Index] = bluecell_Currdatastatus.ATT_DL1_H << 8 | bluecell_Currdatastatus.ATT_DL1_L;
8570
-    DL_Atten[DET_Alarm_DL2_Index] = bluecell_Currdatastatus.ATT_DL2_H << 8 | bluecell_Currdatastatus.ATT_DL2_L;
8571
-    DL_Atten[DET_Alarm_DL3_Index] = bluecell_Currdatastatus.ATT_DL3_H << 8 | bluecell_Currdatastatus.ATT_DL3_L;
8572
-    DL_Atten[DET_Alarm_DL4_Index] = bluecell_Currdatastatus.ATT_DL4_H << 8 | bluecell_Currdatastatus.ATT_DL4_L;
8730
+    FRBT_Atten = FRBT[FRBT_H] << 8 | FRBT[FRBT_L];    
8731
+    DL_Atten = DL_MainAtten[FRBT_H] << 8 | DL_MainAtten[FRBT_L];
8732
+    if(FRBT_Atten == DL_Atten){
8733
+//        printf("Tracking Return %d \r\n ");
8734
+//        printf("FRBT_Atten : %d DL_Atten :  %d \r\n",FRBT_Atten,DL_Atten);        
8735
+        return;
8736
+    }
8737
+    
8738
+    printf("FRBT_Atten : %d DL_Atten :  %d \r\n",FRBT_Atten,DL_Atten);
8739
+    
8740
+    FRBT[FRBT_H] = DL_MainAtten[FRBT_H];
8741
+    FRBT[FRBT_L] = DL_MainAtten[FRBT_L];        
8742
+
8743
+}
8744
+
8745
+
8746
+void FRBT_Operate(){
8573 8747
 
8574
-//   14 06 09 00 0c 28
8575
-    if(bluecell_Currdatastatus.DLI_AGC_ON_OFF){
8576
-        FRBT_DL_Atten[DET_Alarm_DL1_Index] = DL_Atten[DET_Alarm_DL1_Index];
8577
-        FRBT_DL_Atten[DET_Alarm_DL2_Index] = DL_Atten[DET_Alarm_DL2_Index];
8578
-        FRBT_DL_Atten[DET_Alarm_DL3_Index] = DL_Atten[DET_Alarm_DL3_Index];
8579
-        FRBT_DL_Atten[DET_Alarm_DL4_Index] = DL_Atten[DET_Alarm_DL4_Index];
8580
-        bluecell_Currdatastatus.DLI_FRBT_Atten1_H = (FRBT_DL_Atten[DET_Alarm_DL1_Index] & 0xFF00) >> 8;
8581
-        bluecell_Currdatastatus.DLI_FRBT_Atten1_L =(FRBT_DL_Atten[DET_Alarm_DL1_Index] & 0x00FF);
8582
-        bluecell_Currdatastatus.DLI_FRBT_Atten2_H = (FRBT_DL_Atten[DET_Alarm_DL2_Index] & 0xFF00) >> 8;
8583
-        bluecell_Currdatastatus.DLI_FRBT_Atten2_L =(FRBT_DL_Atten[DET_Alarm_DL2_Index] & 0x00FF);
8584
-        bluecell_Currdatastatus.DLI_FRBT_Atten3_H = (FRBT_DL_Atten[DET_Alarm_DL3_Index] & 0xFF00) >> 8;
8585
-        bluecell_Currdatastatus.DLI_FRBT_Atten3_L =(FRBT_DL_Atten[DET_Alarm_DL3_Index] & 0x00FF);
8586
-        bluecell_Currdatastatus.DLI_FRBT_Atten4_H = (FRBT_DL_Atten[DET_Alarm_DL4_Index] & 0xFF00) >> 8;
8587
-        bluecell_Currdatastatus.DLI_FRBT_Atten4_L =(FRBT_DL_Atten[DET_Alarm_DL4_Index] & 0x00FF);
8748
+    if(bluecell_Currdatastatus.DLI_AGC_ON_OFF == false){    /*AGC ON ONLY*/
8749
+//        printf("AGC OFF \r\n");
8750
+        return;
8588 8751
     }
8752
+    
8753
+    /*Time Cale*/
8754
+    if(bluecell_Currdatastatus.DLI_FRBT_D_Day == 7 
8755
+    && StartTimeFRBT_Day[DLI_FRBT_Time_Hour]  <= FRBT_Day[DLI_FRBT_Time_Hour]    
8756
+    && StartTimeFRBT_Day[DLI_FRBT_Time_Minute]  <= FRBT_Day[DLI_FRBT_Time_Minute]    
8757
+    && StartTimeFRBT_Day[DLI_FRBT_Time_Second]  <= FRBT_Day[DLI_FRBT_Time_Second]
8758
+    && bluecell_Currdatastatus.DLI_FRBT_Status == FRBT_TRACKING)
8759
+    {
8760
+        bluecell_Currdatastatus.DLI_FRBT_Status = FRBT_RUNNING;
8761
+        printf("FRBT Running Start \r\n");
8762
+    }
8763
+    
8764
+    if(bluecell_Currdatastatus.DLI_FRBT_Status == FRBT_TRACKING){
8765
+        FRBT_Tracking_Package(DET_Alarm_DL1_Index,&bluecell_Currdatastatus.DLI_FRBT_Atten1_H,&bluecell_Currdatastatus.ATT_DL1_H,bluecell_Currdatastatus.ATT_DL1_PATH);
8766
+        FRBT_Tracking_Package(DET_Alarm_DL2_Index,&bluecell_Currdatastatus.DLI_FRBT_Atten2_H,&bluecell_Currdatastatus.ATT_DL2_H,bluecell_Currdatastatus.ATT_DL2_PATH);
8767
+        FRBT_Tracking_Package(DET_Alarm_DL3_Index,&bluecell_Currdatastatus.DLI_FRBT_Atten3_H,&bluecell_Currdatastatus.ATT_DL3_H,bluecell_Currdatastatus.ATT_DL3_PATH);
8768
+        FRBT_Tracking_Package(DET_Alarm_DL4_Index,&bluecell_Currdatastatus.DLI_FRBT_Atten4_H,&bluecell_Currdatastatus.ATT_DL4_H,bluecell_Currdatastatus.ATT_DL4_PATH);
8769
+//        printf("Tracking ... \r\n");
8770
+    }
8771
+//    else if(bluecell_Currdatastatus.DLI_FRBT_Status == FRBT_RUNNING){
8772
+//        FRBT_Running_Package(DET_Alarm_DL1_Index,&bluecell_Currdatastatus.DLI_FRBT_Atten1_H,&bluecell_Currdatastatus.ATT_DL1_H);
8773
+//        FRBT_Running_Package(DET_Alarm_DL2_Index,&bluecell_Currdatastatus.DLI_FRBT_Atten2_H,&bluecell_Currdatastatus.ATT_DL2_H);
8774
+//        FRBT_Running_Package(DET_Alarm_DL3_Index,&bluecell_Currdatastatus.DLI_FRBT_Atten3_H,&bluecell_Currdatastatus.ATT_DL3_H);
8775
+//        FRBT_Running_Package(DET_Alarm_DL4_Index,&bluecell_Currdatastatus.DLI_FRBT_Atten4_H,&bluecell_Currdatastatus.ATT_DL4_H);
8776
+//
8777
+//
8778
+//    }
8589 8779
 }
8590 8780
 void Alarm_Check(){
8591 8781
    // double temp = 0;

+ 4 - 1
Bluecell_Src/eeprom.c

@@ -214,7 +214,10 @@ void EEPROM_M24C08_Init(void){
214 214
     bluecell_Currdatastatus.DLI_FRBT_Atten1_L = 0;    
215 215
     bluecell_Currdatastatus.DLI_FRBT_Atten2_L = 0;    
216 216
     bluecell_Currdatastatus.DLI_FRBT_Atten3_L = 0;    
217
-    bluecell_Currdatastatus.DLI_FRBT_Atten4_L = 0;        
217
+    bluecell_Currdatastatus.DLI_FRBT_Atten4_L = 0;
218
+    bluecell_Currdatastatus.DLI_FRBT_D_Day = 0;
219
+    bluecell_Currdatastatus.DLI_FRBT_Status = 0;
220
+    
218 221
 //    bluecell_Currdatastatus.CPUVERSION1 =  0;
219 222
 //    bluecell_Currdatastatus.CPUVERSION2 = 0;
220 223
 //    bluecell_Currdatastatus.CPUVERSION3 = 8;

+ 2 - 0
Src/main.c

@@ -241,6 +241,7 @@ extern const uint16_t crc16_tab[256];
241 241
 int main(void)  {
242 242
   /* USER CODE BEGIN 1 */
243 243
 
244
+
244 245
   /* USER CODE END 1 */
245 246
 
246 247
   /* MCU Configuration--------------------------------------------------------*/
@@ -390,6 +391,7 @@ int main(void)  {
390 391
     AGC_Function();    /*AGC Function*/
391 392
     ADC_Check();       /*Det Calc + DL/UL Alarm Check Function*/
392 393
     Alarm_Check();     /*Function to check all alarm status variables*/
394
+    FRBT_Operate();
393 395
 //    Uart1_Data_Send("A",1);
394 396
 //    HAL_Delay(1);
395 397
     /* USER CODE END WHILE */