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 RAJANGAM_REVIEW_BAE_CODE by
Diff: BCN.cpp
- 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
