Ver Fonte

Added model 6721

Dmitry Telenkov há 4 meses atrás
pai
commit
9233419a95

+ 5 - 0
.gdbinit_bt6721

@@ -0,0 +1,5 @@
+target remote localhost:3333
+file build/bt6721/stm32bt6721/stm32bt6721.elf
+load
+break Reset_Handler
+

+ 3 - 1
.vscode/settings.json

@@ -53,6 +53,8 @@
         "istream": "c",
         "ostream": "c",
         "string_view": "c",
-        "initializer_list": "c"
+        "initializer_list": "c",
+        "board_bt6711_v1.h": "c",
+        "freertos.h": "c"
     }
 }

+ 11 - 0
Makefile

@@ -88,6 +88,15 @@ fullflash_6711_v1:
 	sleep 1
 	st-flash --reset write output/stm32bt6711_v1.bin 0x8020000	
 
+fwflash_6721:
+	st-flash --reset write output/stm32bt6721.bin 0x8020000
+
+fullflash_6721:
+	st-flash --reset write output/iap.bin 0x8000000
+	sleep 1
+	st-flash --reset write output/stm32bt6721.bin 0x8020000
+
+
 release_6703:
 	$(MAKE) -C modules HARDWARE=bt6703 VERBOSE=1 DEBUG=0 PRINTF=custom MAC=EC-4C-4D-00-80-0A release
 
@@ -112,3 +121,5 @@ release_6711:
 release_6711_v1:
 	$(MAKE) -C modules HARDWARE=bt6711_v1 VERBOSE=1 DEBUG=0 PRINTF=custom MAC=EC-4C-4D-00-80-0A release
 
+release_6721:
+	$(MAKE) -C modules HARDWARE=bt6721 VERBOSE=1 DEBUG=0 PRINTF=custom MAC=EC-4C-4D-00-80-0A release

+ 2 - 0
config/board.h

@@ -17,6 +17,8 @@
 #include "board_bt6711.h"
 #elif defined HARDWARE_BT6711_V1
 #include "board_bt6711_v1.h"
+#elif defined HARDWARE_BT6721
+#include "board_bt6721.h"
 #endif
 
 #define EXPAND_AS_ENUM(name, ...) name,

+ 314 - 0
config/board_bt6721.h

@@ -0,0 +1,314 @@
+#ifndef BOARD_BT6721_H
+#define BOARD_BT6721_H
+
+#define SERVICE_RS232_UART_TABLE(X)     \
+X( SERVICE_TXDINT,   GPIOD,   5, AF_USART2) \
+X( SERVICE_RXDINT,   GPIOD,   6, AF_USART2)
+
+#define RS232_UART_TABLE(X)     \
+X( TXDINT,   GPIOA,   9, AF_USART1) \
+X( RXDINT,   GPIOA,   10, AF_USART1)
+
+#define SPI2_TABLE(X) \
+X( SPI2_MISO,   GPIOB,  14, AF_SPI2) \
+X( SPI2_MOSI,   GPIOB,  15, AF_SPI2) \
+X( SPI2_SCK,    GPIOB,  10, AF_SPI2) \
+X( SPI2_NSS,    GPIOB,  9,  GPIO_OUT | GPIO_SET)
+
+#define MCU_PERIPHERALS(X)  \
+SERVICE_RS232_UART_TABLE(X)\
+RS232_UART_TABLE(X) \
+SPI2_TABLE(X)
+
+#define LEDS(X) \
+X( LED_INIT_R,  GPIOA,  4,  GPIO_OUT | GPIO_INV) \
+X( LED_INIT_G,  GPIOA,  3,  GPIO_OUT | GPIO_INV) \
+X( LED_MAJOR_R, GPIOA,  5,  GPIO_OUT | GPIO_INV) \
+X( LED_MINOR_G, GPIOE,  11, GPIO_OUT | GPIO_INV) \
+X( LED_MINOR_R, GPIOE,  12, GPIO_OUT | GPIO_INV)
+
+#define JUMPERS(X) \
+X( MODE_JUMPER, GPIOE,  6,  GPIO_IN_PU | GPIO_INV)
+
+#define BUTTONS(X) \
+X( KEY_DEF,     GPIOE,  7,  GPIO_IN )//| GPIO_INV
+
+#define WDG_PIN(X) \
+X( _WDG,     GPIOE,   15, GPIO_OUT)
+
+#define GPIO_TABLE(X)   \
+MCU_PERIPHERALS(X)  \
+LEDS(X)             \
+JUMPERS(X) \
+BUTTONS(X)      \
+WDG_PIN(X)
+
+/**
+  * @brief  Маркер ревизии платы для валидации *.bin файла
+  *
+  */
+#define HW_REV                          "BT-6721"
+
+/**
+  * @brief  Версия прошивки
+  */
+#define VERSION                         "1.0"
+
+/**
+  * brief  Текст сообщения при запуске CLI
+  */
+#define TELNET_CLI_WELCOME_MESSAGE      "BT-6721 command server - connection accepted.\r\nlogin:"
+
+#define RTC_ENABLE                  //RTC clock
+#define LED_ENABLE                  //LED индикация
+#define BUTTON_ENABLE               //Кнопки
+#define NET_ENABLE                  //Ethernet сеть
+#define HTTP_SERVER_ENABLE          //HTTP сервер
+#define SNMP_ENABLE                 //SNMP протокол
+#define NOTIFICATION_CONTROL_ENABLE //Управление уведомлениями
+#define WHITELIST_ENABLE            //Белый список
+#define TELNET_ENABLE               //Telnet сервер
+#define UPS_ENABLE                  //UPS
+#ifndef BT6702_SERVICE // no web server in the service fw
+#define FTP_ENABLE                  //FTP boot loader
+#define RADIUS_SERVER_ENABLE        //RADIUS сервер
+#endif // BT6702_SERVICE
+#define SYSLOG_ENABLE
+//#define DEBUG_FREERTOS            //Мониторинг FreeRtos
+
+#define SETTINGS_TABLE \
+XSETTING( SNMP_t,	sSnmp, SETTINGS_SetSnmpDef, ALL_DEFAULT ) \
+XSETTING( AUTH_t,	sAuth[MAX_WEB_USERS], SETTINGS_SetServiceDef, PART_DEFAULT_2 ) \
+XSETTING( SNTP_t,	sSNTP, SETTINGS_SetSntpDef, ALL_DEFAULT ) \
+XSETTING( UPS_Setting_t, UPS_Setting, SETTINGS_SetUPSSettingsDef, ALL_DEFAULT ) \
+XSETTING( ALARM_MNGR_t, sAlarmManager, SETTINGS_SetAlarmManagerDef, ALL_DEFAULT ) \
+XSETTING( TELNET_t, sTelnet, SETTINGS_SetTelnetDef, PART_DEFAULT_1 ) \
+XSETTING( WHITE_LIST_t, sWhiteList[MAX_WHITE_LIST], SETTINGS_SetWhiteListDef, ALL_DEFAULT ) \
+XSETTING( WHITE_LIST_t, sWhiteListTemp[MAX_WHITE_LIST], SETTINGS_SetWhiteListDef, ALL_DEFAULT ) \
+XSETTING( uint8_t, sFlagNotification[ALL_TRAPS], SETTINGS_SetFlagNotificationDef, ALL_DEFAULT ) \
+XSETTING( FTP_Update_t,	sFTPUpdate, SETTINGS_SetFTPUpdateDef, ALL_DEFAULT ) \
+XSETTING( Syslog_Settings_t,	sSyslog, SETTINGS_SetSyslogDef, ALL_DEFAULT ) \
+XSETTING( RADIUS_t, sRADIUS, SETTINGS_SetRADIUSDef, PART_DEFAULT_1 ) \
+
+
+#define SNMP_DEV_ROOT_OID       13
+
+#define MAX_IRQ_HANDLERS 4
+
+#define WEB_SETTINGS_TAGS_TABLE \
+  XJSON_SETTINGS_TAG("read_community",     GetReadCommunity,                    SetReadCommunity) \
+  XJSON_SETTINGS_TAG("write_community",    GetWriteCommunity,                   SetWriteCommunity) \
+  XJSON_SETTINGS_TAG("managerIP",          GetManagerIp,                        SetManagerIp) \
+  XJSON_SETTINGS_TAG("managerIP2",         GetManagerIp2,                       SetManagerIp2) \
+  XJSON_SETTINGS_TAG("managerIP3",         GetManagerIp3,                       SetManagerIp3) \
+  XJSON_SETTINGS_TAG("managerIP4",         GetManagerIp4,                       SetManagerIp4) \
+  XJSON_SETTINGS_TAG("managerIP5",         GetManagerIp5,                       SetManagerIp5) \
+  XJSON_SETTINGS_TAG("ipaddr",             GetIpStr,                            SetIPStr) \
+  XJSON_SETTINGS_TAG("gw",                 GetGatewayStr,                       SetGatewayStr) \
+  XJSON_SETTINGS_TAG("mask",               GetMaskStr,                          SetMaskStr) \
+  XJSON_SETTINGS_TAG("dhcp",               GetDhcpStateStr,                     SetDhcpStateStr) \
+  XJSON_SETTINGS_TAG("tn_port",            GetTelnetPortStr,                    SetTelnetPortStr) \
+  XJSON_SETTINGS_TAG("tn_enabled",         GetTelnetEnableStateStr,             SetTelnetEnableStateStr) \
+  XJSON_SETTINGS_TAG("wtl_ip1",            GetWhiteList1STR,                    SetWhiteList1STR) \
+  XJSON_SETTINGS_TAG("wtl_ip2",            GetWhiteList2STR,                    SetWhiteList2STR) \
+  XJSON_SETTINGS_TAG("wtl_ip3",            GetWhiteList3STR,                    SetWhiteList3STR) \
+  XJSON_SETTINGS_TAG("wtl_ip4",            GetWhiteList4STR,                    SetWhiteList4STR) \
+  XJSON_SETTINGS_TAG("wtl_ip5",            GetWhiteList5STR,                    SetWhiteList5STR) \
+  XJSON_SETTINGS_TAG("date",               GetDateStr,                          SetDateStr) \
+  XJSON_SETTINGS_TAG("time",               GetTimeStr,                          SetTimeWebStr) \
+  XJSON_SETTINGS_TAG("ntp",                GetSntpStateStr,                     SetSntpStateStr) \
+  XJSON_SETTINGS_TAG("ntpservip",          GetSntpServerIpStr,                  SetSntpServerIpStr) \
+  XJSON_SETTINGS_TAG("utc",                GetSntpTimeZoneStr,                  SetSntpTimeZoneStr) \
+  XJSON_SETTINGS_TAG("utm",                GetUnixTimeStr,                      SetEmptyFuncStr) \
+  XJSON_SETTINGS_TAG("lastsynctime",       GetSntpLastDataStr,                  SetEmptyFuncStr) \
+  XJSON_SETTINGS_TAG("ups_cell_min",       GetUPSVoltCellMinStr,                SetUPSVoltCellMinStr) \
+  XJSON_SETTINGS_TAG("ups_cell_max",       GetUPSVoltCellMaxStr,                SetUPSVoltCellMaxStr) \
+  XJSON_SETTINGS_TAG("bat_cap",            GetCapacityNominalAKBStr,            SetCapacityNominalAKBStr) \
+  XJSON_SETTINGS_TAG("ups_max_power",      GetUPSPowerStr,                      SetUPSPowerStr) \
+  XJSON_SETTINGS_TAG("bat_charge",         GetVoltageAKBNominalStr,             SetVoltageAKBNominalStr) \
+  XJSON_SETTINGS_TAG("mainvolt_high",      GetVACAlarmHighRangeStr,             SetVACAlarmHighRangeStr) \
+  XJSON_SETTINGS_TAG("mainvolt_low",       GetVACAlarmLowRangeStr,              SetVACAlarmLowRangeStr) \
+  XJSON_SETTINGS_TAG("mainvolt_hist",      GetVACAlarmHisteStr,                 SetVACAlarmHisteStr) \
+  XJSON_SETTINGS_TAG("mainvolt_in_high",   GetVACInputAlarmHighRangeStr,        SetVACInputAlarmHighRangeStr) \
+  XJSON_SETTINGS_TAG("mainvolt_in_low",    GetVACInputAlarmLowRangeStr,         SetVACInputAlarmLowRangeStr) \
+  XJSON_SETTINGS_TAG("mainvolt_in_hist",   GetVACinputAlarmHisteStr,            SetVACinputAlarmHisteStr) \
+  XJSON_SETTINGS_TAG("temp_high",          GetTemperatureAlarmHighRangeStr,     SetTemperatureAlarmHighRangeStr) \
+  XJSON_SETTINGS_TAG("temp_low",           GetTemperatureAlarmLowRangeStr,      SetTemperatureAlarmLowRangeStr) \
+  XJSON_SETTINGS_TAG("temp_hist",          GetTemperatureAlarmHisteStr,         SetTemperatureAlarmHisteStr) \
+  XJSON_SETTINGS_TAG("loadvolt_high",      GetLoadAlarmHighRangeStr,            SetLoadAlarmHighRangeStr) \
+  XJSON_SETTINGS_TAG("loadvolt_hist",      GetLoadAlarmHisteStr,                SetLoadAlarmHistStr) \
+  XJSON_SETTINGS_TAG("netsettings_changed",GetWebReinitFlag,                    SetEmptyFuncStr) \
+  XJSON_SETTINGS_TAG("ftp_server",         GetFTPServer,                        SetEmptyFuncStr) \
+  XJSON_SETTINGS_TAG("ftp_port",           GetFTPPort,                          SetEmptyFuncStr) \
+  XJSON_SETTINGS_TAG("ftp_path",           GetFTPPath,                          SetEmptyFuncStr) \
+  XJSON_SETTINGS_TAG("ftp_login",          GetFTPLogin,                         SetEmptyFuncStr) \
+  XJSON_SETTINGS_TAG("ftp_password",       GetFTPPassword,                      SetEmptyFuncStr) \
+  XJSON_SETTINGS_TAG("syslog_enable",      GetSyslogEnable,                     SetSyslogEnable) \
+  XJSON_SETTINGS_TAG("syslog_server",      GetSyslogServer,                     SetSyslogServer) \
+  XJSON_SETTINGS_TAG("syslog_port",        GetSyslogPort,                       SetSyslogPort) \
+  XJSON_SETTINGS_TAG("rs_server",          GetRDSIpStr,                         SetRDSIpStr) \
+  XJSON_SETTINGS_TAG("rs_port",            GetRDSPortStr,                       SetRDSPortStr) \
+  XJSON_SETTINGS_TAG("rs_pwd",             GetRDSPasswordkStr,                  SetRDSPasswordkStr) \
+  XJSON_SETTINGS_TAG("rs_enabled",         GetRDSEnableStateStr,                SetRDSEnableStateStr) \
+
+#define WEB_PARAMS_TAGS_TABLE \
+  XJSON_PARAMS_TAG("AC",                 GetInputVoltageStr) \
+  XJSON_PARAMS_TAG("DC",                 GetOutputVoltageStr) \
+  XJSON_PARAMS_TAG("in_freq",            GetInputFreqStr) \
+  XJSON_PARAMS_TAG("out_freq",           GetOutputFreqStr) \
+  XJSON_PARAMS_TAG("pwr",                GetPowerStr) \
+  XJSON_PARAMS_TAG("pwr_akb",            GetLoadAKBModeStr) \
+  XJSON_PARAMS_TAG("data_check_pwr",     GetDataFormatCheckLoadStr) \
+  XJSON_PARAMS_TAG("bat_rem_cap",        GetBatCapacityStr) \
+  XJSON_PARAMS_TAG("inner_temp",         GetInternalTempStr) \
+  XJSON_PARAMS_TAG("bat_time_left",      GetRuntimeStr) \
+  XJSON_PARAMS_TAG("in_cur",             GetInputCurrentStr) \
+  XJSON_PARAMS_TAG("out_cur",            GetOutputCurrentStr) \
+  XJSON_PARAMS_TAG("bat_volt",           GetVoltageAKBtStr) \
+  XJSON_PARAMS_TAG("bat_cap",            GetCapacityNominalAKBStr) \
+  XJSON_PARAMS_TAG("pmode",              GetModeStr) \
+  XJSON_PARAMS_TAG("m_alarm",            GetAlarmMonitorStr) \
+  XJSON_PARAMS_TAG("u_alarm",            GetAlarmStr) \
+  XJSON_PARAMS_TAG("netsettings_changed",GetWebReinitFlag) \
+
+#define TRAPS_TABLE \
+  XTRAP(FW_VERSION_UPDATE,                 1,      true,      GetVersionStr) \
+  XTRAP(FW_VERSION_UPDATED,                1,      true,      GetVersionStr) \
+  XTRAP(DEVICE_RESTORED,                   1,      true,      GetVersionStr) \
+  XTRAP(DEVICE_REBOOTED,                   1,      true,      GetVersionStr) \
+  XTRAP(UPS_MODE,                          20,     true,      GetModeStr) \
+  XTRAP(BATTERY_HIGH_TEMPERATURE_NORM,     9,      true,      GetInternalTempStr) \
+  XTRAP(BATTERY_HIGH_TEMPERATURE_ALARM,    9,      true,      GetInternalTempStr) \
+  XTRAP(BATTERY_LOW_TEMPERATURE_NORM,      9,      true,      GetInternalTempStr) \
+  XTRAP(BATTERY_LOW_TEMPERATURE_ALARM,     9,      true,      GetInternalTempStr) \
+  XTRAP(LINE_ALARM,                        11,     true,      GetInputVoltageStr) \
+  XTRAP(LINE_NORM,                         11,     true,      GetInputVoltageStr) \
+  XTRAP(VAC_LOW_OUTPUT_ALARM,              12,     true,      GetOutputVoltageStr) \
+  XTRAP(VAC_LOW_OUTPUT_NORM,               12,     true,      GetOutputVoltageStr) \
+  XTRAP(VAC_HIGH_OUTPUT_ALARM,             12,     true,      GetOutputVoltageStr) \
+  XTRAP(VAC_HIGH_OUTPUT_NORM,              12,     true,      GetOutputVoltageStr) \
+  XTRAP(TEST_BAT_RUN,                      14,     true,      GetBatCapacityStr) \
+  XTRAP(TEST_BAT_STOP,                     14,     true,      GetBatCapacityPrevStr) \
+  XTRAP(BATTERY_FAIL,                      14,     true,      GetBatCapacityPrevStr) \
+  XTRAP(BATTERY_NORM,                      14,     true,      GetBatCapacityStr) \
+  XTRAP(LOW_BAT_ALARM,                     14,     true,      GetBatCapacityStr) \
+  XTRAP(LOW_BAT_NORM,                      14,     true,      GetBatCapacityStr) \
+  XTRAP(BATTERY_CONNECT_ALARM,             14,     true,      GetBatCapacityStr) \
+  XTRAP(BATTERY_CONNECT_NORM,              14,     true,      GetBatCapacityStr) \
+  XTRAP(POWER_ALARM,                       13,     true,      GetPowerStr) \
+  XTRAP(POWER_NORM,                        13,     true,      GetPowerStr) \
+  XTRAP(CONNECT_MONITOR_ALARM,             16,     true,      GetConnectMonitorStr) \
+  XTRAP(CONNECT_MONITOR_NORM,              16,     true,      GetConnectMonitorStr) \
+  XTRAP(PHASE_FAIL,                        11,     true,      GetInputVoltageStr) \
+  XTRAP(PHASE_NORM,                        11,     true,      GetInputVoltageStr) \
+  XTRAP(EPO_FAIL,                          11,     true,      GetInputVoltageStr) \
+  XTRAP(EPO_NORM,                          11,     true,      GetInputVoltageStr) \
+
+typedef enum
+{
+  FW_VERSION_UPDATE = 1,
+  FW_VERSION_UPDATED,
+  DEVICE_RESTORED,
+  DEVICE_REBOOTED,
+  UPS_MODE,
+  BATTERY_HIGH_TEMPERATURE_NORM,
+  BATTERY_HIGH_TEMPERATURE_ALARM,
+  BATTERY_LOW_TEMPERATURE_NORM,
+  BATTERY_LOW_TEMPERATURE_ALARM,
+  LINE_ALARM,
+  LINE_NORM,
+  VAC_LOW_OUTPUT_ALARM,
+  VAC_LOW_OUTPUT_NORM,
+  VAC_HIGH_OUTPUT_ALARM,
+  VAC_HIGH_OUTPUT_NORM,
+  TEST_BAT_RUN,
+  TEST_BAT_STOP,
+  BATTERY_FAIL,
+  BATTERY_NORM,
+  LOW_BAT_ALARM,
+  LOW_BAT_NORM,
+  BATTERY_CONNECT_ALARM,
+  BATTERY_CONNECT_NORM,
+  POWER_ALARM,
+  POWER_NORM,
+  CONNECT_MONITOR_ALARM,
+  CONNECT_MONITOR_NORM,
+  PHASE_FAIL,
+  PHASE_NORM,
+  EPO_FAIL,
+  EPO_NORM,
+  ALL_TRAPS
+} TRAP_LIST_t;
+
+typedef enum {
+  LOG_SYSTEM_BOOT = 0,			// device booted
+  LOG_SYSTEM_DEFCONFIG,	// default config applied
+  LOG_UPDATE_SOFT,
+  LOG_TURN_ON,		//
+  LOG_PSW_CHANGE,		//
+  LOG_SETTING_SAVE,		//
+  LOG_LOGIN_TELNET,		//
+  LOG_LOGIN,		//
+  LOG_UPS_MODE,
+  LOG_TEST_UPS,		//
+  LOG_SHUTDOWN_UPS,
+  LOG_ALARM_VAC_LOW_OUTPUT,
+  LOG_ALARM_VAC_HIGH_OUTPUT,
+  LOG_ALARM_HIGH_TEMP,
+  LOG_ALARM_LOW_TEMP,
+  LOG_ALARM_LINE,
+  LOG_ALARM_LOW_BAT,
+  LOG_ALARM_POWER,
+  LOG_ALARM_UPS,
+  LOG_ALARM_AKB,
+  LOG_TEST_ALARM_AKB,
+  LOG_PHASE_FAIL,
+  LOG_EPO_FAIL,
+  LOG_VALUE,
+  LOG_NONE,
+} log_type_t;
+
+#define UPS_MODE_MONITOR
+#define TEST_AKB_FINISH_MONITOR
+#define VAC_IN_MONITOR
+#define LINE_FAIL_MONITOR
+#define VAC_OUT_MONITOR
+#define LOW_BAT_MONITOR
+#define LOAD_MONITOR
+#define TEMP_AKB_MONITOR
+#define BAT_CONNECT_MONITOR
+#define UPS_CONNECT_MONITOR
+#define TEST_ALARM_AKB_MONITOR
+#define PHASE_FAIL_MONITOR
+#define EPO_MONITOR
+#define OVERTEMPRATURE_MONITOR
+#define INVERTERHIGHVOLTAGE_MONITOR
+
+#define MONITOR_TABLE \
+  XMONITOR(UPS_TestFinishMonitor,               (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_LineFailMonitor,                 (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_VACoutputLowRangeMonitor,        (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_VACoutputHighRangeMonitor,       (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_LowBatMonitor,                   (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_PowerMonitor,                    (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_TemperatureHighRangeMonitor,     (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_TemperatureLowRangeMonitor,      (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_BatteryConnectMonitor,           (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_PhaseFailMonitor,                (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_EPOMonitor,                      (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_OverTempratureMonitor,           (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_InventerHighVoltageMonitor,      (UPS.Present == UPS_CONNECTED)) \
+  XMONITOR(UPS_ConnectMonitor,                  1)
+
+#define LED_INIT_OK               LED_INIT_G
+#define LED_INIT_ERR              LED_INIT_R
+#define LED_ALARM                 LED_MAJOR_R
+#define LED_GREEN_MINOR           LED_MINOR_G
+#define LED_RED_MINOR             LED_MINOR_R
+
+#define SERVICE_CONTROLLER_IP  "192.168.0.12"
+
+#define UPS_BUZZER_OFF //выключение звукового сигнала ИБП
+//#define CHECK_LOAD_ENABLE //включение алгоритма проверки нагрузки на ИБП
+
+#endif /* BOARD_PRS_H */

+ 9 - 1
jenkins-env.groovy

@@ -91,6 +91,14 @@ rm ./output/stm32* ./output/cortex_crc
 cp ./output/* ./output_all/bt6711-v1/
 cp ./docs/bt6711_v1/*.MIB ./output_all/bt6711-v1/
 cp ./docs/bt6711_v1/Changelog.md ./output_all/bt6711-v1/
+
+make distclean
+make HARDWARE=bt6721 VERBOSE=1 DEBUG=0 PRINTF=custom MAC=EC-4C-4D-00-EE-DC
+mkdir -p ./output_all/bt6721/
+rm ./output/stm32* ./output/cortex_crc
+cp ./output/* ./output_all/bt6721/
+cp ./docs/bt6721/*.MIB ./output_all/bt6721/
+cp ./docs/bt6721/Changelog.md ./output_all/bt6721/
 """
 
 /// Следующие два параметра уточнить у ответственного тестировщика
@@ -107,4 +115,4 @@ buildenvArgs = ""    // только если необходимо для кор
 // Список устройств, для которых компилируется данный код (только тукущая ветка, не весь репозиторий). 
 // При сборке релиза проверяется, что устройство указанное в теге состоит в этом множестве.
 // Синтаксис: groovy list
-devices = ['bt6703', 'bt6703-rt', 'bt6707', 'bt6709', 'bt6709-mts', 'bt6710', 'bt6711', 'bt6711-v1']
+devices = ['bt6703', 'bt6703-rt', 'bt6707', 'bt6709', 'bt6709-mts', 'bt6710', 'bt6711', 'bt6711-v1', 'bt6721']

+ 1 - 1
modules/Ethernet/private_mib_bt6711.c

@@ -6,7 +6,7 @@
  */
 
 
-#if HARDWARE_BT6711 || HARDWARE_BT6711_V1
+#if HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6721
 #include "stm32f4xx.h"
 #include "private_mib.h"
 #include "parameters.h"

+ 1 - 1
modules/Ethernet/snmp_api.c

@@ -194,7 +194,7 @@ void SNMP_SetObjDescr(void)
 
     memset(sSettings.sSnmp.sysDesc.description, 0, sizeof(sSettings.sSnmp.sysDesc.description));
 
-#if HARDWARE_BT6711 || HARDWARE_BT6711_V1
+#if HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6721
     strcpy(sSettings.sSnmp.sysDesc.description, HW_REV);
 #elif HARDWARE_BT6709_MTS || HARDWARE_BT6710
     strcat(sSettings.sSnmp.sysDesc.description, UPS.model);

+ 2 - 0
modules/HTTP_Server/http_server.c

@@ -19,6 +19,8 @@
 #include "bt6710_fs/fsdata.c"
 #elif HARDWARE_BT6711 || HARDWARE_BT6711_V1
 #include "bt6711_fs/fsdata.c"
+#elif HARDWARE_BT6721
+#include "bt6721_fs/fsdata.c"
 #endif
 #ifdef FTP_ENABLE
 #include "ftp.h"

+ 19 - 6
modules/Makefile

@@ -52,10 +52,10 @@ INCLUDES += -Iportgw
 INCLUDES += -Ids18b20
 INCLUDES += -Ionewire_sensor
 endif
-ifneq (,$(filter $(HARDWARE),bt6709 bt6709_mts bt6711 bt6711_v1))
+ifneq (,$(filter $(HARDWARE),bt6709 bt6709_mts bt6711 bt6711_v1 bt6721))
 INCLUDES += -Iwhitelist
 endif
-ifneq (,$(filter $(HARDWARE),bt6703 bt6703_rt bt6711 bt6711_v1))
+ifneq (,$(filter $(HARDWARE),bt6703 bt6703_rt bt6711 bt6711_v1 bt6721))
 INCLUDES += -Iradius
 endif
 INCLUDES += -Imbedtls_api
@@ -74,10 +74,10 @@ CSRC += $(wildcard portgw/*.c)
 CSRC += $(wildcard ds18b20/*.c)
 CSRC += $(wildcard onewire_sensor/*.c)
 endif
-ifneq (,$(filter $(HARDWARE),bt6709 bt6709_mts bt6711 bt6711_v1))     
+ifneq (,$(filter $(HARDWARE),bt6709 bt6709_mts bt6711 bt6711_v1 bt6721))     
 CSRC += $(wildcard whitelist/*.c)
 endif
-ifneq (,$(filter $(HARDWARE),bt6703 bt6703_rt bt6711 bt6711_v1))
+ifneq (,$(filter $(HARDWARE),bt6703 bt6703_rt bt6711 bt6711_v1 bt6721))
 CSRC += $(wildcard radius/*.c)
 endif
 CSRC += $(wildcard mbedtls_api/*.c)
@@ -120,7 +120,7 @@ endif
 #ifeq ($(HARDWARE), bt6710) 	
 #   CSRC += $(wildcard HTTP_Server/http_server.c)
 #endif  
-ifneq (,$(filter $(HARDWARE),bt6707 bt6709 bt6709_mts bt6711 bt6711_v1 bt6710))
+ifneq (,$(filter $(HARDWARE),bt6707 bt6709 bt6709_mts bt6711 bt6711_v1 bt6710 bt6721))
 	INCLUDES += -Icli
 	CSRC += $(wildcard cli/*.c)
 	INCLUDES += -ITelnet_Server
@@ -178,7 +178,7 @@ INCLUDES += -I../thirdparty/mbedTLS/include/
 
 CSRC += $(wildcard ../thirdparty/mbedTLS/library/*.c)
 
-ifneq (,$(filter $(HARDWARE),bt6703 bt6703_rt bt6711 bt6711_v1))
+ifneq (,$(filter $(HARDWARE),bt6703 bt6703_rt bt6711 bt6711_v1 bt6721))
 #RADDIUS_SERVER
 
 INCLUDES += -I../thirdparty/FreeRadius/
@@ -222,6 +222,10 @@ ifeq ($(HARDWARE), bt6711_v1)
 BUILDDIR = ../build/bt6711_v1/$(TARGET)
 endif
 
+ifeq ($(HARDWARE), bt6721)
+BUILDDIR = ../build/bt6721/$(TARGET)
+endif
+
 FW_FLASH_START = $(shell awk '/USER_FLASH_FIRST_PAGE_ADDRESS/{print $$3;exit}' ../config/common_config.h )
 FW_FLASH_CRC = $(shell awk '/USER_FLASH_CRC_ADDRESS/{print $$3}' ../config/common_config.h )
 
@@ -257,6 +261,10 @@ ifeq ($(HARDWARE), bt6711_v1)
 FW_NAME = BT_6711_v1xx
 endif
 
+ifeq ($(HARDWARE), bt6721)
+FW_NAME = BT_6721xx
+endif
+
 -include ../Makefile.inc.stm32
 
 #Building Web UI FS
@@ -275,6 +283,11 @@ ifeq ($(HARDWARE), bt6711_v1)
 	FSDATA_DIR = ./HTTP_Server/bt6711_fs
 endif
 
+ifeq ($(HARDWARE), bt6721)
+	WUI_DIR = ../web_interface/dist/wui-11
+	FSDATA_DIR = ./HTTP_Server/bt6721_fs
+endif
+
 ifeq ($(HARDWARE), bt6707)
 	WUI_DIR = ../web_interface/dist/wui-7
 	FSDATA_DIR = ./HTTP_Server/bt6707_fs

+ 2 - 2
modules/MegaTec/megatec.c

@@ -652,7 +652,7 @@ void ups_model_response(char *data)
             }
         }
         if(strncmp(value, "WPHV", 4) == 0 || strncmp(value, "G2", 2) == 0 || value[0] == 0) {
-#if HARDWARE_BT6711_V1
+#if HARDWARE_BT6711_V1 || HARDWARE_BT6721
             if(UPS.serial[0] == 0) {
                 return;
             }
@@ -707,7 +707,7 @@ void ups_model_response(char *data)
                 strncpy(UPS.model, value, len);
             }
         }
- #if HARDWARE_BT6711_V1       
+ #if HARDWARE_BT6711_V1 || HARDWARE_BT6721      
         if(UPS.serial[0] == 0) {
             memset(UPS.model, 0, sizeof(UPS.model));
             return;

+ 3 - 3
modules/cli/CLI_Commands.c

@@ -88,7 +88,7 @@ const char *akb_args_list[] = {
     "lifetime",
     "dataset",
     "upspower",
-#else if HARDWARE_BT6711 || HARDWARE_BT6711_V1
+#else if HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6721
     "capacity",
     "voltakb",
     "upspower",
@@ -351,7 +351,7 @@ static const CLI_Command_Definition_t prvAKBCommandDefinition = {
 							"\takb lifetime <value>: ввод срока службы АКБ (лет)\r\n"
 							"\takb dataset <YYYY-MM-DD>: ввод даты установки АКБ\r\n"
 							"\takb upspower <value>: ввод полной мощности ИБП (ВА)\r\n"
-#else if HARDWARE_BT6711 || HARDWARE_BT6711_V1
+#else if HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6721
 							"\takb capacity <value>: ввод ёмкости АКБ (Ач)\r\n"
 							"\takb voltakb <value>:  ввод номинального напряжения АКБ (В)\r\n"
 							"\takb upspower <value>: ввод полной мощности ИБП (ВА)\r\n"
@@ -1647,7 +1647,7 @@ static portBASE_TYPE prvTaskAKBCommand(cli_state_t *cli_state, int8_t *pcWriteBu
                 strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
             }
             break;
-#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6710
+#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6710 || HARDWARE_BT6721
         case ARG_AKB_CAPACITY:
             if (value >= CAPACITY_MIN_RANGE && value <= CAPACITY_MAX_RANGE && (value - (int32_t)value) == 0) {
                 SetCapacityNominalAKBStr(str);

+ 1 - 1
modules/cli/CLI_Commands.h

@@ -55,7 +55,7 @@ typedef enum{
 	ARG_AKB_LIFETIME,
 	ARG_AKB_DATASET,
 	ARG_AKB_UPS_POWER,
-#else if HARDWARE_BT6711 || HARDWARE_BT6711_V1
+#else if HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6721
 	ARG_AKB_CAPACITY,
 	ARG_AKB_VOLT,
 	ARG_AKB_UPS_POWER,

+ 4 - 4
modules/cli/CLI_Parameters.c

@@ -380,7 +380,7 @@ void akb_config_param(int8_t *buf)
     GetUPSVoltCellMaxStr(str, &len);
     strncat(( char * ) buf, str, len);
 
-#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6710
+#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6710 || HARDWARE_BT6721
 
     GetVoltageAKBNominalStr(str, &len);
     strcat(( char * ) buf, "\r\nНоминальное напряжение (В):\t\t");
@@ -619,7 +619,7 @@ void ups_sensor_param(int8_t *buf)
     GetOutputVoltageStr(str, &len);
     strncat(( char * ) buf, str, len);
 
-#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6710
+#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6710 || HARDWARE_BT6721
     GetInputCurrentStr(str, &len);
     strcat(( char * ) buf, "\r\nВходная сила тока (A):\t\t\t");
     strncat(( char * ) buf, str, len);
@@ -637,7 +637,7 @@ void ups_sensor_param(int8_t *buf)
     GetPowerStr(str, &len);
     strncat(( char * ) buf, str, len);
 
-#if HARDWARE_BT6709 || HARDWARE_BT6711 || HARDWARE_BT6711_V1
+#if HARDWARE_BT6709 || HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6721
     strcat(( char * ) buf, "\r\nНагрузка (Режим АКБ):\t\t\t");
     GetLoadAKBModeStr(str, &len);
     strncat(( char * ) buf, str, len);
@@ -683,7 +683,7 @@ void ups_sensor_akb_param(int8_t *buf)
     GetRuntimeStr(str, &len);
     strncat(( char * ) buf, str, len);
 
-#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6710 || HARDWARE_BT6711 || HARDWARE_BT6711_V1
+#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6710 || HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6721
     GetCapacityNominalAKBStr(str, &len);
     strcat(( char * ) buf, "\r\nЕмкость батареи (Ач):\t\t\t");
     strncat(( char * ) buf, str, len);

+ 8 - 8
modules/monitor/ups_monitor.c

@@ -391,7 +391,7 @@ void UPS_TestFinishMonitor(void)
           sprintf(log_string, "Авария(%0.2f Ач)", Ccalc);
           log_event_data(LOG_TEST_ALARM_AKB, log_string);
 	        syslog(SYSLOG_INFORMATIONAL, "Ёмкость АКБ: %s", log_string);
-#if HARDWARE_BT6711 || HARDWARE_BT6711_V1
+#if HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6721
           SNMP_SendUserTrap(BATTERY_FAIL);
 #endif
 #ifdef RELAY_ALARM_AKB
@@ -402,7 +402,7 @@ void UPS_TestFinishMonitor(void)
           sprintf(log_string, "Норма(%0.2f Ач)", Ccalc);
           log_event_data(LOG_TEST_ALARM_AKB, log_string);
 	        syslog(SYSLOG_INFORMATIONAL, "Ёмкость АКБ: %s", log_string);
-#if HARDWARE_BT6711 || HARDWARE_BT6711_V1
+#if HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6721
           SNMP_SendUserTrap(BATTERY_NORM);
 #endif
 #ifdef RELAY_ALARM_AKB
@@ -429,7 +429,7 @@ void UPS_TestFinishMonitor(void)
        log_event_data(LOG_TEST_UPS, log_string);
        syslog(SYSLOG_INFORMATIONAL, "Тест батареи: %s", log_string);
        test_time = 0;
-#if HARDWARE_BT6711 || HARDWARE_BT6711_V1
+#if HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6721
           SNMP_SendUserTrap(TEST_BAT_STOP);
 #endif
 #else
@@ -475,7 +475,7 @@ void UPS_TestFinishMonitor(void)
       printf("Test start\r\n");
       log_event_data(LOG_TEST_UPS, log_string);
       syslog(SYSLOG_INFORMATIONAL, "Тест батареи: %s", log_string);
-#if HARDWARE_BT6711 || HARDWARE_BT6711_V1
+#if HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6721
           SNMP_SendUserTrap(TEST_BAT_RUN);
 #endif
       flUpdateLog = true;
@@ -705,7 +705,7 @@ void UPS_VACoutputLowRangeMonitor(void)
           relay_setup_log(CurrROtype_Sourse, DC_PRESENT, 1);
 #endif
 	        log_event_data(LOG_ALARM_VAC_LOW_OUTPUT, "Авария");
-#if HARDWARE_BT6711 || HARDWARE_BT6711_V1
+#if HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6721
 	        // Отправка трапа о занижении
 	        SNMP_SendUserTrap(VAC_LOW_OUTPUT_ALARM);
 		syslog(SYSLOG_ERROR, "Низкое выходное напряжение (%0.1f В)", VACoutputCurrent);
@@ -728,7 +728,7 @@ void UPS_VACoutputLowRangeMonitor(void)
 	        relay_setup_log(CurrROtype_Sourse, DC_PRESENT, 0);
 #endif
 	        log_event_data(LOG_ALARM_VAC_LOW_OUTPUT, "Норма");
-#if HARDWARE_BT6711 || HARDWARE_BT6711_V1
+#if HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6721
 	        // Отправка трапа о нормализации
 	        SNMP_SendUserTrap(VAC_LOW_OUTPUT_NORM);
 		syslog(SYSLOG_NOTICE, "Выходное напряжение в норме (%0.1f В)", VACoutputCurrent);
@@ -779,7 +779,7 @@ void UPS_VACoutputHighRangeMonitor(void)
           relay_setup_log(CurrROtype_Sourse, DC_PRESENT, 1);
 #endif
 	        log_event_data(LOG_ALARM_VAC_HIGH_OUTPUT, "Авария");
-#if HARDWARE_BT6711 || HARDWARE_BT6711_V1
+#if HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6721
 	        // Отправка трапа о завышении
 	        SNMP_SendUserTrap(VAC_HIGH_OUTPUT_ALARM);
 		syslog(SYSLOG_ERROR, "Высокое входное напряжение (%0.1f В)", VACoutputCurrent);
@@ -801,7 +801,7 @@ void UPS_VACoutputHighRangeMonitor(void)
 	        relay_setup_log(CurrROtype_Sourse, DC_PRESENT, 0);
 #endif
 	        log_event_data(LOG_ALARM_VAC_HIGH_OUTPUT, "Норма");
-#if HARDWARE_BT6711 || HARDWARE_BT6711_V1       
+#if HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6721      
 	        // Отправка трапа о нормализации
 	        SNMP_SendUserTrap(VAC_HIGH_OUTPUT_NORM);
 		syslog(SYSLOG_NOTICE, "Выходное напряжение в норме (%0.1f В)", VACoutputCurrent);

+ 1 - 1
modules/settings_api_bt6711.c

@@ -9,7 +9,7 @@
  * XX.XX.XXXX   1.0.0    Telenkov D.A.  First release.
  *******************************************************************************
  */
-#if HARDWARE_BT6711 || HARDWARE_BT6711_V1
+#if HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6721
 #include "stm32f4xx.h"  
 #include "settings_api.h"
 #include "common_config.h"

+ 1 - 1
peripheral_modules/inc/spi_flash.h

@@ -20,7 +20,7 @@
 
 // SPI flash partitioning layout
 #define LOG_FLASH_SECTOR_OFFSET	4
-#if HARDWARE_BT6711 || HARDWARE_BT6711_V1
+#if HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6721
 // assuming 512 sectors
 #define ALARM_LOG_FLASH_SECTOR_OFFSET	174
 #define SECTOR_COUNT 170

+ 3 - 0
projects/gcc/tools/version.sh

@@ -28,6 +28,9 @@ SRC=$'#define HARDWARE_BT6711 1\r\n#include <stdio.h>\r\n#include "common_config
 elif [ "$1" = "bt6711_v1" ];
 then
 SRC=$'#define HARDWARE_BT6711_V1 1\r\n#include <stdio.h>\r\n#include "common_config.h"\r\n'
+elif [ "$1" = "bt6721" ];
+then
+SRC=$'#define HARDWARE_BT6721 1\r\n#include <stdio.h>\r\n#include "common_config.h"\r\n'
 fi
 SRC+=$'int main(int argc, char *argv[]) {printf("%s", VERSION);}'
 echo "$SRC" > $BIN.c