| 
					
				 | 
			
			
				@@ -684,8 +684,12 @@ void GetROTypeActStr(char *str, uint8_t *len, uint8_t num) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   */
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void GetRO0TypeActStr(char *str, uint8_t *len)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    sprintf(str, "%d", sSettings.sRelays[DOUT1].ro_type_source);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    *len = strlen(str);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    uint8_t num = 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (num < OUTPUTS_TOTAL_COUNT) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      GetROTypeActStr(str, len, num);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      *len = 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /**
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -693,29 +697,36 @@ void GetRO0TypeActStr(char *str, uint8_t *len) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   */
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void GetRO1TypeActStr(char *str, uint8_t *len)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    sprintf(str, "%d", sSettings.sRelays[DOUT2].ro_type_source);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    *len = strlen(str);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    uint8_t num = 1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (num < OUTPUTS_TOTAL_COUNT) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      GetROTypeActStr(str, len, num);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      *len = 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#ifdef HARDWARE_BT6707
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /**
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   * @brief  Источник срабатывания реле
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   */
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void GetRO2TypeActStr(char *str, uint8_t *len)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    sprintf(str, "%d", sSettings.sRelays[DOUT3].ro_type_source);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    *len = strlen(str);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    uint8_t num = 2;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (num < OUTPUTS_TOTAL_COUNT) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      GetROTypeActStr(str, len, num);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      *len = 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /**
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   * @brief  Состояние релейного выхода
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   */
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void GetDOUTStatusStr(char *str, uint8_t *len, uint8_t num)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if defined HARDWARE_BT6707
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef RELAY_NC
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sprintf(str, "%d", (get_state_din_outs(DOUT1 + num) ^ 1));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#elif HARDWARE_BT6703
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef RELAY_NO
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sprintf(str, "%d", get_state_din_outs(DOUT1 + num));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #endif
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -727,13 +738,14 @@ void GetDOUTStatusStr(char *str, uint8_t *len, uint8_t num) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   */
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void GetDOUTStatusStrRU(char *str, uint8_t *len, uint8_t num)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if defined HARDWARE_BT6707
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef RELAY_NC
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (get_state_din_outs(DOUT1 + num) ^ 1) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sprintf(str, "Замкнут");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sprintf(str, "Разомкнут");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#elif HARDWARE_BT6703
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif   
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef RELAY_NO
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (get_state_din_outs(DOUT1 + num)) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sprintf(str, "Замкнут");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } else {
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -749,12 +761,12 @@ void GetDOUTStatusStrRU(char *str, uint8_t *len, uint8_t num) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   */
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void GetDOUT0StatusStr(char *str, uint8_t *len)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if defined HARDWARE_BT6707
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    sprintf(str, "%d", (get_state_din_outs(DOUT1) ^ 1));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#elif HARDWARE_BT6703
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    sprintf(str, "%d", get_state_din_outs(DOUT1));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    *len = strlen(str);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    uint8_t num = 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (num < OUTPUTS_TOTAL_COUNT) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      GetDOUTStatusStr(str, len, num);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      *len = 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /**
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -762,25 +774,27 @@ void GetDOUT0StatusStr(char *str, uint8_t *len) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   */
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void GetDOUT1StatusStr(char *str, uint8_t *len)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if defined HARDWARE_BT6707
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    sprintf(str, "%d", (get_state_din_outs(DOUT2) ^ 1));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#elif HARDWARE_BT6703
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    sprintf(str, "%d", get_state_din_outs(DOUT2));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    *len = strlen(str);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    uint8_t num = 1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (num < OUTPUTS_TOTAL_COUNT) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      GetDOUTStatusStr(str, len, num);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      *len = 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if defined HARDWARE_BT6707
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /**
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   * @brief  Состояние релейного выхода
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   */
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void GetDOUT2StatusStr(char *str, uint8_t *len)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    sprintf(str, "%d", (get_state_din_outs(DOUT3) ^ 1));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    *len = strlen(str);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    uint8_t num = 2;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (num < OUTPUTS_TOTAL_COUNT) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      GetDOUTStatusStr(str, len, num);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      *len = 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #endif
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // ************************************************************************** //
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //                             Информация
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2558,7 +2572,7 @@ void SetDIN1NameStr(char *str) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   */
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void SetROTypeActStr(char *str, uint8_t num)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    static uint8_t OldROtype_Sourse[2] = {0};
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    static uint8_t OldROtype_Sourse[OUTPUTS_TOTAL_COUNT] = {0};
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     OldROtype_Sourse[num] = sSettings.sRelays[num].ro_type_source;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2574,7 +2588,10 @@ void SetROTypeActStr(char *str, uint8_t num) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   */
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void SetRO1TypeActStr(char *str)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  SetROTypeActStr(str, 0);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  uint8_t num = 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (num < OUTPUTS_TOTAL_COUNT) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    SetROTypeActStr(str, num);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /**
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2582,17 +2599,23 @@ void SetRO1TypeActStr(char *str) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   */
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void SetRO2TypeActStr(char *str)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  SetROTypeActStr(str, 1);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  uint8_t num = 1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (num < OUTPUTS_TOTAL_COUNT) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    SetROTypeActStr(str, num);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#ifdef HARDWARE_BT6707
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /**
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   * @brief  Источник срабатывания реле 3
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   */
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void SetRO3TypeActStr(char *str)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  SetROTypeActStr(str, 2);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    uint8_t num = 2;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (num < OUTPUTS_TOTAL_COUNT) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      SetROTypeActStr(str, num);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /**
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   * @brief
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   */
 
			 |