SX126xDevKit

Dependencies:   mbed DmTftLibrary SX126xLib

Revision:
0:e5420f1a8a1a
Child:
1:b96176a4ccb8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Peripherals/Eeprom.h	Tue Sep 05 08:15:37 2017 +0000
@@ -0,0 +1,182 @@
+/*
+  ______                              _
+ / _____)             _              | |
+( (____  _____ ____ _| |_ _____  ____| |__
+ \____ \| ___ |    (_   _) ___ |/ ___)  _ \
+ _____) ) ____| | | || |_| ____( (___| | | |
+(______/|_____)_|_|_| \__)_____)\____)_| |_|
+    (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 "sx126x.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_RADIO_BOOSTED_RX_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 MOD_PKET_TYPE_EEPROM_ADDR           38  // uint8_t
+#define MOD_GFSK_BR_EEPROM_ADDR             39  // uint32_t Bitrate
+#define MOD_GFSK_FDEV_EEPROM_ADDR           43  // uint32_t FrequencyDeviation
+#define MOD_GFSK_MOD_SHAPE_EEPROM_ADDR      47  // uint8_t ModulationShape
+#define MOD_GFSK_BW_EEPROM_ADDR             48  // uint8_t Bandwidth
+#define RFU_1                               49
+#define RFU_2                               53
+#define RFU_3                               57
+#define RFU_4                               58
+#define RFU_5                               59
+#define RFU_6                               63
+#define RFU_7                               67
+#define RFU_8                               68
+#define MOD_LORA_SPREADF_EEPROM_ADDR        69  // uint8_t SpreadingFactor
+#define MOD_LORA_BW_EEPROM_ADDR             70  // uint8_t Bandwidth
+#define MOD_LORA_CODERATE_EEPROM_ADDR       71  // uint8_t CodingRate
+#define PAK_PKET_TYPE_EEPROM_ADDR           72  // uint8_t
+
+#define PAK_GFSK_PREAMBLE_LEN_EEPROM_ADDR   73  // uint16_t PreambleTxLength
+#define PAK_GFSK_PR_MIN_DET_EEPROM_ADDR     75  // uint8_t PreambleMinDetect
+#define PAK_GFSK_SYNC_LEN_EEPROM_ADDR       76  // uint8_t SyncWordLength
+#define PAK_GFSK_ADDR_COMP_EEPROM_ADDR      77  // uint8_t AddrComp
+#define PAK_GFSK_HEADERTYPE_EEPROM_ADDR     78  // uint8_t HeaderType
+#define PAK_GFSK_PL_LEN_EEPROM_ADDR         79  // uint8_t PayloadLength
+#define PAK_GFSK_CRC_LEN_EEPROM_ADDR        80  // uint8_t CrcLength
+#define PAK_GFSK_DC_FREE_EEPROM_ADDR        81  // uint8_t DCFree
+
+#define RFU_9                               82
+#define RFU_10                              84
+#define RFU_11                              85
+#define RFU_12                              86
+#define RFU_13                              87
+#define RFU_14                              88
+#define RFU_15                              89
+#define RFU_16                              90
+                                              
+#define RFU_17                              91
+#define RFU_18                              93
+#define RFU_19                              94
+#define RFU_20                              95
+#define RFU_21                              96
+#define RFU_22                              97
+#define RFU_23                              98
+#define RFU_24                              99
+
+#define PAK_LORA_PREAMBLE_LEN_EEPROM_ADDR   100 // PreambleLength
+#define PAK_LORA_HEADERTYPE_EEPROM_ADDR     102 // HeaderType
+#define PAK_LORA_PL_LEN_EEPROM_ADDR         103 // PayloadLength
+#define PAK_LORA_CRC_MODE_EEPROM_ADDR       104 // CrcMode
+#define PAK_LORA_IQ_INV_EEPROM_ADDR         105 // InvertIQ
+#define EEPROM_LAST_DEVICE_CONNECTED        106 // uint8
+#define EEPROM_CRC_EEPROM_ADDR              107 // uint16
+
+/*!
+ * \brief Eeprom buffer size. Cf. above.
+ */
+#define EEPROM_BUFFER_SIZE                  109
+
+/*!
+ * \brief Part of EEPROM to save or restore
+ */
+typedef enum
+{
+    ALL_DATA,
+    SCREEN_DATA,
+    DEMO_SETTINGS,
+    RADIO_GFSK_PARAMS,
+    RADIO_LORA_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
+ * 
+ * \param [in]  deviceConnected  Device currently connected
+ */
+void EepromInit( uint8_t deviceConnected );
+
+/*!
+ * \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
+ *
+ * \param [in]  deviceConnected    Device currently connected
+ */
+void EepromSetDefaultSettings( uint8_t deviceConnected );
+
+#endif //EEPROM_H