Browse Source

Alarm Log Report 기능 구현
- Alarm Log #define 선언
LED Test
- 10번 반복으로 변경

HFR 디버깅 문제 사항
Mask / Unmask 정상 동작 안하는 문제 수정
Alarm Mask = Flag 로 값을 주어야한다.

부트로더 Auto Restart 기능 추가 ( 디버깅 후 테스트 완료)

PYJ 4 years ago
parent
commit
f2addabe90
4 changed files with 514 additions and 133 deletions
  1. 485 115
      Bluecell_Src/Bluecell_operate.c
  2. 26 16
      Bluecell_Src/MBIC_Bootloader.c
  3. 1 1
      Bluecell_Src/uart.c
  4. 2 1
      Src/main.c

+ 485 - 115
Bluecell_Src/Bluecell_operate.c

@@ -84,8 +84,8 @@ extern volatile uint32_t ADC_100ms_Cnt;
84 84
 extern volatile uint32_t HFR_ADC1value[ADC1_CNT];
85 85
 extern volatile uint32_t HFR_ADC3value[ADC3_CNT];
86 86
 
87
-uint8_t Selftest_DL_PrevAttenSave[8] = {0,};
88
-uint8_t Selftest_UL_PrevAttenSave[8] = {0,};
87
+volatile uint8_t Selftest_DL_PrevAttenSave[8] = {0,};
88
+volatile uint8_t Selftest_UL_PrevAttenSave[8] = {0,};
89 89
 uint8_t TempShutdown_DL_SaveData[4] = {false,};
90 90
 uint8_t TempShutdown_UL_SaveData[4] = {false,};    
91 91
 
@@ -148,6 +148,36 @@ void UL_Path_OnOff(uint8_t Index,uint8_t value,uint8_t* path,uint8_t* PrevAtten,
148 148
 #define TableDataSetting_ATT_UL_LEVEL_STEP -1 
149 149
 #define MBIC_AID  0xE0
150 150
 
151
+#define Temp_High 				0xE014
152
+#define DLI_P4_Level_Low		0xE043
153
+#define DLI_P3_Level_Low 		0xE042
154
+#define DLI_P2_Level_Low		0xE041
155
+#define DLI_P1_Level_Low		0xE040
156
+#define DLI_P4_Level_High		0xE047
157
+#define DLI_P3_Level_High		0xE046
158
+#define DLI_P2_Level_High		0xE045
159
+#define DLI_P1_Level_High		0xE044
160
+#define DLI_P4_AGC_Alarm		0xE05A
161
+#define DLI_P3_AGC_Alarm		0xE059
162
+#define DLI_P2_AGC_Alarm		0xE058
163
+#define DLI_P1_AGC_Alarm		0xE057
164
+#define DLI_P4_Shutdown_Alarm	0xE05E
165
+#define DLI_P3_Shutdown_Alarm	0xE05D
166
+#define DLI_P2_Shutdown_Alarm	0xE05C
167
+#define DLI_P1_Shutdown_Alarm	0xE05B
168
+#define ULO_P4_Level_High		0xE073
169
+#define ULO_P3_Level_High		0xE072
170
+#define ULO_P2_Level_High		0xE071
171
+#define ULO_P1_Level_High		0xE070
172
+#define ULO_P4_ALC_Alarm		0xE08A
173
+#define ULO_P3_ALC_Alarm		0xE089
174
+#define ULO_P2_ALC_Alarm		0xE088
175
+#define ULO_P1_ALC_Alarm		0xE087
176
+#define ULO_P4_Shutdown			0xE08E
177
+#define ULO_P3_Shutdown		    0xE08D
178
+#define ULO_P2_Shutdown		    0xE08C
179
+#define ULO_P1_Shutdown		    0xE08B
180
+
151 181
 
152 182
 int8_t DL_DET_Table_ref[AGC_Table_DL_Ref_Index_MAX][TABLE_LENGTH_MAX];
153 183
 int8_t UL_DET_Table_ref[ALC_Table_UL_Ref_Index_MAX][TABLE_LENGTH_MAX];
@@ -311,7 +341,7 @@ void Boot_LED_Toggle(void){
311 341
             LED_TestCnt++;
312 342
             LedTimerCnt = 0;
313 343
           /*Set LED TEST variable False after 12 flashes*/
314
-          if(LED_TestCnt >= 6){
344
+          if(LED_TestCnt >= 20){
315 345
             bluecell_Currdatastatus.LED_TEST = false;
316 346
             LED_TestCnt = 0;
317 347
           }
@@ -3211,7 +3241,8 @@ void HFR_TypeInit(){
3211 3241
 #endif // PYJ.2020.06.17_END -- 
3212 3242
     
3213 3243
     HAL_Delay(10);
3214
-
3244
+//    printf("UL 1 H : %x \r\n",bluecell_Currdatastatus.ATT_UL4_H);
3245
+//    printf("UL 1 L : %x \r\n",bluecell_Currdatastatus.ATT_UL4_L);    
3215 3246
     CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
3216 3247
     if(bluecell_Currdatastatus.Selftest1==0){
3217 3248
 //        printf("Selftest1 : 0 \r\n");
@@ -3292,12 +3323,14 @@ uint32_t MBIC_DataSend(uint8_t* data){
3292 3323
             data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_Test_Dummy4;
3293 3324
             data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_Test_Dummy5;
3294 3325
         }
3326
+//        printf("Alarm Test Mode ON \r\n");
3295 3327
      }else{
3296 3328
         if(bluecell_Currdatastatus.ALARM_MASK1 != false)
3297 3329
             data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_TEMP_HIGH;
3298 3330
         else
3299 3331
             data[MBIC_PAYLOADSTART + i++] = 0;
3300 3332
         
3333
+#if 0 // PYJ.2020.08.18_BEGIN -- 
3301 3334
         if(bluecell_Currdatastatus.ALARM_MASK2 != false)
3302 3335
             data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_DLI_Level;
3303 3336
         else
@@ -3305,7 +3338,7 @@ uint32_t MBIC_DataSend(uint8_t* data){
3305 3338
 
3306 3339
         if(bluecell_Currdatastatus.ALARM_MASK3 != false)
3307 3340
             data[MBIC_PAYLOADSTART + i++] = (bluecell_Currdatastatus.ALARM_DLI_AGC_Alarm & 0xF0 )
3308
-                                       | (bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN & 0x0F);
3341
+                                          | (bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN & 0x0F);
3309 3342
         else
3310 3343
             data[MBIC_PAYLOADSTART + i++] = 0;    
3311 3344
         if(bluecell_Currdatastatus.ALARM_MASK4 != false)                                      
@@ -3315,9 +3348,220 @@ uint32_t MBIC_DataSend(uint8_t* data){
3315 3348
 
3316 3349
         if(bluecell_Currdatastatus.ALARM_MASK5 != false)
3317 3350
             data[MBIC_PAYLOADSTART + i++] = (bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm & 0xF0)
3318
-                                        |(bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN & 0x0F);
3351
+                                           |(bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN & 0x0F);
3319 3352
         else
3320
-            data[MBIC_PAYLOADSTART + i++] = 0;            
3353
+            data[MBIC_PAYLOADSTART + i++] = 0;     
3354
+#else
3355
+//        printf("bluecell_Currdatastatus.ALARM_DLI_Level : %x \r\n",bluecell_Currdatastatus.ALARM_DLI_Level);
3356
+//        printf("bluecell_Currdatastatus.ALARM_DLI_AGC_Alarm : %x \r\n",bluecell_Currdatastatus.ALARM_DLI_AGC_Alarm);
3357
+//        printf("bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN : %x \r\n",bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN);
3358
+//        printf("bluecell_Currdatastatus.ALARM_ULO_Level : %x \r\n",bluecell_Currdatastatus.ALARM_ULO_Level);
3359
+//        printf("bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm : %x \r\n",bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm);
3360
+//        printf("bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN : %x \r\n",bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN);        
3361
+        data[MBIC_PAYLOADSTART + i++] = 0;
3362
+
3363
+        if(bluecell_Currdatastatus.ALARM_MASK2 & 0x80){
3364
+             data[MBIC_PAYLOADSTART + i - 1] = (bluecell_Currdatastatus.ALARM_DLI_Level & 0x80);
3365
+        }
3366
+        else{
3367
+            data[MBIC_PAYLOADSTART + i - 1] &= ~0x80; 
3368
+        }
3369
+        if(bluecell_Currdatastatus.ALARM_MASK2 & 0x40){
3370
+             data[MBIC_PAYLOADSTART + i - 1] |= (bluecell_Currdatastatus.ALARM_DLI_Level & 0x40);
3371
+        }
3372
+        else{
3373
+            data[MBIC_PAYLOADSTART + i - 1 ] &=  ~0x40;
3374
+        }
3375
+        if(bluecell_Currdatastatus.ALARM_MASK2 & 0x20){
3376
+             data[MBIC_PAYLOADSTART + i - 1 ] |= (bluecell_Currdatastatus.ALARM_DLI_Level & 0x20);
3377
+        }
3378
+        else{
3379
+            data[MBIC_PAYLOADSTART + i - 1] &=  ~0x20;
3380
+        }
3381
+        
3382
+        if(bluecell_Currdatastatus.ALARM_MASK2 & 0x10){
3383
+             data[MBIC_PAYLOADSTART + i - 1] |= (bluecell_Currdatastatus.ALARM_DLI_Level & 0x10);
3384
+        }
3385
+        else{
3386
+            data[MBIC_PAYLOADSTART + i - 1] &=  ~0x10;
3387
+        }
3388
+        
3389
+        if(bluecell_Currdatastatus.ALARM_MASK2 & 0x08){
3390
+             data[MBIC_PAYLOADSTART + i - 1] |= (bluecell_Currdatastatus.ALARM_DLI_Level & 0x08);
3391
+        }
3392
+        else{
3393
+            data[MBIC_PAYLOADSTART + i - 1] &= ~0x08; 
3394
+        }
3395
+
3396
+        if(bluecell_Currdatastatus.ALARM_MASK2 & 0x04){
3397
+             data[MBIC_PAYLOADSTART + i - 1] |= (bluecell_Currdatastatus.ALARM_DLI_Level & 0x04);
3398
+        }
3399
+        else{
3400
+            data[MBIC_PAYLOADSTART + i - 1 ] &=  ~0x04;
3401
+        }
3402
+        if(bluecell_Currdatastatus.ALARM_MASK2 & 0x02){
3403
+             data[MBIC_PAYLOADSTART + i - 1 ] |= (bluecell_Currdatastatus.ALARM_DLI_Level & 0x02);
3404
+        }
3405
+        else{
3406
+            data[MBIC_PAYLOADSTART + i - 1] &=  ~0x02;
3407
+        }
3408
+        
3409
+        if(bluecell_Currdatastatus.ALARM_MASK2 & 0x01){
3410
+             data[MBIC_PAYLOADSTART + i - 1] |= (bluecell_Currdatastatus.ALARM_DLI_Level & 0x01);
3411
+        }
3412
+        else{
3413
+            data[MBIC_PAYLOADSTART + i - 1] &=  ~0x01;
3414
+        }
3415
+        
3416
+
3417
+
3418
+        data[MBIC_PAYLOADSTART + i++] = 0;
3419
+
3420
+        if(bluecell_Currdatastatus.ALARM_MASK3 & 0x80){
3421
+             data[MBIC_PAYLOADSTART + i - 1] = (bluecell_Currdatastatus.ALARM_DLI_AGC_Alarm & 0x80);
3422
+        }
3423
+        else{
3424
+            data[MBIC_PAYLOADSTART + i - 1] &= ~0x80; 
3425
+        }
3426
+
3427
+        if(bluecell_Currdatastatus.ALARM_MASK3 & 0x40){
3428
+             data[MBIC_PAYLOADSTART + i - 1] |= (bluecell_Currdatastatus.ALARM_DLI_AGC_Alarm & 0x40);
3429
+        }
3430
+        else{
3431
+            data[MBIC_PAYLOADSTART + i - 1 ] &=  ~0x40;
3432
+        }
3433
+        if(bluecell_Currdatastatus.ALARM_MASK3 & 0x20){
3434
+             data[MBIC_PAYLOADSTART + i - 1 ] |= (bluecell_Currdatastatus.ALARM_DLI_AGC_Alarm & 0x20);
3435
+        }
3436
+        else{
3437
+            data[MBIC_PAYLOADSTART + i - 1] &=  ~0x20;
3438
+        }
3439
+        
3440
+        if(bluecell_Currdatastatus.ALARM_MASK3 & 0x10){
3441
+             data[MBIC_PAYLOADSTART + i - 1] |= (bluecell_Currdatastatus.ALARM_DLI_AGC_Alarm & 0x10);
3442
+        }
3443
+        else{
3444
+            data[MBIC_PAYLOADSTART + i - 1] &=  ~0x10;
3445
+        }
3446
+        
3447
+        if(bluecell_Currdatastatus.ALARM_MASK3 & 0x08){
3448
+             data[MBIC_PAYLOADSTART + i - 1] |= (bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN & 0x08);
3449
+        }
3450
+        else{
3451
+            data[MBIC_PAYLOADSTART + i - 1] &= ~0x08; 
3452
+        }
3453
+
3454
+        if(bluecell_Currdatastatus.ALARM_MASK3 & 0x04){
3455
+             data[MBIC_PAYLOADSTART + i - 1] |= (bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN & 0x04);
3456
+        }
3457
+        else{
3458
+            data[MBIC_PAYLOADSTART + i - 1 ] &=  ~0x04;
3459
+        }
3460
+        if(bluecell_Currdatastatus.ALARM_MASK3 & 0x02){
3461
+             data[MBIC_PAYLOADSTART + i - 1 ] |= (bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN & 0x02);
3462
+        }
3463
+        else{
3464
+            data[MBIC_PAYLOADSTART + i - 1] &=  ~0x02;
3465
+        }
3466
+        
3467
+        if(bluecell_Currdatastatus.ALARM_MASK3 & 0x01){
3468
+             data[MBIC_PAYLOADSTART + i - 1] |= (bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN & 0x01);
3469
+        }
3470
+        else{
3471
+            data[MBIC_PAYLOADSTART + i - 1] &=  ~0x01;
3472
+        }
3473
+        
3474
+//    printf("(bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN ) : %x \r\n",(bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN ));
3475
+       
3476
+        data[MBIC_PAYLOADSTART + i++] = 0;
3477
+
3478
+        if(bluecell_Currdatastatus.ALARM_MASK4 & 0x08){
3479
+             data[MBIC_PAYLOADSTART + i - 1] = (bluecell_Currdatastatus.ALARM_ULO_Level & 0x08);
3480
+        }
3481
+        else{
3482
+            data[MBIC_PAYLOADSTART + i - 1] &= ~0x08; 
3483
+        }
3484
+
3485
+        if(bluecell_Currdatastatus.ALARM_MASK4 & 0x04){
3486
+             data[MBIC_PAYLOADSTART + i - 1] |= (bluecell_Currdatastatus.ALARM_ULO_Level & 0x04);
3487
+        }
3488
+        else{
3489
+            data[MBIC_PAYLOADSTART + i - 1 ] &=  ~0x04;
3490
+        }
3491
+        if(bluecell_Currdatastatus.ALARM_MASK4 & 0x02){
3492
+             data[MBIC_PAYLOADSTART + i - 1 ] |= (bluecell_Currdatastatus.ALARM_ULO_Level & 0x02);
3493
+        }
3494
+        else{
3495
+            data[MBIC_PAYLOADSTART + i - 1] &=  ~0x02;
3496
+        }
3497
+
3498
+        if(bluecell_Currdatastatus.ALARM_MASK4 & 0x01){
3499
+             data[MBIC_PAYLOADSTART + i - 1] |= (bluecell_Currdatastatus.ALARM_ULO_Level & 0x01);
3500
+        }
3501
+        else{
3502
+            data[MBIC_PAYLOADSTART + i - 1] &=  ~0x01;
3503
+        }
3504
+
3505
+
3506
+
3507
+//////////////////////////////////
3508
+        data[MBIC_PAYLOADSTART + i++] = 0;
3509
+
3510
+        if(bluecell_Currdatastatus.ALARM_MASK5 & 0x80){
3511
+             data[MBIC_PAYLOADSTART + i - 1] = (bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm & 0x80);
3512
+        }
3513
+        else{
3514
+            data[MBIC_PAYLOADSTART + i - 1] &= ~0x80; 
3515
+        }
3516
+
3517
+        if(bluecell_Currdatastatus.ALARM_MASK5 & 0x40){
3518
+             data[MBIC_PAYLOADSTART + i - 1] |= (bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm & 0x40);
3519
+        }
3520
+        else{
3521
+            data[MBIC_PAYLOADSTART + i - 1 ] &=  ~0x40;
3522
+        }
3523
+        if(bluecell_Currdatastatus.ALARM_MASK5 & 0x20){
3524
+             data[MBIC_PAYLOADSTART + i - 1 ] |= (bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm & 0x20);
3525
+        }
3526
+        else{
3527
+            data[MBIC_PAYLOADSTART + i - 1] &=  ~0x20;
3528
+        }
3529
+        if(bluecell_Currdatastatus.ALARM_MASK5 & 0x10){
3530
+             data[MBIC_PAYLOADSTART + i - 1] |= (bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm & 0x10);
3531
+        }
3532
+        else{
3533
+            data[MBIC_PAYLOADSTART + i - 1] &=  ~0x10;
3534
+        }
3535
+//        printf("(bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN ) : %x \r\n",(bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN ));
3536
+        if(bluecell_Currdatastatus.ALARM_MASK5 & 0x08){
3537
+             data[MBIC_PAYLOADSTART + i - 1] |= (bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN & 0x08);
3538
+        }
3539
+        else{
3540
+            data[MBIC_PAYLOADSTART + i - 1] &= ~0x08; 
3541
+        }
3542
+
3543
+        if(bluecell_Currdatastatus.ALARM_MASK5 & 0x04){
3544
+             data[MBIC_PAYLOADSTART + i - 1] |= (bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN & 0x04);
3545
+        }
3546
+        else{
3547
+            data[MBIC_PAYLOADSTART + i - 1 ] &=  ~0x04;
3548
+        }
3549
+        if(bluecell_Currdatastatus.ALARM_MASK5 & 0x02){
3550
+             data[MBIC_PAYLOADSTART + i - 1 ] |= (bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN & 0x02);
3551
+        }
3552
+        else{
3553
+            data[MBIC_PAYLOADSTART + i - 1] &=  ~0x02;
3554
+        }
3555
+        
3556
+        if(bluecell_Currdatastatus.ALARM_MASK5 & 0x01){
3557
+             data[MBIC_PAYLOADSTART + i - 1] |= (bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN & 0x01);
3558
+        }
3559
+        else{
3560
+            data[MBIC_PAYLOADSTART + i - 1] &=  ~0x01;
3561
+        }
3562
+        
3563
+
3564
+#endif // PYJ.2020.08.18_END -- 
3321 3565
     }
3322 3566
     /*ALARM BIT MASK*/
3323 3567
     data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
@@ -4083,7 +4327,7 @@ uint32_t MBIC_DataSend(uint8_t* data){
4083 4327
     data[MBIC_PAYLOADSTART + i++] = 0x03; 
4084 4328
 
4085 4329
     
4086
-    printf("CRC ret : %X \r\n",Crcret);
4330
+//    printf("CRC ret : %X \r\n",Crcret);
4087 4331
     Uart1_Data_Send(data, Length + 22 + 3);
4088 4332
     return Length;
4089 4333
 
@@ -4095,13 +4339,13 @@ void Factory_Set(){
4095 4339
     int16_t tempdata = 0;
4096 4340
 //    printf("Factory Set Start \r\n");
4097 4341
     /*ALARM MASK*/
4098
-    bluecell_Currdatastatus.ALARM_MASK1 = ALAMASK_DEFAULT;
4099
-    bluecell_Currdatastatus.ALARM_MASK2 = ALAMASK_DEFAULT;    
4100
-    bluecell_Currdatastatus.ALARM_MASK3 = ALAMASK_DEFAULT;
4101
-    bluecell_Currdatastatus.ALARM_MASK4 = ALAMASK_DEFAULT;    
4102
-    bluecell_Currdatastatus.ALARM_MASK5 = ALAMASK_DEFAULT;  
4342
+    bluecell_Currdatastatus.ALARM_MASK1 = 0x80;
4343
+    bluecell_Currdatastatus.ALARM_MASK2 = 0xFF ;
4344
+    bluecell_Currdatastatus.ALARM_MASK3 = 0xFF;
4345
+    bluecell_Currdatastatus.ALARM_MASK4 = 0x0F ;
4346
+    bluecell_Currdatastatus.ALARM_MASK5 = 0xFF; 
4103 4347
     /*Temp OFFSET*/
4104
-    bluecell_Currdatastatus.bluecell_User_TEMP_OFFSET = TEMP_OFFSET_DEFAULT;
4348
+//    bluecell_Currdatastatus.bluecell_User_TEMP_OFFSET = TEMP_OFFSET_DEFAULT;
4105 4349
     /*Temp High Thread Hold*/
4106 4350
     bluecell_Currdatastatus.Temp_High_Threshold = Temp_THREADHOLD_DEFAULT;
4107 4351
     /*Carrier On off*/
@@ -4748,73 +4992,43 @@ void Temp_Shutdown_ONOFF(uint8_t val){
4748 4992
 //        HAL_Delay(10);
4749 4993
     CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);    
4750 4994
 }
4751
-typedef enum{
4752
-    Temperature_AlarmType,
4753
-    DLI_P4_Level_LowType,
4754
-    DLI_P3_Level_LowType,   
4755
-    DLI_P2_Level_LowType,  
4756
-    DLI_P1_Level_LowType, 
4757
-    DLI_P4_Level_HighType,   
4758
-    DLI_P3_Level_HighType,   
4759
-    DLI_P2_Level_HighType,   
4760
-    DLI_P1_Level_HighType,   
4761
-    DLI_P4_AGC_AlarmType,    
4762
-    DLI_P3_AGC_AlarmType,    
4763
-    DLI_P2_AGC_AlarmType,    
4764
-    DLI_P1_AGC_AlarmType,    
4765
-    DLI_P4_Shutdown_AlarmType,   
4766
-    DLI_P3_Shutdown_AlarmType,   
4767
-    DLI_P2_Shutdown_AlarmType,   
4768
-    DLI_P1_Shutdown_AlarmType,   
4769
-    ULO_P4_Level_HighType,   
4770
-    ULO_P3_Level_HighType,   
4771
-    ULO_P2_Level_HighType,   
4772
-    ULO_P1_Level_HighType,   
4773
-    ULO_P4_ALC_AlarmType,    
4774
-    ULO_P3_ALC_AlarmType,    
4775
-    ULO_P2_ALC_AlarmType,    
4776
-    ULO_P1_ALC_AlarmType,    
4777
-    ULO_P4_ShutdownType, 
4778
-    ULO_P3_ShutdownType, 
4779
-    ULO_P2_ShutdownType, 
4780
-    ULO_P1_ShutdownType, 
4781
-    Alarm_type_IndexMax
4782
-}Alarm_type;
4995
+
4783 4996
 #define OVERPOWER_STR "Overpower"
4784 4997
 #define OVER_INPUT_STR "Over-Input"
4785
-uint8_t AlarmReport_History[Alarm_type_IndexMax] = {0,};
4786
-uint8_t* Alarm_Report_Send(uint8_t Alarm_type,uint8_t val){
4787
-    if(AlarmReport_History[Alarm_type] != true){
4788
-        return;
4789
-    }
4790
-    static uint8_t Alarm_ReportData[40 + 21 + 3] = {0,};
4998
+//uint8_t AlarmReport_History[Alarm_type_IndexMax] = {0,};
4999
+uint8_t* Alarm_Report_Send(uint16_t Alarm_type,uint8_t val){
5000
+//    if(AlarmReport_History[Alarm_type] != true){
5001
+//        return;
5002
+//    }
5003
+    static uint8_t Alarm_ReportData[40 + 2 + 21 + 3] = {0,}; // 40 Alarm Data + 2 UNIT ID, 21 Header , 3 Tail
4791 5004
     uint8_t index = 0;
4792
-    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0xE0;
4793
-    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = Alarm_type;    
4794
-    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = val;
4795
-    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;    
4796
-    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;
4797
-    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;    
4798
-    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;
4799
-    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;    
4800
-    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;
4801
-    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;    
4802
-    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;
4803
-    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;    
4804
-    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;
4805
-    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;    
4806
-    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;
4807
-    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;    
5005
+    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0x00;       //UNIT ID0
5006
+    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0xF1;       //UNIT ID1
5007
+    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = (uint8_t)((Alarm_type & 0xFF00) >> 8);       //A ID 0 
5008
+    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = (uint8_t)(Alarm_type & 0x00FF); //A ID 1
5009
+    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = val;        //Status 1
5010
+    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;          //Alarm Time
5011
+    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;          //Alarm Time
5012
+    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;          //Alarm Time      
5013
+    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;          //Alarm Time      
5014
+    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;          //Alarm Time      
5015
+    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;          //Alarm Time      
5016
+    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;          //Clear Time      
5017
+    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;          //Clear Time      
5018
+    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;          //Clear Time      
5019
+    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;          //Clear Time      
5020
+    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;          //Clear Time      
5021
+    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;          //Clear Time      
5022
+    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;          //Band ID : MBIC : 0x00 Default
4808 5023
     Alarm_ReportData[MBIC_PAYLOADSTART + index++] = bluecell_Currdatastatus.Carrier_ID;
4809 5024
     Alarm_ReportData[MBIC_PAYLOADSTART + index++] = bluecell_Currdatastatus.Freq_ID;    
4810
-    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;
4811
-    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;    
5025
+    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;//Alarm SeqNum0 RF Board Default 0
5026
+    Alarm_ReportData[MBIC_PAYLOADSTART + index++] = 0;//Alarm SeqNum1 RF Board Default 0   
4812 5027
 
4813
-    
4814
-    for(int i = 20; i < 40; i++)
5028
+    // 0~ 19 
5029
+    for(int i = MBIC_PAYLOADSTART + 22; i < MBIC_PAYLOADSTART + 42; i++)
4815 5030
         Alarm_ReportData[i] = 0;
4816 5031
     
4817
- 
4818 5032
 
4819 5033
     int16_t LimitData_UL_High = 0;
4820 5034
     
@@ -4895,50 +5109,90 @@ uint8_t* Alarm_Report_Send(uint8_t Alarm_type,uint8_t val){
4895 5109
 
4896 5110
     Res_UL_dBm[DET_Alarm_UL4_Index] 
4897 5111
         = bluecell_Currdatastatus.ULO_Level4_H << 8 | bluecell_Currdatastatus.ULO_Level4_L;//(int8_t)Bluecell_TestPro(AutoControl_ADC_Compare(ret,&Det_UL4.Table_Det_15_dBm_H,Det_UL4.Table_Length * 2));
4898
-    
5112
+
5113
+
5114
+ 
4899 5115
     switch(Alarm_type){
4900
-        case Temperature_AlarmType:     sprintf(&Alarm_ReportData[20],"Temp:%2.1f, Th:%2.1f",bluecell_Currdatastatus.DET_TEMP,bluecell_Currdatastatus.Temp_High_Threshold);    break;
4901
-        case DLI_P4_Level_LowType:      sprintf(&Alarm_ReportData[20],"DLI:%2.1f, Th:%2.1f",Res_DL_dBm[DET_Alarm_DL1_Index],LimitData_DL_Low);    break;
4902
-        case DLI_P3_Level_LowType:      sprintf(&Alarm_ReportData[20],"DLI:%2.1f, Th:%2.1f",Res_DL_dBm[DET_Alarm_DL2_Index],LimitData_DL_Low);    break;
4903
-        case DLI_P2_Level_LowType:      sprintf(&Alarm_ReportData[20],"DLI:%2.1f, Th:%2.1f",Res_DL_dBm[DET_Alarm_DL3_Index],LimitData_DL_Low);    break;
4904
-        case DLI_P1_Level_LowType:      sprintf(&Alarm_ReportData[20],"DLI:%2.1f, Th:%2.1f",Res_DL_dBm[DET_Alarm_DL4_Index],LimitData_DL_Low);    break;
4905
-        case DLI_P4_Level_HighType:     sprintf(&Alarm_ReportData[20],"DLI:%2.1f, Th:%2.1f",Res_DL_dBm[DET_Alarm_DL1_Index],LimitData_DL_High);    break;
4906
-        case DLI_P3_Level_HighType:     sprintf(&Alarm_ReportData[20],"DLI:%2.1f, Th:%2.1f",Res_DL_dBm[DET_Alarm_DL2_Index],LimitData_DL_High);    break;
4907
-        case DLI_P2_Level_HighType:     sprintf(&Alarm_ReportData[20],"DLI:%2.1f, Th:%2.1f",Res_DL_dBm[DET_Alarm_DL3_Index],LimitData_DL_High);    break;
4908
-        case DLI_P1_Level_HighType:     sprintf(&Alarm_ReportData[20],"DLI:%2.1f, Th:%2.1f",Res_DL_dBm[DET_Alarm_DL4_Index],LimitData_DL_High);    break;
4909
-        case DLI_P4_AGC_AlarmType:
4910
-        case DLI_P3_AGC_AlarmType:
4911
-        case DLI_P2_AGC_AlarmType:
4912
-        case DLI_P1_AGC_AlarmType:      break;
4913
-        case DLI_P4_Shutdown_AlarmType: sprintf(&Alarm_ReportData[20],OVERPOWER_STR);    break;
4914
-        case DLI_P3_Shutdown_AlarmType: sprintf(&Alarm_ReportData[20],OVERPOWER_STR);    break;
4915
-        case DLI_P2_Shutdown_AlarmType: sprintf(&Alarm_ReportData[20],OVERPOWER_STR);    break;
4916
-        case DLI_P1_Shutdown_AlarmType: sprintf(&Alarm_ReportData[20],OVERPOWER_STR);    break;
4917
-        case ULO_P4_Level_HighType:     sprintf(&Alarm_ReportData[20],"ULO:%2.1f, Th:%2.1f",Res_UL_dBm[DET_Alarm_UL1_Index],LimitData_UL_High);    break;
4918
-        case ULO_P3_Level_HighType:     sprintf(&Alarm_ReportData[20],"ULO:%2.1f, Th:%2.1f",Res_UL_dBm[DET_Alarm_UL2_Index],LimitData_UL_High);    break;
4919
-        case ULO_P2_Level_HighType:     sprintf(&Alarm_ReportData[20],"ULO:%2.1f, Th:%2.1f",Res_UL_dBm[DET_Alarm_UL3_Index],LimitData_UL_High);    break;
4920
-        case ULO_P1_Level_HighType:     sprintf(&Alarm_ReportData[20],"ULO:%2.1f, Th:%2.1f",Res_UL_dBm[DET_Alarm_UL4_Index],LimitData_UL_High);    break;
4921
-        case ULO_P4_ALC_AlarmType:
4922
-        case ULO_P3_ALC_AlarmType:
4923
-        case ULO_P2_ALC_AlarmType:
4924
-        case ULO_P1_ALC_AlarmType:      break;
4925
-        case ULO_P4_ShutdownType:       sprintf(&Alarm_ReportData[20],OVER_INPUT_STR);    break;
4926
-        case ULO_P3_ShutdownType:       sprintf(&Alarm_ReportData[20],OVER_INPUT_STR);    break;
4927
-        case ULO_P2_ShutdownType:       sprintf(&Alarm_ReportData[20],OVER_INPUT_STR);    break;
4928
-        case ULO_P1_ShutdownType:       sprintf(&Alarm_ReportData[20],OVER_INPUT_STR);    break;
5116
+        case Temp_High:             sprintf(&Alarm_ReportData[MBIC_PAYLOADSTART + 22],"Temp:%d, Th:%d",bluecell_Currdatastatus.DET_TEMP,bluecell_Currdatastatus.Temp_High_Threshold);    break;
5117
+        case DLI_P4_Level_Low:      sprintf(&Alarm_ReportData[MBIC_PAYLOADSTART + 22],"DLI:%2.1f, Th:%2.1f",Res_DL_dBm[DET_Alarm_DL1_Index],LimitData_DL_Low);    break;
5118
+        case DLI_P3_Level_Low:      sprintf(&Alarm_ReportData[MBIC_PAYLOADSTART + 22],"DLI:%2.1f, Th:%2.1f",Res_DL_dBm[DET_Alarm_DL2_Index],LimitData_DL_Low);    break;
5119
+        case DLI_P2_Level_Low:      sprintf(&Alarm_ReportData[MBIC_PAYLOADSTART + 22],"DLI:%2.1f, Th:%2.1f",Res_DL_dBm[DET_Alarm_DL3_Index],LimitData_DL_Low);    break;
5120
+        case DLI_P1_Level_Low:      sprintf(&Alarm_ReportData[MBIC_PAYLOADSTART + 22],"DLI:%2.1f, Th:%2.1f",Res_DL_dBm[DET_Alarm_DL4_Index],LimitData_DL_Low);    break;
5121
+        case DLI_P4_Level_High:     sprintf(&Alarm_ReportData[MBIC_PAYLOADSTART + 22],"DLI:%2.1f, Th:%2.1f",Res_DL_dBm[DET_Alarm_DL1_Index],LimitData_DL_High);    break;
5122
+        case DLI_P3_Level_High:     sprintf(&Alarm_ReportData[MBIC_PAYLOADSTART + 22],"DLI:%2.1f, Th:%2.1f",Res_DL_dBm[DET_Alarm_DL2_Index],LimitData_DL_High);    break;
5123
+        case DLI_P2_Level_High:     sprintf(&Alarm_ReportData[MBIC_PAYLOADSTART + 22],"DLI:%2.1f, Th:%2.1f",Res_DL_dBm[DET_Alarm_DL3_Index],LimitData_DL_High);    break;
5124
+        case DLI_P1_Level_High:     sprintf(&Alarm_ReportData[MBIC_PAYLOADSTART + 22],"DLI:%2.1f, Th:%2.1f",Res_DL_dBm[DET_Alarm_DL4_Index],LimitData_DL_High);    break;
5125
+        case DLI_P4_AGC_Alarm:
5126
+        case DLI_P3_AGC_Alarm:
5127
+        case DLI_P2_AGC_Alarm:
5128
+        case DLI_P1_AGC_Alarm:      break;
5129
+        case DLI_P4_Shutdown_Alarm: sprintf(&Alarm_ReportData[MBIC_PAYLOADSTART + 22],OVERPOWER_STR);    break;
5130
+        case DLI_P3_Shutdown_Alarm: sprintf(&Alarm_ReportData[MBIC_PAYLOADSTART + 22],OVERPOWER_STR);    break;
5131
+        case DLI_P2_Shutdown_Alarm: sprintf(&Alarm_ReportData[MBIC_PAYLOADSTART + 22],OVERPOWER_STR);    break;
5132
+        case DLI_P1_Shutdown_Alarm: sprintf(&Alarm_ReportData[MBIC_PAYLOADSTART + 22],OVERPOWER_STR);    break;
5133
+        case ULO_P4_Level_High:     sprintf(&Alarm_ReportData[MBIC_PAYLOADSTART + 22],"ULO:%2.1f, Th:%2.1f",Res_UL_dBm[DET_Alarm_UL1_Index],LimitData_UL_High);    break;
5134
+        case ULO_P3_Level_High:     sprintf(&Alarm_ReportData[MBIC_PAYLOADSTART + 22],"ULO:%2.1f, Th:%2.1f",Res_UL_dBm[DET_Alarm_UL2_Index],LimitData_UL_High);    break;
5135
+        case ULO_P2_Level_High:     sprintf(&Alarm_ReportData[MBIC_PAYLOADSTART + 22],"ULO:%2.1f, Th:%2.1f",Res_UL_dBm[DET_Alarm_UL3_Index],LimitData_UL_High);    break;
5136
+        case ULO_P1_Level_High:     sprintf(&Alarm_ReportData[MBIC_PAYLOADSTART + 22],"ULO:%2.1f, Th:%2.1f",Res_UL_dBm[DET_Alarm_UL4_Index],LimitData_UL_High);    break;
5137
+        case ULO_P4_ALC_Alarm:
5138
+        case ULO_P3_ALC_Alarm:
5139
+        case ULO_P2_ALC_Alarm:
5140
+        case ULO_P1_ALC_Alarm:      break;
5141
+        case ULO_P4_Shutdown:       sprintf(&Alarm_ReportData[MBIC_PAYLOADSTART + 22],OVER_INPUT_STR);    break;
5142
+        case ULO_P3_Shutdown:       sprintf(&Alarm_ReportData[MBIC_PAYLOADSTART + 22],OVER_INPUT_STR);    break;
5143
+        case ULO_P2_Shutdown:       sprintf(&Alarm_ReportData[MBIC_PAYLOADSTART + 22],OVER_INPUT_STR);    break;
5144
+        case ULO_P1_Shutdown:       sprintf(&Alarm_ReportData[MBIC_PAYLOADSTART + 22],OVER_INPUT_STR);    break;
5145
+        default: printf("Wrong Type \r\n");break;
4929 5146
     }
4930 5147
     
4931
-    Alarm_ReportData[MBIC_PAYLOADSTART + 1] = Alarm_type;    
4932
-    Alarm_ReportData[MBIC_PAYLOADSTART + 2] = val;        
5148
+//    Alarm_ReportData[MBIC_PAYLOADSTART + 1] = Alarm_type;    
5149
+//    Alarm_ReportData[MBIC_PAYLOADSTART + 2] = val;        
5150
+    
5151
+    printf("%s \r\n",&Alarm_ReportData[MBIC_PAYLOADSTART + 22]);
5152
+    printf("size length : %d \r\n",sizeof(Alarm_ReportData));
5153
+//    MBIC_HeaderMergeFunction(Alarm_ReportData,42);
5154
+    Alarm_ReportData[MBIC_PREAMBLE_0] = MBIC_PREAMBLE0;
5155
+    Alarm_ReportData[MBIC_PREAMBLE_1] = MBIC_PREAMBLE1;
5156
+    Alarm_ReportData[MBIC_PREAMBLE_2] = MBIC_PREAMBLE2;
5157
+    Alarm_ReportData[MBIC_PREAMBLE_3] = MBIC_PREAMBLE3;   
5158
+
5159
+    Alarm_ReportData[MBIC_SUBUID_0] = MBIC_SUBUID0;
5160
+    Alarm_ReportData[MBIC_SUBUID_1] = MBIC_SUBUID1;
5161
+
5162
+    Alarm_ReportData[MBIC_RCODE_0] = 0;
5163
+
5164
+    Alarm_ReportData[MBIC_TRID_0] = 0;
5165
+    Alarm_ReportData[MBIC_TRID_1] = 0;
5166
+
5167
+    Alarm_ReportData[MBIC_SEQSUM_0] = 0;
5168
+
5169
+    Alarm_ReportData[MBIC_TTL_0] = 0;
5170
+
5171
+    Alarm_ReportData[MBIC_TIME_0] = 0;
5172
+    Alarm_ReportData[MBIC_TIME_1] = 0;
5173
+    Alarm_ReportData[MBIC_TIME_2] = 0;
5174
+    Alarm_ReportData[MBIC_TIME_3] = 0;
5175
+    Alarm_ReportData[MBIC_TIME_4] = 0;
5176
+    Alarm_ReportData[MBIC_TIME_5] = 0;
5177
+    Alarm_ReportData[MBIC_ERRRESPONSE_0] = MBIC_ERRRESPONSE;
5178
+    Alarm_ReportData[MBIC_CMD_0] = 0xF1;
5179
+
5180
+
5181
+
5182
+
5183
+
5184
+    Alarm_ReportData[MBIC_LENGTH_0] = (sizeof(Alarm_ReportData) & 0xFF00) >> 8;
5185
+    Alarm_ReportData[MBIC_LENGTH_1] = sizeof(Alarm_ReportData) & 0x00FF;
5186
+
5187
+    Alarm_ReportData[MBIC_HEADERCHECKSUM_0] = Chksum_Create(Alarm_ReportData);    
5188
+
5189
+    
5190
+    uint16_t crcret = ((CRC16_Generate(&Alarm_ReportData[MBIC_PAYLOADSTART], 42) ) );
4933 5191
     
4934
-    printf("%s \r\n",&Alarm_ReportData[20]);
4935
-    MBIC_HeaderMergeFunction(Alarm_ReportData,40);
4936
-    Alarm_ReportData[MBIC_HEADERCHECKSUM_0] = Chksum_Create(Alarm_ReportData);        
4937
-    uint16_t crcret = ((CRC16_Generate(&Alarm_ReportData[MBIC_PAYLOADSTART], 40) ) );
4938 5192
 //                        printf("\r\n crc ret : %x \r\n",crcret);
4939
-    Alarm_ReportData[MBIC_PAYLOADSTART + (Alarm_ReportData[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] ) + 5] =(( crcret  & 0xFF00)>> 8);  
4940
-    Alarm_ReportData[MBIC_PAYLOADSTART + (Alarm_ReportData[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] ) + 6] = (( crcret  & 0x00FF));  
4941
-    Alarm_ReportData[MBIC_PAYLOADSTART + (Alarm_ReportData[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] ) + 7] = 0x03; 
5193
+    Alarm_ReportData[MBIC_PAYLOADSTART + 41] =(( crcret  & 0xFF00)>> 8);  
5194
+    Alarm_ReportData[MBIC_PAYLOADSTART + 42] = (( crcret  & 0x00FF));  
5195
+    Alarm_ReportData[MBIC_PAYLOADSTART + 43] = 0x03; 
4942 5196
     Uart1_Data_Send(Alarm_ReportData,sizeof(Alarm_ReportData));
4943 5197
 }
4944 5198
 
@@ -5463,7 +5717,7 @@ bool MBIC_Operate(uint8_t* data){
5463 5717
                     UL_ALC_GainAttenSet[ALC_Alarm_UL4_Index] = true;
5464 5718
                     ALC_Level_Save[ALC_Alarm_UL4_Index] = bluecell_Currdatastatus.ULO_Level4_H << 8 | bluecell_Currdatastatus.ULO_Level4_L  ;                      
5465 5719
                 }
5466
-            
5720
+                printf("data ctrl\r\n");
5467 5721
                 CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
5468 5722
 
5469 5723
                 break;
@@ -5527,6 +5781,7 @@ bool MBIC_Operate(uint8_t* data){
5527 5781
                 break;
5528 5782
             case ULO_SelfTest4:
5529 5783
                 SelfTest_Ctrl(SelfTest4,data[MBIC_PAYLOADSTART + 3],&bluecell_Currdatastatus.Selftest4,&bluecell_Currdatastatus.ATT_DL4_H,&bluecell_Currdatastatus.ATT_UL4_H);
5784
+                printf("UL SelfTest \r\n");
5530 5785
                 break;
5531 5786
             case  ULO_ALC_ON_OFF                   :
5532 5787
                 bluecell_Currdatastatus.ULO_ALC_ON_OFF = data[MBIC_PAYLOADSTART + 3]; 
@@ -8934,13 +9189,16 @@ void SelfTest_Ctrl(uint8_t num,uint8_t val,uint8_t* selftest,uint8_t* DL_Atten,u
8934 9189
         Pin =  PATH_SW4_Pin;        
8935 9190
         break;        
8936 9191
     }
8937
-
9192
+    if(*selftest == val)
9193
+        return;
8938 9194
         
8939 9195
     if(val == true){
8940 9196
         Selftest_DL_PrevAttenSave[num * 2]         = DL_Atten[Atten_H];
8941 9197
         Selftest_DL_PrevAttenSave[((num * 2) + 1)] = DL_Atten[Atten_L];
8942 9198
         Selftest_UL_PrevAttenSave[num * 2]         = UL_Atten[Atten_H];
8943 9199
         Selftest_UL_PrevAttenSave[((num * 2) + 1)] = UL_Atten[Atten_L];
9200
+//        for(int i =0; i< 8; i++)
9201
+//            printf("Selftest_UL_PrevAttenSave[%d] : %x \r\n",i,Selftest_UL_PrevAttenSave[i]);        
8944 9202
         DL_Atten[Atten_H] = 0;
8945 9203
         DL_Atten[Atten_L] = 0;
8946 9204
         UL_Atten[Atten_H] = 0;
@@ -8951,7 +9209,10 @@ void SelfTest_Ctrl(uint8_t num,uint8_t val,uint8_t* selftest,uint8_t* DL_Atten,u
8951 9209
         DL_Atten[Atten_H] = Selftest_DL_PrevAttenSave[num * 2];
8952 9210
         DL_Atten[Atten_L] = Selftest_DL_PrevAttenSave[((num * 2) + 1)];    
8953 9211
         UL_Atten[Atten_H] = Selftest_UL_PrevAttenSave[num * 2];
8954
-        UL_Atten[Atten_L] = Selftest_UL_PrevAttenSave[((num * 2) + 1)];              
9212
+        UL_Atten[Atten_L] = Selftest_UL_PrevAttenSave[((num * 2) + 1)];    
9213
+//        for(int i =0; i< 8; i++)
9214
+//            printf("Selftest_UL_PrevAttenSave[%d] : %x \r\n",i,Selftest_UL_PrevAttenSave[i]);        
9215
+
8955 9216
         HAL_GPIO_WritePin(_Port,_Pin,GPIO_PIN_RESET);//CLOCK
8956 9217
         HAL_GPIO_WritePin(Port,Pin,GPIO_PIN_SET);//CLOCK
8957 9218
     }
@@ -8996,6 +9257,7 @@ void FRBT_Operate(){
8996 9257
 }
8997 9258
 void LED_Alarm_Check(){
8998 9259
     if(bluecell_Currdatastatus.ALARM_TESTMODE == false){
9260
+#if 0 // PYJ.2020.08.18_BEGIN -- 
8999 9261
       if(  (bluecell_Currdatastatus.ALARM_TEMP_HIGH      > 0 && bluecell_Currdatastatus.ALARM_MASK1 != false) 
9000 9262
         || (bluecell_Currdatastatus.ALARM_DLI_Level      > 0 && bluecell_Currdatastatus.ALARM_MASK2 != false)
9001 9263
         || (bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN  > 0 && bluecell_Currdatastatus.ALARM_MASK3 != false)
@@ -9017,6 +9279,21 @@ void LED_Alarm_Check(){
9017 9279
     //            printf("=================AlarmTimerOffCnt=================\r\n");
9018 9280
     //        }
9019 9281
         }
9282
+#else
9283
+          if(  (bluecell_Currdatastatus.ALARM_TEMP_HIGH      > 0 && bluecell_Currdatastatus.ALARM_MASK1 != false) 
9284
+            || (bluecell_Currdatastatus.ALARM_DLI_Level      > 0 && bluecell_Currdatastatus.ALARM_MASK2 != false)
9285
+            || (bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN  > 0 && bluecell_Currdatastatus.ALARM_MASK3 != false)
9286
+            || (bluecell_Currdatastatus.ALARM_DLI_AGC_Alarm  > 0 && bluecell_Currdatastatus.ALARM_MASK3 != false)
9287
+            || (bluecell_Currdatastatus.ALARM_ULO_Level      > 0 && bluecell_Currdatastatus.ALARM_MASK4 != false)
9288
+            || (bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm  > 0 && bluecell_Currdatastatus.ALARM_MASK5 != false)
9289
+            || (bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN  > 0 && bluecell_Currdatastatus.ALARM_MASK5 != false))
9290
+            {
9291
+                    Alarm_LED_OnSet  = true;
9292
+            }else{
9293
+                    Alarm_LED_OnSet = false;
9294
+            }
9295
+
9296
+#endif // PYJ.2020.08.18_END -- 
9020 9297
     }
9021 9298
     else{
9022 9299
         if(bluecell_Currdatastatus.ALARM_Test_Dummy1         > 0 
@@ -9050,3 +9327,96 @@ void Alarm_Check(){
9050 9327
     DLI_LevelAlarmCheck();
9051 9328
     ULO_LevelAlarmCheck();
9052 9329
 }
9330
+
9331
+typedef struct{
9332
+    uint8_t Temperature_Status ;
9333
+    uint8_t DLI_Path4_Low ;
9334
+    uint8_t DLI_Path3_Low ;
9335
+    uint8_t DLI_Path2_Low ;
9336
+    uint8_t DLI_Path1_Low ;    
9337
+
9338
+    uint8_t DLI_Path4_High ;
9339
+    uint8_t DLI_Path3_High ;
9340
+    uint8_t DLI_Path2_High ;
9341
+    uint8_t DLI_Path1_High ;    
9342
+
9343
+    uint8_t DLI_Path1_AGC ;    
9344
+    uint8_t DLI_Path2_AGC ;    
9345
+    uint8_t DLI_Path3_AGC ;    
9346
+    uint8_t DLI_Path4_AGC ;    
9347
+    uint8_t DLI_Path1_Shutdown ;    
9348
+    uint8_t DLI_Path2_Shutdown ;    
9349
+    uint8_t DLI_Path3_Shutdown ;    
9350
+    uint8_t DLI_Path4_Shutdown ;    
9351
+
9352
+    uint8_t ULO_Path4_High ;
9353
+    uint8_t ULO_Path3_High ;
9354
+    uint8_t ULO_Path2_High ;
9355
+    uint8_t ULO_Path1_High ;    
9356
+
9357
+    uint8_t ULO_Path1_ALC ;    
9358
+    uint8_t ULO_Path2_ALC ;    
9359
+    uint8_t ULO_Path3_ALC ;    
9360
+    uint8_t ULO_Path4_ALC ;    
9361
+    uint8_t ULO_Path1_Shutdown ;    
9362
+    uint8_t ULO_Path2_Shutdown ;    
9363
+    uint8_t ULO_Path3_Shutdown ;    
9364
+    uint8_t ULO_Path4_Shutdown ;    
9365
+}Alarm_Report_t;
9366
+Alarm_Report_t Curr_Alarm_Status_Save;
9367
+
9368
+void Alarm_Compare(uint8_t* Prev_Data,uint8_t* Curr_data,uint16_t mode,uint8_t flag){
9369
+
9370
+    if(*Prev_Data != *Curr_data){
9371
+//        printf("Data Report Occur !!\r\n");
9372
+        if(*Curr_data & flag){
9373
+            Alarm_Report_Send(mode,true);
9374
+        }
9375
+        else{
9376
+            Alarm_Report_Send(mode,false);
9377
+        }
9378
+    }
9379
+     *Prev_Data = *Curr_data;
9380
+
9381
+}
9382
+void AlarmLog_Report(){
9383
+    
9384
+    Alarm_Compare(&Curr_Alarm_Status_Save.Temperature_Status,&bluecell_Currdatastatus.ALARM_TEMP_HIGH,Temp_High,0x80);
9385
+
9386
+#if 1 // PYJ.2020.08.18_BEGIN -- 
9387
+    Alarm_Compare(&Curr_Alarm_Status_Save.DLI_Path4_Low,&bluecell_Currdatastatus.ALARM_TEMP_HIGH,Temp_High,0x80);
9388
+    Alarm_Compare(&Curr_Alarm_Status_Save.DLI_Path3_Low,&bluecell_Currdatastatus.ALARM_TEMP_HIGH,Temp_High,0x40);
9389
+    Alarm_Compare(&Curr_Alarm_Status_Save.DLI_Path2_Low,&bluecell_Currdatastatus.ALARM_TEMP_HIGH,Temp_High,0x20);
9390
+    Alarm_Compare(&Curr_Alarm_Status_Save.DLI_Path1_Low,&bluecell_Currdatastatus.ALARM_TEMP_HIGH,Temp_High,0x10);
9391
+    Alarm_Compare(&Curr_Alarm_Status_Save.DLI_Path4_High,&bluecell_Currdatastatus.ALARM_TEMP_HIGH,Temp_High,0x08);    
9392
+    Alarm_Compare(&Curr_Alarm_Status_Save.DLI_Path4_High,&bluecell_Currdatastatus.ALARM_TEMP_HIGH,Temp_High,0x04);
9393
+    Alarm_Compare(&Curr_Alarm_Status_Save.DLI_Path4_High,&bluecell_Currdatastatus.ALARM_TEMP_HIGH,Temp_High,0x02);
9394
+    Alarm_Compare(&Curr_Alarm_Status_Save.DLI_Path4_High,&bluecell_Currdatastatus.ALARM_TEMP_HIGH,Temp_High,0x01);
9395
+
9396
+
9397
+    Alarm_Compare(&Curr_Alarm_Status_Save.DLI_Path1_AGC,&bluecell_Currdatastatus.ALARM_TEMP_HIGH,Temp_High,0x80);
9398
+    Alarm_Compare(&Curr_Alarm_Status_Save.DLI_Path2_AGC,&bluecell_Currdatastatus.ALARM_TEMP_HIGH,Temp_High,0x40);
9399
+    Alarm_Compare(&Curr_Alarm_Status_Save.DLI_Path3_AGC,&bluecell_Currdatastatus.ALARM_TEMP_HIGH,Temp_High,0x20);
9400
+    Alarm_Compare(&Curr_Alarm_Status_Save.DLI_Path4_AGC,&bluecell_Currdatastatus.ALARM_TEMP_HIGH,Temp_High,0x10);
9401
+    Alarm_Compare(&Curr_Alarm_Status_Save.DLI_Path1_Shutdown,&bluecell_Currdatastatus.ALARM_TEMP_HIGH,Temp_High,0x08);
9402
+    Alarm_Compare(&Curr_Alarm_Status_Save.DLI_Path2_Shutdown,&bluecell_Currdatastatus.ALARM_TEMP_HIGH,Temp_High,0x04);
9403
+    Alarm_Compare(&Curr_Alarm_Status_Save.DLI_Path3_Shutdown,&bluecell_Currdatastatus.ALARM_TEMP_HIGH,Temp_High,0x02);
9404
+    Alarm_Compare(&Curr_Alarm_Status_Save.DLI_Path4_Shutdown,&bluecell_Currdatastatus.ALARM_TEMP_HIGH,Temp_High,0x01);
9405
+
9406
+    Alarm_Compare(&Curr_Alarm_Status_Save.ULO_Path1_High,&bluecell_Currdatastatus.ALARM_TEMP_HIGH,Temp_High,0x08);
9407
+    Alarm_Compare(&Curr_Alarm_Status_Save.ULO_Path2_High,&bluecell_Currdatastatus.ALARM_TEMP_HIGH,Temp_High,0x04);
9408
+    Alarm_Compare(&Curr_Alarm_Status_Save.ULO_Path3_High,&bluecell_Currdatastatus.ALARM_TEMP_HIGH,Temp_High,0x02);
9409
+    Alarm_Compare(&Curr_Alarm_Status_Save.ULO_Path4_High,&bluecell_Currdatastatus.ALARM_TEMP_HIGH,Temp_High,0x01);
9410
+
9411
+    Alarm_Compare(&Curr_Alarm_Status_Save.ULO_Path1_ALC,&bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm,Temp_High,0x80);
9412
+    Alarm_Compare(&Curr_Alarm_Status_Save.ULO_Path2_ALC,&bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm,Temp_High,0x40);
9413
+    Alarm_Compare(&Curr_Alarm_Status_Save.ULO_Path3_ALC,&bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm,Temp_High,0x20);
9414
+    Alarm_Compare(&Curr_Alarm_Status_Save.ULO_Path4_ALC,&bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm,Temp_High,0x10);
9415
+
9416
+    Alarm_Compare(&Curr_Alarm_Status_Save.ULO_Path1_Shutdown,&bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN,Temp_High,0x08);
9417
+    Alarm_Compare(&Curr_Alarm_Status_Save.ULO_Path2_Shutdown,&bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN,Temp_High,0x04);
9418
+    Alarm_Compare(&Curr_Alarm_Status_Save.ULO_Path3_Shutdown,&bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN,Temp_High,0x02);
9419
+    Alarm_Compare(&Curr_Alarm_Status_Save.ULO_Path4_Shutdown,&bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN,Temp_High,0x01);
9420
+#endif // PYJ.2020.08.18_END -- 
9421
+
9422
+}

+ 26 - 16
Bluecell_Src/MBIC_Bootloader.c

@@ -243,6 +243,11 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
243 243
             printf("MBIC DOWNLOAD REQUEST \r\n");
244 244
             cmd = MBIC_Notice_RSP;
245 245
             CRCERR = false;
246
+            bluecell_Currdatastatus.MBIC_Download_Auto_Restart_Set 
247
+                = Download_Option 
248
+                = data[MBIC_PAYLOADSTART + 4];
249
+            printf("bluecell_Currdatastatus.MBIC_Download_Auto_Restart_Set  : %d \r\n",bluecell_Currdatastatus.MBIC_Download_Auto_Restart_Set );
250
+            
246 251
             /*TOTAL FRAME NUMBER*/
247 252
             data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 0];
248 253
             data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 1];        
@@ -250,9 +255,13 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
250 255
             data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 3];        
251 256
             /*DOWNLOAD OPTION*/        
252 257
             data[MBIC_PAYLOADSTART + index++] = 1;
253
-            bluecell_Currdatastatus.MBIC_Download_Auto_Restart_Set 
254
-                = Download_Option 
255
-                = data[MBIC_PAYLOADSTART + 4];
258
+//            data[MBIC_PAYLOADSTART + index++] = 0;//data[MBIC_PAYLOADSTART + 4];
259
+//            for(int i =0; i < 33; i++)
260
+//                printf("%x ",data[i]);
261
+//            printf("\r\n");
262
+            
263
+
264
+            
256 265
             /*DOWNLOAD DELAY REQUEST*/
257 266
             data[MBIC_PAYLOADSTART + index++] = 3;
258 267
             /*DOWNLOAD Reserve*/
@@ -274,6 +283,16 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
274 283
                 for(int i = 0; i < 41; i++)
275 284
                     pdata[i] = 0xFF;  
276 285
               }           
286
+            if(bluecell_Currdatastatus.MBIC_Download_Auto_Restart_Set != false){
287
+//                printf("MBIC_Download_Auto_Restart_Set == true\r\n");
288
+                if(bluecell_Currdatastatus.CPU_Current_Bank == HFR_BANK1_SEL){
289
+                    bluecell_Currdatastatus.CPU_Bank_Select = HFR_BANK2_SEL;
290
+//                    printf("Download Bank sel = Bank 2 \r\n");
291
+                }else{
292
+                    bluecell_Currdatastatus.CPU_Bank_Select = HFR_BANK1_SEL;
293
+//                    printf("Download Bank sel = Bank 1 \r\n");            
294
+                }
295
+            }              
277 296
 //            MBIC_DataBankWrite(1);
278 297
             //if()
279 298
 //            MBIC_DataErase_Func(bluecell_Currdatastatus.CPU_Bank_Select);
@@ -468,16 +487,7 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
468 487
             bluecell_Currdatastatus.CPU_Bank2_Image_Version1 = Bank2data[MBIC_BOOT_VERSION + 0];
469 488
             bluecell_Currdatastatus.CPU_Bank2_Image_Version2 = Bank2data[MBIC_BOOT_VERSION + 1];
470 489
             bluecell_Currdatastatus.CPU_Bank2_Image_Version3 = Bank2data[MBIC_BOOT_VERSION + 2];
471
-            if(bluecell_Currdatastatus.MBIC_Download_Auto_Restart_Set == true){
472
-                printf("MBIC_Download_Auto_Restart_Set == true\r\n");
473
-                if(bluecell_Currdatastatus.CPU_Current_Bank == HFR_BANK1_SEL){
474
-                    bluecell_Currdatastatus.CPU_Bank_Select = HFR_BANK2_SEL;
475
-                    printf("Download Bank sel = Bank 2 \r\n");
476
-                }else{
477
-                    bluecell_Currdatastatus.CPU_Bank_Select = HFR_BANK1_SEL;
478
-                    printf("Download Bank sel = Bank 1 \r\n");            
479
-                }
480
-            }
490
+
481 491
 
482 492
 
483 493
 //          if(BankNum == HFR_BANK1){
@@ -523,13 +533,13 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
523 533
     MBIC_Resp[(DataLength - 1) - 2] = (Crcret & 0xFF00) >> 8;  
524 534
     MBIC_Resp[(DataLength - 1) - 1] = (Crcret & 0x00FF);       
525 535
     
526
-    
527 536
     Uart1_Data_Send(MBIC_Resp ,22 + 3 + index);
528 537
     if( cmd == MBIC_Complete_Notice_RSP
529
-        &&bluecell_Currdatastatus.MBIC_Download_Auto_Restart_Set != false){
538
+        &&bluecell_Currdatastatus.MBIC_Download_Auto_Restart_Set != false)
539
+    {
540
+        printf("Reset Start \r\n");
530 541
         HAL_Delay(100);
531 542
         NVIC_SystemReset();
532 543
     }
533
-
534 544
     MBIC_DataErase_Func(BankNum);
535 545
 }

+ 1 - 1
Bluecell_Src/uart.c

@@ -155,7 +155,7 @@ void Uart1_Data_Send(uint8_t* data,uint16_t size){
155 155
   //HAL_UART_Transmit_IT(&hTerminal, &data[0],size);
156 156
 //    printf("data[278] : %x \r\n",data[278]);
157 157
 ////    HAL_Delay(1);   
158
-#if 0 // PYJ.2020.07.19_BEGIN -- 
158
+#if 1 // PYJ.2020.07.19_BEGIN -- 
159 159
     printf("\r\n [TX] : ");
160 160
     for(int i = 0; i< size; i++)
161 161
         printf("%02x ",data[i]);

+ 2 - 1
Src/main.c

@@ -272,7 +272,7 @@ uint8_t MBICTest_Firmdata[8]  = {1,2,3,4,5,6,7,8};
272 272
   * @retval int
273 273
   */
274 274
 int main(void)
275
-{
275
+  {
276 276
   /* USER CODE BEGIN 1 */
277 277
 
278 278
 
@@ -358,6 +358,7 @@ int main(void)
358 358
     Alarm_Check();     /*Function to check all alarm status variables*/
359 359
     FRBT_Operate();
360 360
     SelfTestTimer_Operate();
361
+    AlarmLog_Report();
361 362
     HAL_IWDG_Refresh(&hiwdg);
362 363
 #if 0 // PYJ.2020.08.11_BEGIN -- 
363 364
       for(int i = 0; i < ADC1_CNT; i++){