42#define CHIP_NAME "General BUTTON"
43#define MANUFACTURER_NAME "General"
44#define SUPPLY_VOLTAGE_MIN 1.8f
45#define SUPPLY_VOLTAGE_MAX 5.5f
46#define MAX_CURRENT 1.0f
47#define TEMPERATURE_MIN -40.0f
48#define TEMPERATURE_MAX 125.0f
49#define DRIVER_VERSION 1000
54#define BUTTON_SHORT_TIME (1000 * 1000)
55#define BUTTON_LONG_TIME (3 * 1000 * 1000)
56#define BUTTON_REPEAT_TIME (200 * 1000)
57#define BUTTON_INTERVAL (5 * 1000)
58#define BUTTON_TIMEOUT (1000 * 1000)
130 handle->
debug_print(
"button: timestamp read failed.\n");
136 diff = (int64_t)((int64_t)t.
s -
137 (int64_t)handle->
decode[0].
t.
s) * 1000000 +
138 (int64_t)((int64_t)t.
us - (int64_t)handle->
decode[0].
t.
us);
151 if ((uint32_t)(diff) >= handle->
long_time)
174 diff = (int64_t)((int64_t)t.
s -
175 (int64_t)handle->
decode[1].
t.
s) * 1000000 +
176 (int64_t)((int64_t)t.
us - (int64_t)handle->
decode[1].
t.
us);
184 a_button_reset(handle);
193 a_button_reset(handle);
204 a_button_reset(handle);
210 diff = (int64_t)((int64_t)t.
s -
218 for (i = 0; i < len; i++)
222 diff2 = (int64_t)((int64_t)handle->
decode[i + 1].
t.
s -
223 (int64_t)handle->
decode[i].
t.
s) * 1000000 +
224 (int64_t)((int64_t)handle->
decode[i + 1].
t.
us -
230 for (i = 1; i < len; i += 2)
234 handle->
debug_print(
"button: double click error.\n");
235 a_button_reset(handle);
244 a_button_reset(handle);
249 diff = (int64_t)((int64_t)t.
s -
257 for (i = 0; i < len; i++)
261 diff2 = (int64_t)((int64_t)handle->
decode[i + 1].
t.
s -
262 (int64_t)handle->
decode[i].
t.
s) * 1000000 +
263 (int64_t)((int64_t)handle->
decode[i + 1].
t.
us -
269 for (i = 1; i < len; i += 2)
273 handle->
debug_print(
"button: triple click error.\n");
274 a_button_reset(handle);
283 a_button_reset(handle);
290 diff = (int64_t)((int64_t)t.
s -
298 for (i = 0; i < len; i++)
302 diff2 = (int64_t)((int64_t)handle->
decode[i + 1].
t.
s -
303 (int64_t)handle->
decode[i].
t.
s) * 1000000 +
304 (int64_t)((int64_t)handle->
decode[i + 1].
t.
us -
310 for (i = 1; i < len; i += 2)
314 handle->
debug_print(
"button: repeat click error.\n");
315 a_button_reset(handle);
324 a_button_reset(handle);
329 diff = (int64_t)((int64_t)t.
s -
332 if ((uint32_t)(diff) >= handle->
timeout)
335 a_button_reset(handle);
378 handle->
debug_print(
"button: timestamp read failed.\n");
382 diff = (int64_t)((int64_t)t.
s -
385 if (press_release != 0)
389 if ((uint32_t)(diff) < handle->
interval)
392 a_button_reset(handle);
402 if ((uint32_t)(diff) < handle->
interval)
404 handle->
debug_print(
"button: release too fast.\n");
405 a_button_reset(handle);
412 if (press_release != 0)
437 a_button_reset(handle);
439 if (press_release != 0)
450 a_button_reset(handle);
466 a_button_reset(handle);
502 handle->
debug_print(
"button: timestamp_read is null.\n");
508 handle->
debug_print(
"button: delay_ms is null.\n");
514 handle->
debug_print(
"button: receive_callback is null.\n");
522 handle->
debug_print(
"button: timestamp read failed.\n");
526 a_button_reset(handle);
527 a_button_set_param(handle);