This code holds the complete demo set for the sx1280: PingPong, PER and Ranging Outdoor demo application. >>>>> This code MUST run on the mbed library release 127 or everything will be painfully slow.

Dependencies:   mbed SX1280Lib DmTftLibrary

* This code MUST run on the mbed library release 127 or everything will be painfully slow.*
Committer:
mverdy
Date:
Thu Aug 17 10:22:32 2017 +0000
Revision:
14:ebd89dacc807
Parent:
0:9c0917bfde97
Child:
15:ed7ed20b7114
Make use of polling mode; Use up to date driver version; Print radio version at startup on Virtual Com Port

Who changed what in which revision?

UserRevisionLine numberNew contents of line
GregCr 0:9c0917bfde97 1 /*
GregCr 0:9c0917bfde97 2 ______ _
GregCr 0:9c0917bfde97 3 / _____) _ | |
GregCr 0:9c0917bfde97 4 ( (____ _____ ____ _| |_ _____ ____| |__
GregCr 0:9c0917bfde97 5 \____ \| ___ | (_ _) ___ |/ ___) _ \
GregCr 0:9c0917bfde97 6 _____) ) ____| | | || |_| ____( (___| | | |
GregCr 0:9c0917bfde97 7 (______/|_____)_|_|_| \__)_____)\____)_| |_|
GregCr 0:9c0917bfde97 8 (C)2016 Semtech
GregCr 0:9c0917bfde97 9
GregCr 0:9c0917bfde97 10 Description: Main program
GregCr 0:9c0917bfde97 11
GregCr 0:9c0917bfde97 12 Maintainer: Gregory Cristian & Gilbert Menth
GregCr 0:9c0917bfde97 13 */
GregCr 0:9c0917bfde97 14
GregCr 0:9c0917bfde97 15 #include "mbed.h"
GregCr 0:9c0917bfde97 16 #include "Timers.h"
GregCr 0:9c0917bfde97 17 #include "Menu.h"
GregCr 0:9c0917bfde97 18 #include "Eeprom.h"
GregCr 0:9c0917bfde97 19 #include "GpsMax7.h"
GregCr 0:9c0917bfde97 20 #include "SX9306.h"
mverdy 14:ebd89dacc807 21 #include "sx1280-hal.h"
GregCr 0:9c0917bfde97 22
GregCr 0:9c0917bfde97 23
GregCr 0:9c0917bfde97 24 /*!
GregCr 0:9c0917bfde97 25 * \brief Define IO for Unused Pin
GregCr 0:9c0917bfde97 26 */
GregCr 0:9c0917bfde97 27 DigitalOut F_CS( D6 ); // MBED description of pin
GregCr 0:9c0917bfde97 28 DigitalOut SD_CS( D8 ); // MBED description of pin
GregCr 0:9c0917bfde97 29
GregCr 0:9c0917bfde97 30 /*!
GregCr 0:9c0917bfde97 31 * \brief Specify serial datarate for UART debug output
GregCr 0:9c0917bfde97 32 */
GregCr 0:9c0917bfde97 33 void baud( int baudrate )
GregCr 0:9c0917bfde97 34 {
GregCr 0:9c0917bfde97 35 Serial s( USBTX, USBRX );
GregCr 0:9c0917bfde97 36 s.baud( baudrate );
GregCr 0:9c0917bfde97 37 }
GregCr 0:9c0917bfde97 38
mverdy 14:ebd89dacc807 39 extern SX1280Hal Radio;
mverdy 14:ebd89dacc807 40
GregCr 0:9c0917bfde97 41 int main( )
GregCr 0:9c0917bfde97 42 {
GregCr 0:9c0917bfde97 43 uint8_t currentPage = START_PAGE;
GregCr 0:9c0917bfde97 44 uint8_t demoStatusUpdate = 0; // used for screen display status
GregCr 0:9c0917bfde97 45
GregCr 0:9c0917bfde97 46 baud( 115200 );
GregCr 0:9c0917bfde97 47
GregCr 0:9c0917bfde97 48 F_CS = 1;
GregCr 0:9c0917bfde97 49 SD_CS = 1;
GregCr 0:9c0917bfde97 50
mverdy 14:ebd89dacc807 51 printf( "Starting SX1280DevKit : %s\n\r", FIRMWARE_VERSION );
mverdy 14:ebd89dacc807 52
GregCr 0:9c0917bfde97 53 EepromInit( );
GregCr 0:9c0917bfde97 54 InitDemoApplication( );
GregCr 0:9c0917bfde97 55 MenuInit( );
GregCr 0:9c0917bfde97 56 TimersInit( );
GregCr 0:9c0917bfde97 57 Max7GpsInit( );
GregCr 0:9c0917bfde97 58 SX9306ProximityInit( );
GregCr 0:9c0917bfde97 59
mverdy 14:ebd89dacc807 60 printf( "Radio version: 0x%x\n\r", Radio.GetFirmwareVersion( ) );
GregCr 0:9c0917bfde97 61
GregCr 0:9c0917bfde97 62 while( 1 )
GregCr 0:9c0917bfde97 63 {
GregCr 0:9c0917bfde97 64 currentPage = MenuHandler( demoStatusUpdate );
GregCr 0:9c0917bfde97 65
GregCr 0:9c0917bfde97 66 switch( currentPage )
GregCr 0:9c0917bfde97 67 {
GregCr 0:9c0917bfde97 68 case START_PAGE:
GregCr 0:9c0917bfde97 69 break;
GregCr 0:9c0917bfde97 70
GregCr 0:9c0917bfde97 71 case PAGE_PING_PONG:
GregCr 0:9c0917bfde97 72 demoStatusUpdate = RunDemoApplicationPingPong( );
GregCr 0:9c0917bfde97 73 break;
GregCr 0:9c0917bfde97 74
GregCr 0:9c0917bfde97 75 case PAGE_PER:
GregCr 0:9c0917bfde97 76 demoStatusUpdate = RunDemoApplicationPer( );
GregCr 0:9c0917bfde97 77 break;
GregCr 0:9c0917bfde97 78
GregCr 0:9c0917bfde97 79 case PAGE_RANGING_MASTER:
GregCr 0:9c0917bfde97 80 case PAGE_RANGING_SLAVE:
GregCr 0:9c0917bfde97 81 demoStatusUpdate = RunDemoApplicationRanging( );
GregCr 0:9c0917bfde97 82 break;
GregCr 0:9c0917bfde97 83
GregCr 0:9c0917bfde97 84 case PAGE_SLEEP_MODE:
GregCr 0:9c0917bfde97 85 demoStatusUpdate = RunDemoSleepMode( );
GregCr 0:9c0917bfde97 86 break;
GregCr 0:9c0917bfde97 87
GregCr 0:9c0917bfde97 88 case PAGE_STBY_RC_MODE:
GregCr 0:9c0917bfde97 89 demoStatusUpdate = RunDemoStandbyRcMode( );
GregCr 0:9c0917bfde97 90 break;
GregCr 0:9c0917bfde97 91
GregCr 0:9c0917bfde97 92 case PAGE_STBY_XOSC_MODE:
GregCr 0:9c0917bfde97 93 demoStatusUpdate = RunDemoStandbyXoscMode( );
GregCr 0:9c0917bfde97 94 break;
GregCr 0:9c0917bfde97 95
GregCr 0:9c0917bfde97 96 case PAGE_TX_CW:
GregCr 0:9c0917bfde97 97 demoStatusUpdate = RunDemoTxCw( );
GregCr 0:9c0917bfde97 98 break;
GregCr 0:9c0917bfde97 99
GregCr 0:9c0917bfde97 100 case PAGE_CONT_MODULATION:
GregCr 0:9c0917bfde97 101 demoStatusUpdate = RunDemoTxContinuousModulation( );
GregCr 0:9c0917bfde97 102 break;
GregCr 0:9c0917bfde97 103
GregCr 0:9c0917bfde97 104 case PAGE_UTILITIES:
GregCr 0:9c0917bfde97 105 // Extracts time and position information from the GPS module
GregCr 0:9c0917bfde97 106 Max7GpsHandle( );
GregCr 0:9c0917bfde97 107 SX9306ProximityHandle( ); //Deals with the proximity IC readings
GregCr 0:9c0917bfde97 108 break;
GregCr 0:9c0917bfde97 109
GregCr 0:9c0917bfde97 110 default: // Any page not running a demo
GregCr 0:9c0917bfde97 111 break;
GregCr 0:9c0917bfde97 112 }
GregCr 0:9c0917bfde97 113 }
GregCr 0:9c0917bfde97 114 }