Browse Source

Работа с тестированием на КЗ.

Dmitry Telenkov 1 week ago
parent
commit
7fc0d33544
2 changed files with 188 additions and 187 deletions
  1. 168 187
      service_hw/Commands/bt_6701_commands.c
  2. 20 0
      service_hw/Commands/bt_6701_commands.h

+ 168 - 187
service_hw/Commands/bt_6701_commands.c

@@ -57,10 +57,10 @@ extern BUTTON_NO_FIX_t setButton;
 extern unsigned char eth_ready_flag;
 
 
-static bool test_pair_pins(void);
+static bool test_pair_pins(pair_pin_t *pins);
 static void set_pin_as_output(GPIO_TypeDef *port, uint8_t pin);
 static void set_pin_as_input(GPIO_TypeDef *port, uint8_t pin);
-
+static void test_pin_print_result(pair_pin_t *pins, uint8_t *res);
 
 // -------------------------------------------------------------------------- //
 //                              __weak функции
@@ -468,246 +468,214 @@ void Test_Serno(void)
 
 // -------------------------------------------------------------------------- //
 
-typedef struct
-{
-  GPIO_TypeDef *first_port;
-  uint16_t       first_pin;
-
-  GPIO_TypeDef *second_port;
-  uint16_t       second_pin;  
-
-} pair_pin_t;
-
-typedef struct
-{
-  GPIO_TypeDef *first_port;
-  uint16_t       first_pin;
-
-} single_pin_t;
-
 /*
-1 - PE2 - не используется
-2 - PE3 - не проверяем, не используется 
-3 - PE4 - не проверяем, не используется 
-4 - PE5 - не проверяем, не используется 
-5 - PE6 - проверять с PE5 и проверяем с VBAT (КЗ с +)
-6 - VBAT - не проверяем
-7 - PC13 - не проверяем, не используется
-8 - OSC_IN - не проверяем
-9 - OSC_OUT - не проверяем
-10 - VSS - не проверяем
-11 - VDD - не проверяем
-12 - OSC_IN - не проверяем
-13 - OSC_OUT - не проверяем, не используется 
-14 - PE3 - NRST - не проверяем
-15 - PC0 - не проверяем, не используется
-16 - PC1 - не проверяем ethernet phy 
-17 - PC0 - не проверяем, не используется
-18 - PC0 - не проверяем, не используется
-19 - VDD - не проверяем 
-20 - VSSA - не проверяем
-21 - VREF - не проверяем
-22 - VDDA - не проверяем 
-23 - PA0 - проверяем с 22 (КЗ с +)
-24 - PA1 - не проверяем ethernet phy 
-25 - PA2 - не проверяем ethernet phy 
-26 - PA3 - проверяем с 27 (КЗ с -)
-27 - VSS - не проверяем 
-28 - VDD - не проверяем 
-29 - PA4 - проверяем с 28 (кз с +), проверяем с 30 
-30 - PA5 - проверяем с 29, проверяем с 31
-31 - PA6 - не проверяем, не используется
-32 - PA7 - не проверяем ethernet phy 
-33 - PС4 - не проверяем ethernet phy 
-34 - PС5 - не проверяем ethernet phy 
-35 - PB0 - не проверяем, не используется
-36 - PB1 - не проверяем, не используется
-37 - PB2 - BOOT1 - не проверяем
-38 - PE7 - не проверяем, там всегда +
-39 - PE8 - не проверяем, не используется
-40 - PE9 - не проверяем, не используется
-41 - PE10 - не проверяем, не используется
-42 - PE11 - не проверяем, не получится
-43 - PE12 - не проверяем, не получится
-44 - PE13 - не проверяем ethernet phy
-45 - PE14 - не проверяем, не используется
-46 - PE15 - проверяем с 47
-47 - PB10 - проверяем с 46
-48 - PB11 - не проверяем ethernet phy
-49 - Vcap1 - не проверяем 
-50 - VDD - не проверяем
-51 - PB12 - не проверяем ethernet phy
-52 - PB13 - не проверяем ethernet phy
-53 - PB14 - проверяем с 54 (но 53 должен быть только входом)
-54 - PB15 - проверяем с 53 (54 - как вход)
-55 - PD8 - не проверяем, не используется
-56 - PD9 - не проверяем, не используется
-57 - PD10 - не проверяем, не используется
-58 - PD11 - не проверяем, не используется
-59 - PD12 - не проверяем, не используется
-60 - PD13 - не проверяем, не используется
-61 - PD14 - не проверяем
-62 - PD15 - не проверяем
-63 - PС6 - не проверяем, не используется
-64 - PC7 - не проверяем, не используется
-65 - PC8 - не проверяем, не используется
-66 - PC9 - не проверяем, не используется
-67 - PA8 - не проверяем, не используется
-68 - PA9 - не проверяем, это DEBUG UART 
-69 - PA10 - не проверяем, это DEBUG UART 
-70 - PA11 - не проверяем, не используется
-71 - PA12 - не проверяем, не используется
-72 - PA13 - SWDIO - не проверяем
-73 - Vcap2 - не проверяем
-74 - VSS - не проверяем
-75 - VDD - не проверяем
-76 - PA14 - SWCLK - не вроверяем 
-77 - PA15 - не проверяем, не используется 
-78 - PC10 - не проверяем, не используется
-79 - PC11 - не проверяем, не используется 
-80 - PC12 - не проверяем, не используется
-81 - PD0 - не проверяем, не используется
-82 - PD1 - не проверяем, не используется
-83 - PD2 - не проверяем, не используется
-84 - PD3 - не проверяем, не используется
-85 - PD4 - не проверяем, не используется 
-86 - PD5 - проверяем с 87
-87 - PD6 - проверяем с 86
-88 - PD7 - не проверяем, не используется 
+	1 - PE2 - не используется
+	2 - PE3 - не проверяем, не используется 
+	3 - PE4 - не проверяем, не используется 
+	4 - PE5 - не проверяем, не используется 
+5 - PE6 - проверять с 4 - OK
+	6 - VBAT - не проверяем
+	7 - PC13 - не проверяем, не используется
+	8 - OSC_IN - не проверяем
+	9 - OSC_OUT - не проверяем
+	10 - VSS - не проверяем
+	11 - VDD - не проверяем
+	12 - OSC_IN - не проверяем
+	13 - OSC_OUT - не проверяем, не используется 
+	14 - PE3 - NRST - не проверяем
+	15 - PC0 - не проверяем, не используется
+	16 - PC1 - не проверяем ethernet phy 
+	17 - PC0 - не проверяем, не используется
+	18 - PC0 - не проверяем, не используется
+	19 - VDD - не проверяем 
+	20 - VSSA - не проверяем
+	21 - VREF - не проверяем
+	22 - VDDA - не проверяем 
+	23 - PA0 - проверяем с 22 (КЗ с +), не получается
+	24 - PA1 - не проверяем ethernet phy 
+	25 - PA2 - не проверяем ethernet phy 
+26 - PA3 - проверяем с 27 (КЗ с -), не получается
+	27 - VSS - не проверяем 
+	28 - VDD - не проверяем 
+	29 - PA4 - не проверяем, не получается 
+	30 - PA5 - не проверяем, не получается 
+	31 - PA6 - не проверяем, не используется
+	32 - PA7 - не проверяем ethernet phy 
+	33 - PС4 - не проверяем ethernet phy 
+	34 - PС5 - не проверяем ethernet phy 
+	35 - PB0 - не проверяем, не используется
+	36 - PB1 - не проверяем, не используется
+	37 - PB2 - BOOT1 - не проверяем
+	38 - PE7 - не проверяем, там всегда +
+	39 - PE8 - не проверяем, не используется
+	40 - PE9 - не проверяем, не используется
+	41 - PE10 - не проверяем, не используется
+	42 - PE11 - не проверяем, не получится
+	43 - PE12 - не проверяем, не получится
+	44 - PE13 - не проверяем ethernet phy
+	45 - PE14 - не проверяем, не используется
+46 - PE15 - проверяем с 47 - OK
+47 - PB10 - проверяем с 46 - OK
+	48 - PB11 - не проверяем ethernet phy
+	49 - Vcap1 - не проверяем 
+	50 - VDD - не проверяем
+	51 - PB12 - не проверяем ethernet phy
+	52 - PB13 - не проверяем ethernet phy
+		53 - PB14 - проверяем с 54 (но 53 должен быть только входом) Но не получилось!
+		54 - PB15 - проверяем с 53 (54 - как вход) Но не получилось!
+	55 - PD8 - не проверяем, не используется
+	56 - PD9 - не проверяем, не используется
+	57 - PD10 - не проверяем, не используется
+	58 - PD11 - не проверяем, не используется
+	59 - PD12 - не проверяем, не используется
+	60 - PD13 - не проверяем, не используется
+	61 - PD14 - не проверяем
+	62 - PD15 - не проверяем
+	63 - PС6 - не проверяем, не используется
+	64 - PC7 - не проверяем, не используется
+	65 - PC8 - не проверяем, не используется
+	66 - PC9 - не проверяем, не используется
+	67 - PA8 - не проверяем, не используется
+	68 - PA9 - не проверяем, это DEBUG UART 
+	69 - PA10 - не проверяем, это DEBUG UART 
+	70 - PA11 - не проверяем, не используется
+	71 - PA12 - не проверяем, не используется
+	72 - PA13 - SWDIO - не проверяем
+	73 - Vcap2 - не проверяем
+	74 - VSS - не проверяем
+	75 - VDD - не проверяем
+	76 - PA14 - SWCLK - не проверяем 
+	77 - PA15 - не проверяем, не используется 
+	78 - PC10 - не проверяем, не используется
+	79 - PC11 - не проверяем, не используется 
+	80 - PC12 - не проверяем, не используется
+	81 - PD0 - не проверяем, не используется
+	82 - PD1 - не проверяем, не используется
+	83 - PD2 - не проверяем, не используется
+	84 - PD3 - не проверяем, не используется
+	85 - PD4 - не проверяем, не используется 
+86 - PD5 - не проверяем с 87, т.к. пины замкнуты на тестере
+87 - PD6 - не проверяем с 86, т.е. пины запкнуты на тестере
+	88 - PD7 - не проверяем, не используется 
 89 - PB3 - проверяем с 90
 90 - PB4 - проверяем с 89, проверяем с 91
 91 - PB5 - проверяем c 90, проверяем с 92
 92 - PB6 - проверяем с 91
-93 - PB7 - не проверяем, не используется
-94 - BOOT0 - не проверяем 
-95 - PB8 - не проверяем, не используется
-96 - PB9 - не проверям, т.к. соседние пины не используются
-97 - PE0 - не проверяем, не используется
-98 - PE1 - не проверяем, не используется
-99 - VSS - не проверяем
-100 - VDD - не проверяем
+	93 - PB7 - не проверяем, не используется
+	94 - BOOT0 - не проверяем 
+	95 - PB8 - не проверяем, не используется
+	96 - PB9 - не проверям, т.к. соседние пины не используются
+	97 - PE0 - не проверяем, не используется
+	98 - PE1 - не проверяем, не используется
+	99 - VSS - не проверяем
+	100 - VDD - не проверяем
 */
 
-
-#define PAIR_PINS_SIZE    14
+#define PAIR_PINS_SIZE      1
 
 pair_pin_t pins_with_pair[PAIR_PINS_SIZE] = {
-  {GPIOE, GPIO_Pin_6, GPIOE, GPIO_Pin_5}, // проверить уровень на PE5
-
-
-  {GPIOE, GPIO_Pin_2, GPIOE, GPIO_Pin_3},   /* 1 */ // 2, 3 - не тестировать, они не используются
-  {GPIOE, GPIO_Pin_4, GPIOE, GPIO_Pin_5},   /* 2 */ // 4, 5 - не тестировать, они не используются
-  {GPIOA, GPIO_Pin_4, GPIOA, GPIO_Pin_5},   /* 3 */ // 29, 30 - ОК
-  {GPIOB, GPIO_Pin_2, GPIOE, GPIO_Pin_7},   /* 4 */ // 37, 38 - не будет работать
-  {GPIOE, GPIO_Pin_11, GPIOE, GPIO_Pin_12}, /* 5 */ // 42, 43 - не получилось, это LED не будет работать, это LED не будем тестировать
-  {GPIOE, GPIO_Pin_15, GPIOB, GPIO_Pin_10}, /* 6 */ // 46, 47 - OK
-  {GPIOB, GPIO_Pin_13, GPIOB, GPIO_Pin_14}, /* 7 */ // 52, 53 - не получилось
-  {GPIOB, GPIO_Pin_14, GPIOB, GPIO_Pin_15}, /* 8 */ // 53, 54 - не получилось
-  {GPIOD, GPIO_Pin_14, GPIOD, GPIO_Pin_15}, /* 9 */ // 61, 62 - не будет работать
-  {GPIOA, GPIO_Pin_9, GPIOA, GPIO_Pin_10},  /* 10 */ // 68, 69 - не тестировать, это DEBUG UART
-  {GPIOD, GPIO_Pin_5, GPIOD, GPIO_Pin_6},   /* 11 */ // 86, 87 - OK
-  {GPIOB, GPIO_Pin_3, GPIOB, GPIO_Pin_4},   /* 12 */ // 89, 90 - OK
-  {GPIOB, GPIO_Pin_5, GPIOB, GPIO_Pin_6},   /* 13 */ // 91, 92 - OK
-  {GPIOB, GPIO_Pin_8, GPIOB, GPIO_Pin_9},   /* 14 */ // 95, 96 - не получилось
+  {GPIOA, GPIO_Pin_0, 23, GPIOA, GPIO_Pin_1, 24},   /* 8 */ // 23, 24 -
+
+#if 0  
+  {GPIOE, GPIO_Pin_6, 5, GPIOE, GPIO_Pin_5, 4},     /* 1 */ // 5, 4 // проверить уровень на PE5 - OK
+  {GPIOE, GPIO_Pin_15, 46, GPIOB, GPIO_Pin_10, 47}, /* 2 */ // 46, 47 - OK
+  {GPIOB, GPIO_Pin_3, 89, GPIOB, GPIO_Pin_4, 90},   /* 3 */ // 89, 90 - OK
+  {GPIOB, GPIO_Pin_4, 90, GPIOB, GPIO_Pin_5, 91},   /* 4 */ // 90, 91 - OK
+  {GPIOB, GPIO_Pin_5, 91, GPIOB, GPIO_Pin_6, 92},   /* 5 */ // 91, 92 - OK
+  // Ethernet pins, SPI pins
+  {GPIOC, GPIO_Pin_0, 15, GPIOC, GPIO_Pin_1, 16},   /* 6 */ // 15, 16 -
+  {GPIOC, GPIO_Pin_2, 17, GPIOC, GPIO_Pin_1, 16},   /* 7 */ // 17, 16 -
+  {GPIOA, GPIO_Pin_0, 23, GPIOA, GPIO_Pin_1, 24},   /* 8 */ // 23, 24 -
+  {GPIOA, GPIO_Pin_1, 24, GPIOA, GPIO_Pin_2, 25},   /* 9 */ // 24, 25 -
+  {GPIOA, GPIO_Pin_6, 31, GPIOA, GPIO_Pin_7, 32},   /* 10 */ // 31, 32 -
+  {GPIOA, GPIO_Pin_7, 31, GPIOC, GPIO_Pin_4, 33},   /* 11 */ // 32, 33 -
+  {GPIOC, GPIO_Pin_4, 33, GPIOC, GPIO_Pin_5, 34},   /* 12 */ // 33, 34 -
+  {GPIOC, GPIO_Pin_5, 34, GPIOB, GPIO_Pin_0, 35},   /* 13 */ // 34, 35 -
+  {GPIOB, GPIO_Pin_10, 47, GPIOB, GPIO_Pin_11, 48}, /* 14 */ // 47, 48 -
+  {GPIOB, GPIO_Pin_12, 51, GPIOB, GPIO_Pin_13, 52}, /* 15 */ // 51, 52 -
+  {GPIOB, GPIO_Pin_13, 52, GPIOB, GPIO_Pin_14, 53}, /* 16 */ // 52, 53 -
+  {GPIOB, GPIO_Pin_14, 53, GPIOB, GPIO_Pin_15, 54}, /* 17 */ // 53, 54 -
+#endif  
 };
 
-#if 0
-pair_pin_t pins_with_pair[PAIR_PINS_SIZE] = {
-  {GPIOE, GPIO_Pin_2, GPIOE, GPIO_Pin_3},   /* 1 */ // 2, 3 - не тестировать, они не используются
-  {GPIOE, GPIO_Pin_4, GPIOE, GPIO_Pin_5},   /* 2 */ // 4, 5 - не тестировать, они не используются
-  {GPIOA, GPIO_Pin_4, GPIOA, GPIO_Pin_5},   /* 3 */ // 29, 30 - ОК
-  {GPIOB, GPIO_Pin_2, GPIOE, GPIO_Pin_7},   /* 4 */ // 37, 38 - не будет работать
-  {GPIOE, GPIO_Pin_11, GPIOE, GPIO_Pin_12}, /* 5 */ // 42, 43 - не получилось, это LED не будет работать, это LED не будем тестировать
-  {GPIOE, GPIO_Pin_15, GPIOB, GPIO_Pin_10}, /* 6 */ // 46, 47 - OK
-  {GPIOB, GPIO_Pin_13, GPIOB, GPIO_Pin_14}, /* 7 */ // 52, 53 - не получилось
-  {GPIOB, GPIO_Pin_14, GPIOB, GPIO_Pin_15}, /* 8 */ // 53, 54 - не получилось
-  {GPIOD, GPIO_Pin_14, GPIOD, GPIO_Pin_15}, /* 9 */ // 61, 62 - не будет работать
-  {GPIOA, GPIO_Pin_9, GPIOA, GPIO_Pin_10},  /* 10 */ // 68, 69 - не тестировать, это DEBUG UART
-  {GPIOD, GPIO_Pin_5, GPIOD, GPIO_Pin_6},   /* 11 */ // 86, 87 - OK
-  {GPIOB, GPIO_Pin_3, GPIOB, GPIO_Pin_4},   /* 12 */ // 89, 90 - OK
-  {GPIOB, GPIO_Pin_5, GPIOB, GPIO_Pin_6},   /* 13 */ // 91, 92 - OK
-  {GPIOB, GPIO_Pin_8, GPIOB, GPIO_Pin_9},   /* 14 */ // 95, 96 - не получилось
-};
-#endif
 
 uint8_t pair_pin_resut[PAIR_PINS_SIZE];
 
-// Возможно замыкание на линию питания. Эти пины проверяются отдельно. 
-single_pin_t pins_with_power[] = {
-  {GPIOA, GPIO_Pin_4},                      // 29 - это LED не будем тестировать
-};
-
-// Возможно замыкание на землю. Эти пины проверяются отдельно.
-single_pin_t pins_with_ground[] = {
-  {GPIOA, GPIO_Pin_3},                      // 26 - это LED не будем тестировать
-};
+// ------------------------------------------------------------------------ //
 
 //
 void Test_Pins(void)
 {
-  printf("\r\nThis is PINS test\r\n");
-  //printf("Size of pair pins struct: %u\r\n", sizeof(pins_for_test)/16);
-  //printf("Size of power pins struct: %u\r\n", sizeof(pins_with_power)/8);
-  //printf("Size of ground pins struct: %u\r\n", sizeof(pins_with_ground)/8);
- 
   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);
  
-  test_pair_pins();
+  if (test_pair_pins(pins_with_pair))
+    printf("PIN OK\r\n");
+  else
+    printf("PIN FAIL\r\n");
 
   TEST_SetTest(TEST_WAIT);
 }
 
 //
-static bool test_pair_pins(void)
+static bool test_pair_pins(pair_pin_t *pins)
 {
   uint8_t res_1 = Bit_RESET;
   uint8_t res_2 = Bit_RESET;
+  bool ret = true;
 
-  set_pin_as_input(GPIOE, GPIO_Pin_5);
-  res_1 = GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_5);
-  printf("PE_5 level: %u\r\n", res_1);
+  // Low level PE_13 - ERST ethernet PHY
+  set_pin_as_output(GPIOE, GPIO_Pin_13);
+  GPIO_ResetBits(GPIOE, GPIO_Pin_13);
 
-#if 0
   for (int i = 0; i < PAIR_PINS_SIZE; i++)
   {
-    set_pin_as_output(pins_with_pair[i].first_port, pins_with_pair[i].first_pin);
-    set_pin_as_input(pins_with_pair[i].second_port, pins_with_pair[i].second_pin);
+    set_pin_as_output(pins[i].first_port, pins[i].first_pin);
+    set_pin_as_input(pins[i].second_port, pins[i].second_pin);
 
-    GPIO_SetBits(pins_with_pair[i].first_port, pins_with_pair[i].first_pin);
+    GPIO_SetBits(pins[i].first_port, pins[i].first_pin);
     vTaskDelay(1);
 
-    res_1 = GPIO_ReadInputDataBit(pins_with_pair[i].second_port, pins_with_pair[i].second_pin);
+    res_1 = GPIO_ReadInputDataBit(pins[i].second_port, pins[i].second_pin);
 
-    GPIO_ResetBits(pins_with_pair[i].first_port, pins_with_pair[i].first_pin);
+    GPIO_ResetBits(pins[i].first_port, pins[i].first_pin);
     vTaskDelay(1);
 
-    res_2 = GPIO_ReadInputDataBit(pins_with_pair[i].second_port, pins_with_pair[i].second_pin);
+    res_2 = GPIO_ReadInputDataBit(pins[i].second_port, pins[i].second_pin);
 
-    if (res_1 != res_2)
+    if (res_1 != res_2) {
       pair_pin_resut[i] = 1;
+      ret = false;
+    }
     else 
       pair_pin_resut[i] = 0;
-    
-    set_pin_as_input(pins_with_pair[i].first_port, pins_with_pair[i].first_pin);
+
+      
+    set_pin_as_input(pins[i].first_port, pins[i].first_pin);
   }
 
-#if 1  
+#if 0
   // Вывод результата
   printf("Pair pin result:\r\n");
   for (int i = 0; i < PAIR_PINS_SIZE; i++) {
     printf("%u ", pair_pin_resut[i]);
   }
   printf("\r\n");
+#endif
 
-  printf("Port %X\r\n", GPIOA);
+#if 0
+  for (int i = 0; i < PAIR_PINS_SIZE; i++)
+  {
+    pair_pin_resut[i] = 1;
+  }
+#endif
 
-#endif  
+  test_pin_print_result(pins, pair_pin_resut);
 
-#endif  
+  return ret;
 }
 
 //
@@ -731,10 +699,23 @@ static void set_pin_as_input(GPIO_TypeDef *port, uint8_t pin)
   GPIO_InitStructure.GPIO_Pin = pin;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
-  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;  
-  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
+  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
+  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
   GPIO_Init(port, &GPIO_InitStructure);
 }
 
+//
+static void test_pin_print_result(pair_pin_t *pins, uint8_t *res)
+{
+  for (int i = 0; i < PAIR_PINS_SIZE; i++)
+  {
+    if (res[i] != 0) 
+    {
+      printf("Short circuit between pins:\r\n");
+      printf("\t%u %u\r\n", pins[i].first_pin_num, pins[i].second_pin_num);
+    }
+  }
+  printf("\r\n"); 
+}
 
 /********************************* (C) РОТЕК **********************************/

+ 20 - 0
service_hw/Commands/bt_6701_commands.h

@@ -15,6 +15,26 @@
 #define __BT_6701_COMMANDS_H
 
 
+typedef struct
+{
+  GPIO_TypeDef  *first_port;
+  uint16_t      first_pin;
+  uint8_t       first_pin_num;
+
+  GPIO_TypeDef  *second_port;
+  uint16_t      second_pin;
+  uint8_t       second_pin_num;
+
+} pair_pin_t;
+
+typedef struct
+{
+  GPIO_TypeDef  *port;
+  uint16_t      pin;
+
+} single_pin_t;
+
+
 /**
   * @brief
   */