#ifndef COMMON_CONFIG_H
#define COMMON_CONFIG_H

#include "at32f403a_407.h"

#ifdef DEBUG
#define DBG
#else
#undef DBG
#define DBG if (0)
#endif


/**
  * @brief  Маркер ревизии платы для валидации *.bin файла
  *
  */
#define HW_REV_LEN                      16

#define HW_REV_OFFSET                   0x1F0

#define HW_REV                          "MT_M03"

/**
  * @brief  Название модели устройства
  */
#define MODEL							"Метролог M3"

/**
  * @brief  Производитель
  */
#define MANUFACTURER                    "АО \"НПК РоТеК\""

/**
  * @brief  Версия прошивки
  */
#define VERSION                         "1.01t"

/**
  * @brief  MD5 CRC
  */
#define MD5_CRC                         "BF704428A06FE45359B2037ADBAA2C6E"
   
/**
  * @brief  Адрес сектора настроек
  */ 	
#define SETTINGS_SECTOR                 0x08020000

/**
  * @brief  Адрес CRC настроек
  */ 	
#define CRC_ADDRESS                     0x080207FC

/**
  * @brief  Адрес сектора системных настроек
  */
#define SYS_SECTOR         		        0x08020800  

/**
  * @brief  Адрес CRC системных настроек
  */
#define SYS_CRC_ADDRESS                 0x08020FFC

/**
  * @brief  Слово для контроля целостности структуры настроек
  */ 	
#define SETTINGS_CONTROL_WORD           123456789

/**
  * @brief  Число (-1) попыток загрузки основной прошивки
  */
#define BOOT_TRY                        26

/**
  * @brief  Таймаут возврата в основное ПО, сек.
  */
#define UPDATE_TIMEOUT                  120

#define USER_FLASH_FIRST_PAGE_ADDRESS   0x08021000  

#define USER_FLASH_END_ADDRESS          0x080C0FFF  
#define USER_FLASH_CRC_ADDRESS          0x080C0FFC 

#define FLASH_SECTOR_SIZE               0x800

#define IAP_FLASH_FIRST_PAGE_ADDRESS    0x08000000  // Only as example see comment
#define IAP_FLASH_CRC_ADDRESS           0x0801FFFC

#define SYSTEMTICK_PERIOD_MS            1

   


//
#define MQTT_CLIENT


// LwIP Software watchdog
//#define SOFTWARE_LWIP_WATCHDOG

//
#define USB_RNDIS

/**
  * @brief  Название файла прошивки
  */
#define MAIN_FW_NAME        "MT_M03.bin"

/**
  * @brief  Название файла прошивки (backup)
  */
#define BACKUP_MAIN_FW_NAME "BACKUP.bin"

/**
  * @brief  Вкл/выкл лог
  */
#define LOG_ENABLE

/**
  * @brief  Название файла лога
  */
#define LOG_NAME            "LOG.txt"


//#define FLASH_TYPE_AT25SF161
#define FLASH_TYPE_MX25L1606E

// -------------------------------------------------------------------------- //

typedef enum
{
    MB_REV_0 = 0,
    MB_REV_1 = 1,
    MB_REV_2 = 2,
    MB_REV_3 = 3,
    MB_REV_4 = 4,
    MB_REV_5 = 5,
    MB_REV_6 = 6,
    MB_REV_7 = 7,
  
} MBOARD_REV_t;

typedef enum
{
    DB_ABS    = 0,
    DB_REV_1  = 1,
    DB_REV_2  = 2,
    DB_REV_3  = 3,
    DB_REV_4  = 4,
    DB_REV_5  = 5,
    DB_REV_6  = 6,
    DB_REV_7  = 7,
    DB_REV_8  = 8,
    DB_REV_9  = 9,
    DB_REV_10 = 10,
  
} DBOARD_REV_t;


typedef enum
{
    ADC_PWR_MEAS = 0,
    ADC_DB_REV = 1,
    ADC_MB_REV = 2,
        
} ADC_REV_CH_t;


extern uint8_t mboard_rev;  // Ревизия основной платы
extern uint8_t dboard_rev;  // Ревизия дочерней платы





#endif /* #ifndef COMMON_CONFIG_H */

/********************************* (C) РОТЕК **********************************/