LibDriver BUTTON
Loading...
Searching...
No Matches
driver_button_trigger_test.c
Go to the documentation of this file.
1
36
37
#include "
driver_button_trigger_test.h
"
38
39
static
button_handle_t
gs_handle;
40
static
volatile
uint16_t gs_flag;
41
47
static
void
a_receive_callback(
button_t
*data)
48
{
49
switch
(data->
status
)
50
{
51
case
BUTTON_STATUS_PRESS
:
52
{
53
gs_flag |= (1 << 0);
54
55
break
;
56
}
57
case
BUTTON_STATUS_RELEASE
:
58
{
59
gs_flag |= (1 << 1);
60
61
break
;
62
}
63
case
BUTTON_STATUS_SINGLE_CLICK
:
64
{
65
gs_flag |= (1 << 2);
66
button_interface_debug_print
(
"button: irq single click.\n"
);
67
68
break
;
69
}
70
case
BUTTON_STATUS_DOUBLE_CLICK
:
71
{
72
gs_flag |= (1 << 3);
73
button_interface_debug_print
(
"button: irq double click.\n"
);
74
75
break
;
76
}
77
case
BUTTON_STATUS_TRIPLE_CLICK
:
78
{
79
gs_flag |= (1 << 4);
80
button_interface_debug_print
(
"button: irq triple click.\n"
);
81
82
break
;
83
}
84
case
BUTTON_STATUS_REPEAT_CLICK
:
85
{
86
gs_flag |= (1 << 5);
87
button_interface_debug_print
(
"button: irq repeat click with %d times.\n"
, data->
times
);
88
89
break
;
90
}
91
case
BUTTON_STATUS_SHORT_PRESS_START
:
92
{
93
gs_flag |= (1 << 6);
94
button_interface_debug_print
(
"button: irq short press start.\n"
);
95
96
break
;
97
}
98
case
BUTTON_STATUS_SHORT_PRESS_END
:
99
{
100
gs_flag |= (1 << 7);
101
button_interface_debug_print
(
"button: irq short press end.\n"
);
102
103
break
;
104
}
105
case
BUTTON_STATUS_LONG_PRESS_START
:
106
{
107
gs_flag |= (1 << 8);
108
button_interface_debug_print
(
"button: irq long press start.\n"
);
109
110
break
;
111
}
112
case
BUTTON_STATUS_LONG_PRESS_HOLD
:
113
{
114
gs_flag |= (1 << 9);
115
button_interface_debug_print
(
"button: irq long press hold.\n"
);
116
117
break
;
118
}
119
case
BUTTON_STATUS_LONG_PRESS_END
:
120
{
121
gs_flag |= (1 << 10);
122
button_interface_debug_print
(
"button: irq long press end.\n"
);
123
124
break
;
125
}
126
default :
127
{
128
button_interface_debug_print
(
"button: irq unknown status.\n"
);
129
130
break
;
131
}
132
}
133
}
134
144
uint8_t
button_trigger_test_irq_handler
(uint8_t press_release)
145
{
146
if
(
button_irq_handler
(&gs_handle, press_release) != 0)
147
{
148
return
1;
149
}
150
151
return
0;
152
}
153
161
uint8_t
button_trigger_test_period_handler
(
void
)
162
{
163
if
(
button_period_handler
(&gs_handle) != 0)
164
{
165
return
1;
166
}
167
168
return
0;
169
}
170
178
uint8_t
button_trigger_test
(
void
)
179
{
180
uint8_t res;
181
uint32_t timeout;
182
button_info_t
info;
183
184
/* link interface function */
185
DRIVER_BUTTON_LINK_INIT
(&gs_handle,
button_handle_t
);
186
DRIVER_BUTTON_LINK_TIMESTAMP_READ
(&gs_handle,
button_interface_timestamp_read
);
187
DRIVER_BUTTON_LINK_DELAY_MS
(&gs_handle,
button_interface_delay_ms
);
188
DRIVER_BUTTON_LINK_DEBUG_PRINT
(&gs_handle,
button_interface_debug_print
);
189
DRIVER_BUTTON_LINK_RECEIVE_CALLBACK
(&gs_handle, a_receive_callback);
190
191
/* get information */
192
res =
button_info
(&info);
193
if
(res != 0)
194
{
195
button_interface_debug_print
(
"button: get info failed.\n"
);
196
197
return
1;
198
}
199
else
200
{
201
/* print chip info */
202
button_interface_debug_print
(
"button: chip is %s.\n"
, info.
chip_name
);
203
button_interface_debug_print
(
"button: manufacturer is %s.\n"
, info.
manufacturer_name
);
204
button_interface_debug_print
(
"button: interface is %s.\n"
, info.
interface
);
205
button_interface_debug_print
(
"button: driver version is %d.%d.\n"
, info.
driver_version
/ 1000, (info.
driver_version
% 1000) / 100);
206
button_interface_debug_print
(
"button: min supply voltage is %0.1fV.\n"
, info.
supply_voltage_min_v
);
207
button_interface_debug_print
(
"button: max supply voltage is %0.1fV.\n"
, info.
supply_voltage_max_v
);
208
button_interface_debug_print
(
"button: max current is %0.2fmA.\n"
, info.
max_current_ma
);
209
button_interface_debug_print
(
"button: max temperature is %0.1fC.\n"
, info.
temperature_max
);
210
button_interface_debug_print
(
"button: min temperature is %0.1fC.\n"
, info.
temperature_min
);
211
}
212
213
/* init */
214
res =
button_init
(&gs_handle);
215
if
(res != 0)
216
{
217
button_interface_debug_print
(
"button: init failed.\n"
);
218
219
return
1;
220
}
221
222
/* start trigger test */
223
button_interface_debug_print
(
"button: start trigger test.\n"
);
224
225
/* 100s timeout */
226
timeout = 10000;
227
228
/* init 0 */
229
gs_flag = 0;
230
231
/* check timeout */
232
while
(timeout != 0)
233
{
234
/* check the flag */
235
if
((gs_flag & 0x07FF) == 0x07FF)
236
{
237
break
;
238
}
239
240
/* timeout -- */
241
timeout--;
242
243
/* delay 10ms */
244
button_interface_delay_ms
(10);
245
}
246
247
/* check the timeout */
248
if
(timeout == 0)
249
{
250
/* receive timeout */
251
button_interface_debug_print
(
"button: trigger timeout.\n"
);
252
(void)
button_deinit
(&gs_handle);
253
254
return
1;
255
}
256
257
/* finish trigger test */
258
button_interface_debug_print
(
"button: finish trigger test.\n"
);
259
(void)
button_deinit
(&gs_handle);
260
261
return
0;
262
}
driver_button_trigger_test.h
driver button trigger test header file
button_info
uint8_t button_info(button_info_t *info)
get chip's information
Definition
driver_button.c:828
button_info_t
struct button_info_s button_info_t
button information structure definition
button_deinit
uint8_t button_deinit(button_handle_t *handle)
close the chip
Definition
driver_button.c:544
button_irq_handler
uint8_t button_irq_handler(button_handle_t *handle, uint8_t press_release)
irq handler
Definition
driver_button.c:360
button_handle_t
struct button_handle_s button_handle_t
button handle structure definition
button_init
uint8_t button_init(button_handle_t *handle)
initialize the chip
Definition
driver_button.c:487
button_period_handler
uint8_t button_period_handler(button_handle_t *handle)
period handler
Definition
driver_button.c:108
button_t
struct button_s button_t
button structure definition
BUTTON_STATUS_DOUBLE_CLICK
@ BUTTON_STATUS_DOUBLE_CLICK
Definition
driver_button.h:81
BUTTON_STATUS_SHORT_PRESS_START
@ BUTTON_STATUS_SHORT_PRESS_START
Definition
driver_button.h:84
BUTTON_STATUS_PRESS
@ BUTTON_STATUS_PRESS
Definition
driver_button.h:78
BUTTON_STATUS_LONG_PRESS_START
@ BUTTON_STATUS_LONG_PRESS_START
Definition
driver_button.h:86
BUTTON_STATUS_TRIPLE_CLICK
@ BUTTON_STATUS_TRIPLE_CLICK
Definition
driver_button.h:82
BUTTON_STATUS_SHORT_PRESS_END
@ BUTTON_STATUS_SHORT_PRESS_END
Definition
driver_button.h:85
BUTTON_STATUS_REPEAT_CLICK
@ BUTTON_STATUS_REPEAT_CLICK
Definition
driver_button.h:83
BUTTON_STATUS_LONG_PRESS_HOLD
@ BUTTON_STATUS_LONG_PRESS_HOLD
Definition
driver_button.h:87
BUTTON_STATUS_SINGLE_CLICK
@ BUTTON_STATUS_SINGLE_CLICK
Definition
driver_button.h:80
BUTTON_STATUS_RELEASE
@ BUTTON_STATUS_RELEASE
Definition
driver_button.h:79
BUTTON_STATUS_LONG_PRESS_END
@ BUTTON_STATUS_LONG_PRESS_END
Definition
driver_button.h:88
button_interface_delay_ms
void button_interface_delay_ms(uint32_t ms)
interface delay ms
Definition
driver_button_interface_template.c:57
button_interface_timestamp_read
uint8_t button_interface_timestamp_read(button_time_t *t)
interface timestamp read
Definition
driver_button_interface_template.c:47
button_interface_debug_print
void button_interface_debug_print(const char *const fmt,...)
interface print format data
Definition
driver_button_interface_template.c:67
DRIVER_BUTTON_LINK_DEBUG_PRINT
#define DRIVER_BUTTON_LINK_DEBUG_PRINT(HANDLE, FUC)
link debug_print function
Definition
driver_button.h:197
DRIVER_BUTTON_LINK_INIT
#define DRIVER_BUTTON_LINK_INIT(HANDLE, STRUCTURE)
initialize button_handle_t structure
Definition
driver_button.h:173
DRIVER_BUTTON_LINK_DELAY_MS
#define DRIVER_BUTTON_LINK_DELAY_MS(HANDLE, FUC)
link delay_ms function
Definition
driver_button.h:189
DRIVER_BUTTON_LINK_RECEIVE_CALLBACK
#define DRIVER_BUTTON_LINK_RECEIVE_CALLBACK(HANDLE, FUC)
link receive_callback function
Definition
driver_button.h:205
DRIVER_BUTTON_LINK_TIMESTAMP_READ
#define DRIVER_BUTTON_LINK_TIMESTAMP_READ(HANDLE, FUC)
link timestamp_read function
Definition
driver_button.h:181
button_trigger_test_irq_handler
uint8_t button_trigger_test_irq_handler(uint8_t press_release)
trigger test irq
Definition
driver_button_trigger_test.c:144
button_trigger_test_period_handler
uint8_t button_trigger_test_period_handler(void)
trigger test period
Definition
driver_button_trigger_test.c:161
button_trigger_test
uint8_t button_trigger_test(void)
trigger test
Definition
driver_button_trigger_test.c:178
button_info_s::temperature_max
float temperature_max
Definition
driver_button.h:152
button_info_s::supply_voltage_max_v
float supply_voltage_max_v
Definition
driver_button.h:149
button_info_s::driver_version
uint32_t driver_version
Definition
driver_button.h:153
button_info_s::temperature_min
float temperature_min
Definition
driver_button.h:151
button_info_s::max_current_ma
float max_current_ma
Definition
driver_button.h:150
button_info_s::manufacturer_name
char manufacturer_name[32]
Definition
driver_button.h:146
button_info_s::supply_voltage_min_v
float supply_voltage_min_v
Definition
driver_button.h:148
button_info_s::interface
char interface[8]
Definition
driver_button.h:147
button_info_s::chip_name
char chip_name[32]
Definition
driver_button.h:145
button_s::status
uint16_t status
Definition
driver_button.h:96
button_s::times
uint16_t times
Definition
driver_button.h:97
test
driver_button_trigger_test.c
Generated by
1.15.0