Source code for the SX126xDVK1xAS Dev Kit. This example code has only been tested on the Nucleo L476RG

Dependencies:   mbed DmTftLibrary SX126xLib

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 "sx126x.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_RADIO_BOOSTED_RX_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 MOD_PKET_TYPE_EEPROM_ADDR           38  // uint8_t
00042 #define MOD_GFSK_BR_EEPROM_ADDR             39  // uint32_t Bitrate
00043 #define MOD_GFSK_FDEV_EEPROM_ADDR           43  // uint32_t FrequencyDeviation
00044 #define MOD_GFSK_MOD_SHAPE_EEPROM_ADDR      47  // uint8_t ModulationShape
00045 #define MOD_GFSK_BW_EEPROM_ADDR             48  // uint8_t Bandwidth
00046 #define RFU_1                               49
00047 #define RFU_2                               53
00048 #define RFU_3                               57
00049 #define RFU_4                               58
00050 #define RFU_5                               59
00051 #define RFU_6                               63
00052 #define RFU_7                               67
00053 #define RFU_8                               68
00054 #define MOD_LORA_SPREADF_EEPROM_ADDR        69  // uint8_t SpreadingFactor
00055 #define MOD_LORA_BW_EEPROM_ADDR             70  // uint8_t Bandwidth
00056 #define MOD_LORA_CODERATE_EEPROM_ADDR       71  // uint8_t CodingRate
00057 #define PAK_PKET_TYPE_EEPROM_ADDR           72  // uint8_t
00058 
00059 #define PAK_GFSK_PREAMBLE_LEN_EEPROM_ADDR   73  // uint16_t PreambleTxLength
00060 #define PAK_GFSK_PR_MIN_DET_EEPROM_ADDR     75  // uint8_t PreambleMinDetect
00061 #define PAK_GFSK_SYNC_LEN_EEPROM_ADDR       76  // uint8_t SyncWordLength
00062 #define PAK_GFSK_ADDR_COMP_EEPROM_ADDR      77  // uint8_t AddrComp
00063 #define PAK_GFSK_HEADERTYPE_EEPROM_ADDR     78  // uint8_t HeaderType
00064 #define PAK_GFSK_PL_LEN_EEPROM_ADDR         79  // uint8_t PayloadLength
00065 #define PAK_GFSK_CRC_LEN_EEPROM_ADDR        80  // uint8_t CrcLength
00066 #define PAK_GFSK_DC_FREE_EEPROM_ADDR        81  // uint8_t DCFree
00067 
00068 #define RFU_9                               82
00069 #define RFU_10                              84
00070 #define RFU_11                              85
00071 #define RFU_12                              86
00072 #define RFU_13                              87
00073 #define RFU_14                              88
00074 #define RFU_15                              89
00075 #define RFU_16                              90
00076                                               
00077 #define RFU_17                              91
00078 #define RFU_18                              93
00079 #define RFU_19                              94
00080 #define RFU_20                              95
00081 #define RFU_21                              96
00082 #define RFU_22                              97
00083 #define RFU_23                              98
00084 #define RFU_24                              99
00085 
00086 #define PAK_LORA_PREAMBLE_LEN_EEPROM_ADDR   100 // PreambleLength
00087 #define PAK_LORA_HEADERTYPE_EEPROM_ADDR     102 // HeaderType
00088 #define PAK_LORA_PL_LEN_EEPROM_ADDR         103 // PayloadLength
00089 #define PAK_LORA_CRC_MODE_EEPROM_ADDR       104 // CrcMode
00090 #define PAK_LORA_IQ_INV_EEPROM_ADDR         105 // InvertIQ
00091 #define EEPROM_LAST_DEVICE_CONNECTED        106 // uint8
00092 #define EEPROM_CRC_EEPROM_ADDR              107 // uint16
00093 
00094 /*!
00095  * \brief Eeprom buffer size. Cf. above.
00096  */
00097 #define EEPROM_BUFFER_SIZE                  109
00098 
00099 /*!
00100  * \brief Part of EEPROM to save or restore
00101  */
00102 typedef enum
00103 {
00104     ALL_DATA,
00105     SCREEN_DATA,
00106     DEMO_SETTINGS,
00107     RADIO_GFSK_PARAMS,
00108     RADIO_LORA_PARAMS,
00109 }EepromDataSet_t;
00110 
00111 /*!
00112  * \brief EepromData structure
00113  */
00114 typedef struct
00115 {
00116     MenuSettings_t MenuSettings;
00117     DemoSettings_t DemoSettings;
00118     ModulationParams_t ModulationParams;
00119     PacketParams_t PacketParams;
00120     uint16_t CheckSum;
00121 }EepromData_t;
00122 
00123 /*!
00124  * \brief Eeprom structure
00125  */
00126 typedef struct
00127 {
00128     EepromData_t EepromData;
00129     // Allows for the checksum to be carried out
00130     uint8_t Buffer[EEPROM_BUFFER_SIZE];
00131 }Eeprom_t;
00132 
00133 /*!
00134  * \brief Local copy of Eeprom. (defined in Eeprom.cpp)
00135  */
00136 extern Eeprom_t Eeprom;
00137 
00138 /*!
00139  * \brief Initialises the contents of EepromData
00140  * 
00141  * \param [in]  deviceConnected  Device currently connected
00142  * \param [in]  matchingFreq     matching frequency
00143  */
00144 void EepromInit( uint8_t deviceConnected, uint8_t matchingFreq );
00145 
00146 /*!
00147  * \brief Read Eeprom from emulated EEPROM (in fact in Flash " higher address).
00148  *
00149  * \param [in]  addr          address of data (EEPROM offset not to be include)
00150  * \param [in]  buffer        buffer to use for copy
00151  * \param [in]  size          size of data to copy
00152  *
00153  * \retval      status        Status of operation (SUCCESS, ..)
00154  */
00155 uint8_t EepromMcuReadBuffer( uint16_t addr, uint8_t *buffer, uint16_t size );
00156 
00157 /*!
00158  * \brief Writes the EepromData to emulated EEPROM
00159  *
00160  * \param [in]  dataSet       Set of data to save or restore
00161  */
00162 void EepromSaveSettings( EepromDataSet_t dataSet);
00163 
00164 /*!
00165  * \brief Loads EepromData from emulated EEPROM
00166  */
00167 void EepromLoadGeneralSettings ( void );
00168 
00169 /*!
00170  * \brief Loads EepromData with updated modulation and packet parameters
00171  *
00172  * \param [in]  modulation    modulation type to select for mod. & packet params
00173  */
00174 void EepromLoadSettings( RadioPacketTypes_t modulation );
00175 
00176 /*!
00177  * \brief Initialises the contents of flash to default values & save to EEPROM
00178  *
00179  * \param [in]  deviceConnected    Device currently connected
00180  * \param [in]  matchingFreq       board matching frequency
00181  */
00182 void EepromSetDefaultSettings( uint8_t deviceConnected, uint8_t matchingFreq );
00183 
00184 /*!
00185  * \brief Erase the data checksum to reset the radio to default parameters
00186  *
00187  */
00188 void EepromEraseCheckSum( void );
00189 
00190 #endif //EEPROM_H