Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: FreescaleIAP mbed-rtos mbed
Fork of workinQM_10thDec by
Diff: BCN.cpp
- Revision:
- 49:61c9f28332ba
- Parent:
- 47:d59ba66229ce
- Child:
- 50:6001287f3045
--- 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