20 Gennaio 2022 LA0002

Dependencies:   mbed QEI DmTftLibrary

Committer:
GregCr
Date:
Mon Mar 13 15:12:05 2017 +0000
Revision:
0:9c0917bfde97
Child:
8:c0a5f53fe196
alpha release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
GregCr 0:9c0917bfde97 1 /*
GregCr 0:9c0917bfde97 2 ______ _
GregCr 0:9c0917bfde97 3 / _____) _ | |
GregCr 0:9c0917bfde97 4 ( (____ _____ ____ _| |_ _____ ____| |__
GregCr 0:9c0917bfde97 5 \____ \| ___ | (_ _) ___ |/ ___) _ \
GregCr 0:9c0917bfde97 6 _____) ) ____| | | || |_| ____( (___| | | |
GregCr 0:9c0917bfde97 7 (______/|_____)_|_|_| \__)_____)\____)_| |_|
GregCr 0:9c0917bfde97 8 (C)2016 Semtech
GregCr 0:9c0917bfde97 9
GregCr 0:9c0917bfde97 10 Description: EEPROM routines
GregCr 0:9c0917bfde97 11
GregCr 0:9c0917bfde97 12 Maintainer: Gregory Cristian & Gilbert Menth
GregCr 0:9c0917bfde97 13 */
GregCr 0:9c0917bfde97 14
GregCr 0:9c0917bfde97 15 #include "mbed.h"
GregCr 0:9c0917bfde97 16 #include "string.h"
GregCr 0:9c0917bfde97 17 #include "Eeprom.h"
GregCr 0:9c0917bfde97 18 #include "Menu.h"
GregCr 0:9c0917bfde97 19 #include "DemoApplication.h"
GregCr 0:9c0917bfde97 20 #include "sx1280.h"
GregCr 0:9c0917bfde97 21 #if defined( TARGET_NUCLEO_L476RG )
GregCr 0:9c0917bfde97 22 #include "stm32l4xx_hal_flash.h"
GregCr 0:9c0917bfde97 23 #elif defined( TARGET_NUCLEO_L152RE )
GregCr 0:9c0917bfde97 24 #include "stm32l1xx_hal_flash.h"
GregCr 0:9c0917bfde97 25 #else
GregCr 0:9c0917bfde97 26 #error "Please define include file"
GregCr 0:9c0917bfde97 27 #endif
GregCr 0:9c0917bfde97 28 #include "DisplayDriver.h"
GregCr 0:9c0917bfde97 29
GregCr 0:9c0917bfde97 30
GregCr 0:9c0917bfde97 31 /*!
GregCr 0:9c0917bfde97 32 * \brief Define address of Emulated EEPROM (in fact region of Flash)
GregCr 0:9c0917bfde97 33 */
GregCr 0:9c0917bfde97 34 #if defined( TARGET_NUCLEO_L476RG )
GregCr 0:9c0917bfde97 35 #define DATA_EEPROM_BASE ( ( uint32_t )0x0807F800U )
GregCr 0:9c0917bfde97 36 #define DATA_EEPROM_END ( ( uint32_t )DATA_EEPROM_BASE + 2048 )
GregCr 0:9c0917bfde97 37 #elif defined( TARGET_NUCLEO_L152RE )
GregCr 0:9c0917bfde97 38 #define DATA_EEPROM_BASE ( ( uint32_t )0x08080000U )
GregCr 0:9c0917bfde97 39 #define DATA_EEPROM_END ( ( uint32_t )0x080807FFU )
GregCr 0:9c0917bfde97 40 #else
GregCr 0:9c0917bfde97 41 #error "Please define EEPROM base address and size for your board "
GregCr 0:9c0917bfde97 42 #endif
GregCr 0:9c0917bfde97 43
GregCr 0:9c0917bfde97 44
GregCr 0:9c0917bfde97 45 /*!
GregCr 0:9c0917bfde97 46 * \brief CRC of EEPROM buffer and its valid status
GregCr 0:9c0917bfde97 47 */
GregCr 0:9c0917bfde97 48 typedef struct
GregCr 0:9c0917bfde97 49 {
GregCr 0:9c0917bfde97 50 uint16_t Value;
GregCr 0:9c0917bfde97 51 bool Valid;
GregCr 0:9c0917bfde97 52 }MemTestStruct_t;
GregCr 0:9c0917bfde97 53
GregCr 0:9c0917bfde97 54 /*!
GregCr 0:9c0917bfde97 55 * \brief Local copy of Eeprom.
GregCr 0:9c0917bfde97 56 */
GregCr 0:9c0917bfde97 57 Eeprom_t Eeprom;
GregCr 0:9c0917bfde97 58
GregCr 0:9c0917bfde97 59
GregCr 0:9c0917bfde97 60 // Check CRC of local copy of Eeprom (Buffer). This update Valid & Value
GregCr 0:9c0917bfde97 61 static MemTestStruct_t EepromDataCheckSum( void );
GregCr 0:9c0917bfde97 62 uint8_t EepromMcuWriteBuffer( uint16_t addr, uint8_t *buffer, uint16_t size );
GregCr 0:9c0917bfde97 63
GregCr 0:9c0917bfde97 64 void EepromInit( void )
GregCr 0:9c0917bfde97 65 {
GregCr 0:9c0917bfde97 66 MemTestStruct_t memTestStruct;
GregCr 0:9c0917bfde97 67
GregCr 0:9c0917bfde97 68 EepromMcuReadBuffer( 0, Eeprom.Buffer, EEPROM_BUFFER_SIZE );
GregCr 0:9c0917bfde97 69 EepromLoadGeneralSettings( );
GregCr 0:9c0917bfde97 70
GregCr 0:9c0917bfde97 71 memTestStruct = EepromDataCheckSum( );
GregCr 0:9c0917bfde97 72 if( !( memTestStruct.Valid ) )
GregCr 0:9c0917bfde97 73 {
GregCr 0:9c0917bfde97 74 printf("EepromDataCheckSum failed\n\r");
GregCr 0:9c0917bfde97 75 EepromSetDefaultSettings( );
GregCr 0:9c0917bfde97 76 }
GregCr 0:9c0917bfde97 77 EepromLoadSettings( ( RadioPacketTypes_t ) Eeprom.EepromData.DemoSettings.ModulationType );
GregCr 0:9c0917bfde97 78 }
GregCr 0:9c0917bfde97 79
GregCr 0:9c0917bfde97 80 void EepromSaveSettings( EepromDataSet_t dataSet)
GregCr 0:9c0917bfde97 81 {
GregCr 0:9c0917bfde97 82 MemTestStruct_t memTestStruct;
GregCr 0:9c0917bfde97 83
GregCr 0:9c0917bfde97 84 switch( dataSet )
GregCr 0:9c0917bfde97 85 {
GregCr 0:9c0917bfde97 86 case RADIO_LORA_PARAMS:
GregCr 0:9c0917bfde97 87 Eeprom.EepromData.ModulationParams.Params.LoRa.SpreadingFactor = ( RadioLoRaSpreadingFactors_t ) Eeprom.EepromData.DemoSettings.ModulationParam1;
GregCr 0:9c0917bfde97 88 Eeprom.EepromData.ModulationParams.Params.LoRa.Bandwidth = ( RadioLoRaBandwidths_t ) Eeprom.EepromData.DemoSettings.ModulationParam2;
GregCr 0:9c0917bfde97 89 Eeprom.EepromData.ModulationParams.Params.LoRa.CodingRate = ( RadioLoRaCodingRates_t ) Eeprom.EepromData.DemoSettings.ModulationParam3;
GregCr 0:9c0917bfde97 90 Eeprom.EepromData.PacketParams.Params.LoRa.PreambleLength = Eeprom.EepromData.DemoSettings.PacketParam1;
GregCr 0:9c0917bfde97 91 Eeprom.EepromData.PacketParams.Params.LoRa.HeaderType = ( RadioLoRaPacketLengthsModes_t )Eeprom.EepromData.DemoSettings.PacketParam2;
GregCr 0:9c0917bfde97 92 Eeprom.EepromData.PacketParams.Params.LoRa.PayloadLength = Eeprom.EepromData.DemoSettings.PacketParam3;
GregCr 0:9c0917bfde97 93 Eeprom.EepromData.PacketParams.Params.LoRa.CrcMode = ( RadioLoRaCrcModes_t ) Eeprom.EepromData.DemoSettings.PacketParam4;
GregCr 0:9c0917bfde97 94 Eeprom.EepromData.PacketParams.Params.LoRa.InvertIQ = ( RadioLoRaIQModes_t ) Eeprom.EepromData.DemoSettings.PacketParam5;
GregCr 0:9c0917bfde97 95
GregCr 0:9c0917bfde97 96 memcpy( Eeprom.Buffer + MOD_LOR_SPREADF_EEPROM_ADDR, &( Eeprom.EepromData.ModulationParams.Params.LoRa.SpreadingFactor ), 1 );
GregCr 0:9c0917bfde97 97 memcpy( Eeprom.Buffer + MOD_LOR_BW_EEPROM_ADDR, &( Eeprom.EepromData.ModulationParams.Params.LoRa.Bandwidth ), 1 );
GregCr 0:9c0917bfde97 98 memcpy( Eeprom.Buffer + MOD_LOR_CODERATE_EEPROM_ADDR, &( Eeprom.EepromData.ModulationParams.Params.LoRa.CodingRate ), 1 );
GregCr 0:9c0917bfde97 99 memcpy( Eeprom.Buffer + PAK_LOR_PREAMBLE_LEN_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.LoRa.PreambleLength ), 1 );
GregCr 0:9c0917bfde97 100 memcpy( Eeprom.Buffer + PAK_LOR_HEADERTYPE_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.LoRa.HeaderType ), 1 );
GregCr 0:9c0917bfde97 101 memcpy( Eeprom.Buffer + PAK_LOR_PL_LEN_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.LoRa.PayloadLength ), 1 );
GregCr 0:9c0917bfde97 102 memcpy( Eeprom.Buffer + PAK_LOR_CRC_MODE_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.LoRa.CrcMode ), 1 );
GregCr 0:9c0917bfde97 103 memcpy( Eeprom.Buffer + PAK_LOR_IQ_INV_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.LoRa.InvertIQ ), 1 );
GregCr 0:9c0917bfde97 104 printf("Saved RADIO_LORA_PARAMS\n\r");
GregCr 0:9c0917bfde97 105 break;
GregCr 0:9c0917bfde97 106
GregCr 0:9c0917bfde97 107 case RADIO_RANGING_PARAMS:
GregCr 0:9c0917bfde97 108 memcpy( Eeprom.Buffer + MOD_RNG_SPREADF_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.ModulationParam1 ), 1 );
GregCr 0:9c0917bfde97 109 memcpy( Eeprom.Buffer + MOD_RNG_BW_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.ModulationParam2 ), 1 );
GregCr 0:9c0917bfde97 110 memcpy( Eeprom.Buffer + MOD_RNG_CODERATE_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.ModulationParam3 ), 1 );
GregCr 0:9c0917bfde97 111 memcpy( Eeprom.Buffer + PAK_RNG_PREAMBLE_LEN_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.PacketParam1 ), 1 );
GregCr 0:9c0917bfde97 112 memcpy( Eeprom.Buffer + PAK_RNG_HEADERTYPE_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.PacketParam2 ), 1 );
GregCr 0:9c0917bfde97 113 memcpy( Eeprom.Buffer + PAK_RNG_PL_LEN_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.PacketParam3 ), 1 );
GregCr 0:9c0917bfde97 114 memcpy( Eeprom.Buffer + PAK_RNG_CRC_MODE_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.PacketParam4 ), 1 );
GregCr 0:9c0917bfde97 115 memcpy( Eeprom.Buffer + PAK_RNG_IQ_INV_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.PacketParam5 ), 1 );
GregCr 0:9c0917bfde97 116
GregCr 0:9c0917bfde97 117 memcpy( Eeprom.Buffer + APP_RNG_REQ_COUNT_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.RngRequestCount ), 1 );
GregCr 0:9c0917bfde97 118 memcpy( Eeprom.Buffer + APP_RNG_FULLSCALE_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.RngFullScale ), 2 );
GregCr 0:9c0917bfde97 119 memcpy( Eeprom.Buffer + APP_RNG_ZSCORE_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.RngZscoreMax ), 1 );
GregCr 0:9c0917bfde97 120 memcpy( Eeprom.Buffer + APP_RNG_ADDR_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.RngAddress ), 4 );
GregCr 0:9c0917bfde97 121 memcpy( Eeprom.Buffer + APP_RNG_ANT_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.RngAntenna ), 1 );
GregCr 0:9c0917bfde97 122 memcpy( Eeprom.Buffer + APP_RNG_UNIT_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.RngUnit ), 1 );
GregCr 0:9c0917bfde97 123 printf("Saved RADIO_RANGING_PARAMS\n\r");
GregCr 0:9c0917bfde97 124 break;
GregCr 0:9c0917bfde97 125
GregCr 0:9c0917bfde97 126 case RADIO_FLRC_PARAMS:
GregCr 0:9c0917bfde97 127 Eeprom.EepromData.ModulationParams.Params.Flrc.BitrateBandwidth = ( RadioFlrcBitrates_t ) Eeprom.EepromData.DemoSettings.ModulationParam1;
GregCr 0:9c0917bfde97 128 Eeprom.EepromData.ModulationParams.Params.Flrc.CodingRate = ( RadioFlrcCodingRates_t ) Eeprom.EepromData.DemoSettings.ModulationParam2;
GregCr 0:9c0917bfde97 129 Eeprom.EepromData.ModulationParams.Params.Flrc.ModulationShaping = ( RadioModShapings_t ) Eeprom.EepromData.DemoSettings.ModulationParam3;
GregCr 0:9c0917bfde97 130 Eeprom.EepromData.PacketParams.Params.Flrc.PreambleLength = ( RadioPreambleLengths_t ) Eeprom.EepromData.DemoSettings.PacketParam1;
GregCr 0:9c0917bfde97 131 Eeprom.EepromData.PacketParams.Params.Flrc.SyncWordLength = ( RadioFlrcSyncWordLengths_t )Eeprom.EepromData.DemoSettings.PacketParam2;
GregCr 0:9c0917bfde97 132 Eeprom.EepromData.PacketParams.Params.Flrc.SyncWordMatch = ( RadioSyncWordRxMatchs_t ) Eeprom.EepromData.DemoSettings.PacketParam3;
GregCr 0:9c0917bfde97 133 Eeprom.EepromData.PacketParams.Params.Flrc.HeaderType = ( RadioPacketLengthModes_t ) Eeprom.EepromData.DemoSettings.PacketParam4;
GregCr 0:9c0917bfde97 134 Eeprom.EepromData.PacketParams.Params.Flrc.PayloadLength = Eeprom.EepromData.DemoSettings.PacketParam5;
GregCr 0:9c0917bfde97 135 Eeprom.EepromData.PacketParams.Params.Flrc.CrcLength = ( RadioCrcTypes_t ) Eeprom.EepromData.DemoSettings.PacketParam6;
GregCr 0:9c0917bfde97 136 Eeprom.EepromData.PacketParams.Params.Flrc.Whitening = ( RadioWhiteningModes_t ) Eeprom.EepromData.DemoSettings.PacketParam7;
GregCr 0:9c0917bfde97 137
GregCr 0:9c0917bfde97 138 memcpy( Eeprom.Buffer + MOD_FLR_BRBW_EEPROM_ADDR, &( Eeprom.EepromData.ModulationParams.Params.Flrc.BitrateBandwidth ), 1 );
GregCr 0:9c0917bfde97 139 memcpy( Eeprom.Buffer + MOD_FLR_CODERATE_EEPROM_ADDR, &( Eeprom.EepromData.ModulationParams.Params.Flrc.CodingRate ), 1 );
GregCr 0:9c0917bfde97 140 memcpy( Eeprom.Buffer + MOD_FLR_MOD_SHAP_EEPROM_ADDR, &( Eeprom.EepromData.ModulationParams.Params.Flrc.ModulationShaping ), 1 );
GregCr 0:9c0917bfde97 141 memcpy( Eeprom.Buffer + PAK_FLR_PREAMBLE_LEN_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Flrc.PreambleLength ), 1 );
GregCr 0:9c0917bfde97 142 memcpy( Eeprom.Buffer + PAK_FLR_SYNC_LEN_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Flrc.SyncWordLength ), 1 );
GregCr 0:9c0917bfde97 143 memcpy( Eeprom.Buffer + PAK_FLR_SYNC_MATCH_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Flrc.SyncWordMatch ), 1 );
GregCr 0:9c0917bfde97 144 memcpy( Eeprom.Buffer + PAK_FLR_HEADERTYPE_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Flrc.HeaderType ), 1 );
GregCr 0:9c0917bfde97 145 memcpy( Eeprom.Buffer + PAK_FLR_PL_LEN_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Flrc.PayloadLength ), 1 );
GregCr 0:9c0917bfde97 146 memcpy( Eeprom.Buffer + PAK_FLR_CRC_LEN_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Flrc.CrcLength ), 1 );
GregCr 0:9c0917bfde97 147 memcpy( Eeprom.Buffer + PAK_FLR_WHITENING_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Flrc.Whitening ), 1 );
GregCr 0:9c0917bfde97 148 printf("Saved RADIO_FLRC_PARAMS\n\r");
GregCr 0:9c0917bfde97 149 break;
GregCr 0:9c0917bfde97 150
GregCr 0:9c0917bfde97 151 case RADIO_GFSK_PARAMS:
GregCr 0:9c0917bfde97 152 Eeprom.EepromData.ModulationParams.Params.Gfsk.BitrateBandwidth = ( RadioGfskBleBitrates_t ) Eeprom.EepromData.DemoSettings.ModulationParam1;
GregCr 0:9c0917bfde97 153 Eeprom.EepromData.ModulationParams.Params.Gfsk.ModulationIndex = ( RadioGfskBleModIndexes_t )Eeprom.EepromData.DemoSettings.ModulationParam2;
GregCr 0:9c0917bfde97 154 Eeprom.EepromData.ModulationParams.Params.Gfsk.ModulationShaping = ( RadioModShapings_t ) Eeprom.EepromData.DemoSettings.ModulationParam3;
GregCr 0:9c0917bfde97 155 Eeprom.EepromData.PacketParams.Params.Gfsk.PreambleLength = ( RadioPreambleLengths_t ) Eeprom.EepromData.DemoSettings.PacketParam1;
GregCr 0:9c0917bfde97 156 Eeprom.EepromData.PacketParams.Params.Gfsk.SyncWordLength = ( RadioSyncWordLengths_t ) Eeprom.EepromData.DemoSettings.PacketParam2;
GregCr 0:9c0917bfde97 157 Eeprom.EepromData.PacketParams.Params.Gfsk.SyncWordMatch = ( RadioSyncWordRxMatchs_t ) Eeprom.EepromData.DemoSettings.PacketParam3;
GregCr 0:9c0917bfde97 158 Eeprom.EepromData.PacketParams.Params.Gfsk.HeaderType = ( RadioPacketLengthModes_t )Eeprom.EepromData.DemoSettings.PacketParam4;
GregCr 0:9c0917bfde97 159 Eeprom.EepromData.PacketParams.Params.Gfsk.PayloadLength = Eeprom.EepromData.DemoSettings.PacketParam5;
GregCr 0:9c0917bfde97 160 Eeprom.EepromData.PacketParams.Params.Gfsk.CrcLength = ( RadioCrcTypes_t ) Eeprom.EepromData.DemoSettings.PacketParam6;
GregCr 0:9c0917bfde97 161 Eeprom.EepromData.PacketParams.Params.Gfsk.Whitening = ( RadioWhiteningModes_t ) Eeprom.EepromData.DemoSettings.PacketParam7;
GregCr 0:9c0917bfde97 162
GregCr 0:9c0917bfde97 163 memcpy( Eeprom.Buffer + MOD_GFS_BRBW_EEPROM_ADDR, &( Eeprom.EepromData.ModulationParams.Params.Gfsk.BitrateBandwidth ), 1 );
GregCr 0:9c0917bfde97 164 memcpy( Eeprom.Buffer + MOD_GFS_MOD_IND_EEPROM_ADDR, &( Eeprom.EepromData.ModulationParams.Params.Gfsk.ModulationIndex ), 1 );
GregCr 0:9c0917bfde97 165 memcpy( Eeprom.Buffer + MOD_GFS_MOD_SHAP_EEPROM_ADDR, &( Eeprom.EepromData.ModulationParams.Params.Gfsk.ModulationShaping ), 1 );
GregCr 0:9c0917bfde97 166 memcpy( Eeprom.Buffer + PAK_GFS_PREAMBLE_LEN_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Gfsk.PreambleLength ), 1 );
GregCr 0:9c0917bfde97 167 memcpy( Eeprom.Buffer + PAK_GFS_SYNC_LEN_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Gfsk.SyncWordLength ), 1 );
GregCr 0:9c0917bfde97 168 memcpy( Eeprom.Buffer + PAK_GFS_SYNC_MATCH_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Gfsk.SyncWordMatch ), 1 );
GregCr 0:9c0917bfde97 169 memcpy( Eeprom.Buffer + PAK_GFS_HEADERTYPE_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Gfsk.HeaderType ), 1 );
GregCr 0:9c0917bfde97 170 memcpy( Eeprom.Buffer + PAK_GFS_PL_LEN_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Gfsk.PayloadLength ), 1 );
GregCr 0:9c0917bfde97 171 memcpy( Eeprom.Buffer + PAK_GFS_CRC_LEN_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Gfsk.CrcLength ), 1 );
GregCr 0:9c0917bfde97 172 memcpy( Eeprom.Buffer + PAK_GFS_WHITENING_EEPROM_ADDR, &( Eeprom.EepromData.PacketParams.Params.Gfsk.Whitening ), 1 );
GregCr 0:9c0917bfde97 173 printf("Saved RADIO_GFSK_PARAMS\n\r");
GregCr 0:9c0917bfde97 174 break;
GregCr 0:9c0917bfde97 175
GregCr 0:9c0917bfde97 176 case DEMO_SETTINGS:
GregCr 0:9c0917bfde97 177 memcpy( Eeprom.Buffer + APP_ENTITY_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.Entity ), 1 );
GregCr 0:9c0917bfde97 178 memcpy( Eeprom.Buffer + APP_ANT_SW_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.AntennaSwitch ), 1 );
GregCr 0:9c0917bfde97 179 memcpy( Eeprom.Buffer + APP_FREQ_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.Frequency ), 4 );
GregCr 0:9c0917bfde97 180 memcpy( Eeprom.Buffer + APP_TXPWR_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.TxPower ), 1 );
GregCr 0:9c0917bfde97 181 memcpy( Eeprom.Buffer + APP_MOD_TYPE_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.ModulationType ), 1 );
GregCr 0:9c0917bfde97 182 memcpy( Eeprom.Buffer + APP_PER_NPAK_MAX_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.MaxNumPacket ), 4 );
GregCr 0:9c0917bfde97 183 memcpy( Eeprom.Buffer + APP_RADIO_POWER_MODE_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.RadioPowerMode ), 1 );
GregCr 0:9c0917bfde97 184 memcpy( Eeprom.Buffer + MOD_PAK_TYPE_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.ModulationType ), 1 );
GregCr 0:9c0917bfde97 185 memcpy( Eeprom.Buffer + PAK_PAK_TYPE_EEPROM_ADDR, &( Eeprom.EepromData.DemoSettings.ModulationType ), 1 );
GregCr 0:9c0917bfde97 186 printf("Saved DEMO_SETTINGS\n\r");
GregCr 0:9c0917bfde97 187 break;
GregCr 0:9c0917bfde97 188
GregCr 0:9c0917bfde97 189 case SCREEN_DATA:
GregCr 0:9c0917bfde97 190 memcpy( Eeprom.Buffer + SCR_CAL_FLAG_EEPROM_ADDR, &( Eeprom.EepromData.MenuSettings.ScreenCalibrated ), 1 );
GregCr 0:9c0917bfde97 191 memcpy( Eeprom.Buffer + SCR_CAL_POSA_EEPROM_ADDR, &( Eeprom.EepromData.MenuSettings.Calibration.a ), 4 );
GregCr 0:9c0917bfde97 192 memcpy( Eeprom.Buffer + SCR_CAL_POSB_EEPROM_ADDR, &( Eeprom.EepromData.MenuSettings.Calibration.b ), 4 );
GregCr 0:9c0917bfde97 193 memcpy( Eeprom.Buffer + SCR_CAL_POSC_EEPROM_ADDR, &( Eeprom.EepromData.MenuSettings.Calibration.c ), 4 );
GregCr 0:9c0917bfde97 194 memcpy( Eeprom.Buffer + SCR_CAL_POSD_EEPROM_ADDR, &( Eeprom.EepromData.MenuSettings.Calibration.d ), 4 );
GregCr 0:9c0917bfde97 195 memcpy( Eeprom.Buffer + SCR_CAL_POSE_EEPROM_ADDR, &( Eeprom.EepromData.MenuSettings.Calibration.e ), 4 );
GregCr 0:9c0917bfde97 196 memcpy( Eeprom.Buffer + SCR_CAL_POSF_EEPROM_ADDR, &( Eeprom.EepromData.MenuSettings.Calibration.f ), 4 );
GregCr 0:9c0917bfde97 197 break;
GregCr 0:9c0917bfde97 198
GregCr 0:9c0917bfde97 199 default:
GregCr 0:9c0917bfde97 200 printf("data not saved\n\r");
GregCr 0:9c0917bfde97 201 break;
GregCr 0:9c0917bfde97 202 }
GregCr 0:9c0917bfde97 203
GregCr 0:9c0917bfde97 204 memTestStruct = EepromDataCheckSum( );
GregCr 0:9c0917bfde97 205 memcpy( Eeprom.Buffer + EEPROM_CRC_EEPROM_ADDR, &( memTestStruct.Value ), 2 );
GregCr 0:9c0917bfde97 206
GregCr 0:9c0917bfde97 207 EepromMcuWriteBuffer( 0, Eeprom.Buffer, EEPROM_BUFFER_SIZE );
GregCr 0:9c0917bfde97 208 }
GregCr 0:9c0917bfde97 209
GregCr 0:9c0917bfde97 210 void EepromLoadGeneralSettings( void )
GregCr 0:9c0917bfde97 211 {
GregCr 0:9c0917bfde97 212 printf("Load General Settings\n\r");
GregCr 0:9c0917bfde97 213 memcpy( &( Eeprom.EepromData.MenuSettings.ScreenCalibrated ), Eeprom.Buffer + SCR_CAL_FLAG_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 214 memcpy( &( Eeprom.EepromData.MenuSettings.Calibration.a ), Eeprom.Buffer + SCR_CAL_POSA_EEPROM_ADDR, 4 );
GregCr 0:9c0917bfde97 215 memcpy( &( Eeprom.EepromData.MenuSettings.Calibration.b ), Eeprom.Buffer + SCR_CAL_POSB_EEPROM_ADDR, 4 );
GregCr 0:9c0917bfde97 216 memcpy( &( Eeprom.EepromData.MenuSettings.Calibration.c ), Eeprom.Buffer + SCR_CAL_POSC_EEPROM_ADDR, 4 );
GregCr 0:9c0917bfde97 217 memcpy( &( Eeprom.EepromData.MenuSettings.Calibration.d ), Eeprom.Buffer + SCR_CAL_POSD_EEPROM_ADDR, 4 );
GregCr 0:9c0917bfde97 218 memcpy( &( Eeprom.EepromData.MenuSettings.Calibration.e ), Eeprom.Buffer + SCR_CAL_POSE_EEPROM_ADDR, 4 );
GregCr 0:9c0917bfde97 219 memcpy( &( Eeprom.EepromData.MenuSettings.Calibration.f ), Eeprom.Buffer + SCR_CAL_POSF_EEPROM_ADDR, 4 );
GregCr 0:9c0917bfde97 220
GregCr 0:9c0917bfde97 221 memcpy( &( Eeprom.EepromData.DemoSettings.Entity ), Eeprom.Buffer + APP_ENTITY_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 222 memcpy( &( Eeprom.EepromData.DemoSettings.AntennaSwitch ), Eeprom.Buffer + APP_ANT_SW_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 223 memcpy( &( Eeprom.EepromData.DemoSettings.Frequency ), Eeprom.Buffer + APP_FREQ_EEPROM_ADDR, 4 );
GregCr 0:9c0917bfde97 224 memcpy( &( Eeprom.EepromData.DemoSettings.RadioPowerMode ), Eeprom.Buffer + APP_RADIO_POWER_MODE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 225 memcpy( &( Eeprom.EepromData.DemoSettings.TxPower ), Eeprom.Buffer + APP_TXPWR_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 226 memcpy( &( Eeprom.EepromData.DemoSettings.ModulationType ), Eeprom.Buffer + APP_MOD_TYPE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 227 memcpy( &( Eeprom.EepromData.DemoSettings.MaxNumPacket ), Eeprom.Buffer + APP_PER_NPAK_MAX_EEPROM_ADDR, 4 );
GregCr 0:9c0917bfde97 228
GregCr 0:9c0917bfde97 229 memcpy( &( Eeprom.EepromData.ModulationParams.PacketType ), Eeprom.Buffer + MOD_PAK_TYPE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 230 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Gfsk.BitrateBandwidth ), Eeprom.Buffer + MOD_GFS_BRBW_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 231 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Gfsk.ModulationIndex ), Eeprom.Buffer + MOD_GFS_MOD_IND_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 232 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Gfsk.ModulationShaping ), Eeprom.Buffer + MOD_GFS_MOD_SHAP_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 233 memcpy( &( Eeprom.EepromData.ModulationParams.Params.LoRa.SpreadingFactor ), Eeprom.Buffer + MOD_LOR_SPREADF_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 234 memcpy( &( Eeprom.EepromData.ModulationParams.Params.LoRa.Bandwidth ), Eeprom.Buffer + MOD_LOR_BW_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 235 memcpy( &( Eeprom.EepromData.ModulationParams.Params.LoRa.CodingRate ), Eeprom.Buffer + MOD_LOR_CODERATE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 236 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Flrc.BitrateBandwidth ), Eeprom.Buffer + MOD_FLR_BRBW_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 237 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Flrc.CodingRate ), Eeprom.Buffer + MOD_FLR_CODERATE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 238 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Flrc.ModulationShaping ), Eeprom.Buffer + MOD_FLR_MOD_SHAP_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 239 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Ble.BitrateBandwidth ), Eeprom.Buffer + MOD_BLE_BRBW_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 240 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Ble.ModulationIndex ), Eeprom.Buffer + MOD_BLE_MOD_IND_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 241 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Ble.ModulationShaping ), Eeprom.Buffer + MOD_BLE_MOD_SHAP_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 242
GregCr 0:9c0917bfde97 243 memcpy( &( Eeprom.EepromData.PacketParams.PacketType ), Eeprom.Buffer + PAK_PAK_TYPE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 244 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.PreambleLength ), Eeprom.Buffer + PAK_GFS_PREAMBLE_LEN_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 245 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.SyncWordLength ), Eeprom.Buffer + PAK_GFS_SYNC_LEN_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 246 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.SyncWordMatch ), Eeprom.Buffer + PAK_GFS_SYNC_MATCH_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 247 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.HeaderType ), Eeprom.Buffer + PAK_GFS_HEADERTYPE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 248 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.PayloadLength ), Eeprom.Buffer + PAK_GFS_PL_LEN_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 249 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.CrcLength ), Eeprom.Buffer + PAK_GFS_CRC_LEN_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 250 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.Whitening ), Eeprom.Buffer + PAK_GFS_WHITENING_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 251 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.PreambleLength ), Eeprom.Buffer + PAK_LOR_PREAMBLE_LEN_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 252 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.HeaderType ), Eeprom.Buffer + PAK_LOR_HEADERTYPE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 253 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.PayloadLength ), Eeprom.Buffer + PAK_LOR_PL_LEN_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 254 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.CrcMode ), Eeprom.Buffer + PAK_LOR_CRC_MODE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 255 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.InvertIQ ), Eeprom.Buffer + PAK_LOR_IQ_INV_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 256 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.PreambleLength ), Eeprom.Buffer + PAK_FLR_PREAMBLE_LEN_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 257 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.SyncWordLength ), Eeprom.Buffer + PAK_FLR_SYNC_LEN_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 258 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.SyncWordMatch ), Eeprom.Buffer + PAK_FLR_SYNC_MATCH_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 259 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.HeaderType ), Eeprom.Buffer + PAK_FLR_HEADERTYPE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 260 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.PayloadLength ), Eeprom.Buffer + PAK_FLR_PL_LEN_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 261 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.CrcLength ), Eeprom.Buffer + PAK_FLR_CRC_LEN_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 262 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.Whitening ), Eeprom.Buffer + PAK_FLR_WHITENING_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 263 memcpy( &( Eeprom.EepromData.PacketParams.Params.Ble.BlePacketType ), Eeprom.Buffer + PAK_BLE_PAK_TYPE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 264 memcpy( &( Eeprom.EepromData.PacketParams.Params.Ble.ConnectionState ), Eeprom.Buffer + PAK_BLE_CON_STATE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 265 memcpy( &( Eeprom.EepromData.PacketParams.Params.Ble.CrcField ), Eeprom.Buffer + PAK_BLE_CRC_FIELD_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 266 memcpy( &( Eeprom.EepromData.PacketParams.Params.Ble.Whitening ), Eeprom.Buffer + PAK_BLE_WHITENING_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 267
GregCr 0:9c0917bfde97 268 memcpy( &( Eeprom.EepromData.DemoSettings.RngRequestCount ), Eeprom.Buffer + APP_RNG_REQ_COUNT_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 269 memcpy( &( Eeprom.EepromData.DemoSettings.RngFullScale ), Eeprom.Buffer + APP_RNG_FULLSCALE_EEPROM_ADDR, 2 );
GregCr 0:9c0917bfde97 270 memcpy( &( Eeprom.EepromData.DemoSettings.RngZscoreMax ), Eeprom.Buffer + APP_RNG_ZSCORE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 271 memcpy( &( Eeprom.EepromData.DemoSettings.RngAddress ), Eeprom.Buffer + APP_RNG_ADDR_EEPROM_ADDR, 4 );
GregCr 0:9c0917bfde97 272 memcpy( &( Eeprom.EepromData.DemoSettings.RngAntenna ), Eeprom.Buffer + APP_RNG_ANT_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 273 memcpy( &( Eeprom.EepromData.DemoSettings.RngUnit ), Eeprom.Buffer + APP_RNG_UNIT_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 274 }
GregCr 0:9c0917bfde97 275
GregCr 0:9c0917bfde97 276 void EepromLoadSettings( RadioPacketTypes_t modulation )
GregCr 0:9c0917bfde97 277 {
GregCr 0:9c0917bfde97 278 if( modulation == PACKET_TYPE_LORA )
GregCr 0:9c0917bfde97 279 {
GregCr 0:9c0917bfde97 280 printf("Load Settings PACKET_TYPE_LORA\n\r");
GregCr 0:9c0917bfde97 281 memcpy( &( Eeprom.EepromData.ModulationParams.Params.LoRa.SpreadingFactor ), Eeprom.Buffer + MOD_LOR_SPREADF_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 282 memcpy( &( Eeprom.EepromData.ModulationParams.Params.LoRa.Bandwidth ), Eeprom.Buffer + MOD_LOR_BW_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 283 memcpy( &( Eeprom.EepromData.ModulationParams.Params.LoRa.CodingRate ), Eeprom.Buffer + MOD_LOR_CODERATE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 284 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.PreambleLength ), Eeprom.Buffer + PAK_LOR_PREAMBLE_LEN_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 285 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.HeaderType ), Eeprom.Buffer + PAK_LOR_HEADERTYPE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 286 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.PayloadLength ), Eeprom.Buffer + PAK_LOR_PL_LEN_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 287 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.CrcMode ), Eeprom.Buffer + PAK_LOR_CRC_MODE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 288 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.InvertIQ ), Eeprom.Buffer + PAK_LOR_IQ_INV_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 289
GregCr 0:9c0917bfde97 290 Eeprom.EepromData.ModulationParams.PacketType = PACKET_TYPE_LORA;
GregCr 0:9c0917bfde97 291 Eeprom.EepromData.PacketParams.PacketType = PACKET_TYPE_LORA;
GregCr 0:9c0917bfde97 292 Eeprom.EepromData.DemoSettings.ModulationParam1 = Eeprom.EepromData.ModulationParams.Params.LoRa.SpreadingFactor;
GregCr 0:9c0917bfde97 293 Eeprom.EepromData.DemoSettings.ModulationParam2 = Eeprom.EepromData.ModulationParams.Params.LoRa.Bandwidth;
GregCr 0:9c0917bfde97 294 Eeprom.EepromData.DemoSettings.ModulationParam3 = Eeprom.EepromData.ModulationParams.Params.LoRa.CodingRate;
GregCr 0:9c0917bfde97 295
GregCr 0:9c0917bfde97 296 Eeprom.EepromData.DemoSettings.PacketParam1 = Eeprom.EepromData.PacketParams.Params.LoRa.PreambleLength;
GregCr 0:9c0917bfde97 297 Eeprom.EepromData.DemoSettings.PacketParam2 = Eeprom.EepromData.PacketParams.Params.LoRa.HeaderType;
GregCr 0:9c0917bfde97 298 Eeprom.EepromData.DemoSettings.PacketParam3 = Eeprom.EepromData.PacketParams.Params.LoRa.PayloadLength;
GregCr 0:9c0917bfde97 299 Eeprom.EepromData.DemoSettings.PacketParam4 = Eeprom.EepromData.PacketParams.Params.LoRa.CrcMode;
GregCr 0:9c0917bfde97 300 Eeprom.EepromData.DemoSettings.PacketParam5 = Eeprom.EepromData.PacketParams.Params.LoRa.InvertIQ;
GregCr 0:9c0917bfde97 301 Eeprom.EepromData.DemoSettings.PacketParam6 = 0x00;
GregCr 0:9c0917bfde97 302 Eeprom.EepromData.DemoSettings.PacketParam7 = 0x00;
GregCr 0:9c0917bfde97 303 }
GregCr 0:9c0917bfde97 304 else if( modulation == PACKET_TYPE_RANGING )
GregCr 0:9c0917bfde97 305 {
GregCr 0:9c0917bfde97 306 printf("Load Settings PACKET_TYPE_RANGING\n\r");
GregCr 0:9c0917bfde97 307 memcpy( &( Eeprom.EepromData.ModulationParams.Params.LoRa.SpreadingFactor ), Eeprom.Buffer + MOD_RNG_SPREADF_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 308 memcpy( &( Eeprom.EepromData.ModulationParams.Params.LoRa.Bandwidth ), Eeprom.Buffer + MOD_RNG_BW_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 309 memcpy( &( Eeprom.EepromData.ModulationParams.Params.LoRa.CodingRate ), Eeprom.Buffer + MOD_RNG_CODERATE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 310 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.PreambleLength ), Eeprom.Buffer + PAK_RNG_PREAMBLE_LEN_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 311 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.HeaderType ), Eeprom.Buffer + PAK_RNG_HEADERTYPE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 312 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.PayloadLength ), Eeprom.Buffer + PAK_RNG_PL_LEN_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 313 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.CrcMode ), Eeprom.Buffer + PAK_RNG_CRC_MODE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 314 memcpy( &( Eeprom.EepromData.PacketParams.Params.LoRa.InvertIQ ), Eeprom.Buffer + PAK_RNG_IQ_INV_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 315 memcpy( &( Eeprom.EepromData.DemoSettings.RngRequestCount ), Eeprom.Buffer + APP_RNG_REQ_COUNT_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 316 memcpy( &( Eeprom.EepromData.DemoSettings.RngFullScale ), Eeprom.Buffer + APP_RNG_FULLSCALE_EEPROM_ADDR, 2 );
GregCr 0:9c0917bfde97 317 memcpy( &( Eeprom.EepromData.DemoSettings.RngZscoreMax ), Eeprom.Buffer + APP_RNG_ZSCORE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 318 memcpy( &( Eeprom.EepromData.DemoSettings.RngAddress ), Eeprom.Buffer + APP_RNG_ADDR_EEPROM_ADDR, 4 );
GregCr 0:9c0917bfde97 319 memcpy( &( Eeprom.EepromData.DemoSettings.RngAntenna ), Eeprom.Buffer + APP_RNG_ANT_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 320 memcpy( &( Eeprom.EepromData.DemoSettings.RngUnit ), Eeprom.Buffer + APP_RNG_UNIT_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 321
GregCr 0:9c0917bfde97 322 Eeprom.EepromData.ModulationParams.PacketType = PACKET_TYPE_RANGING;
GregCr 0:9c0917bfde97 323 Eeprom.EepromData.PacketParams.PacketType = PACKET_TYPE_RANGING;
GregCr 0:9c0917bfde97 324 Eeprom.EepromData.DemoSettings.ModulationParam1 = Eeprom.EepromData.ModulationParams.Params.LoRa.SpreadingFactor;
GregCr 0:9c0917bfde97 325 Eeprom.EepromData.DemoSettings.ModulationParam2 = Eeprom.EepromData.ModulationParams.Params.LoRa.Bandwidth;
GregCr 0:9c0917bfde97 326 Eeprom.EepromData.DemoSettings.ModulationParam3 = Eeprom.EepromData.ModulationParams.Params.LoRa.CodingRate;
GregCr 0:9c0917bfde97 327
GregCr 0:9c0917bfde97 328 Eeprom.EepromData.DemoSettings.PacketParam1 = Eeprom.EepromData.PacketParams.Params.LoRa.PreambleLength;
GregCr 0:9c0917bfde97 329 Eeprom.EepromData.DemoSettings.PacketParam2 = Eeprom.EepromData.PacketParams.Params.LoRa.HeaderType;
GregCr 0:9c0917bfde97 330 Eeprom.EepromData.DemoSettings.PacketParam3 = Eeprom.EepromData.PacketParams.Params.LoRa.PayloadLength;
GregCr 0:9c0917bfde97 331 Eeprom.EepromData.DemoSettings.PacketParam4 = Eeprom.EepromData.PacketParams.Params.LoRa.CrcMode;
GregCr 0:9c0917bfde97 332 Eeprom.EepromData.DemoSettings.PacketParam5 = Eeprom.EepromData.PacketParams.Params.LoRa.InvertIQ;
GregCr 0:9c0917bfde97 333 Eeprom.EepromData.DemoSettings.PacketParam6 = 0x00;
GregCr 0:9c0917bfde97 334 Eeprom.EepromData.DemoSettings.PacketParam7 = 0x00;
GregCr 0:9c0917bfde97 335 }
GregCr 0:9c0917bfde97 336 else if( modulation == PACKET_TYPE_FLRC )
GregCr 0:9c0917bfde97 337 {
GregCr 0:9c0917bfde97 338 printf("Load Settings PACKET_TYPE_FLRC\n\r");
GregCr 0:9c0917bfde97 339 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Flrc.BitrateBandwidth ), Eeprom.Buffer + MOD_FLR_BRBW_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 340 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Flrc.CodingRate ), Eeprom.Buffer + MOD_FLR_CODERATE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 341 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Flrc.ModulationShaping ), Eeprom.Buffer + MOD_FLR_MOD_SHAP_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 342 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.PreambleLength ), Eeprom.Buffer + PAK_FLR_PREAMBLE_LEN_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 343 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.SyncWordLength ), Eeprom.Buffer + PAK_FLR_SYNC_LEN_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 344 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.SyncWordMatch ), Eeprom.Buffer + PAK_FLR_SYNC_MATCH_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 345 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.HeaderType ), Eeprom.Buffer + PAK_FLR_HEADERTYPE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 346 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.PayloadLength ), Eeprom.Buffer + PAK_FLR_PL_LEN_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 347 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.CrcLength ), Eeprom.Buffer + PAK_FLR_CRC_LEN_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 348 memcpy( &( Eeprom.EepromData.PacketParams.Params.Flrc.Whitening ), Eeprom.Buffer + PAK_FLR_WHITENING_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 349
GregCr 0:9c0917bfde97 350 Eeprom.EepromData.ModulationParams.PacketType = PACKET_TYPE_FLRC;
GregCr 0:9c0917bfde97 351 Eeprom.EepromData.PacketParams.PacketType = PACKET_TYPE_FLRC;
GregCr 0:9c0917bfde97 352 Eeprom.EepromData.DemoSettings.ModulationParam1 = Eeprom.EepromData.ModulationParams.Params.Flrc.BitrateBandwidth;
GregCr 0:9c0917bfde97 353 Eeprom.EepromData.DemoSettings.ModulationParam2 = Eeprom.EepromData.ModulationParams.Params.Flrc.CodingRate;
GregCr 0:9c0917bfde97 354 Eeprom.EepromData.DemoSettings.ModulationParam3 = Eeprom.EepromData.ModulationParams.Params.Flrc.ModulationShaping;
GregCr 0:9c0917bfde97 355
GregCr 0:9c0917bfde97 356 Eeprom.EepromData.DemoSettings.PacketParam1 = Eeprom.EepromData.PacketParams.Params.Flrc.PreambleLength;
GregCr 0:9c0917bfde97 357 Eeprom.EepromData.DemoSettings.PacketParam2 = Eeprom.EepromData.PacketParams.Params.Flrc.SyncWordLength;
GregCr 0:9c0917bfde97 358 Eeprom.EepromData.DemoSettings.PacketParam3 = Eeprom.EepromData.PacketParams.Params.Flrc.SyncWordMatch;
GregCr 0:9c0917bfde97 359 Eeprom.EepromData.DemoSettings.PacketParam4 = Eeprom.EepromData.PacketParams.Params.Flrc.HeaderType;
GregCr 0:9c0917bfde97 360 Eeprom.EepromData.DemoSettings.PacketParam5 = Eeprom.EepromData.PacketParams.Params.Flrc.PayloadLength;
GregCr 0:9c0917bfde97 361 Eeprom.EepromData.DemoSettings.PacketParam6 = Eeprom.EepromData.PacketParams.Params.Flrc.CrcLength;
GregCr 0:9c0917bfde97 362 Eeprom.EepromData.DemoSettings.PacketParam7 = Eeprom.EepromData.PacketParams.Params.Flrc.Whitening;
GregCr 0:9c0917bfde97 363 }
GregCr 0:9c0917bfde97 364 else // GFSK
GregCr 0:9c0917bfde97 365 {
GregCr 0:9c0917bfde97 366 printf("Load Settings PACKET_TYPE_GFSK\n\r");
GregCr 0:9c0917bfde97 367 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Gfsk.BitrateBandwidth ), Eeprom.Buffer + MOD_GFS_BRBW_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 368 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Gfsk.ModulationIndex ), Eeprom.Buffer + MOD_GFS_MOD_IND_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 369 memcpy( &( Eeprom.EepromData.ModulationParams.Params.Gfsk.ModulationShaping ), Eeprom.Buffer + MOD_GFS_MOD_SHAP_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 370 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.PreambleLength ), Eeprom.Buffer + PAK_GFS_PREAMBLE_LEN_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 371 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.SyncWordLength ), Eeprom.Buffer + PAK_GFS_SYNC_LEN_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 372 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.SyncWordMatch ), Eeprom.Buffer + PAK_GFS_SYNC_MATCH_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 373 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.HeaderType ), Eeprom.Buffer + PAK_GFS_HEADERTYPE_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 374 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.PayloadLength ), Eeprom.Buffer + PAK_GFS_PL_LEN_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 375 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.CrcLength ), Eeprom.Buffer + PAK_GFS_CRC_LEN_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 376 memcpy( &( Eeprom.EepromData.PacketParams.Params.Gfsk.Whitening ), Eeprom.Buffer + PAK_GFS_WHITENING_EEPROM_ADDR, 1 );
GregCr 0:9c0917bfde97 377
GregCr 0:9c0917bfde97 378 Eeprom.EepromData.ModulationParams.PacketType = PACKET_TYPE_GFSK;
GregCr 0:9c0917bfde97 379 Eeprom.EepromData.PacketParams.PacketType = PACKET_TYPE_GFSK;
GregCr 0:9c0917bfde97 380 Eeprom.EepromData.DemoSettings.ModulationParam1 = Eeprom.EepromData.ModulationParams.Params.Gfsk.BitrateBandwidth;
GregCr 0:9c0917bfde97 381 Eeprom.EepromData.DemoSettings.ModulationParam2 = Eeprom.EepromData.ModulationParams.Params.Gfsk.ModulationIndex;
GregCr 0:9c0917bfde97 382 Eeprom.EepromData.DemoSettings.ModulationParam3 = Eeprom.EepromData.ModulationParams.Params.Gfsk.ModulationShaping;
GregCr 0:9c0917bfde97 383
GregCr 0:9c0917bfde97 384 Eeprom.EepromData.DemoSettings.PacketParam1 = Eeprom.EepromData.PacketParams.Params.Gfsk.PreambleLength;
GregCr 0:9c0917bfde97 385 Eeprom.EepromData.DemoSettings.PacketParam2 = Eeprom.EepromData.PacketParams.Params.Gfsk.SyncWordLength;
GregCr 0:9c0917bfde97 386 Eeprom.EepromData.DemoSettings.PacketParam3 = Eeprom.EepromData.PacketParams.Params.Gfsk.SyncWordMatch;
GregCr 0:9c0917bfde97 387 Eeprom.EepromData.DemoSettings.PacketParam4 = Eeprom.EepromData.PacketParams.Params.Gfsk.HeaderType;
GregCr 0:9c0917bfde97 388 Eeprom.EepromData.DemoSettings.PacketParam5 = Eeprom.EepromData.PacketParams.Params.Gfsk.PayloadLength;
GregCr 0:9c0917bfde97 389 Eeprom.EepromData.DemoSettings.PacketParam6 = Eeprom.EepromData.PacketParams.Params.Gfsk.CrcLength;
GregCr 0:9c0917bfde97 390 Eeprom.EepromData.DemoSettings.PacketParam7 = Eeprom.EepromData.PacketParams.Params.Gfsk.Whitening;
GregCr 0:9c0917bfde97 391 }
GregCr 0:9c0917bfde97 392
GregCr 0:9c0917bfde97 393 Eeprom.EepromData.DemoSettings.ModulationType = modulation;
GregCr 0:9c0917bfde97 394 }
GregCr 0:9c0917bfde97 395
GregCr 0:9c0917bfde97 396 void EepromSetRangingDefaultSettings( void )
GregCr 0:9c0917bfde97 397 {
GregCr 0:9c0917bfde97 398 printf("Set Ranging Default Settings\n\r");
GregCr 0:9c0917bfde97 399
GregCr 0:9c0917bfde97 400 Eeprom.EepromData.DemoSettings.ModulationType = PACKET_TYPE_RANGING;
GregCr 0:9c0917bfde97 401 Eeprom.EepromData.ModulationParams.PacketType = PACKET_TYPE_RANGING;
GregCr 0:9c0917bfde97 402 Eeprom.EepromData.PacketParams.PacketType = PACKET_TYPE_RANGING;
GregCr 0:9c0917bfde97 403
GregCr 0:9c0917bfde97 404 Eeprom.EepromData.DemoSettings.ModulationParam1 = LORA_SF6;
GregCr 0:9c0917bfde97 405 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_1600;
GregCr 0:9c0917bfde97 406 Eeprom.EepromData.DemoSettings.ModulationParam3 = LORA_CR_4_5;
GregCr 0:9c0917bfde97 407
GregCr 0:9c0917bfde97 408 Eeprom.EepromData.DemoSettings.PacketParam1 = 12; // PreambleLength
GregCr 0:9c0917bfde97 409 Eeprom.EepromData.DemoSettings.PacketParam2 = LORA_PACKET_VARIABLE_LENGTH;
GregCr 0:9c0917bfde97 410 Eeprom.EepromData.DemoSettings.PacketParam3 = 10; // PayloadLength
GregCr 0:9c0917bfde97 411 Eeprom.EepromData.DemoSettings.PacketParam4 = LORA_CRC_ON;
GregCr 0:9c0917bfde97 412 Eeprom.EepromData.DemoSettings.PacketParam5 = LORA_IQ_NORMAL;
GregCr 0:9c0917bfde97 413 Eeprom.EepromData.DemoSettings.RngRequestCount = 40;
GregCr 0:9c0917bfde97 414 Eeprom.EepromData.DemoSettings.RngZscoreMax = 1;
GregCr 0:9c0917bfde97 415 Eeprom.EepromData.DemoSettings.RngAntenna = DEMO_RNG_ANT_1;
GregCr 0:9c0917bfde97 416
GregCr 0:9c0917bfde97 417 EepromSaveSettings( RADIO_RANGING_PARAMS );
GregCr 0:9c0917bfde97 418 }
GregCr 0:9c0917bfde97 419
GregCr 0:9c0917bfde97 420 void EepromSetDefaultSettings( void )
GregCr 0:9c0917bfde97 421 {
GregCr 0:9c0917bfde97 422 Eeprom.EepromData.MenuSettings.ScreenCalibrated = false;
GregCr 0:9c0917bfde97 423
GregCr 0:9c0917bfde97 424 printf("Set Default Settings\n\r");
GregCr 0:9c0917bfde97 425 EepromSaveSettings( SCREEN_DATA );
GregCr 0:9c0917bfde97 426
GregCr 0:9c0917bfde97 427 Eeprom.EepromData.DemoSettings.ModulationType = PACKET_TYPE_RANGING;
GregCr 0:9c0917bfde97 428 Eeprom.EepromData.ModulationParams.PacketType = PACKET_TYPE_RANGING;
GregCr 0:9c0917bfde97 429 Eeprom.EepromData.PacketParams.PacketType = PACKET_TYPE_RANGING;
GregCr 0:9c0917bfde97 430
GregCr 0:9c0917bfde97 431 Eeprom.EepromData.DemoSettings.ModulationParam1 = LORA_SF6;
GregCr 0:9c0917bfde97 432 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_1600;
GregCr 0:9c0917bfde97 433 Eeprom.EepromData.DemoSettings.ModulationParam3 = LORA_CR_4_5;
GregCr 0:9c0917bfde97 434
GregCr 0:9c0917bfde97 435 Eeprom.EepromData.DemoSettings.PacketParam1 = 12; // PreambleLength
GregCr 0:9c0917bfde97 436 Eeprom.EepromData.DemoSettings.PacketParam2 = LORA_PACKET_VARIABLE_LENGTH;
GregCr 0:9c0917bfde97 437 Eeprom.EepromData.DemoSettings.PacketParam3 = 10; // PayloadLength
GregCr 0:9c0917bfde97 438 Eeprom.EepromData.DemoSettings.PacketParam4 = LORA_CRC_ON;
GregCr 0:9c0917bfde97 439 Eeprom.EepromData.DemoSettings.PacketParam5 = LORA_IQ_NORMAL;
GregCr 0:9c0917bfde97 440 Eeprom.EepromData.DemoSettings.RngRequestCount = 40;
GregCr 0:9c0917bfde97 441 Eeprom.EepromData.DemoSettings.RngFullScale = 30;
GregCr 0:9c0917bfde97 442 Eeprom.EepromData.DemoSettings.RngZscoreMax = 1;
GregCr 0:9c0917bfde97 443 Eeprom.EepromData.DemoSettings.RngAddress = DEMO_RNG_ADDR_1;
GregCr 0:9c0917bfde97 444 Eeprom.EepromData.DemoSettings.RngAntenna = DEMO_RNG_ANT_1;
GregCr 0:9c0917bfde97 445 Eeprom.EepromData.DemoSettings.RngUnit = DEMO_RNG_UNIT_SEL_M;
GregCr 0:9c0917bfde97 446
GregCr 0:9c0917bfde97 447 EepromSaveSettings( RADIO_RANGING_PARAMS );
GregCr 0:9c0917bfde97 448
GregCr 0:9c0917bfde97 449 Eeprom.EepromData.DemoSettings.ModulationType = PACKET_TYPE_LORA;
GregCr 0:9c0917bfde97 450 Eeprom.EepromData.ModulationParams.PacketType = PACKET_TYPE_LORA;
GregCr 0:9c0917bfde97 451 Eeprom.EepromData.PacketParams.PacketType = PACKET_TYPE_LORA;
GregCr 0:9c0917bfde97 452
GregCr 0:9c0917bfde97 453 Eeprom.EepromData.DemoSettings.ModulationParam1 = LORA_SF10;
GregCr 0:9c0917bfde97 454 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_1600;
GregCr 0:9c0917bfde97 455 Eeprom.EepromData.DemoSettings.ModulationParam3 = LORA_CR_4_5;
GregCr 0:9c0917bfde97 456
GregCr 0:9c0917bfde97 457 Eeprom.EepromData.DemoSettings.PacketParam1 = 12; // PreambleLength
GregCr 0:9c0917bfde97 458 Eeprom.EepromData.DemoSettings.PacketParam2 = LORA_PACKET_VARIABLE_LENGTH;
GregCr 0:9c0917bfde97 459 Eeprom.EepromData.DemoSettings.PacketParam3 = DEMO_MIN_PAYLOAD;
GregCr 0:9c0917bfde97 460 Eeprom.EepromData.DemoSettings.PacketParam4 = LORA_CRC_ON;
GregCr 0:9c0917bfde97 461 Eeprom.EepromData.DemoSettings.PacketParam5 = LORA_IQ_NORMAL;
GregCr 0:9c0917bfde97 462
GregCr 0:9c0917bfde97 463 EepromSaveSettings( RADIO_LORA_PARAMS );
GregCr 0:9c0917bfde97 464
GregCr 0:9c0917bfde97 465 Eeprom.EepromData.DemoSettings.ModulationType = PACKET_TYPE_GFSK;
GregCr 0:9c0917bfde97 466 Eeprom.EepromData.ModulationParams.PacketType = PACKET_TYPE_GFSK;
GregCr 0:9c0917bfde97 467 Eeprom.EepromData.PacketParams.PacketType = PACKET_TYPE_GFSK;
GregCr 0:9c0917bfde97 468
GregCr 0:9c0917bfde97 469 Eeprom.EepromData.DemoSettings.ModulationParam1 = GFSK_BLE_BR_0_125_BW_0_3;
GregCr 0:9c0917bfde97 470 Eeprom.EepromData.DemoSettings.ModulationParam2 = GFSK_BLE_MOD_IND_1_00;
GregCr 0:9c0917bfde97 471 Eeprom.EepromData.DemoSettings.ModulationParam3 = RADIO_MOD_SHAPING_BT_1_0;
GregCr 0:9c0917bfde97 472
GregCr 0:9c0917bfde97 473 Eeprom.EepromData.DemoSettings.PacketParam1 = PREAMBLE_LENGTH_32_BITS;
GregCr 0:9c0917bfde97 474 Eeprom.EepromData.DemoSettings.PacketParam2 = GFSK_SYNCWORD_LENGTH_5_BYTE;
GregCr 0:9c0917bfde97 475 Eeprom.EepromData.DemoSettings.PacketParam3 = RADIO_RX_MATCH_SYNCWORD_1;
GregCr 0:9c0917bfde97 476 Eeprom.EepromData.DemoSettings.PacketParam4 = RADIO_PACKET_VARIABLE_LENGTH;
GregCr 0:9c0917bfde97 477 Eeprom.EepromData.DemoSettings.PacketParam5 = DEMO_MIN_PAYLOAD;
GregCr 0:9c0917bfde97 478 Eeprom.EepromData.DemoSettings.PacketParam6 = RADIO_CRC_3_BYTES;
GregCr 0:9c0917bfde97 479 Eeprom.EepromData.DemoSettings.PacketParam7 = RADIO_WHITENING_ON;
GregCr 0:9c0917bfde97 480
GregCr 0:9c0917bfde97 481 EepromSaveSettings( RADIO_GFSK_PARAMS );
GregCr 0:9c0917bfde97 482
GregCr 0:9c0917bfde97 483 Eeprom.EepromData.DemoSettings.ModulationType = PACKET_TYPE_FLRC;
GregCr 0:9c0917bfde97 484 Eeprom.EepromData.ModulationParams.PacketType = PACKET_TYPE_FLRC;
GregCr 0:9c0917bfde97 485 Eeprom.EepromData.PacketParams.PacketType = PACKET_TYPE_FLRC;
GregCr 0:9c0917bfde97 486
GregCr 0:9c0917bfde97 487 Eeprom.EepromData.DemoSettings.ModulationParam1 = FLRC_BR_0_260_BW_0_3;
GregCr 0:9c0917bfde97 488 Eeprom.EepromData.DemoSettings.ModulationParam2 = FLRC_CR_1_2;
GregCr 0:9c0917bfde97 489 Eeprom.EepromData.DemoSettings.ModulationParam3 = RADIO_MOD_SHAPING_BT_1_0;
GregCr 0:9c0917bfde97 490
GregCr 0:9c0917bfde97 491 Eeprom.EepromData.DemoSettings.PacketParam1 = PREAMBLE_LENGTH_32_BITS;
GregCr 0:9c0917bfde97 492 Eeprom.EepromData.DemoSettings.PacketParam2 = FLRC_SYNCWORD_LENGTH_4_BYTE;
GregCr 0:9c0917bfde97 493 Eeprom.EepromData.DemoSettings.PacketParam3 = RADIO_RX_MATCH_SYNCWORD_1;
GregCr 0:9c0917bfde97 494 Eeprom.EepromData.DemoSettings.PacketParam4 = RADIO_PACKET_VARIABLE_LENGTH;
GregCr 0:9c0917bfde97 495 Eeprom.EepromData.DemoSettings.PacketParam5 = DEMO_MIN_PAYLOAD;
GregCr 0:9c0917bfde97 496 Eeprom.EepromData.DemoSettings.PacketParam6 = RADIO_CRC_3_BYTES;
GregCr 0:9c0917bfde97 497 Eeprom.EepromData.DemoSettings.PacketParam7 = RADIO_WHITENING_OFF;
GregCr 0:9c0917bfde97 498
GregCr 0:9c0917bfde97 499 EepromSaveSettings( RADIO_FLRC_PARAMS );
GregCr 0:9c0917bfde97 500
GregCr 0:9c0917bfde97 501 Eeprom.EepromData.DemoSettings.Entity = SLAVE;
GregCr 0:9c0917bfde97 502 Eeprom.EepromData.DemoSettings.AntennaSwitch = 0x00;
GregCr 0:9c0917bfde97 503 Eeprom.EepromData.DemoSettings.RadioPowerMode = USE_DCDC;
GregCr 0:9c0917bfde97 504 Eeprom.EepromData.DemoSettings.Frequency = DEMO_CENTRAL_FREQ_PRESET1;
GregCr 0:9c0917bfde97 505 Eeprom.EepromData.DemoSettings.TxPower = DEMO_POWER_TX_MAX;
GregCr 0:9c0917bfde97 506 Eeprom.EepromData.DemoSettings.MaxNumPacket = 0x00; // infinite
GregCr 0:9c0917bfde97 507 Eeprom.EepromData.DemoSettings.ModulationType = PACKET_TYPE_LORA;
GregCr 0:9c0917bfde97 508
GregCr 0:9c0917bfde97 509 EepromSaveSettings( DEMO_SETTINGS );
GregCr 0:9c0917bfde97 510 }
GregCr 0:9c0917bfde97 511
GregCr 0:9c0917bfde97 512 /*!
GregCr 0:9c0917bfde97 513 * \brief Erase a page of Flash. Here used to Erase EEPROM region.
GregCr 0:9c0917bfde97 514 *
GregCr 0:9c0917bfde97 515 * \param [in] page address of page to erase
GregCr 0:9c0917bfde97 516 * \param [in] banks address of banks to erase
GregCr 0:9c0917bfde97 517 */
GregCr 0:9c0917bfde97 518 void FlashPageErase( uint32_t page, uint32_t banks )
GregCr 0:9c0917bfde97 519 {
GregCr 0:9c0917bfde97 520 // Check the parameters
GregCr 0:9c0917bfde97 521 assert_param( IS_FLASH_PAGE( page ) );
GregCr 0:9c0917bfde97 522 assert_param( IS_FLASH_BANK_EXCLUSIVE( banks ) );
GregCr 0:9c0917bfde97 523
GregCr 0:9c0917bfde97 524 if( ( banks & FLASH_BANK_1 ) != RESET )
GregCr 0:9c0917bfde97 525 {
GregCr 0:9c0917bfde97 526 CLEAR_BIT( FLASH->CR, FLASH_CR_BKER );
GregCr 0:9c0917bfde97 527 }
GregCr 0:9c0917bfde97 528 else
GregCr 0:9c0917bfde97 529 {
GregCr 0:9c0917bfde97 530 SET_BIT( FLASH->CR, FLASH_CR_BKER );
GregCr 0:9c0917bfde97 531 }
GregCr 0:9c0917bfde97 532
GregCr 0:9c0917bfde97 533 // Proceed to erase the page
GregCr 0:9c0917bfde97 534 MODIFY_REG( FLASH->CR, FLASH_CR_PNB, ( page << 3 ) );
GregCr 0:9c0917bfde97 535 SET_BIT( FLASH->CR, FLASH_CR_PER );
GregCr 0:9c0917bfde97 536 SET_BIT( FLASH->CR, FLASH_CR_STRT );
GregCr 0:9c0917bfde97 537 }
GregCr 0:9c0917bfde97 538
GregCr 0:9c0917bfde97 539 /*!
GregCr 0:9c0917bfde97 540 * \brief Write Eeprom to emulated EEPROM (in fact in Flash " higher address).
GregCr 0:9c0917bfde97 541 *
GregCr 0:9c0917bfde97 542 * \param [in] addr address of data (EEPROM offset not to be include)
GregCr 0:9c0917bfde97 543 * \param [in] buffer buffer to use for copy
GregCr 0:9c0917bfde97 544 * \param [in] size size of data to copy
GregCr 0:9c0917bfde97 545 *
GregCr 0:9c0917bfde97 546 * \retval status Status of operation (SUCCESS, ..)
GregCr 0:9c0917bfde97 547 */
GregCr 0:9c0917bfde97 548 uint8_t EepromMcuWriteBuffer( uint16_t addr, uint8_t *buffer, uint16_t size )
GregCr 0:9c0917bfde97 549 {
GregCr 0:9c0917bfde97 550 uint64_t *flash = ( uint64_t* )buffer;
GregCr 0:9c0917bfde97 551
GregCr 0:9c0917bfde97 552 // assert_param( addr >= DATA_EEPROM_BASE );
GregCr 0:9c0917bfde97 553 assert_param( buffer != NULL );
GregCr 0:9c0917bfde97 554 assert_param( size < ( DATA_EEPROM_END - DATA_EEPROM_BASE ) );
GregCr 0:9c0917bfde97 555
GregCr 0:9c0917bfde97 556 HAL_FLASH_Unlock( );
GregCr 0:9c0917bfde97 557
GregCr 0:9c0917bfde97 558 FlashPageErase( 255, 1 );
GregCr 0:9c0917bfde97 559
GregCr 0:9c0917bfde97 560 WRITE_REG( FLASH->CR, 0x40000000 );
GregCr 0:9c0917bfde97 561
GregCr 0:9c0917bfde97 562 for( uint32_t i = 0; i < size; i++ )
GregCr 0:9c0917bfde97 563 {
GregCr 0:9c0917bfde97 564 HAL_FLASH_Program( FLASH_TYPEPROGRAM_DOUBLEWORD, DATA_EEPROM_BASE + \
GregCr 0:9c0917bfde97 565 ( 8 * i ), flash[i] );
GregCr 0:9c0917bfde97 566 }
GregCr 0:9c0917bfde97 567
GregCr 0:9c0917bfde97 568 HAL_FLASH_Lock( );
GregCr 0:9c0917bfde97 569
GregCr 0:9c0917bfde97 570 return SUCCESS;
GregCr 0:9c0917bfde97 571 }
GregCr 0:9c0917bfde97 572
GregCr 0:9c0917bfde97 573 uint8_t EepromMcuReadBuffer( uint16_t addr, uint8_t *buffer, uint16_t size )
GregCr 0:9c0917bfde97 574 {
GregCr 0:9c0917bfde97 575 assert_param( buffer != NULL );
GregCr 0:9c0917bfde97 576
GregCr 0:9c0917bfde97 577 // assert_param( addr >= DATA_EEPROM_BASE );
GregCr 0:9c0917bfde97 578 assert_param( buffer != NULL );
GregCr 0:9c0917bfde97 579 assert_param( size < ( DATA_EEPROM_END - DATA_EEPROM_BASE ) );
GregCr 0:9c0917bfde97 580
GregCr 0:9c0917bfde97 581 memcpy( buffer, ( uint8_t* )DATA_EEPROM_BASE, size );
GregCr 0:9c0917bfde97 582 return SUCCESS;
GregCr 0:9c0917bfde97 583 }
GregCr 0:9c0917bfde97 584
GregCr 0:9c0917bfde97 585 static MemTestStruct_t EepromDataCheckSum( void )
GregCr 0:9c0917bfde97 586 {
GregCr 0:9c0917bfde97 587 MemTestStruct_t memTestStruct;
GregCr 0:9c0917bfde97 588 uint8_t x;
GregCr 0:9c0917bfde97 589 uint8_t i;
GregCr 0:9c0917bfde97 590 uint16_t crcBuf;
GregCr 0:9c0917bfde97 591 memTestStruct.Value = 0xFFFF;
GregCr 0:9c0917bfde97 592
GregCr 0:9c0917bfde97 593 for( i = 0; i < EEPROM_BUFFER_SIZE - sizeof( uint16_t ); i++ )
GregCr 0:9c0917bfde97 594 {
GregCr 0:9c0917bfde97 595 x = memTestStruct.Value >> 8 ^ Eeprom.Buffer[i];
GregCr 0:9c0917bfde97 596 x ^= x >> 4;
GregCr 0:9c0917bfde97 597 memTestStruct.Value = ( memTestStruct.Value << 8 ) ^ \
GregCr 0:9c0917bfde97 598 ( ( uint16_t )( x << 12 ) ) ^ \
GregCr 0:9c0917bfde97 599 ( ( uint16_t )( x << 5 ) ) ^ \
GregCr 0:9c0917bfde97 600 ( ( uint16_t )x );
GregCr 0:9c0917bfde97 601 }
GregCr 0:9c0917bfde97 602 memcpy( &crcBuf, Eeprom.Buffer + EEPROM_CRC_EEPROM_ADDR, 2 );
GregCr 0:9c0917bfde97 603 memTestStruct.Valid = ( crcBuf == memTestStruct.Value );
GregCr 0:9c0917bfde97 604
GregCr 0:9c0917bfde97 605 return memTestStruct;
GregCr 0:9c0917bfde97 606 }