Master Implementation of WANOT

Dependencies:   SX1276Lib mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers MasterBeacon.cpp Source File

MasterBeacon.cpp

00001 #include"WANOT.h"
00002 
00003 /*
00004  *  Global variables declarations
00005  */
00006 
00007 extern SuperSlotStates SuperSlotState; 
00008 
00009 extern RadioEvents_t RadioEvents;
00010 extern SX1276MB1xAS Radio;
00011 
00012 extern uint16_t BufferSize;
00013 extern uint8_t Buffer[];
00014 
00015 extern int16_t RssiValue;
00016 extern int8_t SnrValue;
00017 
00018 extern uint32_t LORA_Channels[NUMBER_OF_CHANNELS];
00019 
00020 extern uint8_t SlotNumber;
00021 extern uint8_t TDMAChannel;
00022 
00023 
00024 volatile uint8_t Beacon_Tx_Done = 0;
00025 void SetUp_Beacon_OnTxDone(void)
00026 {
00027     Beacon_Tx_Done = 1;
00028     debug("Beacon Tx Done!!\n\r");
00029 }
00030 
00031 
00032 void SetUp_Beacon(void)
00033 {
00034     debug("Master Set Up Beacon Started...\n\r");
00035     
00036     Radio.SetTxConfig(MODEM_LORA, TX_OUTPUT_POWER, 0, SET_UP_LORA_BANDWIDTH,
00037                       SET_UP_LORA_SPREADING_FACTOR, LORA_CODINGRATE,
00038                       LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON,
00039                       SET_UP_LORA_CRC_ENABLED, LORA_FHSS_ENABLED, LORA_NB_SYMB_HOP,
00040                       LORA_IQ_INVERSION_ON, 2000000);
00041 
00042     Radio.SetRxConfig(MODEM_LORA, SET_UP_LORA_BANDWIDTH, SET_UP_LORA_SPREADING_FACTOR,
00043                       LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH,
00044                       LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON, 0,
00045                       SET_UP_LORA_CRC_ENABLED, LORA_FHSS_ENABLED, LORA_NB_SYMB_HOP,
00046                       LORA_IQ_INVERSION_ON, true);
00047     Radio.SetChannel(SET_UP_FREQUENCY);
00048 
00049     Beacon_Tx_Done = 0;
00050     RadioEvents.TxDone = SetUp_Beacon_OnTxDone;
00051     Radio.Init(&RadioEvents);
00052 
00053     if (TDMAChannel != 0)
00054         Radio.Sleep();
00055     
00056     wait_us(TDMAChannel * BEACON_TIMEOUT_VALUE);
00057 
00058     Buffer[0] = SETUP_BEACON_SYNCWORD;
00059     Buffer[1] = TDMAChannel;
00060 
00061     Radio.Send(Buffer, BUFFER_SIZE_RTS);
00062 
00063     while(Beacon_Tx_Done != 1);
00064 
00065     debug("Beacon Sent\n\r");
00066 
00067     Radio.SetTxConfig(MODEM_LORA, TX_OUTPUT_POWER, 0, SET_UP_LORA_BANDWIDTH,
00068                       SET_UP_LORA_SPREADING_FACTOR, LORA_CODINGRATE,
00069                       LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON,
00070                       SET_UP_LORA_CRC_ENABLED, LORA_FHSS_ENABLED, LORA_NB_SYMB_HOP,
00071                       LORA_IQ_INVERSION_ON, 2000000);
00072 
00073     Radio.SetRxConfig(MODEM_LORA, SET_UP_LORA_BANDWIDTH, SET_UP_LORA_SPREADING_FACTOR,
00074                       LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH,
00075                       LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON, 0,
00076                       SET_UP_LORA_CRC_ENABLED, LORA_FHSS_ENABLED, LORA_NB_SYMB_HOP,
00077                       LORA_IQ_INVERSION_ON, true);
00078 
00079 
00080     Radio.SetChannel(LORA_Channels[TDMAChannel]);
00081      
00082     debug("Master Set Up Beacon Done!!\n\r");
00083     //Sleep untill setup phase RTC
00084 }