Paparazzi UAS  v5.10_stable-5-g83a0da5-dirty
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
debug_led.h
Go to the documentation of this file.
1 #warning "LED debug needs porting to libopencm3 (or removal)"
2 
3 static inline void LED1_ON(void)
4 {
5  GPIO_WriteBit(GPIOB, GPIO_Pin_6 , Bit_SET);
6 }
7 
8 static inline void LED1_OFF(void)
9 {
10  GPIO_WriteBit(GPIOB, GPIO_Pin_6 , !Bit_SET);
11 }
12 
13 static inline void LED2_ON(void)
14 {
15  GPIO_WriteBit(GPIOB, GPIO_Pin_7 , Bit_SET);
16 }
17 
18 static inline void LED2_OFF(void)
19 {
20  GPIO_WriteBit(GPIOB, GPIO_Pin_7 , !Bit_SET);
21 }
22 
23 static inline void LED_INIT(void)
24 {
25  GPIO_InitTypeDef GPIO_InitStructure;
26  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
27  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_6;
28  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
29  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
30  GPIO_Init(GPIOB, &GPIO_InitStructure);
31 
32  LED1_OFF();
33  LED2_OFF();
34 }
35 
36 
37 static inline void LED_ERROR(uint8_t base, uint8_t nr)
38 {
39  LED2_ON();
40  for (int i = 0; i < (base + nr); i++) {
41  LED1_ON();
42  LED1_OFF();
43  }
44  LED2_OFF();
45 }
46 
47 static inline void LED_SHOW_ACTIVE_BITS(I2C_TypeDef *regs)
48 {
49  uint16_t CR1 = regs->CR1;
50  uint16_t SR1 = regs->SR1;
51  uint16_t SR2 = regs->SR2;
52  // Note: reading SR1 and then SR2 will clear ADDR bits
53 
54  LED1_ON();
55 
56  // 1 Start
57  if (BIT_X_IS_SET_IN_REG(I2C_SR1_BIT_SB, SR1)) {
58  LED2_ON();
59  } else {
60  LED2_OFF();
61  }
62  LED2_OFF();
63 
64  // 2 Addr
65  if (BIT_X_IS_SET_IN_REG(I2C_SR1_BIT_ADDR, SR1)) {
66  LED2_ON();
67  } else {
68  LED2_OFF();
69  }
70  LED2_OFF();
71 
72  // 3 BTF
73  if (BIT_X_IS_SET_IN_REG(I2C_SR1_BIT_BTF, SR1)) {
74  LED2_ON();
75  } else {
76  LED2_OFF();
77  }
78  LED2_OFF();
79 
80  // 4 ERROR
81  if ((SR1 & I2C_SR1_BITS_ERR) != 0x0000) {
82  LED2_ON();
83  } else {
84  LED2_OFF();
85  }
86  LED2_OFF();
87 
88  // Anything?
89  if ((SR1 + SR2) != 0x0000) {
90  LED2_ON();
91  } else {
92  LED2_OFF();
93  }
94  LED2_OFF();
95 
96  LED1_OFF();
97 
98 
99  LED1_ON();
100 
101  // 1 Start
102  if (BIT_X_IS_SET_IN_REG(I2C_CR1_BIT_START, CR1)) {
103  LED2_ON();
104  } else {
105  LED2_OFF();
106  }
107  LED2_OFF();
108 
109  // 2 Stop
110  if (BIT_X_IS_SET_IN_REG(I2C_CR1_BIT_STOP, CR1)) {
111  LED2_ON();
112  } else {
113  LED2_OFF();
114  }
115  LED2_OFF();
116 
117  // 3 Busy
118  if (BIT_X_IS_SET_IN_REG(I2C_SR2_BIT_BUSY, SR2)) {
119  LED2_ON();
120  } else {
121  LED2_OFF();
122  }
123  LED2_OFF();
124 
125  // 4 Tra
126  if (BIT_X_IS_SET_IN_REG(I2C_SR2_BIT_TRA, SR2)) {
127  LED2_ON();
128  } else {
129  LED2_OFF();
130  }
131  LED2_OFF();
132 
133  // 5 Master
134  if (BIT_X_IS_SET_IN_REG(I2C_SR2_BIT_MSL, SR2)) {
135  LED2_ON();
136  } else {
137  LED2_OFF();
138  }
139  LED2_OFF();
140  LED1_OFF();
141 
142  //#define I2C_DEBUG_LED_CONTROL
143 #ifdef I2C_DEBUG_LED_CONTROL
144 
145 
146  LED1_ON();
147 
148  // 1 Anything CR?
149  if ((CR1) != 0x0000) {
150  LED2_ON();
151  } else {
152  LED2_OFF();
153  }
154  LED2_OFF();
155 
156  // 2 PE
157  if (BIT_X_IS_SET_IN_REG(I2C_CR1_BIT_PE, CR1)) {
158  LED2_ON();
159  } else {
160  LED2_OFF();
161  }
162  LED2_OFF();
163 
164  // 3 SWRESET
165  if (BIT_X_IS_SET_IN_REG(I2C_CR1_BIT_SWRST, CR1)) {
166  LED2_ON();
167  } else {
168  LED2_OFF();
169  }
170  LED2_OFF();
171 
172  LED1_OFF();
173 #endif
174 
175 }
static void LED2_OFF(void)
Definition: debug_led.h:18
unsigned short uint16_t
Definition: types.h:16
#define GPIOB
Definition: gpio_arch.h:35
#define BIT_X_IS_SET_IN_REG(X, REG)
Definition: i2c_arch.c:61
static void LED_INIT(void)
Definition: debug_led.h:23
static void LED1_ON(void)
Definition: debug_led.h:3
static void LED_SHOW_ACTIVE_BITS(I2C_TypeDef *regs)
Definition: debug_led.h:47
static void LED2_ON(void)
Definition: debug_led.h:13
static void LED_ERROR(uint8_t base, uint8_t nr)
Definition: debug_led.h:37
unsigned char uint8_t
Definition: types.h:14
static void LED1_OFF(void)
Definition: debug_led.h:8