![](/media/cache/group/Semtech_stack_color_logo_highres.jpg.50x50_q85.jpg)
This code holds the complete demo set for the sx1280: PingPong, PER and Ranging Outdoor demo application. >>>>> This code MUST run on the mbed library release 127 or everything will be painfully slow.
Dependencies: mbed SX1280Lib DmTftLibrary
* This code MUST run on the mbed library release 127 or everything will be painfully slow.*
Peripherals/Eeprom.h
- Committer:
- mverdy
- Date:
- 2018-11-08
- Revision:
- 20:626b92b70bf7
File content as of revision 20:626b92b70bf7:
/* ______ _ / _____) _ | | ( (____ _____ ____ _| |_ _____ ____| |__ \____ \| ___ | (_ _) ___ |/ ___) _ \ _____) ) ____| | | || |_| ____( (___| | | | (______/|_____)_|_|_| \__)_____)\____)_| |_| (C)2016 Semtech Description: EEPROM routines header Maintainer: Gregory Cristian & Gilbert Menth */ #ifndef EEPROM_H #define EEPROM_H #include "Menu.h" #include "DemoApplication.h" #include "sx1280.h" /*! * \brief Define Buffer indexes for each EepromData for copy and restore */ #define SCR_CAL_FLAG_EEPROM_ADDR 0 // boolean #define SCR_CAL_POSA_EEPROM_ADDR 1 // int32 #define SCR_CAL_POSB_EEPROM_ADDR 5 // int32 #define SCR_CAL_POSC_EEPROM_ADDR 9 // int32 #define SCR_CAL_POSD_EEPROM_ADDR 13 // int32 #define SCR_CAL_POSE_EEPROM_ADDR 17 // int32 #define SCR_CAL_POSF_EEPROM_ADDR 21 // int32 #define APP_ENTITY_EEPROM_ADDR 25 // uint8 #define APP_ANT_SW_EEPROM_ADDR 26 // uint8 #define APP_FREQ_EEPROM_ADDR 27 // uint32_t Frequency; #define APP_TXPWR_EEPROM_ADDR 31 // int8_t TxPower; #define APP_MOD_TYPE_EEPROM_ADDR 32 // uint8_t ModulationType; #define APP_PER_NPAK_MAX_EEPROM_ADDR 33 // uint32_t MaxNumPacket; #define APP_RADIO_POWER_MODE_EEPROM_ADDR 37 // RadioRegulatorMode_t #define APP_RNG_REQ_COUNT_EEPROM_ADDR 38 // uint8_t #define APP_RNG_FULLSCALE_EEPROM_ADDR 39 // uint16_t #define APP_RNG_RFU_EEPROM_ADDR 41 #define APP_RNG_UNIT_EEPROM_ADDR 42 // ranging distance unit #define APP_RNG_ADDR_EEPROM_ADDR 43 // uint32_t #define APP_RNG_ANT_EEPROM_ADDR 47 // uint8_t RngAntenna #define MOD_PAK_TYPE_EEPROM_ADDR 48 // enum #define MOD_GFS_BRBW_EEPROM_ADDR 49 // BitrateBandwidth #define MOD_GFS_MOD_IND_EEPROM_ADDR 50 // ModulationIndex #define MOD_GFS_MOD_SHAP_EEPROM_ADDR 51 // ModulationShaping #define MOD_LOR_SPREADF_EEPROM_ADDR 52 // SpreadingFactor #define MOD_LOR_BW_EEPROM_ADDR 53 // Bandwidth #define MOD_LOR_CODERATE_EEPROM_ADDR 54 // CodingRate #define MOD_FLR_BRBW_EEPROM_ADDR 55 // BitrateBandwidth #define MOD_FLR_CODERATE_EEPROM_ADDR 56 // CodingRate #define MOD_FLR_MOD_SHAP_EEPROM_ADDR 57 // ModulationShaping #define MOD_BLE_BRBW_EEPROM_ADDR 58 // BitrateBandwidth #define MOD_BLE_MOD_IND_EEPROM_ADDR 59 // ModulationIndex #define MOD_BLE_MOD_SHAP_EEPROM_ADDR 60 // ModulationShaping #define MOD_RNG_SPREADF_EEPROM_ADDR 61 // SpreadingFactor #define MOD_RNG_BW_EEPROM_ADDR 62 // Bandwidth #define MOD_RNG_CODERATE_EEPROM_ADDR 63 // CodingRate #define PAK_PAK_TYPE_EEPROM_ADDR 64 // #define PAK_GFS_PREAMBLE_LEN_EEPROM_ADDR 65 // PreambleLength #define PAK_GFS_SYNC_LEN_EEPROM_ADDR 66 // SyncWordLength #define PAK_GFS_SYNC_MATCH_EEPROM_ADDR 67 // SyncWordMatch #define PAK_GFS_HEADERTYPE_EEPROM_ADDR 68 // HeaderType #define PAK_GFS_PL_LEN_EEPROM_ADDR 69 // PayloadLength #define PAK_GFS_CRC_LEN_EEPROM_ADDR 70 // CrcLength #define PAK_GFS_WHITENING_EEPROM_ADDR 71 // Whitening #define PAK_LOR_PREAMBLE_LEN_EEPROM_ADDR 72 // PreambleLength #define PAK_LOR_HEADERTYPE_EEPROM_ADDR 73 // HeaderType #define PAK_LOR_PL_LEN_EEPROM_ADDR 74 // PayloadLength #define PAK_LOR_CRC_MODE_EEPROM_ADDR 75 // CrcMode #define PAK_LOR_IQ_INV_EEPROM_ADDR 76 // InvertIQ #define PAK_RNG_PREAMBLE_LEN_EEPROM_ADDR 77 // PreambleLength #define PAK_RNG_HEADERTYPE_EEPROM_ADDR 78 // HeaderType #define PAK_RNG_PL_LEN_EEPROM_ADDR 79 // PayloadLength #define PAK_RNG_CRC_MODE_EEPROM_ADDR 80 // CrcMode #define PAK_RNG_IQ_INV_EEPROM_ADDR 81 // InvertIQ #define PAK_FLR_PREAMBLE_LEN_EEPROM_ADDR 82 // PreambleLength #define PAK_FLR_SYNC_LEN_EEPROM_ADDR 83 // SyncWordLength #define PAK_FLR_SYNC_MATCH_EEPROM_ADDR 84 // SyncWordMatch #define PAK_FLR_HEADERTYPE_EEPROM_ADDR 85 // HeaderType #define PAK_FLR_PL_LEN_EEPROM_ADDR 86 // PayloadLength #define PAK_FLR_CRC_LEN_EEPROM_ADDR 87 // CrcLength #define PAK_FLR_WHITENING_EEPROM_ADDR 88 // Whitening #define PAK_BLE_CON_STATE_EEPROM_ADDR 89 // ConnectionState #define PAK_BLE_CRC_FIELD_EEPROM_ADDR 90 // CrcField #define PAK_BLE_PAK_TYPE_EEPROM_ADDR 91 // BlePacketType #define PAK_BLE_WHITENING_EEPROM_ADDR 92 // Whitening #define EEPROM_CRC_EEPROM_ADDR 93 // uint16 /*! * \brief Eeprom buffer size. Cf. above. */ #define EEPROM_BUFFER_SIZE 95 /*! * \brief Part of EEPROM to save or restore */ typedef enum { ALL_DATA, SCREEN_DATA, DEMO_SETTINGS, RADIO_LORA_PARAMS, RADIO_RANGING_PARAMS, RADIO_FLRC_PARAMS, RADIO_GFSK_PARAMS, RADIO_BLE_PARAMS }EepromDataSet_t; /*! * \brief EepromData structure */ typedef struct { MenuSettings_t MenuSettings; DemoSettings_t DemoSettings; ModulationParams_t ModulationParams; PacketParams_t PacketParams; uint16_t CheckSum; }EepromData_t; /*! * \brief Eeprom structure */ typedef struct { EepromData_t EepromData; // Allows for the checksum to be carried out uint8_t Buffer[EEPROM_BUFFER_SIZE]; }Eeprom_t; /*! * \brief Local copy of Eeprom. (defined in Eeprom.cpp) */ extern Eeprom_t Eeprom; /*! * \brief Initialises the contents of EepromData */ void EepromInit( void ); /*! * \brief Read Eeprom from emulated EEPROM (in fact in Flash " higher address). * * \param [in] addr address of data (EEPROM offset not to be include) * \param [in] buffer buffer to use for copy * \param [in] size size of data to copy * * \retval status Status of operation (SUCCESS, ..) */ uint8_t EepromMcuReadBuffer( uint16_t addr, uint8_t *buffer, uint16_t size ); /*! * \brief Writes the EepromData to emulated EEPROM * * \param [in] dataSet Set of data to save or restore */ void EepromSaveSettings( EepromDataSet_t dataSet); /*! * \brief Loads EepromData from emulated EEPROM */ void EepromLoadGeneralSettings ( void ); /*! * \brief Loads EepromData with updated modulation and packet parameters * * \param [in] modulation modulation type to select for mod. & packet params */ void EepromLoadSettings( RadioPacketTypes_t modulation ); /*! * \brief Initialises the contents of flash to default values & save to EEPROM */ void EepromSetDefaultSettings( void ); /*! * \brief Initialises the contents of flash to default values (for ranging * demo : best set) & save to EEPROM */ void EepromSetRangingDefaultSettings( void ); /*! * \brief Reset the EEPROM to factory state */ void EepromFactoryReset( void ); #endif //EEPROM_H