LibDriver MULTI_BUTTON
Loading...
Searching...
No Matches
driver_multi_button_trigger_test.c
Go to the documentation of this file.
1
36
37
#include "
driver_multi_button_trigger_test.h
"
38
39
static
multi_button_handle_t
gs_handle;
40
static
volatile
uint16_t gs_flag;
41
49
static
void
a_receive_callback(uint16_t row, uint16_t col,
multi_button_t
*data)
50
{
51
switch
(data->
status
)
52
{
53
case
MULTI_BUTTON_STATUS_PRESS
:
54
{
55
gs_flag |= 1 << 0;
56
57
break
;
58
}
59
case
MULTI_BUTTON_STATUS_RELEASE
:
60
{
61
gs_flag |= 1 << 1;
62
63
break
;
64
}
65
case
MULTI_BUTTON_STATUS_SINGLE_CLICK
:
66
{
67
gs_flag |= 1 << 2;
68
multi_button_interface_debug_print
(
"multi_button: row %d col %d irq single click.\n"
, row, col);
69
70
break
;
71
}
72
case
MULTI_BUTTON_STATUS_DOUBLE_CLICK
:
73
{
74
gs_flag |= 1 << 3;
75
multi_button_interface_debug_print
(
"multi_button: row %d col %d irq double click.\n"
, row, col);
76
77
break
;
78
}
79
case
MULTI_BUTTON_STATUS_TRIPLE_CLICK
:
80
{
81
gs_flag |= 1 << 4;
82
multi_button_interface_debug_print
(
"multi_button: row %d col %d irq triple click.\n"
, row, col);
83
84
break
;
85
}
86
case
MULTI_BUTTON_STATUS_REPEAT_CLICK
:
87
{
88
gs_flag |= 1 << 5;
89
multi_button_interface_debug_print
(
"multi_button: row %d col %d irq repeat click with %d times.\n"
, row, col, data->
times
);
90
91
break
;
92
}
93
case
MULTI_BUTTON_STATUS_SHORT_PRESS_START
:
94
{
95
gs_flag |= 1 << 6;
96
multi_button_interface_debug_print
(
"multi_button: row %d col %d irq short press start.\n"
, row, col);
97
98
break
;
99
}
100
case
MULTI_BUTTON_STATUS_SHORT_PRESS_END
:
101
{
102
gs_flag |= 1 << 7;
103
multi_button_interface_debug_print
(
"multi_button: row %d col %d irq short press end.\n"
, row, col);
104
105
break
;
106
}
107
case
MULTI_BUTTON_STATUS_LONG_PRESS_START
:
108
{
109
gs_flag |= 1 << 8;
110
multi_button_interface_debug_print
(
"multi_button: row %d col %d irq long press start.\n"
, row, col);
111
112
break
;
113
}
114
case
MULTI_BUTTON_STATUS_LONG_PRESS_HOLD
:
115
{
116
gs_flag |= 1 << 9;
117
multi_button_interface_debug_print
(
"multi_button: row %d col %d irq long press hold.\n"
, row, col);
118
119
break
;
120
}
121
case
MULTI_BUTTON_STATUS_LONG_PRESS_END
:
122
{
123
gs_flag |= 1 << 10;
124
multi_button_interface_debug_print
(
"multi_button: row %d col %d irq long press end.\n"
, row, col);
125
126
break
;
127
}
128
default :
129
{
130
multi_button_interface_debug_print
(
"multi_button: row %d col %d irq unknown status.\n"
, row, col);
131
132
break
;
133
}
134
}
135
}
136
146
uint8_t
multi_button_trigger_test
(uint8_t row, uint8_t col)
147
{
148
uint8_t res;
149
uint32_t timeout;
150
multi_button_info_t
info;
151
152
/* link interface function */
153
DRIVER_MULTI_BUTTON_LINK_INIT
(&gs_handle,
multi_button_handle_t
);
154
DRIVER_MULTI_BUTTON_LINK_MATRIX_INIT
(&gs_handle,
multi_button_interface_matrix_init
);
155
DRIVER_MULTI_BUTTON_LINK_MATRIX_DEINIT
(&gs_handle,
multi_button_interface_matrix_deinit
);
156
DRIVER_MULTI_BUTTON_LINK_MATRIX_WRITE_ROW
(&gs_handle,
multi_button_interface_matrix_write_row
);
157
DRIVER_MULTI_BUTTON_LINK_MATRIX_READ_ROW
(&gs_handle,
multi_button_interface_matrix_read_row
);
158
DRIVER_MULTI_BUTTON_LINK_TIMESTAMP_READ
(&gs_handle,
multi_button_interface_timestamp_read
);
159
DRIVER_MULTI_BUTTON_LINK_DELAY_MS
(&gs_handle,
multi_button_interface_delay_ms
);
160
DRIVER_MULTI_BUTTON_LINK_DEBUG_PRINT
(&gs_handle,
multi_button_interface_debug_print
);
161
DRIVER_MULTI_BUTTON_LINK_RECEIVE_CALLBACK
(&gs_handle, a_receive_callback);
162
163
/* get information */
164
res =
multi_button_info
(&info);
165
if
(res != 0)
166
{
167
multi_button_interface_debug_print
(
"multi_button: get info failed.\n"
);
168
169
return
1;
170
}
171
else
172
{
173
/* print chip info */
174
multi_button_interface_debug_print
(
"multi_button: chip is %s.\n"
, info.
chip_name
);
175
multi_button_interface_debug_print
(
"multi_button: manufacturer is %s.\n"
, info.
manufacturer_name
);
176
multi_button_interface_debug_print
(
"multi_button: interface is %s.\n"
, info.
interface
);
177
multi_button_interface_debug_print
(
"multi_button: driver version is %d.%d.\n"
, info.
driver_version
/ 1000, (info.
driver_version
% 1000) / 100);
178
multi_button_interface_debug_print
(
"multi_button: min supply voltage is %0.1fV.\n"
, info.
supply_voltage_min_v
);
179
multi_button_interface_debug_print
(
"multi_button: max supply voltage is %0.1fV.\n"
, info.
supply_voltage_max_v
);
180
multi_button_interface_debug_print
(
"multi_button: max current is %0.2fmA.\n"
, info.
max_current_ma
);
181
multi_button_interface_debug_print
(
"multi_button: max temperature is %0.1fC.\n"
, info.
temperature_max
);
182
multi_button_interface_debug_print
(
"multi_button: min temperature is %0.1fC.\n"
, info.
temperature_min
);
183
}
184
185
/* init */
186
res =
multi_button_init
(&gs_handle, row, col);
187
if
(res != 0)
188
{
189
multi_button_interface_debug_print
(
"multi_button: init failed.\n"
);
190
191
return
1;
192
}
193
194
/* start trigger test */
195
multi_button_interface_debug_print
(
"multi_button: start trigger test.\n"
);
196
197
/* 100s timeout */
198
timeout = 10000;
199
200
/* init 0 */
201
gs_flag = 0;
202
203
/* check timeout */
204
while
(timeout != 0)
205
{
206
/* check the flag */
207
if
((gs_flag & 0x07FF) == 0x07FF)
208
{
209
break
;
210
}
211
212
/* timeout -- */
213
timeout--;
214
215
/* delay 5ms */
216
multi_button_interface_delay_ms
(5);
217
218
/* process */
219
(void)
multi_button_process
(&gs_handle);
220
}
221
222
/* check the timeout */
223
if
(timeout == 0)
224
{
225
/* receive timeout */
226
multi_button_interface_debug_print
(
"multi_button: trigger timeout.\n"
);
227
(void)
multi_button_deinit
(&gs_handle);
228
229
return
1;
230
}
231
232
/* finish trigger test */
233
multi_button_interface_debug_print
(
"multi_button: finish trigger test.\n"
);
234
(void)
multi_button_deinit
(&gs_handle);
235
236
return
0;
237
}
driver_multi_button_trigger_test.h
driver multi_button trigger test header file
multi_button_init
uint8_t multi_button_init(multi_button_handle_t *handle, uint8_t row, uint8_t col)
initialize the chip
Definition
driver_multi_button.c:618
multi_button_process
uint8_t multi_button_process(multi_button_handle_t *handle)
process
Definition
driver_multi_button.c:546
multi_button_deinit
uint8_t multi_button_deinit(multi_button_handle_t *handle)
close the chip
Definition
driver_multi_button.c:756
multi_button_handle_t
struct multi_button_handle_s multi_button_handle_t
multi_button handle structure definition
multi_button_info
uint8_t multi_button_info(multi_button_info_t *info)
get chip's information
Definition
driver_multi_button.c:1153
multi_button_t
struct multi_button_s multi_button_t
multi_button structure definition
multi_button_info_t
struct multi_button_info_s multi_button_info_t
multi_button information structure definition
MULTI_BUTTON_STATUS_SHORT_PRESS_END
@ MULTI_BUTTON_STATUS_SHORT_PRESS_END
Definition
driver_multi_button.h:92
MULTI_BUTTON_STATUS_REPEAT_CLICK
@ MULTI_BUTTON_STATUS_REPEAT_CLICK
Definition
driver_multi_button.h:90
MULTI_BUTTON_STATUS_DOUBLE_CLICK
@ MULTI_BUTTON_STATUS_DOUBLE_CLICK
Definition
driver_multi_button.h:88
MULTI_BUTTON_STATUS_LONG_PRESS_END
@ MULTI_BUTTON_STATUS_LONG_PRESS_END
Definition
driver_multi_button.h:95
MULTI_BUTTON_STATUS_SINGLE_CLICK
@ MULTI_BUTTON_STATUS_SINGLE_CLICK
Definition
driver_multi_button.h:87
MULTI_BUTTON_STATUS_LONG_PRESS_HOLD
@ MULTI_BUTTON_STATUS_LONG_PRESS_HOLD
Definition
driver_multi_button.h:94
MULTI_BUTTON_STATUS_TRIPLE_CLICK
@ MULTI_BUTTON_STATUS_TRIPLE_CLICK
Definition
driver_multi_button.h:89
MULTI_BUTTON_STATUS_PRESS
@ MULTI_BUTTON_STATUS_PRESS
Definition
driver_multi_button.h:85
MULTI_BUTTON_STATUS_SHORT_PRESS_START
@ MULTI_BUTTON_STATUS_SHORT_PRESS_START
Definition
driver_multi_button.h:91
MULTI_BUTTON_STATUS_RELEASE
@ MULTI_BUTTON_STATUS_RELEASE
Definition
driver_multi_button.h:86
MULTI_BUTTON_STATUS_LONG_PRESS_START
@ MULTI_BUTTON_STATUS_LONG_PRESS_START
Definition
driver_multi_button.h:93
multi_button_interface_matrix_init
uint8_t multi_button_interface_matrix_init(void)
interface matrix init
Definition
driver_multi_button_interface_template.c:46
multi_button_interface_matrix_write_row
uint8_t multi_button_interface_matrix_write_row(uint16_t num, uint8_t level)
interface matrix write row
Definition
driver_multi_button_interface_template.c:72
multi_button_interface_debug_print
void multi_button_interface_debug_print(const char *const fmt,...)
interface print format data
Definition
driver_multi_button_interface_template.c:118
multi_button_interface_timestamp_read
uint8_t multi_button_interface_timestamp_read(multi_button_time_t *t)
interface timestamp read
Definition
driver_multi_button_interface_template.c:98
multi_button_interface_matrix_read_row
uint8_t multi_button_interface_matrix_read_row(uint32_t *col_array)
interface matrix read row
Definition
driver_multi_button_interface_template.c:85
multi_button_interface_delay_ms
void multi_button_interface_delay_ms(uint32_t ms)
interface delay ms
Definition
driver_multi_button_interface_template.c:108
multi_button_interface_matrix_deinit
uint8_t multi_button_interface_matrix_deinit(void)
interface matrix deinit
Definition
driver_multi_button_interface_template.c:58
DRIVER_MULTI_BUTTON_LINK_MATRIX_WRITE_ROW
#define DRIVER_MULTI_BUTTON_LINK_MATRIX_WRITE_ROW(HANDLE, FUC)
link matrix_write_row function
Definition
driver_multi_button.h:223
DRIVER_MULTI_BUTTON_LINK_DEBUG_PRINT
#define DRIVER_MULTI_BUTTON_LINK_DEBUG_PRINT(HANDLE, FUC)
link debug_print function
Definition
driver_multi_button.h:255
DRIVER_MULTI_BUTTON_LINK_MATRIX_INIT
#define DRIVER_MULTI_BUTTON_LINK_MATRIX_INIT(HANDLE, FUC)
link matrix_init function
Definition
driver_multi_button.h:207
DRIVER_MULTI_BUTTON_LINK_MATRIX_DEINIT
#define DRIVER_MULTI_BUTTON_LINK_MATRIX_DEINIT(HANDLE, FUC)
link matrix_deinit function
Definition
driver_multi_button.h:215
DRIVER_MULTI_BUTTON_LINK_RECEIVE_CALLBACK
#define DRIVER_MULTI_BUTTON_LINK_RECEIVE_CALLBACK(HANDLE, FUC)
link receive_callback function
Definition
driver_multi_button.h:263
DRIVER_MULTI_BUTTON_LINK_TIMESTAMP_READ
#define DRIVER_MULTI_BUTTON_LINK_TIMESTAMP_READ(HANDLE, FUC)
link timestamp_read function
Definition
driver_multi_button.h:239
DRIVER_MULTI_BUTTON_LINK_MATRIX_READ_ROW
#define DRIVER_MULTI_BUTTON_LINK_MATRIX_READ_ROW(HANDLE, FUC)
link matrix_read_row function
Definition
driver_multi_button.h:231
DRIVER_MULTI_BUTTON_LINK_DELAY_MS
#define DRIVER_MULTI_BUTTON_LINK_DELAY_MS(HANDLE, FUC)
link delay_ms function
Definition
driver_multi_button.h:247
DRIVER_MULTI_BUTTON_LINK_INIT
#define DRIVER_MULTI_BUTTON_LINK_INIT(HANDLE, STRUCTURE)
initialize multi_button_handle_t structure
Definition
driver_multi_button.h:199
multi_button_trigger_test
uint8_t multi_button_trigger_test(uint8_t row, uint8_t col)
trigger test
Definition
driver_multi_button_trigger_test.c:146
multi_button_info_s::temperature_max
float temperature_max
Definition
driver_multi_button.h:178
multi_button_info_s::supply_voltage_max_v
float supply_voltage_max_v
Definition
driver_multi_button.h:175
multi_button_info_s::driver_version
uint32_t driver_version
Definition
driver_multi_button.h:179
multi_button_info_s::temperature_min
float temperature_min
Definition
driver_multi_button.h:177
multi_button_info_s::max_current_ma
float max_current_ma
Definition
driver_multi_button.h:176
multi_button_info_s::manufacturer_name
char manufacturer_name[32]
Definition
driver_multi_button.h:172
multi_button_info_s::supply_voltage_min_v
float supply_voltage_min_v
Definition
driver_multi_button.h:174
multi_button_info_s::interface
char interface[8]
Definition
driver_multi_button.h:173
multi_button_info_s::chip_name
char chip_name[32]
Definition
driver_multi_button.h:171
multi_button_s::status
uint16_t status
Definition
driver_multi_button.h:103
multi_button_s::times
uint16_t times
Definition
driver_multi_button.h:104
test
driver_multi_button_trigger_test.c
Generated by
1.15.0