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

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Eeprom.h Source File

Eeprom.h

00001 /*
00002   ______                              _
00003  / _____)             _              | |
00004 ( (____  _____ ____ _| |_ _____  ____| |__
00005  \____ \| ___ |    (_   _) ___ |/ ___)  _ \
00006  _____) ) ____| | | || |_| ____( (___| | | |
00007 (______/|_____)_|_|_| \__)_____)\____)_| |_|
00008     (C)2016 Semtech
00009 
00010 Description: EEPROM routines header
00011 
00012 Maintainer: Gregory Cristian & Gilbert Menth
00013 */
00014 
00015 #ifndef EEPROM_H
00016 #define EEPROM_H
00017 
00018 
00019 #include "Menu.h"
00020 #include "DemoApplication.h"
00021 #include "sx1280.h"
00022 
00023 
00024 /*!
00025  * \brief Define Buffer indexes for each EepromData for copy and restore
00026  */
00027 #define SCR_CAL_FLAG_EEPROM_ADDR            0   // boolean
00028 #define SCR_CAL_POSA_EEPROM_ADDR            1   // int32
00029 #define SCR_CAL_POSB_EEPROM_ADDR            5   // int32
00030 #define SCR_CAL_POSC_EEPROM_ADDR            9   // int32
00031 #define SCR_CAL_POSD_EEPROM_ADDR            13  // int32
00032 #define SCR_CAL_POSE_EEPROM_ADDR            17  // int32
00033 #define SCR_CAL_POSF_EEPROM_ADDR            21  // int32
00034 #define APP_ENTITY_EEPROM_ADDR              25  // uint8
00035 #define APP_ANT_SW_EEPROM_ADDR              26  // uint8
00036 #define APP_FREQ_EEPROM_ADDR                27  // uint32_t Frequency;
00037 #define APP_TXPWR_EEPROM_ADDR               31  // int8_t TxPower;
00038 #define APP_MOD_TYPE_EEPROM_ADDR            32  // uint8_t ModulationType;
00039 #define APP_PER_NPAK_MAX_EEPROM_ADDR        33  // uint32_t MaxNumPacket;
00040 #define APP_RADIO_POWER_MODE_EEPROM_ADDR    37  // RadioRegulatorMode_t
00041 #define APP_RNG_REQ_COUNT_EEPROM_ADDR       38  // uint8_t
00042 #define APP_RNG_FULLSCALE_EEPROM_ADDR       39  // uint16_t
00043 #define APP_RNG_RFU_EEPROM_ADDR             41
00044 #define APP_RNG_UNIT_EEPROM_ADDR            42  // ranging distance unit
00045 #define APP_RNG_ADDR_EEPROM_ADDR            43  // uint32_t
00046 #define APP_RNG_ANT_EEPROM_ADDR             47  // uint8_t RngAntenna
00047 #define MOD_PAK_TYPE_EEPROM_ADDR            48  // enum
00048 #define MOD_GFS_BRBW_EEPROM_ADDR            49  // BitrateBandwidth
00049 #define MOD_GFS_MOD_IND_EEPROM_ADDR         50  // ModulationIndex
00050 #define MOD_GFS_MOD_SHAP_EEPROM_ADDR        51  // ModulationShaping
00051 #define MOD_LOR_SPREADF_EEPROM_ADDR         52  // SpreadingFactor
00052 #define MOD_LOR_BW_EEPROM_ADDR              53  // Bandwidth
00053 #define MOD_LOR_CODERATE_EEPROM_ADDR        54  // CodingRate
00054 #define MOD_FLR_BRBW_EEPROM_ADDR            55  // BitrateBandwidth
00055 #define MOD_FLR_CODERATE_EEPROM_ADDR        56  // CodingRate
00056 #define MOD_FLR_MOD_SHAP_EEPROM_ADDR        57  // ModulationShaping
00057 #define MOD_BLE_BRBW_EEPROM_ADDR            58  // BitrateBandwidth
00058 #define MOD_BLE_MOD_IND_EEPROM_ADDR         59  // ModulationIndex
00059 #define MOD_BLE_MOD_SHAP_EEPROM_ADDR        60  // ModulationShaping
00060 #define MOD_RNG_SPREADF_EEPROM_ADDR         61  // SpreadingFactor
00061 #define MOD_RNG_BW_EEPROM_ADDR              62  // Bandwidth
00062 #define MOD_RNG_CODERATE_EEPROM_ADDR        63  // CodingRate
00063 #define PAK_PAK_TYPE_EEPROM_ADDR            64  // 
00064 #define PAK_GFS_PREAMBLE_LEN_EEPROM_ADDR    65  // PreambleLength
00065 #define PAK_GFS_SYNC_LEN_EEPROM_ADDR        66  // SyncWordLength
00066 #define PAK_GFS_SYNC_MATCH_EEPROM_ADDR      67  // SyncWordMatch
00067 #define PAK_GFS_HEADERTYPE_EEPROM_ADDR      68  // HeaderType
00068 #define PAK_GFS_PL_LEN_EEPROM_ADDR          69  // PayloadLength
00069 #define PAK_GFS_CRC_LEN_EEPROM_ADDR         70  // CrcLength
00070 #define PAK_GFS_WHITENING_EEPROM_ADDR       71  // Whitening
00071 #define PAK_LOR_PREAMBLE_LEN_EEPROM_ADDR    72  // PreambleLength
00072 #define PAK_LOR_HEADERTYPE_EEPROM_ADDR      73  // HeaderType
00073 #define PAK_LOR_PL_LEN_EEPROM_ADDR          74  // PayloadLength
00074 #define PAK_LOR_CRC_MODE_EEPROM_ADDR        75  // CrcMode
00075 #define PAK_LOR_IQ_INV_EEPROM_ADDR          76  // InvertIQ
00076 #define PAK_RNG_PREAMBLE_LEN_EEPROM_ADDR    77  // PreambleLength
00077 #define PAK_RNG_HEADERTYPE_EEPROM_ADDR      78  // HeaderType
00078 #define PAK_RNG_PL_LEN_EEPROM_ADDR          79  // PayloadLength
00079 #define PAK_RNG_CRC_MODE_EEPROM_ADDR        80  // CrcMode
00080 #define PAK_RNG_IQ_INV_EEPROM_ADDR          81  // InvertIQ
00081 #define PAK_FLR_PREAMBLE_LEN_EEPROM_ADDR    82  // PreambleLength
00082 #define PAK_FLR_SYNC_LEN_EEPROM_ADDR        83  // SyncWordLength
00083 #define PAK_FLR_SYNC_MATCH_EEPROM_ADDR      84  // SyncWordMatch
00084 #define PAK_FLR_HEADERTYPE_EEPROM_ADDR      85  // HeaderType
00085 #define PAK_FLR_PL_LEN_EEPROM_ADDR          86  // PayloadLength
00086 #define PAK_FLR_CRC_LEN_EEPROM_ADDR         87  // CrcLength
00087 #define PAK_FLR_WHITENING_EEPROM_ADDR       88  // Whitening
00088 #define PAK_BLE_CON_STATE_EEPROM_ADDR       89  // ConnectionState
00089 #define PAK_BLE_CRC_FIELD_EEPROM_ADDR       90  // CrcField
00090 #define PAK_BLE_PAK_TYPE_EEPROM_ADDR        91  // BlePacketType
00091 #define PAK_BLE_WHITENING_EEPROM_ADDR       92  // Whitening
00092 #define EEPROM_CRC_EEPROM_ADDR              93  // uint16
00093 
00094 /*!
00095  * \brief Eeprom buffer size. Cf. above.
00096  */
00097 #define EEPROM_BUFFER_SIZE                  95
00098 
00099 
00100 /*!
00101  * \brief Part of EEPROM to save or restore
00102  */
00103 typedef enum
00104 {
00105     ALL_DATA,
00106     SCREEN_DATA,
00107     DEMO_SETTINGS,
00108     RADIO_LORA_PARAMS,
00109     RADIO_RANGING_PARAMS,
00110     RADIO_FLRC_PARAMS,
00111     RADIO_GFSK_PARAMS,
00112     RADIO_BLE_PARAMS
00113 }EepromDataSet_t;
00114 
00115 /*!
00116  * \brief EepromData structure
00117  */
00118 typedef struct
00119 {
00120     MenuSettings_t MenuSettings;
00121     DemoSettings_t DemoSettings;
00122     ModulationParams_t ModulationParams;
00123     PacketParams_t PacketParams;
00124     uint16_t CheckSum;
00125 }EepromData_t;
00126 
00127 /*!
00128  * \brief Eeprom structure
00129  */
00130 typedef struct
00131 {
00132     EepromData_t EepromData;
00133     // Allows for the checksum to be carried out
00134     uint8_t Buffer[EEPROM_BUFFER_SIZE];
00135 }Eeprom_t;
00136 
00137 
00138 /*!
00139  * \brief Local copy of Eeprom. (defined in Eeprom.cpp)
00140  */
00141 extern Eeprom_t Eeprom;
00142 
00143 
00144 /*!
00145  * \brief Initialises the contents of EepromData
00146  */
00147 void EepromInit( void );
00148 
00149 /*!
00150  * \brief Read Eeprom from emulated EEPROM (in fact in Flash " higher address).
00151  *
00152  * \param [in]  addr          address of data (EEPROM offset not to be include)
00153  * \param [in]  buffer        buffer to use for copy
00154  * \param [in]  size          size of data to copy
00155  *
00156  * \retval      status        Status of operation (SUCCESS, ..)
00157  */
00158 uint8_t EepromMcuReadBuffer( uint16_t addr, uint8_t *buffer, uint16_t size );
00159 
00160 /*!
00161  * \brief Writes the EepromData to emulated EEPROM
00162  *
00163  * \param [in]  dataSet       Set of data to save or restore
00164  */
00165 void EepromSaveSettings( EepromDataSet_t dataSet);
00166 
00167 /*!
00168  * \brief Loads EepromData from emulated EEPROM
00169  */
00170 void EepromLoadGeneralSettings ( void );
00171 
00172 /*!
00173  * \brief Loads EepromData with updated modulation and packet parameters
00174  *
00175  * \param [in]  modulation    modulation type to select for mod. & packet params
00176  */
00177 void EepromLoadSettings( RadioPacketTypes_t modulation );
00178 
00179 /*!
00180  * \brief Initialises the contents of flash to default values & save to EEPROM
00181  */
00182 void EepromSetDefaultSettings( void );
00183 
00184 /*!
00185  * \brief Initialises the contents of flash to default values (for ranging
00186  *        demo : best set) & save to EEPROM
00187  */
00188 void EepromSetRangingDefaultSettings( void );
00189 
00190 /*!
00191  * \brief Reset the EEPROM to factory state
00192  */
00193 void EepromFactoryReset( void );
00194 
00195 #endif //EEPROM_H
00196