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.*

main.cpp

Committer:
mverdy
Date:
2017-08-17
Revision:
14:ebd89dacc807
Parent:
0:9c0917bfde97
Child:
15:ed7ed20b7114

File content as of revision 14:ebd89dacc807:

/*
  ______                              _
 / _____)             _              | |
( (____  _____ ____ _| |_ _____  ____| |__
 \____ \| ___ |    (_   _) ___ |/ ___)  _ \
 _____) ) ____| | | || |_| ____( (___| | | |
(______/|_____)_|_|_| \__)_____)\____)_| |_|
    (C)2016 Semtech

Description: Main program

Maintainer: Gregory Cristian & Gilbert Menth
*/

#include "mbed.h"
#include "Timers.h"
#include "Menu.h"
#include "Eeprom.h"
#include "GpsMax7.h"
#include "SX9306.h"
#include "sx1280-hal.h"


/*!
 * \brief Define IO for Unused Pin
 */
DigitalOut F_CS( D6 );      // MBED description of pin
DigitalOut SD_CS( D8 );     // MBED description of pin

/*!
 * \brief Specify serial datarate for UART debug output
 */
void baud( int baudrate )
{
    Serial s( USBTX, USBRX );
    s.baud( baudrate );
}

extern SX1280Hal Radio;

int main( )
{
    uint8_t currentPage = START_PAGE;
    uint8_t demoStatusUpdate = 0;   // used for screen display status

    baud( 115200 );

    F_CS = 1;
    SD_CS = 1;

    printf( "Starting SX1280DevKit : %s\n\r", FIRMWARE_VERSION );

    EepromInit( );
    InitDemoApplication( );
    MenuInit( );
    TimersInit( );
    Max7GpsInit( );
    SX9306ProximityInit( );

    printf( "Radio version: 0x%x\n\r", Radio.GetFirmwareVersion( ) );

    while( 1 )
    {
        currentPage = MenuHandler( demoStatusUpdate );

        switch( currentPage )
        {
            case START_PAGE:
                break;

            case PAGE_PING_PONG:
                demoStatusUpdate = RunDemoApplicationPingPong( );
                break;

            case PAGE_PER:
                demoStatusUpdate = RunDemoApplicationPer( );
                break;

            case PAGE_RANGING_MASTER:
            case PAGE_RANGING_SLAVE:
                demoStatusUpdate = RunDemoApplicationRanging( );
                break;

            case PAGE_SLEEP_MODE:
                demoStatusUpdate = RunDemoSleepMode( );
                break;

            case PAGE_STBY_RC_MODE:
                demoStatusUpdate = RunDemoStandbyRcMode( );
                break;

            case PAGE_STBY_XOSC_MODE:
                demoStatusUpdate = RunDemoStandbyXoscMode( );
                break;

            case PAGE_TX_CW:
                demoStatusUpdate = RunDemoTxCw( );
                break;

            case PAGE_CONT_MODULATION:
                demoStatusUpdate = RunDemoTxContinuousModulation( );
                break;

            case PAGE_UTILITIES:
                // Extracts time and position information from the GPS module
                Max7GpsHandle( );
                SX9306ProximityHandle( ); //Deals with the proximity IC readings
                break;

            default:    // Any page not running a demo
                break;
        }
    }
}