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
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
Generated on Wed Jul 13 2022 01:03:22 by 1.7.2