Code for Technion Formula car sensors reader

Dependencies:   mbed Buffer FATFileSystem

Fork of SX1272PingPong by Semtech

This is code is part of a Technion course project in advanced IoT, implementing a device to read and transmit sensors data from a Formula racing car built by students at Technion - Israel Institute of Technology.

How to install

  • Create an account on Mbed: https://os.mbed.com/account/signup/
  • Import project into Compiler
  • In the Program Workspace select "Formula_Nucleo_Reader"
  • Select a Platform like so:
  1. Click button at top-left
  2. Add Board
  3. Search "NUCLEO F103RB" and then "Add to your Mbed Compiler"
  • Finally click "Compile", if the build was successful, the binary would download automatically
  • To install it on device simply plug it in to a PC, open device drive and drag then drop binary file in it
Committer:
wardm
Date:
Thu May 17 20:37:41 2018 +0000
Revision:
15:2e0d977dbb31
V1.0.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wardm 15:2e0d977dbb31 1 /*
wardm 15:2e0d977dbb31 2 / _____) _ | |
wardm 15:2e0d977dbb31 3 ( (____ _____ ____ _| |_ _____ ____| |__
wardm 15:2e0d977dbb31 4 \____ \| ___ | (_ _) ___ |/ ___) _ \
wardm 15:2e0d977dbb31 5 _____) ) ____| | | || |_| ____( (___| | | |
wardm 15:2e0d977dbb31 6 (______/|_____)_|_|_| \__)_____)\____)_| |_|
wardm 15:2e0d977dbb31 7 ( C )2015 Semtech
wardm 15:2e0d977dbb31 8
wardm 15:2e0d977dbb31 9 Description: -
wardm 15:2e0d977dbb31 10
wardm 15:2e0d977dbb31 11 License: Revised BSD License, see LICENSE.TXT file include in the project
wardm 15:2e0d977dbb31 12
wardm 15:2e0d977dbb31 13 Maintainers: Miguel Luis, Gregory Cristian and Nicolas Huguenin
wardm 15:2e0d977dbb31 14 */
wardm 15:2e0d977dbb31 15 #ifndef __ENUMS_H__
wardm 15:2e0d977dbb31 16 #define __ENUMS_H__
wardm 15:2e0d977dbb31 17
wardm 15:2e0d977dbb31 18 /*!
wardm 15:2e0d977dbb31 19 * Radio driver internal state machine states definition
wardm 15:2e0d977dbb31 20 */
wardm 15:2e0d977dbb31 21 typedef enum RadioState
wardm 15:2e0d977dbb31 22 {
wardm 15:2e0d977dbb31 23 RF_IDLE = 0,
wardm 15:2e0d977dbb31 24 RF_RX_RUNNING,
wardm 15:2e0d977dbb31 25 RF_TX_RUNNING,
wardm 15:2e0d977dbb31 26 RF_CAD,
wardm 15:2e0d977dbb31 27 }RadioState_t;
wardm 15:2e0d977dbb31 28
wardm 15:2e0d977dbb31 29 /*!
wardm 15:2e0d977dbb31 30 * Type of the modem. [LORA / FSK]
wardm 15:2e0d977dbb31 31 */
wardm 15:2e0d977dbb31 32 typedef enum ModemType
wardm 15:2e0d977dbb31 33 {
wardm 15:2e0d977dbb31 34 MODEM_FSK = 0,
wardm 15:2e0d977dbb31 35 MODEM_LORA
wardm 15:2e0d977dbb31 36 }RadioModems_t;
wardm 15:2e0d977dbb31 37
wardm 15:2e0d977dbb31 38 /*!
wardm 15:2e0d977dbb31 39 * Type of the supported board.
wardm 15:2e0d977dbb31 40 */
wardm 15:2e0d977dbb31 41 typedef enum BoardType
wardm 15:2e0d977dbb31 42 {
wardm 15:2e0d977dbb31 43 SX1272MB2XAS = 0,
wardm 15:2e0d977dbb31 44 SX1272MB1DCS,
wardm 15:2e0d977dbb31 45 NA_MOTE_72,
wardm 15:2e0d977dbb31 46 MDOT_F411RE,
wardm 15:2e0d977dbb31 47 UNKNOWN
wardm 15:2e0d977dbb31 48 }BoardType_t;
wardm 15:2e0d977dbb31 49
wardm 15:2e0d977dbb31 50 /*!
wardm 15:2e0d977dbb31 51 * Radio FSK modem parameters
wardm 15:2e0d977dbb31 52 */
wardm 15:2e0d977dbb31 53 typedef struct
wardm 15:2e0d977dbb31 54 {
wardm 15:2e0d977dbb31 55 int8_t Power;
wardm 15:2e0d977dbb31 56 uint32_t Fdev;
wardm 15:2e0d977dbb31 57 uint32_t Bandwidth;
wardm 15:2e0d977dbb31 58 uint32_t BandwidthAfc;
wardm 15:2e0d977dbb31 59 uint32_t Datarate;
wardm 15:2e0d977dbb31 60 uint16_t PreambleLen;
wardm 15:2e0d977dbb31 61 bool FixLen;
wardm 15:2e0d977dbb31 62 uint8_t PayloadLen;
wardm 15:2e0d977dbb31 63 bool CrcOn;
wardm 15:2e0d977dbb31 64 bool IqInverted;
wardm 15:2e0d977dbb31 65 bool RxContinuous;
wardm 15:2e0d977dbb31 66 uint32_t TxTimeout;
wardm 15:2e0d977dbb31 67 uint32_t RxSingleTimeout;
wardm 15:2e0d977dbb31 68 }RadioFskSettings_t;
wardm 15:2e0d977dbb31 69
wardm 15:2e0d977dbb31 70 /*!
wardm 15:2e0d977dbb31 71 * Radio FSK packet handler state
wardm 15:2e0d977dbb31 72 */
wardm 15:2e0d977dbb31 73 typedef struct
wardm 15:2e0d977dbb31 74 {
wardm 15:2e0d977dbb31 75 uint8_t PreambleDetected;
wardm 15:2e0d977dbb31 76 uint8_t SyncWordDetected;
wardm 15:2e0d977dbb31 77 int8_t RssiValue;
wardm 15:2e0d977dbb31 78 int32_t AfcValue;
wardm 15:2e0d977dbb31 79 uint8_t RxGain;
wardm 15:2e0d977dbb31 80 uint16_t Size;
wardm 15:2e0d977dbb31 81 uint16_t NbBytes;
wardm 15:2e0d977dbb31 82 uint8_t FifoThresh;
wardm 15:2e0d977dbb31 83 uint8_t ChunkSize;
wardm 15:2e0d977dbb31 84 }RadioFskPacketHandler_t;
wardm 15:2e0d977dbb31 85
wardm 15:2e0d977dbb31 86 /*!
wardm 15:2e0d977dbb31 87 * Radio LoRa modem parameters
wardm 15:2e0d977dbb31 88 */
wardm 15:2e0d977dbb31 89 typedef struct
wardm 15:2e0d977dbb31 90 {
wardm 15:2e0d977dbb31 91 int8_t Power;
wardm 15:2e0d977dbb31 92 uint32_t Bandwidth;
wardm 15:2e0d977dbb31 93 uint32_t Datarate;
wardm 15:2e0d977dbb31 94 bool LowDatarateOptimize;
wardm 15:2e0d977dbb31 95 uint8_t Coderate;
wardm 15:2e0d977dbb31 96 uint16_t PreambleLen;
wardm 15:2e0d977dbb31 97 bool FixLen;
wardm 15:2e0d977dbb31 98 uint8_t PayloadLen;
wardm 15:2e0d977dbb31 99 bool CrcOn;
wardm 15:2e0d977dbb31 100 bool FreqHopOn;
wardm 15:2e0d977dbb31 101 uint8_t HopPeriod;
wardm 15:2e0d977dbb31 102 bool IqInverted;
wardm 15:2e0d977dbb31 103 bool RxContinuous;
wardm 15:2e0d977dbb31 104 uint32_t TxTimeout;
wardm 15:2e0d977dbb31 105 bool PublicNetwork;
wardm 15:2e0d977dbb31 106 }RadioLoRaSettings_t;
wardm 15:2e0d977dbb31 107
wardm 15:2e0d977dbb31 108 /*!
wardm 15:2e0d977dbb31 109 * Radio LoRa packet handler state
wardm 15:2e0d977dbb31 110 */
wardm 15:2e0d977dbb31 111 typedef struct
wardm 15:2e0d977dbb31 112 {
wardm 15:2e0d977dbb31 113 int8_t SnrValue;
wardm 15:2e0d977dbb31 114 int8_t RssiValue;
wardm 15:2e0d977dbb31 115 uint8_t Size;
wardm 15:2e0d977dbb31 116 }RadioLoRaPacketHandler_t;
wardm 15:2e0d977dbb31 117
wardm 15:2e0d977dbb31 118 /*!
wardm 15:2e0d977dbb31 119 * Radio Settings
wardm 15:2e0d977dbb31 120 */
wardm 15:2e0d977dbb31 121 typedef struct
wardm 15:2e0d977dbb31 122 {
wardm 15:2e0d977dbb31 123 RadioState State;
wardm 15:2e0d977dbb31 124 ModemType Modem;
wardm 15:2e0d977dbb31 125 uint32_t Channel;
wardm 15:2e0d977dbb31 126 RadioFskSettings_t Fsk;
wardm 15:2e0d977dbb31 127 RadioFskPacketHandler_t FskPacketHandler;
wardm 15:2e0d977dbb31 128 RadioLoRaSettings_t LoRa;
wardm 15:2e0d977dbb31 129 RadioLoRaPacketHandler_t LoRaPacketHandler;
wardm 15:2e0d977dbb31 130 }RadioSettings_t;
wardm 15:2e0d977dbb31 131
wardm 15:2e0d977dbb31 132
wardm 15:2e0d977dbb31 133 #endif //__ENUMS_H__