Team Fox / Mbed 2 deprecated workinQM_5thJan_azad

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of workinQM_10thDec by Team Fox

Revision:
49:61c9f28332ba
Parent:
47:d59ba66229ce
Child:
50:6001287f3045
diff -r 9fd15e3e0b53 -r 61c9f28332ba BCN.cpp
--- a/BCN.cpp	Fri Jul 08 08:25:39 2016 +0000
+++ b/BCN.cpp	Thu Jul 14 23:04:26 2016 +0000
@@ -5,6 +5,15 @@
 //Check the pin names
 //Takes max 4 sec in void FCTN_BCN_TX_MAIN() (temp.calc. + long_beacon + short_beacon) 
 
+Timer timer_Init_BEACON_HW;
+Timer timer_Set_BCN_TX_STATUS_DISABLED;
+Timer timer_Set_BCN_TX_STATUS_SUSPENDED;
+Timer timer_Set_BCN_TX_STATUS_RF_SILENCE;
+Timer timer_Set_BCN_TX_STATUS_SUCCESS;
+Timer timer_Set_BCN_TX_STATUS_FAILURE;
+
+ 
+DigitalOut bcn_sw(PIN14,0);
 Serial pc_bcn(USBTX, USBRX);        //tx,rx
 //SPI spi(D11, D12, D13);              // mosi, miso, sclk 
 //DigitalOut cs(D10);                //slave select or chip select
@@ -50,14 +59,24 @@
     
     //1st 0-7 call sign
     //SHORT_HK_data[0] _ SHORT_HK_data[6]
+    SHORT_HK_data[0] = 0xF3;
+    SHORT_HK_data[1] = 0x02;
+    SHORT_HK_data[2] = 0xFA;
+    SHORT_HK_data[3] = 0xC6;
+    SHORT_HK_data[4] = 0xD4;
+    SHORT_HK_data[5] = 0x28;
+    SHORT_HK_data[6] = 0x8A;
     
     SHORT_HK_data[7] = quant_data.voltage_quant[15];
     SHORT_HK_data[7] = (SHORT_HK_data[7] & 0xF0) | (quant_data.current_quant[1]>>4);
+    SHORT_HK_data[8] = 0xFF;
     //braga SHORT_HK_data[8] = acs first 4 bit
     SHORT_HK_data[8] = (SHORT_HK_data[8] & 0xF0) | BCN_TMP>>4;
+    SHORT_HK_data[9] = 0xFF;
     //SHORT_HK_data[9] = float_to_uint8(min,max,EPS_BTRY_TMP_AVG); min max diss azad
     SHORT_HK_data[9] = (SHORT_HK_data[9]&0xF0) | BAE_RESET_COUNTER>>4;
     
+    
     RETURN_UPTIME(BAE_uptime.read(),&days,&hours,&mins);
     SHORT_HK_data[10] = CDMS_OC_FAULT;
     //SHORT_HK_data[10] = (1<<SHORT_HK_data[10]) | receiver_oc_fault//to be diss;
@@ -79,8 +98,19 @@
     pc_bcn.printf("FCTN_BCN_INIT\n");
     BCN_INIT_STATUS = 1;
     if( BCN_TX_SW_STATUS == 0b00000001)
-        Init_BEACON_HW();
-    else Set_BCN_TX_STATUS(BCN_TX_DISABLED);
+        {   
+            timer_Init_BEACON_HW.reset();
+            timer_Init_BEACON_HW.start();
+            Init_BEACON_HW();
+            timer_Init_BEACON_HW.stop();
+        }
+    else 
+        {
+            timer_Set_BCN_TX_STATUS_DISABLED.reset();
+            timer_Set_BCN_TX_STATUS_DISABLED.start();
+            Set_BCN_TX_STATUS(BCN_TX_DISABLED);
+            timer_Set_BCN_TX_STATUS_DISABLED.stop();
+        }
  // if(BCN_FEN == 0)//BCN_FEN is in flash
  //     rf_sl_timeout.attach(&FCTN_BCN_FEN, RF_SILENCE_TIME);
     BCN_INIT_STATUS = 0;
@@ -112,7 +142,11 @@
     {
         if(BCN_TX_SW_STATUS == 0b00000001)
         {
+            timer_Init_BEACON_HW.reset();
+            timer_Init_BEACON_HW.start();
             Init_BEACON_HW();
+            timer_Init_BEACON_HW.stop();
+            
             if( BCN_TX_STATUS == BCN_INIT_SUCCESS )
             {
                 pc_bcn.printf("\n\r transmitting");
@@ -124,8 +158,11 @@
                 //Get BCN_HK data from BCN HW(SPI) //Store BCN_HK data in BCN_HK_BUFFER
                 if(BCN_SPND_TX == 1 )
                 {
+                    timer_Set_BCN_TX_STATUS_SUSPENDED.reset();
+                    timer_Set_BCN_TX_STATUS_SUSPENDED.start();
                     Set_BCN_TX_STATUS(BCN_TX_SUSPENDED);
                     BCN_TX_MAIN_STATUS = 0;
+                    timer_Set_BCN_TX_STATUS_SUSPENDED.stop();
                 }
                 else
                 {       
@@ -158,8 +195,11 @@
     }
     else
     {
+        timer_Set_BCN_TX_STATUS_RF_SILENCE.reset();
+        timer_Set_BCN_TX_STATUS_RF_SILENCE.start();
         Set_BCN_TX_STATUS(BCN_RF_SILENCE);  //Window of RF Silence: None of the Txs should be on.
         BCN_TX_MAIN_STATUS = 0;
+        timer_Set_BCN_TX_STATUS_RF_SILENCE.stop();
     }
     t_i.stop();
     int end = t_i.read_us();
@@ -198,7 +238,7 @@
 uint32_t timeout_count;
 void BCN_TX()
 {
-    printf("BCN_TX\n\r");
+    pc_bcn.printf("BCN_TX\n\r");
     writereg(RF22_REG_6E_TX_DATA_RATE,0x0A);
     writereg(RF22_REG_6F_TX_DATA_RATE,0x7C);//1280bps
     
@@ -406,7 +446,7 @@
     if (fl ==1 && ERROR_CHECK ==0)  
     {   BCN_FAIL_COUNT++;
         ERROR_CHECK=1;
-        printf("BCN_FAIL_COUNT++\n");
+        pc_bcn.printf("BCN_FAIL_COUNT++\n");
     }
     else if(fl == 0)
     {
@@ -430,7 +470,7 @@
             }
             else if(count == 2)
             {
-                reset_rfm(1); printf("reg = 0x%X\n",reg);break;
+                reset_rfm(1); pc_bcn.printf("reg = 0x%X\n",reg);break;
             }
             else init_spi();
         }
@@ -477,20 +517,25 @@
 }
 void Init_BEACON_HW()
 {
-    printf("Init HW\n\r");
+    pc_bcn.printf("Init HW\n\r");
     ERROR_CHECK=0;
     wait(0.1);
     int BCN_INIT_COUNTER = 1;
     while(BCN_INIT_COUNTER)
     {
         init_spi();
-        printf("init spi\r\n");
+        pc_bcn.printf("init spi\r\n");
         //should either have a flag for invalid SPI or discard this for actual case or add reset
         if (readreg(RF22_REG_00_DEVICE_TYPE) == 0x08)
         {
             pc_bcn.printf("spi connection valid\r\n");
             reset_rfm(0);
+            
+            timer_Set_BCN_TX_STATUS_SUCCESS.reset();
+            timer_Set_BCN_TX_STATUS_SUCCESS.start();
             Set_BCN_TX_STATUS(BCN_INIT_SUCCESS);
+            timer_Set_BCN_TX_STATUS_SUCCESS.stop();
+            
             break;
         }
         else if (BCN_INIT_COUNTER == 1)
@@ -510,7 +555,12 @@
         else 
         {
             pc_bcn.printf("BCN_TX_FAILURE\r\n");
+            
+            timer_Set_BCN_TX_STATUS_FAILURE.reset();
+            timer_Set_BCN_TX_STATUS_FAILURE.start();
             Set_BCN_TX_STATUS(BCN_INIT_FAILURE);
+            timer_Set_BCN_TX_STATUS_FAILURE.stop();
+            
             break;
         }
         BCN_INIT_COUNTER++;
@@ -572,14 +622,14 @@
         
         //TX_packet_length written later
         ERROR_CHECK = 0;
-        printf("Done Init HW\n\r");
+        pc_bcn.printf("Done Init HW\n\r");
     }
 }
 bool Check_ACK_RECEIVED()
 {
     if((readreg(RF22_REG_03_INTERRUPT_STATUS1) & 0x04) == 0x04)  
     {
-        printf("Packet sent: ACK received\r\n");
+        pc_bcn.printf("Packet sent: ACK received\r\n");
         return 1;   
     }
     else