Base 4 Scope (4 March 2022)

Dependencies:   mbed QEI DmTftLibrary

Committer:
GregCr
Date:
Thu May 11 15:42:05 2017 +0000
Revision:
8:c0a5f53fe196
Parent:
0:9c0917bfde97
Child:
15:ed7ed20b7114
Corrected driver to match datasheet, corrected FW version registers, improved ranging performances at short distance

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