2023-08-24 09:30:29 +00:00
|
|
|
|
|
|
|
#ifndef TREZORHAL_HAPTIC_H
|
|
|
|
#define TREZORHAL_HAPTIC_H
|
|
|
|
|
2024-01-10 13:56:41 +00:00
|
|
|
#include <stdbool.h>
|
|
|
|
#include <stdint.h>
|
|
|
|
|
2023-08-24 09:30:29 +00:00
|
|
|
typedef enum {
|
|
|
|
HAPTIC_BUTTON_PRESS = 0,
|
|
|
|
HAPTIC_ALERT = 1,
|
|
|
|
HAPTIC_HOLD_TO_CONFIRM = 2,
|
|
|
|
} haptic_effect_t;
|
|
|
|
|
|
|
|
// Initialize haptic driver
|
|
|
|
void haptic_init(void);
|
|
|
|
|
|
|
|
// Calibrate haptic driver
|
|
|
|
void haptic_calibrate(void);
|
|
|
|
|
2024-01-10 13:56:41 +00:00
|
|
|
// Test haptic driver, plays a maximum amplitude for the given duration
|
|
|
|
bool haptic_test(uint16_t duration_ms);
|
|
|
|
|
2023-08-24 09:30:29 +00:00
|
|
|
// Play haptic effect
|
|
|
|
void haptic_play(haptic_effect_t effect);
|
|
|
|
|
2024-04-29 08:37:00 +00:00
|
|
|
// Starts the haptic motor with a specified amplitude and period
|
|
|
|
//
|
|
|
|
// The function can be invoked repeatedly during the specified duration
|
|
|
|
// (`duration_ms`) to modify the amplitude dynamically, allowing
|
|
|
|
// the creation of customized haptic effects.
|
2024-05-02 07:29:05 +00:00
|
|
|
bool haptic_play_custom(int8_t amplitude_pct, uint16_t duration_ms);
|
2024-04-29 08:37:00 +00:00
|
|
|
|
2024-05-07 13:46:15 +00:00
|
|
|
void haptic_set_enabled(bool enable);
|
|
|
|
|
2023-08-24 09:30:29 +00:00
|
|
|
#endif
|