Source code for the SX126xDVK1xAS Dev Kit. This example code has only been tested on the Nucleo L476RG
Dependencies: mbed DmTftLibrary SX126xLib
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
Generated on Tue Jul 12 2022 15:49:22 by 1.7.2