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: mbed QEI DmTftLibrary
Diff: Demo/DemoApplication.h
- Revision:
- 0:9c0917bfde97
- Child:
- 2:8ebe57eb273a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Demo/DemoApplication.h Mon Mar 13 15:12:05 2017 +0000
@@ -0,0 +1,277 @@
+/*
+ ______ _
+ / _____) _ | |
+( (____ _____ ____ _| |_ _____ ____| |__
+ \____ \| ___ | (_ _) ___ |/ ___) _ \
+ _____) ) ____| | | || |_| ____( (___| | | |
+(______/|_____)_|_|_| \__)_____)\____)_| |_|
+ (C)2016 Semtech
+
+Description: Display driver header
+
+Maintainer: Gregory Cristian & Gilbert Menth
+*/
+
+#ifndef DEMO_APPLICATION_H
+#define DEMO_APPLICATION_H
+
+
+/*!
+ * \brief Used to display firmware version on TFT (Utilities menu)
+ */
+#define FIRMWARE_VERSION ( ( char* )"Firmware Version: 170310A" )
+
+/*!
+ * \brief Define range of central frequency [Hz]
+ */
+#define DEMO_CENTRAL_FREQ_MIN 2400000000UL
+#define DEMO_CENTRAL_FREQ_MAX 2483500000UL
+
+/*!
+ * \brief Define 3 preset central frequencies [Hz]
+ */
+#define DEMO_CENTRAL_FREQ_PRESET1 2402000000UL
+#define DEMO_CENTRAL_FREQ_PRESET2 2450000000UL
+#define DEMO_CENTRAL_FREQ_PRESET3 2480000000UL
+
+/*!
+ * \brief Define 5 preset ranging addresses
+ */
+#define DEMO_RNG_ADDR_1 0x10000000
+#define DEMO_RNG_ADDR_2 0x32100000
+#define DEMO_RNG_ADDR_3 0x20012301
+#define DEMO_RNG_ADDR_4 0x20000abc
+#define DEMO_RNG_ADDR_5 0x32101230
+
+/*!
+ * \brief Define antenna selection for ranging
+ */
+#define DEMO_RNG_ANT_1 1
+#define DEMO_RNG_ANT_2 2
+#define DEMO_RNG_ANT_BOTH 0
+
+/*!
+ * \brief Define units for ranging distances
+ */
+#define DEMO_RNG_UNIT_CONV_M 1.0 // not used
+#define DEMO_RNG_UNIT_CONV_YD 1.0936
+#define DEMO_RNG_UNIT_CONV_MI 6.2137e-4
+#define DEMO_RNG_UNIT_SEL_M 0
+#define DEMO_RNG_UNIT_SEL_YD 1
+#define DEMO_RNG_UNIT_SEL_MI 2
+
+/*!
+ * \brief Define min and max Tx power [dBm]
+ */
+#define DEMO_POWER_TX_MIN -18
+#define DEMO_POWER_TX_MAX 13
+
+/*!
+ * \brief Define min and max ranging channels count
+ */
+#define DEMO_RNG_CHANNELS_COUNT_MAX 90
+#define DEMO_RNG_CHANNELS_COUNT_MIN 10
+
+/*!
+ * \brief Define min and max Z Score for ranging filtered results
+ */
+#define DEMO_RNG_ZSCORE_MIN 1
+#define DEMO_RNG_ZSCORE_MAX 5
+
+/*!
+ * \brief Define min and max payload length for demo applications
+ */
+#define DEMO_MIN_PAYLOAD 12
+#define DEMO_FLRC_MAX_PAYLOAD 127
+#define DEMO_GFS_LORA_MAX_PAYLOAD 255
+
+
+/*!
+ * \brief Define current demo mode
+ */
+enum DemoMode
+{
+ MASTER = 0,
+ SLAVE
+};
+
+/*!
+ * \brief Status of ranging distance
+ */
+enum RangingStatus
+{
+ RNG_INIT = 0,
+ RNG_PROCESS,
+ RNG_VALID,
+ RNG_TIMEOUT,
+ RNG_PER_ERROR
+};
+
+/*!
+ * \brief List of states for demo state machine
+ */
+enum DemoInternalStates
+{
+ APP_IDLE = 0, // nothing to do (or wait a radio interrupt)
+ APP_RANGING_DONE,
+ APP_RANGING_TIMEOUT,
+ APP_RANGING_CONFIG,
+ APP_RNG,
+ SEND_PING_MSG,
+ SEND_PONG_MSG,
+ APP_RX, // Rx done
+ APP_RX_TIMEOUT, // Rx timeout
+ APP_RX_ERROR, // Rx error
+ APP_TX, // Tx done
+ APP_TX_TIMEOUT, // Tx error
+ PER_TX_START, // PER master
+ PER_RX_START // PER slave
+};
+
+/*!
+ * \brief Demo Settings structure of Eeprom structure
+ */
+typedef struct
+{
+ uint8_t Entity; // Master or Slave
+ uint8_t HoldDemo; // Put demo in hold status
+ uint8_t AntennaSwitch; // Witch antenna connected
+ uint32_t Frequency; // Demo frequency
+ int8_t TxPower; // Demo Tx power
+ uint8_t RadioPowerMode; // Radio Power Mode [0: LDO, 1:DC_DC]
+ uint8_t PayloadLength; // Demo payload length
+ uint8_t ModulationType; // Demo modulation type (LORA, GFSK, FLRC)
+ uint8_t ModulationParam1; // Demo Mod. Param1 (depend on modulation type)
+ uint8_t ModulationParam2; // Demo Mod. Param2 (depend on modulation type)
+ uint8_t ModulationParam3; // Demo Mod. Param3 (depend on modulation type)
+ uint8_t PacketParam1; // Demo Pack. Param1 (depend on packet type)
+ uint8_t PacketParam2; // Demo Pack. Param2 (depend on packet type)
+ uint8_t PacketParam3; // Demo Pack. Param3 (depend on packet type)
+ uint8_t PacketParam4; // Demo Pack. Param4 (depend on packet type)
+ uint8_t PacketParam5; // Demo Pack. Param5 (depend on packet type)
+ uint8_t PacketParam6; // Demo Pack. Param6 (depend on packet type)
+ uint8_t PacketParam7; // Demo Pack. Param7 (depend on packet type)
+ uint32_t MaxNumPacket; // Demo Max Num Packet for PingPong and PER
+ uint16_t InterPacketDelay; // Demo Inter-Packet Delay for PingPong and PER
+ uint32_t CntPacketTx; // Tx packet transmitted
+ uint32_t CntPacketRxOK; // Rx packet received OK
+ uint32_t CntPacketRxOKSlave; // Rx packet received OK (slave side)
+ uint32_t CntPacketRxKO; // Rx packet received KO
+ uint32_t CntPacketRxKOSlave; // Rx packet received KO (slave side)
+ uint16_t RxTimeOutCount; // Rx packet received KO (by timeout)
+ double RngDistance; // Distance measured by ranging demo
+ double RngRawDistance; // Uncorrected measured distance [m]
+ uint32_t RngAddress; // Ranging Address
+ uint16_t RngFullScale; // Full range of measuring distance (Ranging)
+ uint8_t RngRequestCount; // Ranging Request Count
+ uint8_t RngUnit; // Ranging distance unit [m]/[mi]
+ uint8_t RngStatus; // Status of ranging distance
+ double RngFei; // Ranging Frequency Error Indicator
+ uint8_t RngAntenna; // Ranging antenna selection
+ double RngFeiFactor; // Ranging frequency correction factor
+ uint16_t RngReqDelay; // Time between ranging request
+ uint16_t RngCalib; // Ranging Calibration
+ uint8_t RngZscoreMax; // Max Zscore for ranging value ( ! *10 ! )
+ int8_t RssiValue; // Demo Rssi Value
+ int8_t SnrValue; // Demo Snr Value (only for LORA mod. type)
+}DemoSettings_t;
+
+/*!
+ * \brief Define freq offset for config central freq in "Radio Config Freq" menu
+ */
+enum FreqBase
+{
+ FB1 = 1, // 1 Hz
+ FB10 = 10, // 10 Hz
+ FB100 = 100, // 100 Hz
+ FB1K = 1000, // 1 kHz
+ FB10K = 10000, // 10 kHz
+ FB100K = 100000, // 100 kHz
+ FB1M = 1000000, // 1 MHz
+ FB10M = 10000000 // 10 MHz
+};
+
+
+/*!
+ * \brief Init RAM copy of Eeprom structure and init radio with it.
+ */
+void InitDemoApplication( void );
+
+/*!
+ * \brief Init vars of demo and fix APP_IDLE state to demo state machine.
+ */
+void StopDemoApplication( void );
+
+/*!
+ * \brief Run Demo in sleep mode.
+ *
+ * \retval demoStatusUpdate page refresh status ( >0 : refresh)
+ */
+uint8_t RunDemoSleepMode( void );
+
+/*!
+ * \brief Run Demo in standby RC mode.
+ *
+ * \retval demoStatusUpdate page refresh status ( >0 : refresh)
+ */
+uint8_t RunDemoStandbyRcMode( void );
+
+/*!
+ * \brief Run Demo in standby XOSC mode.
+ *
+ * \retval demoStatusUpdate page refresh status ( >0 : refresh)
+ */
+uint8_t RunDemoStandbyXoscMode( void );
+
+/*!
+ * \brief Run Demo Tx in continuous mode without modulation.
+ *
+ * \retval demoStatusUpdate page refresh status ( >0 : refresh)
+ */
+uint8_t RunDemoTxCw( void );
+
+/*!
+ * \brief Run Demo Tx in continuous modulation.
+ *
+ * \retval demoStatusUpdate page refresh status ( >0 : refresh)
+ */
+uint8_t RunDemoTxContinuousModulation( void );
+
+/*!
+ * \brief Run demo PingPong.
+ *
+ * \retval demoStatusUpdate page refresh status ( >0 : refresh)
+ */
+uint8_t RunDemoApplicationPingPong( void );
+
+/*!
+ * \brief Compute payload of Rx frame and update current counts and indicators.
+ *
+ * \param [in] buffer buffer with frame to compute
+ * \param [in] buffersize size of frame data in the buffer
+ */
+void ComputePingPongPayload( uint8_t *buffer, uint8_t bufferSize );
+
+/*!
+ * \brief Run demo PER.
+ *
+ * \retval demoStatusUpdate page refresh status ( >0 : refresh)
+ */
+uint8_t RunDemoApplicationPer( void );
+
+/*!
+ * \brief Compute payload of Rx frame and update current counts and indicators.
+ *
+ * \param [in] buffer buffer with frame to compute
+ * \param [in] buffersize size of frame data in the buffer
+ */
+void ComputePerPayload( uint8_t *buffer, uint8_t bufferSize );
+
+/*!
+ * \brief Run ranging demo.
+ *
+ * \retval demoStatusUpdate page refresh status ( >0 : refresh)
+ */
+uint8_t RunDemoApplicationRanging( void );
+
+#endif // DEMO_APPLICATION_H