Pārlūkot izejas kodu

HFR 검수
1. 부팅시 죽는 문제 수정 CrcLength 오버 플로우 로인한 죽음 수정
2.SelfTest On off 시 Atten 0 과 이전값을 기억 수정 완료
3.Carrier OFF 시 path 제어 안되 도록 수정

PYJ 5 gadi atpakaļ
vecāks
revīzija
d8ea6c936b
3 mainītis faili ar 176 papildinājumiem un 14 dzēšanām
  1. 151 11
      Bluecell_Src/Bluecell_operate.c
  2. 21 2
      Bluecell_Src/flash.c
  3. 4 1
      Src/main.c

+ 151 - 11
Bluecell_Src/Bluecell_operate.c

@@ -80,6 +80,9 @@ extern volatile uint32_t Alarm_UL_Level_TimerOnCnt ;
80
 
80
 
81
 extern volatile uint32_t SelfTestLifeCnt[4];
81
 extern volatile uint32_t SelfTestLifeCnt[4];
82
 
82
 
83
+uint8_t Selftest_DL_PrevAttenSave[8] = {0,};
84
+uint8_t Selftest_UL_PrevAttenSave[8] = {0,};
85
+
83
 
86
 
84
 /***************************************************************************************/
87
 /***************************************************************************************/
85
 /*                                  Function                                           */
88
 /*                                  Function                                           */
@@ -180,6 +183,12 @@ typedef enum{
180
     Atten_L,        
183
     Atten_L,        
181
 };
184
 };
182
    
185
    
186
+typedef enum{
187
+    SelfTest1 = 0,
188
+    SelfTest2,
189
+    SelfTest3,
190
+    SelfTest4,    
191
+};
183
 
192
 
184
 
193
 
185
 #if 0 // PYJ.2020.05.21_BEGIN -- 
194
 #if 0 // PYJ.2020.05.21_BEGIN -- 
@@ -764,6 +773,11 @@ void DL_AttenOperate(uint8_t* Atten,uint8_t* PrevAtten,uint8_t* UserAtten,uint8_
764
 
773
 
765
 
774
 
766
 }
775
 }
776
+typedef enum{
777
+    UserAtten_H = 0,
778
+    UserAtten_L,        
779
+};
780
+
767
 void CompareAttenData(BLUESTATUS_st Curr,BLUESTATUS_st Prev){
781
 void CompareAttenData(BLUESTATUS_st Curr,BLUESTATUS_st Prev){
768
      uint8_t val = 0;
782
      uint8_t val = 0;
769
      uint16_t MBIC_Val = 0;
783
      uint16_t MBIC_Val = 0;
@@ -2506,6 +2520,8 @@ bool Bluecell_Operate(uint8_t* data){
2506
 //        printf("Function : %s Line %d \r\n",__func__,__LINE__);
2520
 //        printf("Function : %s Line %d \r\n",__func__,__LINE__);
2507
 		break;
2521
 		break;
2508
 	case ATT_SelfTest1		 :
2522
 	case ATT_SelfTest1		 :
2523
+#if 0 // PYJ.2020.07.05_BEGIN -- 
2524
+        
2509
         if(data[BLUECELL_DATA]==0){
2525
         if(data[BLUECELL_DATA]==0){
2510
             HAL_GPIO_WritePin(_PATH_SW1_GPIO_Port,_PATH_SW1_Pin,GPIO_PIN_RESET);//CLOCK
2526
             HAL_GPIO_WritePin(_PATH_SW1_GPIO_Port,_PATH_SW1_Pin,GPIO_PIN_RESET);//CLOCK
2511
             HAL_GPIO_WritePin(PATH_SW1_GPIO_Port,PATH_SW1_Pin,GPIO_PIN_SET);//CLOCK
2527
             HAL_GPIO_WritePin(PATH_SW1_GPIO_Port,PATH_SW1_Pin,GPIO_PIN_SET);//CLOCK
@@ -2516,6 +2532,28 @@ bool Bluecell_Operate(uint8_t* data){
2516
         }
2532
         }
2517
         bluecell_Currdatastatus.Selftest1 = data[BLUECELL_DATA];
2533
         bluecell_Currdatastatus.Selftest1 = data[BLUECELL_DATA];
2518
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2534
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2535
+#else
2536
+#if 0 // PYJ.2020.07.05_BEGIN -- 
2537
+        if(data[BLUECELL_DATA] == 0){
2538
+            bluecell_Currdatastatus.ATT_DL1_H = Selftest_DL_PrevAttenSave[0]; 
2539
+            bluecell_Currdatastatus.ATT_DL1_L = Selftest_DL_PrevAttenSave[1];  
2540
+            bluecell_Currdatastatus.ATT_UL1_H = Selftest_UL_PrevAttenSave[0]; 
2541
+            bluecell_Currdatastatus.ATT_UL1_L = Selftest_UL_PrevAttenSave[1];
2542
+        }else{
2543
+            Selftest_DL_PrevAttenSave[0] = bluecell_Currdatastatus.ATT_DL1_H;
2544
+            Selftest_DL_PrevAttenSave[1] = bluecell_Currdatastatus.ATT_DL1_L;            
2545
+            Selftest_UL_PrevAttenSave[0] = bluecell_Currdatastatus.ATT_UL1_H;
2546
+            Selftest_UL_PrevAttenSave[1] = bluecell_Currdatastatus.ATT_UL1_L;            
2547
+            bluecell_Currdatastatus.ATT_DL1_H = 0;
2548
+            bluecell_Currdatastatus.ATT_DL1_L = 0;        
2549
+            bluecell_Currdatastatus.ATT_UL1_H = 0;
2550
+            bluecell_Currdatastatus.ATT_UL1_L = 0;              
2551
+        }
2552
+        CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
2553
+#endif // PYJ.2020.07.05_END -- 
2554
+        SelfTest_Ctrl(SelfTest1,data[BLUECELL_DATA],&bluecell_Currdatastatus.Selftest1,&bluecell_Currdatastatus.ATT_DL1_H,&bluecell_Currdatastatus.ATT_UL1_H);
2555
+
2556
+#endif // PYJ.2020.07.05_END -- 
2519
 		break;
2557
 		break;
2520
 	case ATT_DL2_PATH		 :
2558
 	case ATT_DL2_PATH		 :
2521
 #if 0 // PYJ.2020.07.03_BEGIN -- 
2559
 #if 0 // PYJ.2020.07.03_BEGIN -- 
@@ -2572,6 +2610,7 @@ bool Bluecell_Operate(uint8_t* data){
2572
 #endif // PYJ.2020.07.03_END -- 
2610
 #endif // PYJ.2020.07.03_END -- 
2573
 		break;
2611
 		break;
2574
 	case ATT_SelfTest2		 :
2612
 	case ATT_SelfTest2		 :
2613
+#if 0 // PYJ.2020.07.05_BEGIN -- 
2575
         if(data[BLUECELL_DATA]==0){
2614
         if(data[BLUECELL_DATA]==0){
2576
             HAL_GPIO_WritePin(_PATH_SW2_GPIO_Port,_PATH_SW2_Pin,GPIO_PIN_RESET);//CLOCK
2615
             HAL_GPIO_WritePin(_PATH_SW2_GPIO_Port,_PATH_SW2_Pin,GPIO_PIN_RESET);//CLOCK
2577
             HAL_GPIO_WritePin(PATH_SW2_GPIO_Port,PATH_SW2_Pin,GPIO_PIN_SET);//CLOCK
2616
             HAL_GPIO_WritePin(PATH_SW2_GPIO_Port,PATH_SW2_Pin,GPIO_PIN_SET);//CLOCK
@@ -2580,6 +2619,10 @@ bool Bluecell_Operate(uint8_t* data){
2580
             HAL_GPIO_WritePin(_PATH_SW2_GPIO_Port,_PATH_SW2_Pin,GPIO_PIN_SET);//CLOCK
2619
             HAL_GPIO_WritePin(_PATH_SW2_GPIO_Port,_PATH_SW2_Pin,GPIO_PIN_SET);//CLOCK
2581
         }
2620
         }
2582
         bluecell_Currdatastatus.Selftest2 = data[BLUECELL_DATA];
2621
         bluecell_Currdatastatus.Selftest2 = data[BLUECELL_DATA];
2622
+#else
2623
+        SelfTest_Ctrl(SelfTest2,data[BLUECELL_DATA],&bluecell_Currdatastatus.Selftest2,&bluecell_Currdatastatus.ATT_DL2_H,&bluecell_Currdatastatus.ATT_UL2_H);
2624
+
2625
+#endif // PYJ.2020.07.05_END -- 
2583
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2626
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2584
 		break;
2627
 		break;
2585
 	case ATT_DL3_PATH :
2628
 	case ATT_DL3_PATH :
@@ -2633,6 +2676,7 @@ bool Bluecell_Operate(uint8_t* data){
2633
 #endif // PYJ.2020.07.03_END -- 
2676
 #endif // PYJ.2020.07.03_END -- 
2634
 		break;
2677
 		break;
2635
 	case ATT_SelfTest3 :
2678
 	case ATT_SelfTest3 :
2679
+#if 0 // PYJ.2020.07.05_BEGIN -- 
2636
         if(data[BLUECELL_DATA]==0){
2680
         if(data[BLUECELL_DATA]==0){
2637
             HAL_GPIO_WritePin(_PATH_SW3_GPIO_Port,_PATH_SW3_Pin,GPIO_PIN_RESET);//CLOCK
2681
             HAL_GPIO_WritePin(_PATH_SW3_GPIO_Port,_PATH_SW3_Pin,GPIO_PIN_RESET);//CLOCK
2638
             HAL_GPIO_WritePin(PATH_SW3_GPIO_Port,PATH_SW3_Pin,GPIO_PIN_SET);//CLOCK
2682
             HAL_GPIO_WritePin(PATH_SW3_GPIO_Port,PATH_SW3_Pin,GPIO_PIN_SET);//CLOCK
@@ -2642,6 +2686,10 @@ bool Bluecell_Operate(uint8_t* data){
2642
             HAL_GPIO_WritePin(_PATH_SW3_GPIO_Port,_PATH_SW3_Pin,GPIO_PIN_SET);//CLOCK
2686
             HAL_GPIO_WritePin(_PATH_SW3_GPIO_Port,_PATH_SW3_Pin,GPIO_PIN_SET);//CLOCK
2643
         }
2687
         }
2644
         bluecell_Currdatastatus.Selftest3 = data[BLUECELL_DATA];
2688
         bluecell_Currdatastatus.Selftest3 = data[BLUECELL_DATA];
2689
+#else
2690
+        SelfTest_Ctrl(SelfTest3,data[BLUECELL_DATA],&bluecell_Currdatastatus.Selftest3,&bluecell_Currdatastatus.ATT_DL3_H,&bluecell_Currdatastatus.ATT_UL3_H);
2691
+
2692
+#endif // PYJ.2020.07.05_END -- 
2645
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2693
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2646
 		break;
2694
 		break;
2647
 	case ATT_DL4_PATH :
2695
 	case ATT_DL4_PATH :
@@ -2698,6 +2746,7 @@ bool Bluecell_Operate(uint8_t* data){
2698
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2746
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2699
 		break;
2747
 		break;
2700
 	case ATT_SelfTest4 :
2748
 	case ATT_SelfTest4 :
2749
+#if 0 // PYJ.2020.07.05_BEGIN -- 
2701
 	  if(data[BLUECELL_DATA]==0){
2750
 	  if(data[BLUECELL_DATA]==0){
2702
 	    HAL_GPIO_WritePin(_PATH_SW4_GPIO_Port,_PATH_SW4_Pin,GPIO_PIN_RESET);//CLOCK
2751
 	    HAL_GPIO_WritePin(_PATH_SW4_GPIO_Port,_PATH_SW4_Pin,GPIO_PIN_RESET);//CLOCK
2703
 	    HAL_GPIO_WritePin(PATH_SW4_GPIO_Port,PATH_SW4_Pin,GPIO_PIN_SET);//CLOCK
2752
 	    HAL_GPIO_WritePin(PATH_SW4_GPIO_Port,PATH_SW4_Pin,GPIO_PIN_SET);//CLOCK
@@ -2706,6 +2755,10 @@ bool Bluecell_Operate(uint8_t* data){
2706
 	    HAL_GPIO_WritePin(PATH_SW4_GPIO_Port,PATH_SW4_Pin,GPIO_PIN_RESET);//CLOCK
2755
 	    HAL_GPIO_WritePin(PATH_SW4_GPIO_Port,PATH_SW4_Pin,GPIO_PIN_RESET);//CLOCK
2707
 	  }
2756
 	  }
2708
       bluecell_Currdatastatus.Selftest4 = data[BLUECELL_DATA];
2757
       bluecell_Currdatastatus.Selftest4 = data[BLUECELL_DATA];
2758
+#else
2759
+        SelfTest_Ctrl(SelfTest4,data[BLUECELL_DATA],&bluecell_Currdatastatus.Selftest4,&bluecell_Currdatastatus.ATT_DL4_H,&bluecell_Currdatastatus.ATT_UL4_H);
2760
+
2761
+#endif // PYJ.2020.07.05_END -- 
2709
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2762
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2710
 		break;
2763
 		break;
2711
     case ATT_TableSet:
2764
     case ATT_TableSet:
@@ -2860,7 +2913,7 @@ bool Bluecell_Operate(uint8_t* data){
2860
 
2913
 
2861
 
2914
 
2862
         
2915
         
2863
-        printf("Temp Alarm %d \r\n");
2916
+        printf("Temp Alarm %d \r\n",bluecell_Currdatastatus.ALARM_TEMP_HIGH);
2864
         printf("ALC  Alarm 1: %d 2:  %d 3: %d 4: %d\r\n",
2917
         printf("ALC  Alarm 1: %d 2:  %d 3: %d 4: %d\r\n",
2865
             bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm & ALARM_ALC_P1,
2918
             bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm & ALARM_ALC_P1,
2866
             bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm & ALARM_ALC_P2,
2919
             bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm & ALARM_ALC_P2,
@@ -3379,10 +3432,14 @@ typedef enum{
3379
     Turn off all paths at boot
3432
     Turn off all paths at boot
3380
  */
3433
  */
3381
    
3434
    
3382
-   bluecell_Currdatastatus.Type =  HAL_GPIO_ReadPin(UNIT_ID0_GPIO_Port,UNIT_ID0_Pin);
3435
+   bluecell_Currdatastatus.Type =   HAL_GPIO_ReadPin(UNIT_ID0_GPIO_Port,UNIT_ID0_Pin);
3383
    bluecell_Currdatastatus.Type +=  HAL_GPIO_ReadPin(UNIT_ID1_GPIO_Port,UNIT_ID1_Pin) << 1;
3436
    bluecell_Currdatastatus.Type +=  HAL_GPIO_ReadPin(UNIT_ID1_GPIO_Port,UNIT_ID1_Pin) << 1;
3384
    bluecell_Currdatastatus.Type +=  HAL_GPIO_ReadPin(UNIT_ID2_GPIO_Port,UNIT_ID2_Pin) << 2;
3437
    bluecell_Currdatastatus.Type +=  HAL_GPIO_ReadPin(UNIT_ID2_GPIO_Port,UNIT_ID2_Pin) << 2;
3385
    bluecell_Currdatastatus.Type +=  HAL_GPIO_ReadPin(UNIT_ID3_GPIO_Port,UNIT_ID3_Pin) << 3;
3438
    bluecell_Currdatastatus.Type +=  HAL_GPIO_ReadPin(UNIT_ID3_GPIO_Port,UNIT_ID3_Pin) << 3;
3439
+   printf("0: %d \r\n",HAL_GPIO_ReadPin(UNIT_ID0_GPIO_Port,UNIT_ID0_Pin));
3440
+   printf("1: %d \r\n",HAL_GPIO_ReadPin(UNIT_ID1_GPIO_Port,UNIT_ID1_Pin));
3441
+   printf("2: %d \r\n",HAL_GPIO_ReadPin(UNIT_ID2_GPIO_Port,UNIT_ID2_Pin));
3442
+   printf("3: %d \r\n",HAL_GPIO_ReadPin(UNIT_ID3_GPIO_Port,UNIT_ID3_Pin));   
3386
     switch(bluecell_Currdatastatus.Type){
3443
     switch(bluecell_Currdatastatus.Type){
3387
      case BLUECELL_3_7G: bluecell_Currdatastatus.Type = 0x80;bluecell_Currdatastatus.Carrier_ID = 0x01 ;printf("Type BLUECELL_3_7G  Ready....\r\n"); break;
3444
      case BLUECELL_3_7G: bluecell_Currdatastatus.Type = 0x80;bluecell_Currdatastatus.Carrier_ID = 0x01 ;printf("Type BLUECELL_3_7G  Ready....\r\n"); break;
3388
      case BLUECELL_3_8G: bluecell_Currdatastatus.Type = 0x81;bluecell_Currdatastatus.Carrier_ID = 0x02; printf("Type BLUECELL_3_8G  Ready....\r\n");break;
3445
      case BLUECELL_3_8G: bluecell_Currdatastatus.Type = 0x81;bluecell_Currdatastatus.Carrier_ID = 0x02; printf("Type BLUECELL_3_8G  Ready....\r\n");break;
@@ -3391,7 +3448,7 @@ typedef enum{
3391
      case BLUECELL_4_1G: bluecell_Currdatastatus.Type = 0x84;bluecell_Currdatastatus.Carrier_ID = 0x02; printf("Type BLUECELL_4_1G  Ready....\r\n");break;
3448
      case BLUECELL_4_1G: bluecell_Currdatastatus.Type = 0x84;bluecell_Currdatastatus.Carrier_ID = 0x02; printf("Type BLUECELL_4_1G  Ready....\r\n");break;
3392
      case BLUECELL_4_6G: bluecell_Currdatastatus.Type = 0x85;bluecell_Currdatastatus.Carrier_ID = 0x01; printf("Type BLUECELL_4_6G  Ready....\r\n");break;
3449
      case BLUECELL_4_6G: bluecell_Currdatastatus.Type = 0x85;bluecell_Currdatastatus.Carrier_ID = 0x01; printf("Type BLUECELL_4_6G  Ready....\r\n");break;
3393
      case BLUECELL_4_7G: bluecell_Currdatastatus.Type = 0x86;bluecell_Currdatastatus.Carrier_ID = 0x00; printf("Type BLUECELL_4_7G  Ready....\r\n");break;
3450
      case BLUECELL_4_7G: bluecell_Currdatastatus.Type = 0x86;bluecell_Currdatastatus.Carrier_ID = 0x00; printf("Type BLUECELL_4_7G  Ready....\r\n");break;
3394
-     case BLUECELL_4_8G: bluecell_Currdatastatus.Type = 0x87;bluecell_Currdatastatus.Carrier_ID = 0x00; printf("Type BLUECELL_3_7G  Ready....\r\n");break;
3451
+     case BLUECELL_4_8G: bluecell_Currdatastatus.Type = 0x87;bluecell_Currdatastatus.Carrier_ID = 0x00; printf("Type BLUECELL_4_8G  Ready....\r\n");break;
3395
      case BLUECELL_4_9G: bluecell_Currdatastatus.Type = 0x88;bluecell_Currdatastatus.Carrier_ID = 0x00; printf("Type BLUECELL_4_9G  Ready....\r\n");break;
3452
      case BLUECELL_4_9G: bluecell_Currdatastatus.Type = 0x88;bluecell_Currdatastatus.Carrier_ID = 0x00; printf("Type BLUECELL_4_9G  Ready....\r\n");break;
3396
      case BLUECELL_5_0G: bluecell_Currdatastatus.Type = 0x89;bluecell_Currdatastatus.Carrier_ID = 0x00; printf("Type BLUECELL_5_0G  Ready....\r\n");break;
3453
      case BLUECELL_5_0G: bluecell_Currdatastatus.Type = 0x89;bluecell_Currdatastatus.Carrier_ID = 0x00; printf("Type BLUECELL_5_0G  Ready....\r\n");break;
3397
      case BLUECELL_DCM : bluecell_Currdatastatus.Type = 0x8A;bluecell_Currdatastatus.Carrier_ID = 0x01;printf("Type BLUECELL_DCM  Ready....\r\n"); break;
3454
      case BLUECELL_DCM : bluecell_Currdatastatus.Type = 0x8A;bluecell_Currdatastatus.Carrier_ID = 0x01;printf("Type BLUECELL_DCM  Ready....\r\n"); break;
@@ -4533,6 +4590,9 @@ void Factory_Set(){
4533
 void DL_Path_OnOff(uint8_t Index,uint8_t value,uint8_t* path,uint8_t* PrevAtten,uint8_t* retrycnt,uint8_t* PrevRetryCnt){
4590
 void DL_Path_OnOff(uint8_t Index,uint8_t value,uint8_t* path,uint8_t* PrevAtten,uint8_t* retrycnt,uint8_t* PrevRetryCnt){
4534
     GPIO_TypeDef *Port = 0;
4591
     GPIO_TypeDef *Port = 0;
4535
     uint16_t Pin = 0;    
4592
     uint16_t Pin = 0;    
4593
+    if(bluecell_Currdatastatus.Carrier_ON_OFF == false)
4594
+        return;
4595
+        
4536
     switch(Index){
4596
     switch(Index){
4537
         case Path1_OnOff:
4597
         case Path1_OnOff:
4538
         Port = PATH_EN_DL1_GPIO_Port;
4598
         Port = PATH_EN_DL1_GPIO_Port;
@@ -4570,6 +4630,8 @@ void DL_Path_OnOff(uint8_t Index,uint8_t value,uint8_t* path,uint8_t* PrevAtten,
4570
 void UL_Path_OnOff(uint8_t Index,uint8_t value,uint8_t* path,uint8_t* PrevAtten,uint8_t* retrycnt,uint8_t* PrevRetryCnt){
4630
 void UL_Path_OnOff(uint8_t Index,uint8_t value,uint8_t* path,uint8_t* PrevAtten,uint8_t* retrycnt,uint8_t* PrevRetryCnt){
4571
     GPIO_TypeDef *Port = 0;
4631
     GPIO_TypeDef *Port = 0;
4572
     uint16_t Pin = 0;    
4632
     uint16_t Pin = 0;    
4633
+     if(bluecell_Currdatastatus.Carrier_ON_OFF == false)
4634
+            return;    
4573
     switch(Index){
4635
     switch(Index){
4574
         case Path1_OnOff:
4636
         case Path1_OnOff:
4575
         Port = PATH_EN_UL1_GPIO_Port;
4637
         Port = PATH_EN_UL1_GPIO_Port;
@@ -5427,6 +5489,7 @@ bool MBIC_Operate(uint8_t* data){
5427
 //                bluecell_Currdatastatus.ULO_Level_High_Threshold_default = data[MBIC_PAYLOADSTART + 3]; 
5489
 //                bluecell_Currdatastatus.ULO_Level_High_Threshold_default = data[MBIC_PAYLOADSTART + 3]; 
5428
                 break;
5490
                 break;
5429
             case ULO_SelfTest1:
5491
             case ULO_SelfTest1:
5492
+#if 0 // PYJ.2020.07.05_BEGIN -- 
5430
                 if(data[MBIC_PAYLOADSTART + 3]==0){
5493
                 if(data[MBIC_PAYLOADSTART + 3]==0){
5431
                     HAL_GPIO_WritePin(_PATH_SW1_GPIO_Port,_PATH_SW1_Pin,GPIO_PIN_RESET);//CLOCK
5494
                     HAL_GPIO_WritePin(_PATH_SW1_GPIO_Port,_PATH_SW1_Pin,GPIO_PIN_RESET);//CLOCK
5432
                     HAL_GPIO_WritePin(PATH_SW1_GPIO_Port,PATH_SW1_Pin,GPIO_PIN_SET);//CLOCK
5495
                     HAL_GPIO_WritePin(PATH_SW1_GPIO_Port,PATH_SW1_Pin,GPIO_PIN_SET);//CLOCK
@@ -5436,8 +5499,13 @@ bool MBIC_Operate(uint8_t* data){
5436
                     HAL_GPIO_WritePin(PATH_SW1_GPIO_Port,PATH_SW1_Pin,GPIO_PIN_RESET);//CLOCK
5499
                     HAL_GPIO_WritePin(PATH_SW1_GPIO_Port,PATH_SW1_Pin,GPIO_PIN_RESET);//CLOCK
5437
                 }
5500
                 }
5438
                 bluecell_Currdatastatus.Selftest1 = data[MBIC_PAYLOADSTART + 3];                
5501
                 bluecell_Currdatastatus.Selftest1 = data[MBIC_PAYLOADSTART + 3];                
5502
+#else
5503
+                SelfTest_Ctrl(SelfTest1,data[MBIC_PAYLOADSTART + 3],&bluecell_Currdatastatus.Selftest1,&bluecell_Currdatastatus.ATT_DL1_H,&bluecell_Currdatastatus.ATT_UL1_H);
5504
+
5505
+#endif // PYJ.2020.07.05_END -- 
5439
                 break;
5506
                 break;
5440
             case ULO_SelfTest2:
5507
             case ULO_SelfTest2:
5508
+#if 0 // PYJ.2020.07.05_BEGIN -- 
5441
                 if(data[MBIC_PAYLOADSTART + 3]==0){
5509
                 if(data[MBIC_PAYLOADSTART + 3]==0){
5442
                     HAL_GPIO_WritePin(_PATH_SW2_GPIO_Port,_PATH_SW2_Pin,GPIO_PIN_RESET);//CLOCK
5510
                     HAL_GPIO_WritePin(_PATH_SW2_GPIO_Port,_PATH_SW2_Pin,GPIO_PIN_RESET);//CLOCK
5443
                     HAL_GPIO_WritePin(PATH_SW2_GPIO_Port,PATH_SW2_Pin,GPIO_PIN_SET);//CLOCK
5511
                     HAL_GPIO_WritePin(PATH_SW2_GPIO_Port,PATH_SW2_Pin,GPIO_PIN_SET);//CLOCK
@@ -5447,8 +5515,13 @@ bool MBIC_Operate(uint8_t* data){
5447
                     HAL_GPIO_WritePin(PATH_SW2_GPIO_Port,PATH_SW2_Pin,GPIO_PIN_RESET);//CLOCK
5515
                     HAL_GPIO_WritePin(PATH_SW2_GPIO_Port,PATH_SW2_Pin,GPIO_PIN_RESET);//CLOCK
5448
                 }
5516
                 }
5449
                 bluecell_Currdatastatus.Selftest2 = data[MBIC_PAYLOADSTART + 3];                
5517
                 bluecell_Currdatastatus.Selftest2 = data[MBIC_PAYLOADSTART + 3];                
5518
+#else
5519
+                SelfTest_Ctrl(SelfTest2,data[MBIC_PAYLOADSTART + 3],&bluecell_Currdatastatus.Selftest2,&bluecell_Currdatastatus.ATT_DL2_H,&bluecell_Currdatastatus.ATT_UL2_H);
5520
+
5521
+#endif // PYJ.2020.07.05_END -- 
5450
                 break;
5522
                 break;
5451
             case ULO_SelfTest3:
5523
             case ULO_SelfTest3:
5524
+#if 0 // PYJ.2020.07.05_BEGIN -- 
5452
                 if(data[MBIC_PAYLOADSTART + 3]==0){
5525
                 if(data[MBIC_PAYLOADSTART + 3]==0){
5453
                     HAL_GPIO_WritePin(_PATH_SW3_GPIO_Port,_PATH_SW3_Pin,GPIO_PIN_RESET);//CLOCK
5526
                     HAL_GPIO_WritePin(_PATH_SW3_GPIO_Port,_PATH_SW3_Pin,GPIO_PIN_RESET);//CLOCK
5454
                     HAL_GPIO_WritePin(PATH_SW3_GPIO_Port,PATH_SW3_Pin,GPIO_PIN_SET);//CLOCK
5527
                     HAL_GPIO_WritePin(PATH_SW3_GPIO_Port,PATH_SW3_Pin,GPIO_PIN_SET);//CLOCK
@@ -5458,8 +5531,13 @@ bool MBIC_Operate(uint8_t* data){
5458
                     HAL_GPIO_WritePin(PATH_SW3_GPIO_Port,PATH_SW3_Pin,GPIO_PIN_RESET);//CLOCK
5531
                     HAL_GPIO_WritePin(PATH_SW3_GPIO_Port,PATH_SW3_Pin,GPIO_PIN_RESET);//CLOCK
5459
                 }
5532
                 }
5460
                 bluecell_Currdatastatus.Selftest3 = data[MBIC_PAYLOADSTART + 3];                
5533
                 bluecell_Currdatastatus.Selftest3 = data[MBIC_PAYLOADSTART + 3];                
5534
+#else         
5535
+                SelfTest_Ctrl(SelfTest3,data[MBIC_PAYLOADSTART + 3],&bluecell_Currdatastatus.Selftest3,&bluecell_Currdatastatus.ATT_DL3_H,&bluecell_Currdatastatus.ATT_UL3_H);
5536
+
5537
+#endif // PYJ.2020.07.05_END -- 
5461
                 break;
5538
                 break;
5462
             case ULO_SelfTest4:
5539
             case ULO_SelfTest4:
5540
+#if 0 // PYJ.2020.07.05_BEGIN -- 
5463
                 if(data[MBIC_PAYLOADSTART + 3]==0){
5541
                 if(data[MBIC_PAYLOADSTART + 3]==0){
5464
                     HAL_GPIO_WritePin(_PATH_SW4_GPIO_Port,_PATH_SW4_Pin,GPIO_PIN_RESET);//CLOCK
5542
                     HAL_GPIO_WritePin(_PATH_SW4_GPIO_Port,_PATH_SW4_Pin,GPIO_PIN_RESET);//CLOCK
5465
                     HAL_GPIO_WritePin(PATH_SW4_GPIO_Port,PATH_SW4_Pin,GPIO_PIN_SET);//CLOCK
5543
                     HAL_GPIO_WritePin(PATH_SW4_GPIO_Port,PATH_SW4_Pin,GPIO_PIN_SET);//CLOCK
@@ -5469,6 +5547,10 @@ bool MBIC_Operate(uint8_t* data){
5469
                     HAL_GPIO_WritePin(PATH_SW4_GPIO_Port,PATH_SW4_Pin,GPIO_PIN_RESET);//CLOCK
5547
                     HAL_GPIO_WritePin(PATH_SW4_GPIO_Port,PATH_SW4_Pin,GPIO_PIN_RESET);//CLOCK
5470
                 }
5548
                 }
5471
                 bluecell_Currdatastatus.Selftest4 = data[MBIC_PAYLOADSTART + 3];                
5549
                 bluecell_Currdatastatus.Selftest4 = data[MBIC_PAYLOADSTART + 3];                
5550
+#else
5551
+                SelfTest_Ctrl(SelfTest4,data[MBIC_PAYLOADSTART + 3],&bluecell_Currdatastatus.Selftest4,&bluecell_Currdatastatus.ATT_DL4_H,&bluecell_Currdatastatus.ATT_UL4_H);
5552
+
5553
+#endif // PYJ.2020.07.05_END -- 
5472
                 break;
5554
                 break;
5473
             case  ULO_ALC_ON_OFF                   :
5555
             case  ULO_ALC_ON_OFF                   :
5474
                 bluecell_Currdatastatus.ULO_ALC_ON_OFF = data[MBIC_PAYLOADSTART + 3]; 
5556
                 bluecell_Currdatastatus.ULO_ALC_ON_OFF = data[MBIC_PAYLOADSTART + 3]; 
@@ -5484,9 +5566,9 @@ bool MBIC_Operate(uint8_t* data){
5484
             case  ULO_ALC_Threshold_Default               :
5566
             case  ULO_ALC_Threshold_Default               :
5485
 			    tempdata = ULO_ALC_THREADHOLD_DEFAULT;
5567
 			    tempdata = ULO_ALC_THREADHOLD_DEFAULT;
5486
 			    bluecell_Currdatastatus.ULO_ALC_Threshold_H = ((tempdata & 0xFF00) >> 8);    
5568
 			    bluecell_Currdatastatus.ULO_ALC_Threshold_H = ((tempdata & 0xFF00) >> 8);    
5487
-			    bluecell_Currdatastatus.ULO_ALC_Threshold_L = ((tempdata & 0x00FF));  				
5569
+			    bluecell_Currdatastatus.ULO_ALC_Threshold_L = ((tempdata & 0x00FF));  	
5570
+                printf("ALC DEFAULT VALUE SETTING COMPLETE \r\n");
5488
 //                bluecell_Currdatastatus.ULO_ALC_Threshold_Default = data[MBIC_PAYLOADSTART + 3]; 
5571
 //                bluecell_Currdatastatus.ULO_ALC_Threshold_Default = data[MBIC_PAYLOADSTART + 3]; 
5489
-
5490
                 break;
5572
                 break;
5491
             case  ULO_Shutdown_ON_OFF                     :
5573
             case  ULO_Shutdown_ON_OFF                     :
5492
                 bluecell_Currdatastatus.ULO_Shutdown_ON_OFF = data[MBIC_PAYLOADSTART + 3]; 
5574
                 bluecell_Currdatastatus.ULO_Shutdown_ON_OFF = data[MBIC_PAYLOADSTART + 3]; 
@@ -9464,12 +9546,7 @@ void FRBT_Tracking_Package(uint8_t Index, uint8_t* FRBT,uint8_t* DL_MainAtten,ui
9464
     FRBT[FRBT_L] = DL_MainAtten[FRBT_L];        
9546
     FRBT[FRBT_L] = DL_MainAtten[FRBT_L];        
9465
 
9547
 
9466
 }
9548
 }
9467
-typedef enum{
9468
-    SelfTest1 = 0,
9469
-    SelfTest2,
9470
-    SelfTest3,
9471
-    SelfTest4,    
9472
-};
9549
+
9473
 void SelfTest_TimerOff(uint8_t num,uint8_t* selftest){
9550
 void SelfTest_TimerOff(uint8_t num,uint8_t* selftest){
9474
     GPIO_TypeDef *Port = 0;
9551
     GPIO_TypeDef *Port = 0;
9475
     uint16_t Pin = 0;
9552
     uint16_t Pin = 0;
@@ -9513,6 +9590,69 @@ void SelfTest_TimerOff(uint8_t num,uint8_t* selftest){
9513
     HAL_GPIO_WritePin(Port,Pin,GPIO_PIN_SET);//CLOCK
9590
     HAL_GPIO_WritePin(Port,Pin,GPIO_PIN_SET);//CLOCK
9514
     
9591
     
9515
 }
9592
 }
9593
+
9594
+void SelfTest_Ctrl(uint8_t num,uint8_t val,uint8_t* selftest,uint8_t* DL_Atten,uint8_t* UL_Atten){
9595
+    GPIO_TypeDef *Port = 0;
9596
+    uint16_t Pin = 0;
9597
+    GPIO_TypeDef *_Port = 0;
9598
+    uint16_t _Pin = 0;   
9599
+    
9600
+    switch(num){
9601
+        case SelfTest1:
9602
+        _Port = _PATH_SW1_GPIO_Port;
9603
+        _Pin = _PATH_SW1_Pin;
9604
+        
9605
+        Port = PATH_SW1_GPIO_Port;
9606
+        Pin =  PATH_SW1_Pin;   
9607
+        break;
9608
+        case SelfTest2:
9609
+        _Port = _PATH_SW2_GPIO_Port;
9610
+        _Pin = _PATH_SW2_Pin;
9611
+        
9612
+        Port = PATH_SW2_GPIO_Port;
9613
+        Pin =  PATH_SW2_Pin;        
9614
+        break;
9615
+        case SelfTest3:
9616
+        _Port = _PATH_SW3_GPIO_Port;
9617
+        _Pin = _PATH_SW3_Pin;
9618
+        
9619
+        Port = PATH_SW3_GPIO_Port;
9620
+        Pin =  PATH_SW3_Pin;        
9621
+        break;
9622
+        case SelfTest4:
9623
+        _Port = _PATH_SW4_GPIO_Port;
9624
+        _Pin = _PATH_SW4_Pin;
9625
+        
9626
+        Port = PATH_SW4_GPIO_Port;
9627
+        Pin =  PATH_SW4_Pin;        
9628
+        break;        
9629
+    }
9630
+
9631
+        
9632
+    if(val == true){
9633
+        Selftest_DL_PrevAttenSave[num * 2]         = DL_Atten[Atten_H];
9634
+        Selftest_DL_PrevAttenSave[((num * 2) + 1)] = DL_Atten[Atten_L];
9635
+        Selftest_UL_PrevAttenSave[num * 2]         = UL_Atten[Atten_H];
9636
+        Selftest_UL_PrevAttenSave[((num * 2) + 1)] = UL_Atten[Atten_L];
9637
+        DL_Atten[Atten_H] = 0;
9638
+        DL_Atten[Atten_L] = 0;
9639
+        UL_Atten[Atten_H] = 0;
9640
+        UL_Atten[Atten_L] = 0;          
9641
+        HAL_GPIO_WritePin(_Port,_Pin,GPIO_PIN_SET);//CLOCK
9642
+        HAL_GPIO_WritePin(Port,Pin,GPIO_PIN_RESET);//CLOCK
9643
+    }else{
9644
+        DL_Atten[Atten_H] = Selftest_DL_PrevAttenSave[num * 2];
9645
+        DL_Atten[Atten_L] = Selftest_DL_PrevAttenSave[((num * 2) + 1)];    
9646
+        UL_Atten[Atten_H] = Selftest_UL_PrevAttenSave[num * 2];
9647
+        UL_Atten[Atten_L] = Selftest_UL_PrevAttenSave[((num * 2) + 1)];              
9648
+        HAL_GPIO_WritePin(_Port,_Pin,GPIO_PIN_RESET);//CLOCK
9649
+        HAL_GPIO_WritePin(Port,Pin,GPIO_PIN_SET);//CLOCK
9650
+    }
9651
+    CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);       
9652
+    *selftest = val;
9653
+    
9654
+}
9655
+
9516
 void SelfTestTimer_Operate()
9656
 void SelfTestTimer_Operate()
9517
 {
9657
 {
9518
     SelfTest_TimerOff(SelfTest1,&bluecell_Currdatastatus.Selftest1);
9658
     SelfTest_TimerOff(SelfTest1,&bluecell_Currdatastatus.Selftest1);

+ 21 - 2
Bluecell_Src/flash.c

@@ -28,6 +28,25 @@ void Jump_App(void){
28
     jump_to_app();
28
     jump_to_app();
29
 }
29
 }
30
 
30
 
31
+uint8_t CurrFlash_BankCheck(){
32
+    uint32_t  CurrApiAddress = 0,Bank1Address=0,Bank2Address = 0;
33
+    uint32_t i = 0;
34
+    uint8_t ret = 0;
35
+    CurrApiAddress = FLASH_MBICUSER_START_ADDR;
36
+    Bank1Address = FLASH_USER_BANK1_START_ADDR;
37
+    Bank2Address = FLASH_USER_BANK2_START_ADDR;
38
+    
39
+    uint8_t* Currdata = (uint8_t*)CurrApiAddress;
40
+    uint8_t* Bank1data = (uint8_t*)Bank1Address;
41
+    uint8_t* Bank2data = (uint8_t*)Bank2Address;
42
+
43
+    for(i = 0; i < MBIC_BOOT_DATA; i++){
44
+        if(Currdata[MBIC_BOOT_MARK + i] != Bank2data[MBIC_BOOT_MARK + i]){
45
+            return HFR_BANK1_SEL;
46
+        }
47
+    }
48
+    return HFR_BANK2_SEL;
49
+}
31
 
50
 
32
 
51
 
33
 void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
52
 void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
@@ -177,7 +196,7 @@ void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
177
     | Bank1data[MBIC_BOOT_LENGTH + 1]<<16 
196
     | Bank1data[MBIC_BOOT_LENGTH + 1]<<16 
178
     | Bank1data[MBIC_BOOT_LENGTH + 2]<<8   
197
     | Bank1data[MBIC_BOOT_LENGTH + 2]<<8   
179
     | Bank1data[MBIC_BOOT_LENGTH + 3]);
198
     | Bank1data[MBIC_BOOT_LENGTH + 3]);
180
-    if(CrcLength > 0 )
199
+    if(CrcLength > 0 && CrcLength <= 0x1FFFF )
181
         crcret = crc32(&Bank1data[MBIC_BOOT_DATA], CrcLength);
200
         crcret = crc32(&Bank1data[MBIC_BOOT_DATA], CrcLength);
182
     if(crcret != FileCrc){
201
     if(crcret != FileCrc){
183
         bluecell_Currdatastatus.CPU_Bank1_Image_Version1 = 0xFF;
202
         bluecell_Currdatastatus.CPU_Bank1_Image_Version1 = 0xFF;
@@ -254,7 +273,7 @@ void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
254
     | Bank2data[MBIC_BOOT_LENGTH + 1]<<16 
273
     | Bank2data[MBIC_BOOT_LENGTH + 1]<<16 
255
     | Bank2data[MBIC_BOOT_LENGTH + 2]<<8   
274
     | Bank2data[MBIC_BOOT_LENGTH + 2]<<8   
256
     | Bank2data[MBIC_BOOT_LENGTH + 3]);       
275
     | Bank2data[MBIC_BOOT_LENGTH + 3]);       
257
-     if(CrcLength > 0 )
276
+     if(CrcLength > 0 && CrcLength <= 0x1FFFF )
258
         crcret = crc32(&Bank2data[MBIC_BOOT_DATA], CrcLength);
277
         crcret = crc32(&Bank2data[MBIC_BOOT_DATA], CrcLength);
259
     if(crcret != FileCrc){
278
     if(crcret != FileCrc){
260
    
279
    

+ 4 - 1
Src/main.c

@@ -304,8 +304,10 @@ int main(void)  {
304
         | Bank1data[MBIC_BOOT_LENGTH + 2]<<8   
304
         | Bank1data[MBIC_BOOT_LENGTH + 2]<<8   
305
         | Bank1data[MBIC_BOOT_LENGTH + 3]);    
305
         | Bank1data[MBIC_BOOT_LENGTH + 3]);    
306
 
306
 
307
-        if(CrcLength > 0)
307
+        if(CrcLength > 0 && CrcLength <= 0x1FFFF ){
308
+            printf("Bank 1 Crc ret : %x  Length : %x :  %d \r\n",crcret ,CrcLength,CrcLength);
308
             crcret = CRC16_Generate(Bank1data, CrcLength + 128);
309
             crcret = CRC16_Generate(Bank1data, CrcLength + 128);
310
+        }
309
         CrcLength += 128;
311
         CrcLength += 128;
310
         printf("Bank 1 Crc ret : %x  Length : %x :  %d \r\n",crcret ,CrcLength,CrcLength);
312
         printf("Bank 1 Crc ret : %x  Length : %x :  %d \r\n",crcret ,CrcLength,CrcLength);
311
         
313
         
@@ -318,6 +320,7 @@ int main(void)  {
318
         
320
         
319
         printf("Bank 2 Crc ret : %x  Length : %x :  %d  \r\n", crcret,CrcLength,CrcLength );
321
         printf("Bank 2 Crc ret : %x  Length : %x :  %d  \r\n", crcret,CrcLength,CrcLength );
320
         CrcLength += 128;
322
         CrcLength += 128;
323
+        if(CrcLength > 0 && CrcLength <= 0x1FFFF )
321
          crcret = CRC16_Generate(Bank2data, CrcLength );
324
          crcret = CRC16_Generate(Bank2data, CrcLength );
322
         printf("Bank 2 Crc ret : %x  Length : %x :  %d  \r\n", crcret,CrcLength,CrcLength );
325
         printf("Bank 2 Crc ret : %x  Length : %x :  %d  \r\n", crcret,CrcLength,CrcLength );
323
 
326