board_bt6710.h 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. #ifndef BOARD_BT6710_H
  2. #define BOARD_BT6710_H
  3. #define RS232_UART_TABLE(X) \
  4. X( TXDINT, GPIOD, 5, AF_USART2) \
  5. X( RXDINT, GPIOD, 6, AF_USART2)
  6. #define SERVICE_RS232_UART_TABLE(X) \
  7. X( SERVICE_TXDINT, GPIOA, 9, AF_USART1) \
  8. X( SERVICE_RXDINT, GPIOA, 10, AF_USART1)
  9. #define RS485_UART_TABLE(X) \
  10. X( RS485_TXDINT, GPIOD, 8, AF_USART3) \
  11. X( RS485_RXDINT, GPIOD, 9, AF_USART3)
  12. #define SPI2_TABLE(X) \
  13. X( SPI2_MISO, GPIOB, 14, AF_SPI2) \
  14. X( SPI2_MOSI, GPIOB, 15, AF_SPI2) \
  15. X( SPI2_SCK, GPIOB, 10, AF_SPI2) \
  16. X( SPI2_NSS, GPIOB, 9, GPIO_OUT | GPIO_SET)
  17. #define ONEWIRE_DATA_TABLE(X) \
  18. X( WDATA1, GPIOA, 0, GPIO_OUT | GPIO_SET)\
  19. X( WDATA2, GPIOC, 12, GPIO_OUT | GPIO_SET)
  20. /* X( WDATA1, GPIOA, 0, AF_USART4)\
  21. X( WDATA2, GPIOC, 12, AF_USART5)*/
  22. #define MCU_PERIPHERALS(X) \
  23. SERVICE_RS232_UART_TABLE(X)\
  24. RS232_UART_TABLE(X) \
  25. RS485_UART_TABLE(X) \
  26. ONEWIRE_DATA_TABLE(X) \
  27. SPI2_TABLE(X)
  28. #define DI_TABLE(X) \
  29. X( DIN1, GPIOE, 0, GPIO_IN)\
  30. X( DIN2, GPIOE, 1, GPIO_IN)
  31. #define RELAYS(X) \
  32. X( DOUT1, GPIOC, 3, GPIO_OUT)\
  33. X( DOUT2, GPIOC, 2, GPIO_OUT)
  34. #define LEDS(X) \
  35. X( LED_INIT_G, GPIOA, 4, GPIO_OUT | GPIO_INV) \
  36. X( LED_INIT_R, GPIOA, 3, GPIO_OUT | GPIO_INV) \
  37. X( LED_STAT_G, GPIOE, 3, GPIO_OUT | GPIO_INV) \
  38. X( LED_STAT_R, GPIOE, 2, GPIO_OUT | GPIO_INV) \
  39. #define JUMPERS(X) \
  40. X( MODE_JUMPER, GPIOE, 6, GPIO_IN_PU | GPIO_INV)
  41. #define BUTTONS(X) \
  42. X( KEY_DEF, GPIOE, 7, GPIO_IN )//| GPIO_INV
  43. #define WDG_PIN(X) \
  44. X( _WDG, GPIOD, 0, GPIO_OUT)
  45. #define GPIO_TABLE(X) \
  46. MCU_PERIPHERALS(X) \
  47. DI_TABLE(X) \
  48. RELAYS(X) \
  49. LEDS(X) \
  50. JUMPERS(X) \
  51. BUTTONS(X) \
  52. WDG_PIN(X)
  53. /**
  54. * @brief Маркер ревизии платы для валидации *.bin файла
  55. *
  56. */
  57. #define HW_REV "BT-6710"
  58. /**
  59. * @brief Версия прошивки
  60. */
  61. #define VERSION "1.3"
  62. /**
  63. * brief Текст сообщения при запуске CLI
  64. */
  65. #define TELNET_CLI_WELCOME_MESSAGE "BT-6710 command server - connection accepted.\r\nlogin:"
  66. #define RTC_ENABLE //RTC clock
  67. #define LED_ENABLE //LED индикация
  68. #define BUTTON_ENABLE //Кнопки
  69. #define DINS_ENABLE //Дискретные входы
  70. #define NET_ENABLE //Ethernet сеть
  71. #define HTTP_SERVER_ENABLE //Веб сервер
  72. #define SNMP_ENABLE //SNMP протокол
  73. #define NOTIFICATION_CONTROL_ENABLE //Управление уведомлениями
  74. #define TELNET_ENABLE //Telnet сервер
  75. #define SSH_ENABLE //SSH сервер
  76. #define UPS_ENABLE //UPS
  77. #define PORTGW_ENABLE //Прозрачный порт
  78. #define AM2301_SENSOR_ENABLE //AM2301 - датчик влажности и температуры
  79. //#define DALLAS_SENSOR_ENABLE //DS18B20
  80. //#define DEBUG_FREERTOS //Мониторинг FreeRtos
  81. #define SETTINGS_TABLE \
  82. XSETTING( SNMP_t, sSnmp, SETTINGS_SetSnmpDef, ALL_DEFAULT ) \
  83. XSETTING( AUTH_t, sAuth[MAX_WEB_USERS], SETTINGS_SetServiceDef, PART_DEFAULT_2 ) \
  84. XSETTING( SNTP_t, sSNTP, SETTINGS_SetSntpDef, ALL_DEFAULT ) \
  85. XSETTING( DIN_Settings_t, sDINs[INPUTS_TOTAL_COUNT], SETTINGS_SetDINSDef, ALL_DEFAULT ) \
  86. XSETTING( UPS_Setting_t, UPS_Setting, SETTINGS_SetUPSSettingsDef, ALL_DEFAULT ) \
  87. XSETTING( ALARM_MNGR_t, sAlarmManager, SETTINGS_SetAlarmManagerDef, ALL_DEFAULT ) \
  88. XSETTING( TELNET_t, sTelnet, SETTINGS_SetTelnetDef, PART_DEFAULT_1 ) \
  89. XSETTING( SSH_t, sSSH, SETTINGS_SetSSHDef, PART_DEFAULT_1 ) \
  90. XSETTING( uint8_t, sFlagNotification[ALL_TRAPS], SETTINGS_SetFlagNotificationDef, ALL_DEFAULT ) \
  91. XSETTING( PORTGW_t, sPortGw, SETTINGS_SetPortGwDef, ALL_DEFAULT ) \
  92. XSETTING( TEMP_COTROL_t, sTempControl[MAX_T_SENSORS], SETTINGS_SetTempControlDef, ALL_DEFAULT ) \
  93. #define SNMP_DEV_ROOT_OID 9
  94. #define MAX_IRQ_HANDLERS 4
  95. #define WEB_SETTINGS_TAGS_TABLE \
  96. XJSON_SETTINGS_TAG("read_community", GetReadCommunity, SetReadCommunity) \
  97. XJSON_SETTINGS_TAG("write_community", GetWriteCommunity, SetWriteCommunity) \
  98. XJSON_SETTINGS_TAG("managerIP", GetManagerIp, SetManagerIp) \
  99. XJSON_SETTINGS_TAG("managerIP2", GetManagerIp2, SetManagerIp2) \
  100. XJSON_SETTINGS_TAG("managerIP3", GetManagerIp3, SetManagerIp3) \
  101. XJSON_SETTINGS_TAG("managerIP4", GetManagerIp4, SetManagerIp4) \
  102. XJSON_SETTINGS_TAG("managerIP5", GetManagerIp5, SetManagerIp5) \
  103. XJSON_SETTINGS_TAG("di1", GetDIN0TypeActStr, SetDIN0TypeActStr) \
  104. XJSON_SETTINGS_TAG("di_name1", GetDIN0NameStr, SetDIN0NameStr) \
  105. XJSON_SETTINGS_TAG("di2", GetDIN1TypeActStr, SetDIN1TypeActStr) \
  106. XJSON_SETTINGS_TAG("di_name2", GetDIN1NameStr, SetDIN1NameStr) \
  107. XJSON_SETTINGS_TAG("type_ts1", GetTS1locationStr, SetTS1locationStr) \
  108. XJSON_SETTINGS_TAG("type_ts2", GetTS2locationStr, SetTS2locationStr) \
  109. XJSON_SETTINGS_TAG("ipaddr", GetIpStr, SetIPStr) \
  110. XJSON_SETTINGS_TAG("gw", GetGatewayStr, SetGatewayStr) \
  111. XJSON_SETTINGS_TAG("mask", GetMaskStr, SetMaskStr) \
  112. XJSON_SETTINGS_TAG("dhcp", GetDhcpStateStr, SetDhcpStateStr) \
  113. XJSON_SETTINGS_TAG("tn_port", GetTelnetPortStr, SetTelnetPortStr) \
  114. XJSON_SETTINGS_TAG("tn_enabled", GetTelnetEnableStateStr, SetTelnetEnableStateStr) \
  115. XJSON_SETTINGS_TAG("ssh_port", GetSSHPortStr, SetSSHPortStr) \
  116. XJSON_SETTINGS_TAG("ssh_enabled", GetSSHEnableStateStr, SetSSHEnableStateStr) \
  117. XJSON_SETTINGS_TAG("pgw_en", GetPortGwEnabledStr, SetPortGwEnabledStr) \
  118. XJSON_SETTINGS_TAG("pgw_port", GetPortGwPortnumStr, SetPortGwPortnumStr) \
  119. XJSON_SETTINGS_TAG("pgw_baud", GetPortGwBaudStr, SetPortGwBaudStr) \
  120. XJSON_SETTINGS_TAG("pgw_par", GetPortGwParityStr, SetPortGwParityStr) \
  121. XJSON_SETTINGS_TAG("pgw_ndata", GetPortGwDatabitsStr, SetPortGwDatabitsStr) \
  122. XJSON_SETTINGS_TAG("pgw_nstop", GetPortGwStopbitsStr, SetPortGwStopbitsStr) \
  123. XJSON_SETTINGS_TAG("date", GetDateStr, SetDateStr) \
  124. XJSON_SETTINGS_TAG("time", GetTimeStr, SetTimeWebStr) \
  125. XJSON_SETTINGS_TAG("ntp", GetSntpStateStr, SetSntpStateStr) \
  126. XJSON_SETTINGS_TAG("ntpservip", GetSntpServerIpStr, SetSntpServerIpStr) \
  127. XJSON_SETTINGS_TAG("utc", GetSntpTimeZoneStr, SetSntpTimeZoneStr) \
  128. XJSON_SETTINGS_TAG("utm", GetUnixTimeStr, SetEmptyFuncStr) \
  129. XJSON_SETTINGS_TAG("lastsynctime", GetSntpLastDataStr, SetEmptyFuncStr) \
  130. XJSON_SETTINGS_TAG("ups_cell_min", GetUPSVoltCellMinStr, SetUPSVoltCellMinStr) \
  131. XJSON_SETTINGS_TAG("ups_cell_max", GetUPSVoltCellMaxStr, SetUPSVoltCellMaxStr) \
  132. XJSON_SETTINGS_TAG("mainvolt_high", GetVACAlarmHighRangeStr, SetVACAlarmHighRangeStr) \
  133. XJSON_SETTINGS_TAG("mainvolt_low", GetVACAlarmLowRangeStr, SetVACAlarmLowRangeStr) \
  134. XJSON_SETTINGS_TAG("mainvolt_hist", GetVACAlarmHisteStr, SetVACAlarmHisteStr) \
  135. XJSON_SETTINGS_TAG("temp_high", GetTemperatureAlarmHighRangeStr, SetTemperatureAlarmHighRangeStr) \
  136. XJSON_SETTINGS_TAG("temp_low", GetTemperatureAlarmLowRangeStr, SetTemperatureAlarmLowRangeStr) \
  137. XJSON_SETTINGS_TAG("temp_hist", GetTemperatureAlarmHisteStr, SetTemperatureAlarmHisteStr) \
  138. XJSON_SETTINGS_TAG("case_temp_high", GetTemperatureCabinetAlarmHighRangeStr, SetTemperatureCabinetAlarmHighRangeStr) \
  139. XJSON_SETTINGS_TAG("case_temp_low", GetTemperatureCabinetAlarmLowRangeStr, SetTemperatureCabinetAlarmLowRangeStr) \
  140. XJSON_SETTINGS_TAG("case_temp_hist", GetTemperatureCabinetAlarmHisteStr, SetTemperatureCabinetAlarmHisteStr) \
  141. XJSON_SETTINGS_TAG("ups_cell_min", GetUPSVoltCellMinStr, SetUPSVoltCellMinStr) \
  142. XJSON_SETTINGS_TAG("ups_cell_max", GetUPSVoltCellMaxStr, SetUPSVoltCellMaxStr) \
  143. XJSON_SETTINGS_TAG("bat_prod", GetDataSetAKBStr, SetDataSetAKBStr) \
  144. XJSON_SETTINGS_TAG("bat_exp", GetLifeTimeAKBStr, SetLifeTimeAKBStr) \
  145. XJSON_SETTINGS_TAG("bat_cap", GetCapacityNominalAKBStr, SetCapacityNominalAKBStr) \
  146. XJSON_SETTINGS_TAG("bat_charge", GetVoltageAKBNominalStr, SetVoltageAKBNominalStr) \
  147. XJSON_SETTINGS_TAG("ups_max_power", GetUPSPowerStr, SetUPSPowerStr) \
  148. XJSON_SETTINGS_TAG("netsettings_changed",GetWebReinitFlag, SetEmptyFuncStr) \
  149. #define WEB_PARAMS_TAGS_TABLE \
  150. XJSON_PARAMS_TAG("AC", GetInputVoltageStr) \
  151. XJSON_PARAMS_TAG("DC", GetOutputVoltageStr) \
  152. XJSON_PARAMS_TAG("in_freq", GetInputFreqStr) \
  153. XJSON_PARAMS_TAG("out_freq", GetOutputFreqStr) \
  154. XJSON_PARAMS_TAG("pwr", GetPowerStr) \
  155. XJSON_PARAMS_TAG("bat_rem_cap", GetBatCapacityStr) \
  156. XJSON_PARAMS_TAG("inner_temp", GetInternalTempStr) \
  157. XJSON_PARAMS_TAG("bat_time_left", GetRuntimeStr) \
  158. XJSON_PARAMS_TAG("in_cur", GetInputCurrentStr) \
  159. XJSON_PARAMS_TAG("out_cur", GetOutputCurrentStr) \
  160. XJSON_PARAMS_TAG("bat_volt", GetVoltageAKBtStr) \
  161. XJSON_PARAMS_TAG("bat_cap", GetCapacityNominalAKBStr) \
  162. XJSON_PARAMS_TAG("bat_exp", GetDataNextChangeAKBStrRU) \
  163. XJSON_PARAMS_TAG("case_temp", GetTempCaseStr) \
  164. XJSON_PARAMS_TAG("hum", GetHumidityCaseStr) \
  165. XJSON_PARAMS_TAG("di1", GetDIN0StatusStr) \
  166. XJSON_PARAMS_TAG("di_name1", GetDIN0NameStr) \
  167. XJSON_PARAMS_TAG("di2", GetDIN1StatusStr) \
  168. XJSON_PARAMS_TAG("di_name2", GetDIN1NameStr) \
  169. XJSON_PARAMS_TAG("m_alarm", GetAlarmMonitorStr) \
  170. XJSON_PARAMS_TAG("u_alarm", GetAlarmStr) \
  171. XJSON_PARAMS_TAG("netsettings_changed",GetWebReinitFlag) \
  172. #define TRAPS_TABLE \
  173. XTRAP(FW_VERSION_UPDATE, 1, true, GetVersionStr) \
  174. XTRAP(FW_VERSION_UPDATED, 1, true, GetVersionStr) \
  175. XTRAP(DEVICE_RESTORED, 1, true, GetVersionStr) \
  176. XTRAP(DEVICE_REBOOTED, 1, true, GetVersionStr) \
  177. XTRAP(DI0_NORM, 5, true, GetDIN0StatusStr) \
  178. XTRAP(DI0_ALARM, 5, true, GetDIN0StatusStr) \
  179. XTRAP(DI1_NORM, 6, true, GetDIN1StatusStr) \
  180. XTRAP(DI1_ALARM, 6, true, GetDIN1StatusStr) \
  181. XTRAP(BATTERY_HIGH_TEMPERATURE_NORM, 10, true, GetInternalTempStr) \
  182. XTRAP(BATTERY_HIGH_TEMPERATURE_ALARM, 10, true, GetInternalTempStr) \
  183. XTRAP(BATTERY_LOW_TEMPERATURE_NORM, 10, true, GetInternalTempStr) \
  184. XTRAP(BATTERY_LOW_TEMPERATURE_ALARM, 10, true, GetInternalTempStr) \
  185. XTRAP(LINE_ALARM, 12, true, GetInputVoltageStr) \
  186. XTRAP(LINE_NORM, 12, true, GetInputVoltageStr) \
  187. XTRAP(LOW_BAT_ALARM, 15, true, GetBatCapacityStr) \
  188. XTRAP(LOW_BAT_NORM, 15, true, GetBatCapacityStr) \
  189. XTRAP(CABINET_HIGH_TEMPERATURE_ALARM, 9, true, GetTempCaseStr) \
  190. XTRAP(CABINET_HIGH_TEMPERATURE_NORM, 9, true, GetTempCaseStr) \
  191. XTRAP(CABINET_LOW_TEMPERATURE_ALARM, 9, true, GetTempCaseStr) \
  192. XTRAP(CABINET_LOW_TEMPERATURE_NORM, 9, true, GetTempCaseStr) \
  193. XTRAP(CONNECT_MONITOR_ALARM, 17, true, GetConnectMonitorStr) \
  194. XTRAP(CONNECT_MONITOR_NORM, 17, true, GetConnectMonitorStr) \
  195. XTRAP(BATTERY_CONNECT_ALARM, 15, true, GetBatCapacityStr) \
  196. XTRAP(BATTERY_CONNECT_NORM, 15, true, GetBatCapacityStr) \
  197. XTRAP(BATTERY_CHANGE_ALARM, 1, true, GetDataNextChangeAKBStr) \
  198. XTRAP(BATTERY_CHANGE_MORM, 1, true, GetDataNextChangeAKBStr) \
  199. typedef enum
  200. {
  201. FW_VERSION_UPDATE = 1,
  202. FW_VERSION_UPDATED,
  203. DEVICE_RESTORED,
  204. DEVICE_REBOOTED,
  205. DI0_NORM,
  206. DI0_ALARM,
  207. DI1_NORM,
  208. DI1_ALARM,
  209. BATTERY_HIGH_TEMPERATURE_NORM,
  210. BATTERY_HIGH_TEMPERATURE_ALARM,
  211. BATTERY_LOW_TEMPERATURE_NORM,
  212. BATTERY_LOW_TEMPERATURE_ALARM,
  213. LINE_ALARM,
  214. LINE_NORM,
  215. LOW_BAT_ALARM,
  216. LOW_BAT_NORM,
  217. CABINET_HIGH_TEMPERATURE_ALARM,
  218. CABINET_HIGH_TEMPERATURE_NORM,
  219. CABINET_LOW_TEMPERATURE_ALARM,
  220. CABINET_LOW_TEMPERATURE_NORM,
  221. CONNECT_MONITOR_ALARM,
  222. CONNECT_MONITOR_NORM,
  223. BATTERY_CONNECT_ALARM,
  224. BATTERY_CONNECT_NORM,
  225. BATTERY_CHANGE_ALARM,
  226. BATTERY_CHANGE_MORM,
  227. ALL_TRAPS
  228. } TRAP_LIST_t;
  229. typedef enum {
  230. LOG_SYSTEM_BOOT = 0x00, // device booted
  231. LOG_SYSTEM_DEFCONFIG, // default config applied
  232. LOG_UPDATE_SOFT,
  233. LOG_TURN_ON, //
  234. LOG_PSW_CHANGE, //
  235. LOG_SETTING_SAVE, //
  236. LOG_LOGIN_TELNET, //
  237. LOG_LOGIN_SSH,
  238. LOG_LOGIN, //
  239. LOG_TEST_UPS, //
  240. LOG_SHUTDOWN_UPS,
  241. LOG_ALARM_DIO,
  242. LOG_ALARM_DI1,
  243. LOG_ALARM_VAC_LOW_OUTPUT,
  244. LOG_ALARM_VAC_HIGH_OUTPUT,
  245. LOG_ALARM_HIGH_TEMP,
  246. LOG_ALARM_LOW_TEMP,
  247. LOG_ALARM_HIGH_CABINET_TEMP,
  248. LOG_ALARM_LOW_CABINET_TEMP,
  249. LOG_ALARM_LINE,
  250. LOG_ALARM_LOW_BAT,
  251. LOG_ALARM_UPS,
  252. LOG_ALARM_AKB,
  253. LOG_ALARM_SENSOR_AKB,
  254. LOG_ALARM_SENSOR_CABINET,
  255. LOG_ALARM_CHANGE_AKB,
  256. LOG_VALUE,
  257. LOG_NONE,
  258. } log_type_t;
  259. #define TEST_AKB_FINISH_MONITOR
  260. #define LINE_FAIL_MONITOR
  261. #define VAC_OUT_MONITOR
  262. #define LOW_BAT_MONITOR
  263. #define SENSOR_TEMP_MONITOR
  264. #define TEMP_AKB_MONITOR
  265. #define TEMP_CABINET_MONITOR
  266. #define BAT_CONNECT_MONITOR
  267. #define UPS_CONNECT_MONITOR
  268. #define DIN_MONITOR
  269. #define AKB_CHANGE_MONITOR
  270. #define MONITOR_TABLE \
  271. XMONITOR(UPS_TestFinishMonitor, (UPS.Present == UPS_CONNECTED)) \
  272. XMONITOR(UPS_LineFailMonitor, (UPS.Present == UPS_CONNECTED)) \
  273. XMONITOR(UPS_VACoutputLowRangeMonitor, (UPS.Present == UPS_CONNECTED)) \
  274. XMONITOR(UPS_VACoutputHighRangeMonitor, (UPS.Present == UPS_CONNECTED)) \
  275. XMONITOR(UPS_LowBatMonitor, (UPS.Present == UPS_CONNECTED)) \
  276. XMONITOR(sensorTemperatureMonitor, 1) \
  277. XMONITOR(UPS_TemperatureHighRangeMonitor, (UPS.Present == UPS_CONNECTED || sSettings.sTempControl[0].type_sensor == TS_AKB || sSettings.sTempControl[1].type_sensor == TS_AKB)) \
  278. XMONITOR(UPS_TemperatureLowRangeMonitor, (UPS.Present == UPS_CONNECTED || sSettings.sTempControl[0].type_sensor == TS_AKB || sSettings.sTempControl[1].type_sensor == TS_AKB)) \
  279. XMONITOR(Cabinet_TemperatureHighRangeMonitor, 1) \
  280. XMONITOR(Cabinet_TemperatureLowRangeMonitor, 1) \
  281. XMONITOR(UPS_BatteryConnectMonitor, (UPS.Present == UPS_CONNECTED)) \
  282. XMONITOR(UPS_ConnectMonitor, 1) \
  283. XMONITOR(UPS_DI0Monitor, 1) \
  284. XMONITOR(AKB_Change_Monitor, 1) \
  285. #define T_SENSOR_TABLE \
  286. XTSENSOR(T_SENSOR_1, WDATA1, DALLAS_SENSOR_1_USART) \
  287. XTSENSOR(T_SENSOR_2, WDATA2, DALLAS_SENSOR_2_USART) \
  288. typedef enum
  289. {
  290. T_SENSOR_1 = 0,
  291. T_SENSOR_2,
  292. MAX_T_SENSORS
  293. } t_sensor_list_t;
  294. #define LED_INIT_OK LED_INIT_G
  295. #define LED_INIT_ERR LED_INIT_R
  296. #define LED_ALARM LED_STAT_R
  297. #define SERVICE_CONTROLLER_IP "192.168.0.10"
  298. #endif /* BOARD_PRS_H */