Paparazzi UAS  v5.2.2_stable-0-gd6b9f29
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures 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  {
42  LED1_ON();
43  LED1_OFF();
44  }
45  LED2_OFF();
46 }
47 
48 static inline void LED_SHOW_ACTIVE_BITS(I2C_TypeDef *regs)
49 {
50  uint16_t CR1 = regs->CR1;
51  uint16_t SR1 = regs->SR1;
52  uint16_t SR2 = regs->SR2;
53  // Note: reading SR1 and then SR2 will clear ADDR bits
54 
55  LED1_ON();
56 
57  // 1 Start
58  if (BIT_X_IS_SET_IN_REG( I2C_SR1_BIT_SB, SR1 ) )
59  LED2_ON();
60  else
61  LED2_OFF();
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  LED2_OFF();
70 
71  // 3 BTF
72  if (BIT_X_IS_SET_IN_REG( I2C_SR1_BIT_BTF, SR1 ) )
73  LED2_ON();
74  else
75  LED2_OFF();
76  LED2_OFF();
77 
78  // 4 ERROR
79  if (( SR1 & I2C_SR1_BITS_ERR ) != 0x0000)
80  LED2_ON();
81  else
82  LED2_OFF();
83  LED2_OFF();
84 
85  // Anything?
86  if (( SR1 + SR2) != 0x0000)
87  LED2_ON();
88  else
89  LED2_OFF();
90  LED2_OFF();
91 
92  LED1_OFF();
93 
94 
95  LED1_ON();
96 
97  // 1 Start
98  if (BIT_X_IS_SET_IN_REG( I2C_CR1_BIT_START, CR1 ) )
99  LED2_ON();
100  else
101  LED2_OFF();
102  LED2_OFF();
103 
104  // 2 Stop
105  if (BIT_X_IS_SET_IN_REG( I2C_CR1_BIT_STOP, CR1 ) )
106  LED2_ON();
107  else
108  LED2_OFF();
109  LED2_OFF();
110 
111  // 3 Busy
112  if (BIT_X_IS_SET_IN_REG( I2C_SR2_BIT_BUSY, SR2 ) )
113  LED2_ON();
114  else
115  LED2_OFF();
116  LED2_OFF();
117 
118  // 4 Tra
119  if (BIT_X_IS_SET_IN_REG( I2C_SR2_BIT_TRA, SR2 ) )
120  LED2_ON();
121  else
122  LED2_OFF();
123  LED2_OFF();
124 
125  // 5 Master
126  if (BIT_X_IS_SET_IN_REG( I2C_SR2_BIT_MSL, SR2 ) )
127  LED2_ON();
128  else
129  LED2_OFF();
130  LED2_OFF();
131  LED1_OFF();
132 
133  //#define I2C_DEBUG_LED_CONTROL
134 #ifdef I2C_DEBUG_LED_CONTROL
135 
136 
137  LED1_ON();
138 
139  // 1 Anything CR?
140  if (( CR1) != 0x0000)
141  LED2_ON();
142  else
143  LED2_OFF();
144  LED2_OFF();
145 
146  // 2 PE
147  if (BIT_X_IS_SET_IN_REG( I2C_CR1_BIT_PE, CR1 ) )
148  LED2_ON();
149  else
150  LED2_OFF();
151  LED2_OFF();
152 
153  // 3 SWRESET
154  if (BIT_X_IS_SET_IN_REG( I2C_CR1_BIT_SWRST, CR1 ) )
155  LED2_ON();
156  else
157  LED2_OFF();
158  LED2_OFF();
159 
160  LED1_OFF();
161 #endif
162 
163 }
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:48
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