THB2/bthome_phy6222/source/config.h
2024-01-23 19:28:49 +03:00

188 lines
5.4 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* config.h
*
* Created on: 11 янв. 2024 г.
* Author: pvvx
*/
#ifndef SOURCE_CONFIG_H_
#define SOURCE_CONFIG_H_
#include "types.h"
#ifndef APP_VERSION
#define APP_VERSION 0x07 // BCD
#endif
/*
#define BOARD_LYWSD03MMC_B14 0 // number used for BLE firmware
#define BOARD_MHO_C401 1
#define BOARD_CGG1 2
#define BOARD_LYWSD03MMC_B19 3 // number used for BLE firmware
#define BOARD_LYWSD03MMC_DEVBIS 3 // ver https://github.com/devbis/z03mmc
#define BOARD_LYWSD03MMC_B16 4 // number used for BLE firmware
#define BOARD_WATERMETER 4 // ver https://github.com/slacky1965/watermeter_zed
#define BOARD_LYWSD03MMC_B17 5 // number used for BLE firmware
#define BOARD_CGDK2 6
#define BOARD_CGG1N 7 // 2022
#define BOARD_MHO_C401N 8 // 2022
#define BOARD_MJWSD05MMC 9
#define BOARD_LYWSD03MMC_B15 10 // number used for BLE firmware
#define BOARD_MHO_C122 11
#define BOARD_TNK 16 // Water tank controller (not yet published at the moment)
#define BOARD_TS0201_TZ3000 17
#define BOARD_TS0202_TZ3000 18 // ?
*/
#define DEVICE_THB2 19
#define DEVICE_BTH01 20
#define DEVICE_TH05 21
#ifndef DEVICE
#define DEVICE DEVICE_THB2
#endif
// supported services by the device (bits)
#define SERVICE_OTA 0x0001
#define SERVICE_OTA_EXT 0x0002
#define SERVICE_PINCODE 0x0004 // пока нет
#define SERVICE_BINDKEY 0x0008 // пока нет
#define SERVICE_HISTORY 0x0010 // пока нет
#define SERVICE_SCREEN 0x0020 // пока нет
#define SERVICE_LE_LR 0x0040 // пока нет
#define SERVICE_THS 0x0080
#define SERVICE_RDS 0x0100 // пока нет
#define SERVICE_KEY 0x0200
#define SERVICE_OUTS 0x0400 // пока нет
#define SERVICE_INS 0x0800 // пока нет
#define OTA_TYPE_NONE 0 // нет OTA
#define OTA_TYPE_BOOT (SERVICE_OTA | SERVICE_OTA_EXT) // вариант для прошивки boot + OTA
#define OTA_TYPE_APP SERVICE_OTA_EXT // переключение из APP на OTA + boot прошивку, пока не реализовано
#ifndef OTA_TYPE
#define OTA_TYPE OTA_TYPE_BOOT
#endif
#define DEF_SOFTWARE_REVISION {'V', '0'+ (APP_VERSION >> 4), '.' , '0'+ (APP_VERSION & 0x0F), 0}
#if DEVICE == DEVICE_THB2
/* Model: THB2 */
#define DEV_SERVICES (OTA_TYPE \
| SERVICE_THS \
| SERVICE_KEY \
)
#define ADC_PIN_USE_OUT 0
#define ADC_PIN GPIO_P11
#define ADC_CHL ADC_CH1N_P11
#define I2C_SDA GPIO_P18
#define I2C_SCL GPIO_P20
#define GPIO_KEY GPIO_P07
#define GPIO_LED GPIO_P26
#define LED_ON 0
#define LED_OFF 1
#define DEF_MODEL_NUMBER_STR "THB2"
#define DEF_HARDWARE_REVISION "0001"
#define DEF_MANUFACTURE_NAME_STR "Tuya"
#elif DEVICE == DEVICE_BTH01
/* Model: BTH01 */
#define DEV_SERVICES (OTA_TYPE \
| SERVICE_THS \
| SERVICE_KEY \
)
#define ADC_PIN_USE_OUT 1 // hal_gpio_write(ADC_PIN, 1);
#define ADC_PIN GPIO_P11
#define ADC_CHL ADC_CH1N_P11
#define I2C_SDA GPIO_P33 // CHT8305_SDA
#define I2C_SCL GPIO_P34 // CHT8305_SCL
#define GPIO_SPWR GPIO_P00 // питание сенсора CHT8305_VDD
#define GPIO_KEY GPIO_P14
#define GPIO_LED GPIO_P15
#define LED_ON 1
#define LED_OFF 0
#define DEF_MODEL_NUMBER_STR "BTH01"
#define DEF_HARDWARE_REVISION "0001"
#define DEF_MANUFACTURE_NAME_STR "Tuya"
#elif DEVICE == DEVICE_TH05
/* Model: TH05 */
#define DEV_SERVICES (OTA_TYPE \
| SERVICE_THS \
| SERVICE_KEY \
| SERVICE_SCREEN \
)
#define ADC_PIN_USE_OUT 1 // hal_gpio_write(ADC_PIN, 1);
#define ADC_PIN GPIO_P11
#define ADC_CHL ADC_CH1N_P11
#define USE_TH_SENSOR 1
#define USE_RS_SENSOR 0
#define USE_SECREEN 1
#define I2C_SDA GPIO_P33 // AHT20_SDA
#define I2C_SCL GPIO_P34 // AHT20_SCL
#define GPIO_SPWR GPIO_P00 // питание сенсора CHT8305_VDD
#define GPIO_KEY GPIO_P14
#define GPIO_LPWR GPIO_P02 // питание LCD драйвера
//#define GPIO_LED GPIO_P20
//#define LED_ON 1
//#define LED_OFF 0
#define DEF_MODEL_NUMBER_STR "TH05"
#define DEF_HARDWARE_REVISION "0001"
#define DEF_MANUFACTURE_NAME_STR "Tuya"
#else
#error "DEVICE Not released!"
#endif
// Minimum connection interval (units of 1.25ms, 80=100ms) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 24 // 12 -> 15 ms
// Maximum connection interval (units of 1.25ms, 800=1000ms) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_MAX_CONN_INTERVAL 24 // 30 ms
// Slave latency to use if automatic parameter update request is enabled
#define DEFAULT_DESIRED_SLAVE_LATENCY 0 // (29+1)*30 = 900 ms
// Supervision timeout value (units of 10ms, 1000=10s) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_CONN_TIMEOUT 400 // 4s
typedef struct /*__attribute__((packed))*/ _cfg_t {
uint32_t flg;
uint8_t rf_tx_power; //
uint8_t advertising_interval; // multiply by 62.5 for value in ms (1..160, 62.5 ms .. 10 sec)
uint8_t connect_latency; // +1 x 0.03 sec ( = connection interval), Tmin = 1*30 = 30 ms, Tmax = 256 * 30 = 7680 ms
uint8_t reserved1;
uint8_t measure_interval; // measure_interval
uint8_t batt_interval; // * measure_interval
uint8_t averaging_measurements; // * measure_interval, 0 - off, 1..255 * measure_interval
uint8_t reserved2;
}cfg_t;
extern cfg_t cfg;
extern const cfg_t def_cfg;
typedef struct _adv_work_t {
uint32_t measure_interval_ms;
uint8_t adv_count;
uint8_t adv_batt_count;
uint8_t adv_con_count;
} adv_work_t;
extern adv_work_t adv_wrk;
void test_config(void);
void load_eep_config(void);
#endif /* SOURCE_CONFIG_H_ */