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.cpp
00001 /* 00002 ______ _ 00003 / _____) _ | | 00004 ( (____ _____ ____ _| |_ _____ ____| |__ 00005 \____ \| ___ | (_ _) ___ |/ ___) _ \ 00006 _____) ) ____| | | || |_| ____( (___| | | | 00007 (______/|_____)_|_|_| \__)_____)\____)_| |_| 00008 (C)2016 Semtech 00009 00010 Description: EEPROM routines 00011 00012 Maintainer: Gregory Cristian & Gilbert Menth 00013 */ 00014 00015 #include "mbed.h" 00016 #include "string.h" 00017 #include "Eeprom.h" 00018 #include "Menu.h" 00019 #include "DemoApplication.h" 00020 #include "sx1280.h" 00021 #if defined( TARGET_NUCLEO_L476RG ) 00022 #include "stm32l4xx_hal_flash.h" 00023 #elif defined( TARGET_NUCLEO_L152RE ) 00024 #include "stm32l1xx_hal_flash.h" 00025 #else 00026 #error "Please define include file" 00027 #endif 00028 #include "DisplayDriver.h" 00029 00030 00031 /*! 00032 * \brief Define address of Emulated EEPROM (in fact region of Flash) 00033 */ 00034 #if defined( TARGET_NUCLEO_L476RG ) 00035 #define DATA_EEPROM_BASE ( ( uint32_t )0x0807F800U ) 00036 #define DATA_EEPROM_END ( ( uint32_t )DATA_EEPROM_BASE + 2048 ) 00037 #elif defined( TARGET_NUCLEO_L152RE ) 00038 #define DATA_EEPROM_BASE ( ( uint32_t )0x08080000U ) 00039 #define DATA_EEPROM_END ( ( uint32_t )0x080807FFU ) 00040 #else 00041 #error "Please define EEPROM base address and size for your board " 00042 #endif 00043 00044 00045 /*! 00046 * \brief CRC of EEPROM buffer and its valid status 00047 */ 00048 typedef struct 00049 { 00050 uint16_t Value; 00051 bool Valid; 00052 }MemTestStruct_t; 00053 00054 /*! 00055 * \brief Local copy of Eeprom. 00056 */ 00057 Eeprom_t Eeprom; 00058 00059 00060 // Check CRC of local copy of Eeprom (Buffer). This update Valid & Value 00061 static MemTestStruct_t EepromDataCheckSum( void ); 00062 uint8_t EepromMcuWriteBuffer( uint16_t addr, uint8_t *buffer, uint16_t size ); 00063 00064 void EepromInit( void ) 00065 { 00066 MemTestStruct_t memTestStruct; 00067 00068 EepromMcuReadBuffer( 0, Eeprom.Buffer, EEPROM_BUFFER_SIZE ); 00069 EepromLoadGeneralSettings( ); 00070 00071 memTestStruct = EepromDataCheckSum( ); 00072 if( !( memTestStruct.Valid ) ) 00073 { 00074 #ifdef PRINT_DEBUG 00075 printf("EepromDataCheckSum failed\n\r"); 00076 #endif 00077 EepromSetDefaultSettings( ); 00078 } 00079 EepromLoadSettings( ( RadioPacketTypes_t ) Eeprom.EepromData.DemoSettings.ModulationType ); 00080 } 00081 00082 void EepromSaveSettings( EepromDataSet_t dataSet) 00083 { 00084 MemTestStruct_t memTestStruct; 00085 00086 switch( dataSet ) 00087 { 00088 case RADIO_LORA_PARAMS: 00089 Eeprom.EepromData.ModulationParams.Params.LoRa.SpreadingFactor = ( RadioLoRaSpreadingFactors_t ) Eeprom.EepromData.DemoSettings.ModulationParam1; 00090 Eeprom.EepromData.ModulationParams.Params.LoRa.Bandwidth = ( RadioLoRaBandwidths_t ) Eeprom.EepromData.DemoSettings.ModulationParam2; 00091 Eeprom.EepromData.ModulationParams.Params.LoRa.CodingRate = ( RadioLoRaCodingRates_t ) Eeprom.EepromData.DemoSettings.ModulationParam3; 00092 Eeprom.EepromData.PacketParams.Params.LoRa.PreambleLength = Eeprom.EepromData.DemoSettings.PacketParam1; 00093 Eeprom.EepromData.PacketParams.Params.LoRa.HeaderType = ( RadioLoRaPacketLengthsModes_t )Eeprom.EepromData.DemoSettings.PacketParam2; 00094 Eeprom.EepromData.PacketParams.Params.LoRa.PayloadLength = Eeprom.EepromData.DemoSettings.PacketParam3; 00095 Eeprom.EepromData.PacketParams.Params.LoRa.Crc = ( RadioLoRaCrcModes_t ) Eeprom.EepromData.DemoSettings.PacketParam4; 00096 Eeprom.EepromData.PacketParams.Params.LoRa.InvertIQ = ( RadioLoRaIQModes_t ) Eeprom.EepromData.DemoSettings.PacketParam5; 00097 00098 memcpy( Eeprom.Buffer + MOD_LOR_SPREADF_EEPROM_ADDR, &( Eeprom.EepromData.ModulationParams.Params.LoRa.SpreadingFactor ), 1 ); 00099 memcpy( Eeprom.Buffer + MOD_LOR_BW_EEPROM_ADDR, &( Eeprom.EepromData.ModulationParams.Params.LoRa.Bandwidth ), 1 ); 00100 memcpy( Eeprom.Buffer + MOD_LOR_CODERATE_EEPROM_ADDR, &( Eeprom.EepromData.ModulationParams.Params.LoRa.CodingRate ), 1 ); 00101 memcpy( Eeprom.Buffer + PAK_LOR_PREAMBLE_LEN_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.LoRa.PreambleLength ), 1 ); 00102 memcpy( Eeprom.Buffer + PAK_LOR_HEADERTYPE_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.LoRa.HeaderType ), 1 ); 00103 memcpy( Eeprom.Buffer + PAK_LOR_PL_LEN_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.LoRa.PayloadLength ), 1 ); 00104 memcpy( Eeprom.Buffer + PAK_LOR_CRC_MODE_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.LoRa.Crc ), 1 ); 00105 memcpy( Eeprom.Buffer + PAK_LOR_IQ_INV_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.LoRa.InvertIQ ), 1 ); 00106 #ifdef PRINT_DEBUG 00107 printf("Saved RADIO_LORA_PARAMS\n\r"); 00108 #endif 00109 break; 00110 00111 case RADIO_RANGING_PARAMS: 00112 memcpy( Eeprom.Buffer + MOD_RNG_SPREADF_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.ModulationParam1 ), 1 ); 00113 memcpy( Eeprom.Buffer + MOD_RNG_BW_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.ModulationParam2 ), 1 ); 00114 memcpy( Eeprom.Buffer + MOD_RNG_CODERATE_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.ModulationParam3 ), 1 ); 00115 memcpy( Eeprom.Buffer + PAK_RNG_PREAMBLE_LEN_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.PacketParam1 ), 1 ); 00116 memcpy( Eeprom.Buffer + PAK_RNG_HEADERTYPE_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.PacketParam2 ), 1 ); 00117 memcpy( Eeprom.Buffer + PAK_RNG_PL_LEN_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.PacketParam3 ), 1 ); 00118 memcpy( Eeprom.Buffer + PAK_RNG_CRC_MODE_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.PacketParam4 ), 1 ); 00119 memcpy( Eeprom.Buffer + PAK_RNG_IQ_INV_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.PacketParam5 ), 1 ); 00120 00121 memcpy( Eeprom.Buffer + APP_RNG_REQ_COUNT_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.RngRequestCount ), 1 ); 00122 memcpy( Eeprom.Buffer + APP_RNG_FULLSCALE_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.RngFullScale ), 2 ); 00123 memcpy( Eeprom.Buffer + APP_RNG_ADDR_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.RngAddress ), 4 ); 00124 memcpy( Eeprom.Buffer + APP_RNG_ANT_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.RngAntenna ), 1 ); 00125 memcpy( Eeprom.Buffer + APP_RNG_UNIT_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.RngUnit ), 1 ); 00126 #ifdef PRINT_DEBUG 00127 printf("Saved RADIO_RANGING_PARAMS\n\r"); 00128 #endif 00129 break; 00130 00131 case RADIO_FLRC_PARAMS: 00132 Eeprom.EepromData.ModulationParams.Params.Flrc.BitrateBandwidth = ( RadioFlrcBitrates_t ) Eeprom.EepromData.DemoSettings.ModulationParam1; 00133 Eeprom.EepromData.ModulationParams.Params.Flrc.CodingRate = ( RadioFlrcCodingRates_t ) Eeprom.EepromData.DemoSettings.ModulationParam2; 00134 Eeprom.EepromData.ModulationParams.Params.Flrc.ModulationShaping = ( RadioModShapings_t ) Eeprom.EepromData.DemoSettings.ModulationParam3; 00135 Eeprom.EepromData.PacketParams.Params.Flrc.PreambleLength = ( RadioPreambleLengths_t ) Eeprom.EepromData.DemoSettings.PacketParam1; 00136 Eeprom.EepromData.PacketParams.Params.Flrc.SyncWordLength = ( RadioFlrcSyncWordLengths_t )Eeprom.EepromData.DemoSettings.PacketParam2; 00137 Eeprom.EepromData.PacketParams.Params.Flrc.SyncWordMatch = ( RadioSyncWordRxMatchs_t ) Eeprom.EepromData.DemoSettings.PacketParam3; 00138 Eeprom.EepromData.PacketParams.Params.Flrc.HeaderType = ( RadioPacketLengthModes_t ) Eeprom.EepromData.DemoSettings.PacketParam4; 00139 Eeprom.EepromData.PacketParams.Params.Flrc.PayloadLength = Eeprom.EepromData.DemoSettings.PacketParam5; 00140 Eeprom.EepromData.PacketParams.Params.Flrc.CrcLength = ( RadioCrcTypes_t ) Eeprom.EepromData.DemoSettings.PacketParam6; 00141 Eeprom.EepromData.PacketParams.Params.Flrc.Whitening = ( RadioWhiteningModes_t ) Eeprom.EepromData.DemoSettings.PacketParam7; 00142 00143 memcpy( Eeprom.Buffer + MOD_FLR_BRBW_EEPROM_ADDR, &( Eeprom.EepromData.ModulationParams.Params.Flrc.BitrateBandwidth ), 1 ); 00144 memcpy( Eeprom.Buffer + MOD_FLR_CODERATE_EEPROM_ADDR, &( Eeprom.EepromData.ModulationParams.Params.Flrc.CodingRate ), 1 ); 00145 memcpy( Eeprom.Buffer + MOD_FLR_MOD_SHAP_EEPROM_ADDR, &( Eeprom.EepromData.ModulationParams.Params.Flrc.ModulationShaping ), 1 ); 00146 memcpy( Eeprom.Buffer + PAK_FLR_PREAMBLE_LEN_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Flrc.PreambleLength ), 1 ); 00147 memcpy( Eeprom.Buffer + PAK_FLR_SYNC_LEN_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Flrc.SyncWordLength ), 1 ); 00148 memcpy( Eeprom.Buffer + PAK_FLR_SYNC_MATCH_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Flrc.SyncWordMatch ), 1 ); 00149 memcpy( Eeprom.Buffer + PAK_FLR_HEADERTYPE_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Flrc.HeaderType ), 1 ); 00150 memcpy( Eeprom.Buffer + PAK_FLR_PL_LEN_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Flrc.PayloadLength ), 1 ); 00151 memcpy( Eeprom.Buffer + PAK_FLR_CRC_LEN_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Flrc.CrcLength ), 1 ); 00152 memcpy( Eeprom.Buffer + PAK_FLR_WHITENING_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Flrc.Whitening ), 1 ); 00153 #ifdef PRINT_DEBUG 00154 printf("Saved RADIO_FLRC_PARAMS\n\r"); 00155 #endif 00156 break; 00157 00158 case RADIO_GFSK_PARAMS: 00159 Eeprom.EepromData.ModulationParams.Params.Gfsk.BitrateBandwidth = ( RadioGfskBleBitrates_t ) Eeprom.EepromData.DemoSettings.ModulationParam1; 00160 Eeprom.EepromData.ModulationParams.Params.Gfsk.ModulationIndex = ( RadioGfskBleModIndexes_t )Eeprom.EepromData.DemoSettings.ModulationParam2; 00161 Eeprom.EepromData.ModulationParams.Params.Gfsk.ModulationShaping = ( RadioModShapings_t ) Eeprom.EepromData.DemoSettings.ModulationParam3; 00162 Eeprom.EepromData.PacketParams.Params.Gfsk.PreambleLength = ( RadioPreambleLengths_t ) Eeprom.EepromData.DemoSettings.PacketParam1; 00163 Eeprom.EepromData.PacketParams.Params.Gfsk.SyncWordLength = ( RadioSyncWordLengths_t ) Eeprom.EepromData.DemoSettings.PacketParam2; 00164 Eeprom.EepromData.PacketParams.Params.Gfsk.SyncWordMatch = ( RadioSyncWordRxMatchs_t ) Eeprom.EepromData.DemoSettings.PacketParam3; 00165 Eeprom.EepromData.PacketParams.Params.Gfsk.HeaderType = ( RadioPacketLengthModes_t )Eeprom.EepromData.DemoSettings.PacketParam4; 00166 Eeprom.EepromData.PacketParams.Params.Gfsk.PayloadLength = Eeprom.EepromData.DemoSettings.PacketParam5; 00167 Eeprom.EepromData.PacketParams.Params.Gfsk.CrcLength = ( RadioCrcTypes_t ) Eeprom.EepromData.DemoSettings.PacketParam6; 00168 Eeprom.EepromData.PacketParams.Params.Gfsk.Whitening = ( RadioWhiteningModes_t ) Eeprom.EepromData.DemoSettings.PacketParam7; 00169 00170 memcpy( Eeprom.Buffer + MOD_GFS_BRBW_EEPROM_ADDR, &( Eeprom.EepromData.ModulationParams.Params.Gfsk.BitrateBandwidth ), 1 ); 00171 memcpy( Eeprom.Buffer + MOD_GFS_MOD_IND_EEPROM_ADDR, &( Eeprom.EepromData.ModulationParams.Params.Gfsk.ModulationIndex ), 1 ); 00172 memcpy( Eeprom.Buffer + MOD_GFS_MOD_SHAP_EEPROM_ADDR, &( Eeprom.EepromData.ModulationParams.Params.Gfsk.ModulationShaping ), 1 ); 00173 memcpy( Eeprom.Buffer + PAK_GFS_PREAMBLE_LEN_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Gfsk.PreambleLength ), 1 ); 00174 memcpy( Eeprom.Buffer + PAK_GFS_SYNC_LEN_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Gfsk.SyncWordLength ), 1 ); 00175 memcpy( Eeprom.Buffer + PAK_GFS_SYNC_MATCH_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Gfsk.SyncWordMatch ), 1 ); 00176 memcpy( Eeprom.Buffer + PAK_GFS_HEADERTYPE_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Gfsk.HeaderType ), 1 ); 00177 memcpy( Eeprom.Buffer + PAK_GFS_PL_LEN_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Gfsk.PayloadLength ), 1 ); 00178 memcpy( Eeprom.Buffer + PAK_GFS_CRC_LEN_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Gfsk.CrcLength ), 1 ); 00179 memcpy( Eeprom.Buffer + PAK_GFS_WHITENING_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Gfsk.Whitening ), 1 ); 00180 #ifdef PRINT_DEBUG 00181 printf("Saved RADIO_GFSK_PARAMS\n\r"); 00182 #endif 00183 break; 00184 00185 case DEMO_SETTINGS: 00186 memcpy( Eeprom.Buffer + APP_ENTITY_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.Entity ), 1 ); 00187 memcpy( Eeprom.Buffer + APP_ANT_SW_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.AntennaSwitch ), 1 ); 00188 memcpy( Eeprom.Buffer + APP_FREQ_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.Frequency ), 4 ); 00189 memcpy( Eeprom.Buffer + APP_TXPWR_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.TxPower ), 1 ); 00190 memcpy( Eeprom.Buffer + APP_MOD_TYPE_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.ModulationType ), 1 ); 00191 memcpy( Eeprom.Buffer + APP_PER_NPAK_MAX_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.MaxNumPacket ), 4 ); 00192 memcpy( Eeprom.Buffer + APP_RADIO_POWER_MODE_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.RadioPowerMode ), 1 ); 00193 memcpy( Eeprom.Buffer + MOD_PAK_TYPE_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.ModulationType ), 1 ); 00194 memcpy( Eeprom.Buffer + PAK_PAK_TYPE_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.ModulationType ), 1 ); 00195 #ifdef PRINT_DEBUG 00196 printf("Saved DEMO_SETTINGS\n\r"); 00197 #endif 00198 break; 00199 00200 case SCREEN_DATA: 00201 memcpy( Eeprom.Buffer + SCR_CAL_FLAG_EEPROM_ADDR, &( Eeprom.EepromData.MenuSettings.ScreenCalibrated ), 1 ); 00202 memcpy( Eeprom.Buffer + SCR_CAL_POSA_EEPROM_ADDR, &( Eeprom.EepromData.MenuSettings.Calibration.a ), 4 ); 00203 memcpy( Eeprom.Buffer + SCR_CAL_POSB_EEPROM_ADDR, &( Eeprom.EepromData.MenuSettings.Calibration.b ), 4 ); 00204 memcpy( Eeprom.Buffer + SCR_CAL_POSC_EEPROM_ADDR, &( Eeprom.EepromData.MenuSettings.Calibration.c ), 4 ); 00205 memcpy( Eeprom.Buffer + SCR_CAL_POSD_EEPROM_ADDR, &( Eeprom.EepromData.MenuSettings.Calibration.d ), 4 ); 00206 memcpy( Eeprom.Buffer + SCR_CAL_POSE_EEPROM_ADDR, &( Eeprom.EepromData.MenuSettings.Calibration.e ), 4 ); 00207 memcpy( Eeprom.Buffer + SCR_CAL_POSF_EEPROM_ADDR, &( Eeprom.EepromData.MenuSettings.Calibration.f ), 4 ); 00208 break; 00209 00210 default: 00211 #ifdef PRINT_DEBUG 00212 printf("data not saved\n\r"); 00213 #endif 00214 break; 00215 } 00216 00217 memTestStruct = EepromDataCheckSum( ); 00218 memcpy( Eeprom.Buffer + EEPROM_CRC_EEPROM_ADDR, &( memTestStruct.Value ), 2 ); 00219 00220 EepromMcuWriteBuffer( 0, Eeprom.Buffer, EEPROM_BUFFER_SIZE ); 00221 } 00222 00223 void EepromLoadGeneralSettings( void ) 00224 { 00225 printf("Load General Settings\n\r"); 00226 memcpy( &( Eeprom.EepromData.MenuSettings.ScreenCalibrated ), Eeprom.Buffer + SCR_CAL_FLAG_EEPROM_ADDR, 1 ); 00227 memcpy( &( Eeprom.EepromData.MenuSettings.Calibration.a ), Eeprom.Buffer + SCR_CAL_POSA_EEPROM_ADDR, 4 ); 00228 memcpy( &( Eeprom.EepromData.MenuSettings.Calibration.b ), Eeprom.Buffer + SCR_CAL_POSB_EEPROM_ADDR, 4 ); 00229 memcpy( &( Eeprom.EepromData.MenuSettings.Calibration.c ), Eeprom.Buffer + SCR_CAL_POSC_EEPROM_ADDR, 4 ); 00230 memcpy( &( Eeprom.EepromData.MenuSettings.Calibration.d ), Eeprom.Buffer + SCR_CAL_POSD_EEPROM_ADDR, 4 ); 00231 memcpy( &( Eeprom.EepromData.MenuSettings.Calibration.e ), Eeprom.Buffer + SCR_CAL_POSE_EEPROM_ADDR, 4 ); 00232 memcpy( &( Eeprom.EepromData.MenuSettings.Calibration.f ), Eeprom.Buffer + SCR_CAL_POSF_EEPROM_ADDR, 4 ); 00233 00234 memcpy( &( Eeprom.EepromData.DemoSettings.Entity ), Eeprom.Buffer + APP_ENTITY_EEPROM_ADDR, 1 ); 00235 memcpy( &( Eeprom.EepromData.DemoSettings.AntennaSwitch ), Eeprom.Buffer + APP_ANT_SW_EEPROM_ADDR, 1 ); 00236 memcpy( &( Eeprom.EepromData.DemoSettings.Frequency ), Eeprom.Buffer + APP_FREQ_EEPROM_ADDR, 4 ); 00237 memcpy( &( Eeprom.EepromData.DemoSettings.RadioPowerMode ), Eeprom.Buffer + APP_RADIO_POWER_MODE_EEPROM_ADDR, 1 ); 00238 memcpy( &( Eeprom.EepromData.DemoSettings.TxPower ), Eeprom.Buffer + APP_TXPWR_EEPROM_ADDR, 1 ); 00239 memcpy( &( Eeprom.EepromData.DemoSettings.ModulationType ), Eeprom.Buffer + APP_MOD_TYPE_EEPROM_ADDR, 1 ); 00240 memcpy( &( Eeprom.EepromData.DemoSettings.MaxNumPacket ), Eeprom.Buffer + APP_PER_NPAK_MAX_EEPROM_ADDR, 4 ); 00241 00242 memcpy( &( Eeprom.EepromData.ModulationParams.PacketType ), Eeprom.Buffer + MOD_PAK_TYPE_EEPROM_ADDR, 1 ); 00243 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Gfsk.BitrateBandwidth ), Eeprom.Buffer + MOD_GFS_BRBW_EEPROM_ADDR, 1 ); 00244 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Gfsk.ModulationIndex ), Eeprom.Buffer + MOD_GFS_MOD_IND_EEPROM_ADDR, 1 ); 00245 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Gfsk.ModulationShaping ), Eeprom.Buffer + MOD_GFS_MOD_SHAP_EEPROM_ADDR, 1 ); 00246 memcpy( &( Eeprom.EepromData.ModulationParams.Params.LoRa.SpreadingFactor ), Eeprom.Buffer + MOD_LOR_SPREADF_EEPROM_ADDR, 1 ); 00247 memcpy( &( Eeprom.EepromData.ModulationParams.Params.LoRa.Bandwidth ), Eeprom.Buffer + MOD_LOR_BW_EEPROM_ADDR, 1 ); 00248 memcpy( &( Eeprom.EepromData.ModulationParams.Params.LoRa.CodingRate ), Eeprom.Buffer + MOD_LOR_CODERATE_EEPROM_ADDR, 1 ); 00249 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Flrc.BitrateBandwidth ), Eeprom.Buffer + MOD_FLR_BRBW_EEPROM_ADDR, 1 ); 00250 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Flrc.CodingRate ), Eeprom.Buffer + MOD_FLR_CODERATE_EEPROM_ADDR, 1 ); 00251 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Flrc.ModulationShaping ), Eeprom.Buffer + MOD_FLR_MOD_SHAP_EEPROM_ADDR, 1 ); 00252 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Ble.BitrateBandwidth ), Eeprom.Buffer + MOD_BLE_BRBW_EEPROM_ADDR, 1 ); 00253 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Ble.ModulationIndex ), Eeprom.Buffer + MOD_BLE_MOD_IND_EEPROM_ADDR, 1 ); 00254 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Ble.ModulationShaping ), Eeprom.Buffer + MOD_BLE_MOD_SHAP_EEPROM_ADDR, 1 ); 00255 00256 memcpy( &( Eeprom.EepromData.PacketParams.PacketType ), Eeprom.Buffer + PAK_PAK_TYPE_EEPROM_ADDR, 1 ); 00257 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.PreambleLength ), Eeprom.Buffer + PAK_GFS_PREAMBLE_LEN_EEPROM_ADDR, 1 ); 00258 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.SyncWordLength ), Eeprom.Buffer + PAK_GFS_SYNC_LEN_EEPROM_ADDR, 1 ); 00259 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.SyncWordMatch ), Eeprom.Buffer + PAK_GFS_SYNC_MATCH_EEPROM_ADDR, 1 ); 00260 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.HeaderType ), Eeprom.Buffer + PAK_GFS_HEADERTYPE_EEPROM_ADDR, 1 ); 00261 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.PayloadLength ), Eeprom.Buffer + PAK_GFS_PL_LEN_EEPROM_ADDR, 1 ); 00262 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.CrcLength ), Eeprom.Buffer + PAK_GFS_CRC_LEN_EEPROM_ADDR, 1 ); 00263 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.Whitening ), Eeprom.Buffer + PAK_GFS_WHITENING_EEPROM_ADDR, 1 ); 00264 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.PreambleLength ), Eeprom.Buffer + PAK_LOR_PREAMBLE_LEN_EEPROM_ADDR, 1 ); 00265 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.HeaderType ), Eeprom.Buffer + PAK_LOR_HEADERTYPE_EEPROM_ADDR, 1 ); 00266 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.PayloadLength ), Eeprom.Buffer + PAK_LOR_PL_LEN_EEPROM_ADDR, 1 ); 00267 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.Crc ), Eeprom.Buffer + PAK_LOR_CRC_MODE_EEPROM_ADDR, 1 ); 00268 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.InvertIQ ), Eeprom.Buffer + PAK_LOR_IQ_INV_EEPROM_ADDR, 1 ); 00269 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.PreambleLength ), Eeprom.Buffer + PAK_FLR_PREAMBLE_LEN_EEPROM_ADDR, 1 ); 00270 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.SyncWordLength ), Eeprom.Buffer + PAK_FLR_SYNC_LEN_EEPROM_ADDR, 1 ); 00271 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.SyncWordMatch ), Eeprom.Buffer + PAK_FLR_SYNC_MATCH_EEPROM_ADDR, 1 ); 00272 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.HeaderType ), Eeprom.Buffer + PAK_FLR_HEADERTYPE_EEPROM_ADDR, 1 ); 00273 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.PayloadLength ), Eeprom.Buffer + PAK_FLR_PL_LEN_EEPROM_ADDR, 1 ); 00274 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.CrcLength ), Eeprom.Buffer + PAK_FLR_CRC_LEN_EEPROM_ADDR, 1 ); 00275 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.Whitening ), Eeprom.Buffer + PAK_FLR_WHITENING_EEPROM_ADDR, 1 ); 00276 memcpy( &( Eeprom.EepromData.PacketParams.Params.Ble.BleTestPayload ), Eeprom.Buffer + PAK_BLE_PAK_TYPE_EEPROM_ADDR, 1 ); 00277 memcpy( &( Eeprom.EepromData.PacketParams.Params.Ble.ConnectionState ), Eeprom.Buffer + PAK_BLE_CON_STATE_EEPROM_ADDR, 1 ); 00278 memcpy( &( Eeprom.EepromData.PacketParams.Params.Ble.CrcLength ), Eeprom.Buffer + PAK_BLE_CRC_FIELD_EEPROM_ADDR, 1 ); 00279 memcpy( &( Eeprom.EepromData.PacketParams.Params.Ble.Whitening ), Eeprom.Buffer + PAK_BLE_WHITENING_EEPROM_ADDR, 1 ); 00280 00281 memcpy( &( Eeprom.EepromData.DemoSettings.RngRequestCount ), Eeprom.Buffer + APP_RNG_REQ_COUNT_EEPROM_ADDR, 1 ); 00282 memcpy( &( Eeprom.EepromData.DemoSettings.RngFullScale ), Eeprom.Buffer + APP_RNG_FULLSCALE_EEPROM_ADDR, 2 ); 00283 memcpy( &( Eeprom.EepromData.DemoSettings.RngAddress ), Eeprom.Buffer + APP_RNG_ADDR_EEPROM_ADDR, 4 ); 00284 memcpy( &( Eeprom.EepromData.DemoSettings.RngAntenna ), Eeprom.Buffer + APP_RNG_ANT_EEPROM_ADDR, 1 ); 00285 memcpy( &( Eeprom.EepromData.DemoSettings.RngUnit ), Eeprom.Buffer + APP_RNG_UNIT_EEPROM_ADDR, 1 ); 00286 } 00287 00288 void EepromLoadSettings( RadioPacketTypes_t modulation ) 00289 { 00290 if( modulation == PACKET_TYPE_LORA ) 00291 { 00292 #ifdef PRINT_DEBUG 00293 printf("Load Settings PACKET_TYPE_LORA\n\r"); 00294 #endif 00295 memcpy( &( Eeprom.EepromData.ModulationParams.Params.LoRa.SpreadingFactor ), Eeprom.Buffer + MOD_LOR_SPREADF_EEPROM_ADDR, 1 ); 00296 memcpy( &( Eeprom.EepromData.ModulationParams.Params.LoRa.Bandwidth ), Eeprom.Buffer + MOD_LOR_BW_EEPROM_ADDR, 1 ); 00297 memcpy( &( Eeprom.EepromData.ModulationParams.Params.LoRa.CodingRate ), Eeprom.Buffer + MOD_LOR_CODERATE_EEPROM_ADDR, 1 ); 00298 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.PreambleLength ), Eeprom.Buffer + PAK_LOR_PREAMBLE_LEN_EEPROM_ADDR, 1 ); 00299 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.HeaderType ), Eeprom.Buffer + PAK_LOR_HEADERTYPE_EEPROM_ADDR, 1 ); 00300 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.PayloadLength ), Eeprom.Buffer + PAK_LOR_PL_LEN_EEPROM_ADDR, 1 ); 00301 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.Crc ), Eeprom.Buffer + PAK_LOR_CRC_MODE_EEPROM_ADDR, 1 ); 00302 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.InvertIQ ), Eeprom.Buffer + PAK_LOR_IQ_INV_EEPROM_ADDR, 1 ); 00303 00304 Eeprom.EepromData.ModulationParams.PacketType = PACKET_TYPE_LORA; 00305 Eeprom.EepromData.PacketParams.PacketType = PACKET_TYPE_LORA; 00306 Eeprom.EepromData.DemoSettings.ModulationParam1 = Eeprom.EepromData.ModulationParams.Params.LoRa.SpreadingFactor; 00307 Eeprom.EepromData.DemoSettings.ModulationParam2 = Eeprom.EepromData.ModulationParams.Params.LoRa.Bandwidth; 00308 Eeprom.EepromData.DemoSettings.ModulationParam3 = Eeprom.EepromData.ModulationParams.Params.LoRa.CodingRate; 00309 00310 Eeprom.EepromData.DemoSettings.PacketParam1 = Eeprom.EepromData.PacketParams.Params.LoRa.PreambleLength; 00311 Eeprom.EepromData.DemoSettings.PacketParam2 = Eeprom.EepromData.PacketParams.Params.LoRa.HeaderType; 00312 Eeprom.EepromData.DemoSettings.PacketParam3 = Eeprom.EepromData.PacketParams.Params.LoRa.PayloadLength; 00313 Eeprom.EepromData.DemoSettings.PacketParam4 = Eeprom.EepromData.PacketParams.Params.LoRa.Crc; 00314 Eeprom.EepromData.DemoSettings.PacketParam5 = Eeprom.EepromData.PacketParams.Params.LoRa.InvertIQ; 00315 Eeprom.EepromData.DemoSettings.PacketParam6 = 0x00; 00316 Eeprom.EepromData.DemoSettings.PacketParam7 = 0x00; 00317 } 00318 else if( modulation == PACKET_TYPE_RANGING ) 00319 { 00320 #ifdef PRINT_DEBUG 00321 printf("Load Settings PACKET_TYPE_RANGING\n\r"); 00322 #endif 00323 memcpy( &( Eeprom.EepromData.ModulationParams.Params.LoRa.SpreadingFactor ), Eeprom.Buffer + MOD_RNG_SPREADF_EEPROM_ADDR, 1 ); 00324 memcpy( &( Eeprom.EepromData.ModulationParams.Params.LoRa.Bandwidth ), Eeprom.Buffer + MOD_RNG_BW_EEPROM_ADDR, 1 ); 00325 memcpy( &( Eeprom.EepromData.ModulationParams.Params.LoRa.CodingRate ), Eeprom.Buffer + MOD_RNG_CODERATE_EEPROM_ADDR, 1 ); 00326 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.PreambleLength ), Eeprom.Buffer + PAK_RNG_PREAMBLE_LEN_EEPROM_ADDR, 1 ); 00327 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.HeaderType ), Eeprom.Buffer + PAK_RNG_HEADERTYPE_EEPROM_ADDR, 1 ); 00328 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.PayloadLength ), Eeprom.Buffer + PAK_RNG_PL_LEN_EEPROM_ADDR, 1 ); 00329 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.Crc ), Eeprom.Buffer + PAK_RNG_CRC_MODE_EEPROM_ADDR, 1 ); 00330 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.InvertIQ ), Eeprom.Buffer + PAK_RNG_IQ_INV_EEPROM_ADDR, 1 ); 00331 memcpy( &( Eeprom.EepromData.DemoSettings.RngRequestCount ), Eeprom.Buffer + APP_RNG_REQ_COUNT_EEPROM_ADDR, 1 ); 00332 memcpy( &( Eeprom.EepromData.DemoSettings.RngFullScale ), Eeprom.Buffer + APP_RNG_FULLSCALE_EEPROM_ADDR, 2 ); 00333 memcpy( &( Eeprom.EepromData.DemoSettings.RngAddress ), Eeprom.Buffer + APP_RNG_ADDR_EEPROM_ADDR, 4 ); 00334 memcpy( &( Eeprom.EepromData.DemoSettings.RngAntenna ), Eeprom.Buffer + APP_RNG_ANT_EEPROM_ADDR, 1 ); 00335 memcpy( &( Eeprom.EepromData.DemoSettings.RngUnit ), Eeprom.Buffer + APP_RNG_UNIT_EEPROM_ADDR, 1 ); 00336 00337 Eeprom.EepromData.ModulationParams.PacketType = PACKET_TYPE_RANGING; 00338 Eeprom.EepromData.PacketParams.PacketType = PACKET_TYPE_RANGING; 00339 Eeprom.EepromData.DemoSettings.ModulationParam1 = Eeprom.EepromData.ModulationParams.Params.LoRa.SpreadingFactor; 00340 Eeprom.EepromData.DemoSettings.ModulationParam2 = Eeprom.EepromData.ModulationParams.Params.LoRa.Bandwidth; 00341 Eeprom.EepromData.DemoSettings.ModulationParam3 = Eeprom.EepromData.ModulationParams.Params.LoRa.CodingRate; 00342 00343 Eeprom.EepromData.DemoSettings.PacketParam1 = Eeprom.EepromData.PacketParams.Params.LoRa.PreambleLength; 00344 Eeprom.EepromData.DemoSettings.PacketParam2 = Eeprom.EepromData.PacketParams.Params.LoRa.HeaderType; 00345 Eeprom.EepromData.DemoSettings.PacketParam3 = Eeprom.EepromData.PacketParams.Params.LoRa.PayloadLength; 00346 Eeprom.EepromData.DemoSettings.PacketParam4 = Eeprom.EepromData.PacketParams.Params.LoRa.Crc; 00347 Eeprom.EepromData.DemoSettings.PacketParam5 = Eeprom.EepromData.PacketParams.Params.LoRa.InvertIQ; 00348 Eeprom.EepromData.DemoSettings.PacketParam6 = 0x00; 00349 Eeprom.EepromData.DemoSettings.PacketParam7 = 0x00; 00350 } 00351 else if( modulation == PACKET_TYPE_FLRC ) 00352 { 00353 #ifdef PRINT_DEBUG 00354 printf("Load Settings PACKET_TYPE_FLRC\n\r"); 00355 #endif 00356 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Flrc.BitrateBandwidth ), Eeprom.Buffer + MOD_FLR_BRBW_EEPROM_ADDR, 1 ); 00357 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Flrc.CodingRate ), Eeprom.Buffer + MOD_FLR_CODERATE_EEPROM_ADDR, 1 ); 00358 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Flrc.ModulationShaping ), Eeprom.Buffer + MOD_FLR_MOD_SHAP_EEPROM_ADDR, 1 ); 00359 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.PreambleLength ), Eeprom.Buffer + PAK_FLR_PREAMBLE_LEN_EEPROM_ADDR, 1 ); 00360 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.SyncWordLength ), Eeprom.Buffer + PAK_FLR_SYNC_LEN_EEPROM_ADDR, 1 ); 00361 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.SyncWordMatch ), Eeprom.Buffer + PAK_FLR_SYNC_MATCH_EEPROM_ADDR, 1 ); 00362 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.HeaderType ), Eeprom.Buffer + PAK_FLR_HEADERTYPE_EEPROM_ADDR, 1 ); 00363 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.PayloadLength ), Eeprom.Buffer + PAK_FLR_PL_LEN_EEPROM_ADDR, 1 ); 00364 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.CrcLength ), Eeprom.Buffer + PAK_FLR_CRC_LEN_EEPROM_ADDR, 1 ); 00365 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.Whitening ), Eeprom.Buffer + PAK_FLR_WHITENING_EEPROM_ADDR, 1 ); 00366 00367 Eeprom.EepromData.ModulationParams.PacketType = PACKET_TYPE_FLRC; 00368 Eeprom.EepromData.PacketParams.PacketType = PACKET_TYPE_FLRC; 00369 Eeprom.EepromData.DemoSettings.ModulationParam1 = Eeprom.EepromData.ModulationParams.Params.Flrc.BitrateBandwidth; 00370 Eeprom.EepromData.DemoSettings.ModulationParam2 = Eeprom.EepromData.ModulationParams.Params.Flrc.CodingRate; 00371 Eeprom.EepromData.DemoSettings.ModulationParam3 = Eeprom.EepromData.ModulationParams.Params.Flrc.ModulationShaping; 00372 00373 Eeprom.EepromData.DemoSettings.PacketParam1 = Eeprom.EepromData.PacketParams.Params.Flrc.PreambleLength; 00374 Eeprom.EepromData.DemoSettings.PacketParam2 = Eeprom.EepromData.PacketParams.Params.Flrc.SyncWordLength; 00375 Eeprom.EepromData.DemoSettings.PacketParam3 = Eeprom.EepromData.PacketParams.Params.Flrc.SyncWordMatch; 00376 Eeprom.EepromData.DemoSettings.PacketParam4 = Eeprom.EepromData.PacketParams.Params.Flrc.HeaderType; 00377 Eeprom.EepromData.DemoSettings.PacketParam5 = Eeprom.EepromData.PacketParams.Params.Flrc.PayloadLength; 00378 Eeprom.EepromData.DemoSettings.PacketParam6 = Eeprom.EepromData.PacketParams.Params.Flrc.CrcLength; 00379 Eeprom.EepromData.DemoSettings.PacketParam7 = Eeprom.EepromData.PacketParams.Params.Flrc.Whitening; 00380 } 00381 else // GFSK 00382 { 00383 #ifdef PRINT_DEBUG 00384 printf("Load Settings PACKET_TYPE_GFSK\n\r"); 00385 #endif 00386 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Gfsk.BitrateBandwidth ), Eeprom.Buffer + MOD_GFS_BRBW_EEPROM_ADDR, 1 ); 00387 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Gfsk.ModulationIndex ), Eeprom.Buffer + MOD_GFS_MOD_IND_EEPROM_ADDR, 1 ); 00388 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Gfsk.ModulationShaping ), Eeprom.Buffer + MOD_GFS_MOD_SHAP_EEPROM_ADDR, 1 ); 00389 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.PreambleLength ), Eeprom.Buffer + PAK_GFS_PREAMBLE_LEN_EEPROM_ADDR, 1 ); 00390 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.SyncWordLength ), Eeprom.Buffer + PAK_GFS_SYNC_LEN_EEPROM_ADDR, 1 ); 00391 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.SyncWordMatch ), Eeprom.Buffer + PAK_GFS_SYNC_MATCH_EEPROM_ADDR, 1 ); 00392 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.HeaderType ), Eeprom.Buffer + PAK_GFS_HEADERTYPE_EEPROM_ADDR, 1 ); 00393 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.PayloadLength ), Eeprom.Buffer + PAK_GFS_PL_LEN_EEPROM_ADDR, 1 ); 00394 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.CrcLength ), Eeprom.Buffer + PAK_GFS_CRC_LEN_EEPROM_ADDR, 1 ); 00395 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.Whitening ), Eeprom.Buffer + PAK_GFS_WHITENING_EEPROM_ADDR, 1 ); 00396 00397 Eeprom.EepromData.ModulationParams.PacketType = PACKET_TYPE_GFSK; 00398 Eeprom.EepromData.PacketParams.PacketType = PACKET_TYPE_GFSK; 00399 Eeprom.EepromData.DemoSettings.ModulationParam1 = Eeprom.EepromData.ModulationParams.Params.Gfsk.BitrateBandwidth; 00400 Eeprom.EepromData.DemoSettings.ModulationParam2 = Eeprom.EepromData.ModulationParams.Params.Gfsk.ModulationIndex; 00401 Eeprom.EepromData.DemoSettings.ModulationParam3 = Eeprom.EepromData.ModulationParams.Params.Gfsk.ModulationShaping; 00402 00403 Eeprom.EepromData.DemoSettings.PacketParam1 = Eeprom.EepromData.PacketParams.Params.Gfsk.PreambleLength; 00404 Eeprom.EepromData.DemoSettings.PacketParam2 = Eeprom.EepromData.PacketParams.Params.Gfsk.SyncWordLength; 00405 Eeprom.EepromData.DemoSettings.PacketParam3 = Eeprom.EepromData.PacketParams.Params.Gfsk.SyncWordMatch; 00406 Eeprom.EepromData.DemoSettings.PacketParam4 = Eeprom.EepromData.PacketParams.Params.Gfsk.HeaderType; 00407 Eeprom.EepromData.DemoSettings.PacketParam5 = Eeprom.EepromData.PacketParams.Params.Gfsk.PayloadLength; 00408 Eeprom.EepromData.DemoSettings.PacketParam6 = Eeprom.EepromData.PacketParams.Params.Gfsk.CrcLength; 00409 Eeprom.EepromData.DemoSettings.PacketParam7 = Eeprom.EepromData.PacketParams.Params.Gfsk.Whitening; 00410 } 00411 00412 Eeprom.EepromData.DemoSettings.ModulationType = modulation; 00413 } 00414 00415 void EepromSetRangingDefaultSettings( void ) 00416 { 00417 #ifdef PRINT_DEBUG 00418 printf("Set Ranging Default Settings\n\r"); 00419 #endif 00420 00421 Eeprom.EepromData.DemoSettings.ModulationType = PACKET_TYPE_RANGING; 00422 Eeprom.EepromData.ModulationParams.PacketType = PACKET_TYPE_RANGING; 00423 Eeprom.EepromData.PacketParams.PacketType = PACKET_TYPE_RANGING; 00424 00425 Eeprom.EepromData.DemoSettings.ModulationParam1 = LORA_SF6; 00426 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_1600; 00427 Eeprom.EepromData.DemoSettings.ModulationParam3 = LORA_CR_4_5; 00428 00429 Eeprom.EepromData.DemoSettings.PacketParam1 = 12; // PreambleLength 00430 Eeprom.EepromData.DemoSettings.PacketParam2 = LORA_PACKET_VARIABLE_LENGTH; 00431 Eeprom.EepromData.DemoSettings.PacketParam3 = 10; // PayloadLength 00432 Eeprom.EepromData.DemoSettings.PacketParam4 = LORA_CRC_ON; 00433 Eeprom.EepromData.DemoSettings.PacketParam5 = LORA_IQ_NORMAL; 00434 Eeprom.EepromData.DemoSettings.RngRequestCount = 60; 00435 Eeprom.EepromData.DemoSettings.RngAntenna = DEMO_RNG_ANT_1; 00436 00437 EepromSaveSettings( RADIO_RANGING_PARAMS ); 00438 } 00439 00440 void EepromSetDefaultSettings( void ) 00441 { 00442 Eeprom.EepromData.MenuSettings.ScreenCalibrated = false; 00443 00444 #ifdef PRINT_DEBUG 00445 printf("Set Default Settings\n\r"); 00446 #endif 00447 00448 EepromSaveSettings( SCREEN_DATA ); 00449 00450 Eeprom.EepromData.DemoSettings.ModulationType = PACKET_TYPE_RANGING; 00451 Eeprom.EepromData.ModulationParams.PacketType = PACKET_TYPE_RANGING; 00452 Eeprom.EepromData.PacketParams.PacketType = PACKET_TYPE_RANGING; 00453 00454 Eeprom.EepromData.DemoSettings.ModulationParam1 = LORA_SF6; 00455 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_1600; 00456 Eeprom.EepromData.DemoSettings.ModulationParam3 = LORA_CR_4_5; 00457 00458 Eeprom.EepromData.DemoSettings.PacketParam1 = 12; // PreambleLength 00459 Eeprom.EepromData.DemoSettings.PacketParam2 = LORA_PACKET_VARIABLE_LENGTH; 00460 Eeprom.EepromData.DemoSettings.PacketParam3 = 10; // PayloadLength 00461 Eeprom.EepromData.DemoSettings.PacketParam4 = LORA_CRC_ON; 00462 Eeprom.EepromData.DemoSettings.PacketParam5 = LORA_IQ_NORMAL; 00463 Eeprom.EepromData.DemoSettings.RngRequestCount = 60; 00464 Eeprom.EepromData.DemoSettings.RngFullScale = 30; 00465 Eeprom.EepromData.DemoSettings.RngAddress = DEMO_RNG_ADDR_1; 00466 Eeprom.EepromData.DemoSettings.RngAntenna = DEMO_RNG_ANT_1; 00467 Eeprom.EepromData.DemoSettings.RngUnit = DEMO_RNG_UNIT_SEL_M; 00468 00469 EepromSaveSettings( RADIO_RANGING_PARAMS ); 00470 00471 Eeprom.EepromData.DemoSettings.ModulationType = PACKET_TYPE_LORA; 00472 Eeprom.EepromData.ModulationParams.PacketType = PACKET_TYPE_LORA; 00473 Eeprom.EepromData.PacketParams.PacketType = PACKET_TYPE_LORA; 00474 00475 Eeprom.EepromData.DemoSettings.ModulationParam1 = LORA_SF10; 00476 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_1600; 00477 Eeprom.EepromData.DemoSettings.ModulationParam3 = LORA_CR_4_5; 00478 00479 Eeprom.EepromData.DemoSettings.PacketParam1 = 12; // PreambleLength 00480 Eeprom.EepromData.DemoSettings.PacketParam2 = LORA_PACKET_VARIABLE_LENGTH; 00481 Eeprom.EepromData.DemoSettings.PacketParam3 = DEMO_MIN_PAYLOAD; 00482 Eeprom.EepromData.DemoSettings.PacketParam4 = LORA_CRC_ON; 00483 Eeprom.EepromData.DemoSettings.PacketParam5 = LORA_IQ_NORMAL; 00484 00485 EepromSaveSettings( RADIO_LORA_PARAMS ); 00486 00487 Eeprom.EepromData.DemoSettings.ModulationType = PACKET_TYPE_GFSK; 00488 Eeprom.EepromData.ModulationParams.PacketType = PACKET_TYPE_GFSK; 00489 Eeprom.EepromData.PacketParams.PacketType = PACKET_TYPE_GFSK; 00490 00491 Eeprom.EepromData.DemoSettings.ModulationParam1 = GFSK_BLE_BR_0_125_BW_0_3; 00492 Eeprom.EepromData.DemoSettings.ModulationParam2 = GFSK_BLE_MOD_IND_1_00; 00493 Eeprom.EepromData.DemoSettings.ModulationParam3 = RADIO_MOD_SHAPING_BT_1_0; 00494 00495 Eeprom.EepromData.DemoSettings.PacketParam1 = PREAMBLE_LENGTH_32_BITS; 00496 Eeprom.EepromData.DemoSettings.PacketParam2 = GFSK_SYNCWORD_LENGTH_5_BYTE; 00497 Eeprom.EepromData.DemoSettings.PacketParam3 = RADIO_RX_MATCH_SYNCWORD_1; 00498 Eeprom.EepromData.DemoSettings.PacketParam4 = RADIO_PACKET_VARIABLE_LENGTH; 00499 Eeprom.EepromData.DemoSettings.PacketParam5 = DEMO_MIN_PAYLOAD; 00500 Eeprom.EepromData.DemoSettings.PacketParam6 = RADIO_CRC_3_BYTES; 00501 Eeprom.EepromData.DemoSettings.PacketParam7 = RADIO_WHITENING_ON; 00502 00503 EepromSaveSettings( RADIO_GFSK_PARAMS ); 00504 00505 Eeprom.EepromData.DemoSettings.ModulationType = PACKET_TYPE_FLRC; 00506 Eeprom.EepromData.ModulationParams.PacketType = PACKET_TYPE_FLRC; 00507 Eeprom.EepromData.PacketParams.PacketType = PACKET_TYPE_FLRC; 00508 00509 Eeprom.EepromData.DemoSettings.ModulationParam1 = FLRC_BR_0_260_BW_0_3; 00510 Eeprom.EepromData.DemoSettings.ModulationParam2 = FLRC_CR_1_2; 00511 Eeprom.EepromData.DemoSettings.ModulationParam3 = RADIO_MOD_SHAPING_BT_1_0; 00512 00513 Eeprom.EepromData.DemoSettings.PacketParam1 = PREAMBLE_LENGTH_32_BITS; 00514 Eeprom.EepromData.DemoSettings.PacketParam2 = FLRC_SYNCWORD_LENGTH_4_BYTE; 00515 Eeprom.EepromData.DemoSettings.PacketParam3 = RADIO_RX_MATCH_SYNCWORD_1; 00516 Eeprom.EepromData.DemoSettings.PacketParam4 = RADIO_PACKET_VARIABLE_LENGTH; 00517 Eeprom.EepromData.DemoSettings.PacketParam5 = DEMO_MIN_PAYLOAD; 00518 Eeprom.EepromData.DemoSettings.PacketParam6 = RADIO_CRC_3_BYTES; 00519 Eeprom.EepromData.DemoSettings.PacketParam7 = RADIO_WHITENING_OFF; 00520 00521 EepromSaveSettings( RADIO_FLRC_PARAMS ); 00522 00523 Eeprom.EepromData.DemoSettings.Entity = SLAVE; 00524 Eeprom.EepromData.DemoSettings.AntennaSwitch = 0x00; 00525 Eeprom.EepromData.DemoSettings.RadioPowerMode = USE_DCDC; 00526 Eeprom.EepromData.DemoSettings.Frequency = DEMO_CENTRAL_FREQ_PRESET1; 00527 Eeprom.EepromData.DemoSettings.TxPower = DEMO_POWER_TX_MAX; 00528 Eeprom.EepromData.DemoSettings.MaxNumPacket = 0x00; // infinite 00529 Eeprom.EepromData.DemoSettings.ModulationType = PACKET_TYPE_LORA; 00530 00531 EepromSaveSettings( DEMO_SETTINGS ); 00532 } 00533 00534 /*! 00535 * \brief Erase a page of Flash. Here used to Erase EEPROM region. 00536 * 00537 * \param [in] page address of page to erase 00538 * \param [in] banks address of banks to erase 00539 */ 00540 void FlashPageErase( uint32_t page, uint32_t banks ) 00541 { 00542 // Check the parameters 00543 assert_param( IS_FLASH_PAGE( page ) ); 00544 assert_param( IS_FLASH_BANK_EXCLUSIVE( banks ) ); 00545 00546 if( ( banks & FLASH_BANK_1 ) != RESET ) 00547 { 00548 CLEAR_BIT( FLASH->CR, FLASH_CR_BKER ); 00549 } 00550 else 00551 { 00552 SET_BIT( FLASH->CR, FLASH_CR_BKER ); 00553 } 00554 00555 // Proceed to erase the page 00556 MODIFY_REG( FLASH->CR, FLASH_CR_PNB, ( page << 3 ) ); 00557 SET_BIT( FLASH->CR, FLASH_CR_PER ); 00558 SET_BIT( FLASH->CR, FLASH_CR_STRT ); 00559 } 00560 00561 /*! 00562 * \brief Write Eeprom to emulated EEPROM (in fact in Flash " higher address). 00563 * 00564 * \param [in] addr address of data (EEPROM offset not to be include) 00565 * \param [in] buffer buffer to use for copy 00566 * \param [in] size size of data to copy 00567 * 00568 * \retval status Status of operation (SUCCESS, ..) 00569 */ 00570 uint8_t EepromMcuWriteBuffer( uint16_t addr, uint8_t *buffer, uint16_t size ) 00571 { 00572 uint64_t *flash = ( uint64_t* )buffer; 00573 00574 // assert_param( addr >= DATA_EEPROM_BASE ); 00575 assert_param( buffer != NULL ); 00576 assert_param( size < ( DATA_EEPROM_END - DATA_EEPROM_BASE ) ); 00577 00578 HAL_FLASH_Unlock( ); 00579 00580 FlashPageErase( 255, 1 ); 00581 00582 WRITE_REG( FLASH->CR, 0x40000000 ); 00583 00584 for( uint32_t i = 0; i < size; i++ ) 00585 { 00586 HAL_FLASH_Program( FLASH_TYPEPROGRAM_DOUBLEWORD, DATA_EEPROM_BASE + \ 00587 ( 8 * i ), flash[i] ); 00588 } 00589 00590 HAL_FLASH_Lock( ); 00591 00592 return SUCCESS; 00593 } 00594 00595 uint8_t EepromMcuReadBuffer( uint16_t addr, uint8_t *buffer, uint16_t size ) 00596 { 00597 assert_param( buffer != NULL ); 00598 00599 // assert_param( addr >= DATA_EEPROM_BASE ); 00600 assert_param( buffer != NULL ); 00601 assert_param( size < ( DATA_EEPROM_END - DATA_EEPROM_BASE ) ); 00602 00603 memcpy( buffer, ( uint8_t* )DATA_EEPROM_BASE, size ); 00604 return SUCCESS; 00605 } 00606 00607 static MemTestStruct_t EepromDataCheckSum( void ) 00608 { 00609 MemTestStruct_t memTestStruct; 00610 uint8_t x; 00611 uint8_t i; 00612 uint16_t crcBuf; 00613 memTestStruct.Value = 0xFFFF; 00614 00615 for( i = 0; i < EEPROM_BUFFER_SIZE - sizeof( uint16_t ); i++ ) 00616 { 00617 x = memTestStruct.Value >> 8 ^ Eeprom.Buffer[i]; 00618 x ^= x >> 4; 00619 memTestStruct.Value = ( memTestStruct.Value << 8 ) ^ \ 00620 ( ( uint16_t )( x << 12 ) ) ^ \ 00621 ( ( uint16_t )( x << 5 ) ) ^ \ 00622 ( ( uint16_t )x ); 00623 } 00624 memcpy( &crcBuf, Eeprom.Buffer + EEPROM_CRC_EEPROM_ADDR, 2 ); 00625 memTestStruct.Valid = ( crcBuf == memTestStruct.Value ); 00626 00627 return memTestStruct; 00628 } 00629 00630 void EepromFactoryReset( void ) 00631 { 00632 EepromSetDefaultSettings( ); 00633 EepromLoadSettings( ( RadioPacketTypes_t )Eeprom.EepromData.DemoSettings.ModulationType ); 00634 } 00635
Generated on Wed Jul 13 2022 01:03:22 by 1.7.2