Bläddra i källkod

[BT-6703]add check sn (different relay config)

balbekova 4 år sedan
förälder
incheckning
bcdb9b8200

+ 9 - 1
config/board_bt6703.h

@@ -23,9 +23,17 @@ SPI2_TABLE(X)
 #define DI_TABLE(X)                  \
 X( DIN1,       GPIOA,   0, GPIO_IN)
 
+#ifdef BT6702_SERVICE
 #define RELAYS(X) \
 X( DOUT1,      GPIOE,  3, GPIO_OUT)\
-X( DOUT2,      GPIOE,  4, GPIO_OUT)
+X( DOUT2,      GPIOE,  4, GPIO_OUT) \
+X( DOUT_PREV_VER,      GPIOE,  5, GPIO_OUT)
+#else
+#define RELAYS(X) \
+X( DOUT1,      GPIOE,  3, GPIO_OUT)\
+X( DOUT2,      GPIOE,  4, GPIO_OUT) 
+#endif 
+
 
 #define LEDS(X) \
 X( LED_INIT_R,  GPIOA,  4,  GPIO_OUT | GPIO_INV) \

+ 152 - 0
modules/d_inouts/d_inouts.c

@@ -122,3 +122,155 @@ void d_inouts_task(void *arg) {
 }
 #endif
 
+#if defined HARDWARE_BT6703
+char sn_bt_6702[] = 
+"7030102\
+7030105\
+7030093\
+7030103\
+7030109\
+7030091\
+7030106\
+7030099\
+7030089\
+7030114\
+7030110\
+7030111\
+7030085\
+7030112\
+7030069\
+7030090\
+7030113\
+7030092\
+7030097\
+7030100\
+7030108\
+7030115\
+7030116\
+7030101\
+7030117\
+7030120\
+7030118\
+7030086\
+7030104\
+7030119\
+7030009\
+7030030\
+7030051\
+7030019\
+7030035\
+7030065\
+7030029\
+7030094\
+7030075\
+7030040\
+7030046\
+7030006\
+7030052\
+7030068\
+7030045\
+7030059\
+7030026\
+7030084\
+7030063\
+7030080\
+7030032\
+7030077\
+7030072\
+7030011\
+7030096\
+7030018\
+7030034\
+7030047\
+7030060\
+7030039\
+7030082\
+7030001\
+7030013\
+7030098\
+7030024\
+7030073\
+7030004\
+7030025\
+7030062\
+7030010\
+7030016\
+7030053\
+7030057\
+7030066\
+7030021\
+7030022\
+7030050\
+7030079\
+7030064\
+7030043\
+7030054\
+7030038\
+7030070\
+7030081\
+7030015\
+7030061\
+7030074\
+7030044\
+7030027\
+7030087\
+7030056\
+7030095\
+7030014\
+7030012\
+7030083\
+7030048\
+7030107\
+7030017\
+7030031\
+7030007\
+7030033\
+7030088\
+7030042\
+7030076\
+7030023\
+7030008\
+7030058\
+7030003\
+7030020\
+7030049\
+7030041\
+7030002\
+7030037\
+7030055\
+7030036\
+7030071\
+7030067\
+7030078\
+7030028\
+7030005\
+";
+
+#include "parameters.h"
+
+void check_outputs_config (void)
+{
+	char *equivalent = NULL;
+	char str[16];
+	uint8_t len = 0;
+
+	memset(str, 0, sizeof(str));
+	GetSerialNumberStr(str, &len);
+	equivalent = strstr(sn_bt_6702, str);
+	if (equivalent != 0) {
+	 	gpio_pins[DOUT1].pin = 4;
+		gpio_pins[DOUT2].pin = 5;
+	 	gpio_hw_config_pin(gpio_pins[DOUT1].port, gpio_pins[DOUT1].pin, GPIO_MODE_OUT_CFG |
+							((gpio_pins[DOUT1].flags & GPIO_OD) ? 
+								GPIO_TYPE_OD_CFG : GPIO_TYPE_PP_CFG) |
+							GPIO_SPEED_HIGH_CFG);
+		gpio_set(DOUT1, gpio_pins[DOUT1].flags & GPIO_SET);
+	 	gpio_hw_config_pin(gpio_pins[DOUT2].port, gpio_pins[DOUT2].pin, GPIO_MODE_OUT_CFG |
+							((gpio_pins[DOUT2].flags & GPIO_OD) ? 
+								GPIO_TYPE_OD_CFG : GPIO_TYPE_PP_CFG) |
+							GPIO_SPEED_HIGH_CFG);
+		gpio_set(DOUT2, gpio_pins[DOUT2].flags & GPIO_SET);
+	}
+}
+#endif
+

+ 5 - 0
modules/d_inouts/d_inouts.h

@@ -1,5 +1,6 @@
 #ifndef D_INOUTS_H
 #include "board.h"
+#include "common_config.h"
 #include <stdbool.h>
 #include <stdint.h>
 #include <stdlib.h>
@@ -31,5 +32,9 @@ void set_state_douts(gpio_t pin, uint8_t value);
 #ifdef DINS_ENABLE || DOUTS_ENABLE
 void  d_inouts_task(void *arg);
 
+#endif
+
+#if defined HARDWARE_BT6703
+void check_outputs_config(void);
 #endif
 #endif /* D_INOUTS_H */

+ 35 - 0
service_hw/Commands/bt_6701_commands.c

@@ -160,6 +160,11 @@ void Test_DRY(void)
 #endif
     
     for (uint8_t i = 0; i < OUTPUTS_TOTAL_COUNT; i ++) {
+#ifdef HARDWARE_BT6703
+        if(i == 2) { // функционал определяющий аппаратную часть контроллера BT-6703 (выпущено 120 шт. переделанных из BT-6702, различия в релейных выходах)
+          break;
+        }
+#endif 
       vTaskDelay(100);
       inputState = get_state_din_outs(DIN1);
     
@@ -168,9 +173,24 @@ void Test_DRY(void)
       vTaskDelay(100);
           
       if (get_state_din_outs(DIN1) == inputState) {
+#ifdef HARDWARE_BT6703
+          if(i == 0) {
+            set_state_douts((DOUT1 + 2), start_state);
+
+            vTaskDelay(100);
+                
+            if (get_state_din_outs(DIN1) == inputState) {
+                printf("DRY FAIL\r\n");
+                TEST_SetTest(TEST_WAIT);
+                return;
+            }
+          } else
+#endif
+        {
           printf("DRY FAIL\r\n");
           TEST_SetTest(TEST_WAIT);
           return;
+        }
       }  
 
       set_state_douts((DOUT1 + i), end_state);
@@ -178,9 +198,24 @@ void Test_DRY(void)
       vTaskDelay(100);
       
       if (get_state_din_outs(DIN1) != inputState) {
+#ifdef HARDWARE_BT6703
+          if(i == 0) {
+            set_state_douts((DOUT1 + 2), end_state);
+
+            vTaskDelay(100);
+                
+            if (get_state_din_outs(DIN1) == inputState) {
+                printf("DRY FAIL\r\n");
+                TEST_SetTest(TEST_WAIT);
+                return;
+            }
+          } else
+#endif
+        {
           printf("DRY FAIL\r\n");
           TEST_SetTest(TEST_WAIT);
           return;
+        }
       }  
     }
 #else

+ 3 - 1
user/init_task.c

@@ -108,7 +108,9 @@ void InitTask(void *params)
         log_event_data(LOG_PSW_CHANGE, "Сброс к заводскому");
     }
 // -----------------------------------------------------------------------------
-
+#ifdef HARDWARE_BT6703
+    check_outputs_config();
+#endif
 // -----------------------------------------------------------------------------
 #ifdef USART_DEBUG_ENABLE
     InitUSART();