Reworking touch controls Part 1
Working: Play pause Previous/Next Single or paired bud mode
This commit is contained in:
parent
4b2cd907d1
commit
34f5e0cd55
|
@ -1369,37 +1369,195 @@ void app_latency_switch_key_handler(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void app_bt_function_key(APP_KEY_STATUS *status, void *param)
|
|
||||||
{
|
/*
|
||||||
|
* handling of touch events when the devices are turned on
|
||||||
|
|
||||||
|
* Both pods active:
|
||||||
|
|
||||||
|
* Right Ear:
|
||||||
|
* Single tap : Play/Pause
|
||||||
|
* Double tap : Next track
|
||||||
|
* Hold : Fast-Forward
|
||||||
|
* Triple tap : Volume Up
|
||||||
|
*
|
||||||
|
* Left Ear:
|
||||||
|
* Single tap : Play/Pause
|
||||||
|
* Double tap : Previous track
|
||||||
|
* Hold : Rewind
|
||||||
|
* Triple tap : Volume Down
|
||||||
|
|
||||||
|
* Single pod active:
|
||||||
|
|
||||||
|
* Single tap : Play/Pause
|
||||||
|
* Double tap : Next track
|
||||||
|
* Hold : Previous track
|
||||||
|
* Triple tap : Volume Up
|
||||||
|
* Quad tap : Volume Down
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
* We use app_ibrt_if_start_user_action for handling actions, as this will apply locally if we are link master
|
||||||
|
* OR send it over the link to the other bud if we are not
|
||||||
|
*/
|
||||||
|
|
||||||
|
void send_vol_up(void){
|
||||||
|
uint8_t action[] = {IBRT_ACTION_AVRCP_VOLUP};
|
||||||
|
app_ibrt_if_start_user_action(action, sizeof(action));
|
||||||
|
}
|
||||||
|
void send_play_pause(void){
|
||||||
|
if (app_bt_device.a2dp_play_pause_flag!=0) {
|
||||||
|
uint8_t action[] = {IBRT_ACTION_PAUSE};
|
||||||
|
app_ibrt_if_start_user_action(action, sizeof(action));
|
||||||
|
}else {
|
||||||
|
uint8_t action[] = {IBRT_ACTION_PLAY};
|
||||||
|
app_ibrt_if_start_user_action(action, sizeof(action));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void send_vol_down(void){
|
||||||
|
uint8_t action[] = {IBRT_ACTION_AVRCP_VOLDN};
|
||||||
|
app_ibrt_if_start_user_action(action, sizeof(action));
|
||||||
|
}
|
||||||
|
|
||||||
|
void send_next_track(void){
|
||||||
|
uint8_t action[] = {IBRT_ACTION_FORWARD};
|
||||||
|
app_ibrt_if_start_user_action(action, sizeof(action));
|
||||||
|
}
|
||||||
|
|
||||||
|
void send_prev_track(void){
|
||||||
|
uint8_t action[] = {IBRT_ACTION_BACKWARD};
|
||||||
|
app_ibrt_if_start_user_action(action, sizeof(action));
|
||||||
|
}
|
||||||
|
void app_key_single_tap(APP_KEY_STATUS *status, void *param){
|
||||||
TRACE(2,"%s event %d", __func__, status->event);
|
TRACE(2,"%s event %d", __func__, status->event);
|
||||||
bt_key_send(status);
|
|
||||||
|
if (!app_tws_ibrt_tws_link_connected()){
|
||||||
|
//No other bud paired
|
||||||
|
TRACE(0,"Handling %s in single bud mode",__func__);
|
||||||
|
send_play_pause();
|
||||||
|
}else {
|
||||||
|
//Bud's are working as a pair
|
||||||
|
if (app_tws_is_left_side()){
|
||||||
|
TRACE(0,"Handling %s as left bud",__func__);
|
||||||
|
//Lefty
|
||||||
|
send_play_pause();
|
||||||
|
}else {
|
||||||
|
TRACE(0,"Handling %s as right bud",__func__);
|
||||||
|
//Righty
|
||||||
|
send_play_pause();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
void app_key_double_tap(APP_KEY_STATUS *status, void *param){
|
||||||
|
TRACE(2,"%s event %d", __func__, status->event);
|
||||||
|
|
||||||
|
if (!app_tws_ibrt_tws_link_connected()){
|
||||||
|
//No other bud paired
|
||||||
|
TRACE(0,"Handling %s in single bud mode",__func__);
|
||||||
|
send_next_track();
|
||||||
|
}else {
|
||||||
|
//Bud's are working as a pair
|
||||||
|
if (app_tws_is_left_side()){
|
||||||
|
TRACE(0,"Handling %s as left bud",__func__);
|
||||||
|
//Lefty
|
||||||
|
send_prev_track();
|
||||||
|
}else {
|
||||||
|
TRACE(0,"Handling %s as right bud",__func__);
|
||||||
|
//Righty
|
||||||
|
send_next_track();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
void app_key_hold_tap(APP_KEY_STATUS *status, void *param){
|
||||||
|
TRACE(2,"%s event %d", __func__, status->event);
|
||||||
|
|
||||||
|
if (!app_tws_ibrt_tws_link_connected()){
|
||||||
|
//No other bud paired
|
||||||
|
TRACE(0,"Handling %s in single bud mode",__func__);
|
||||||
|
send_play_pause();
|
||||||
|
}else {
|
||||||
|
//Bud's are working as a pair
|
||||||
|
if (app_tws_is_left_side()){
|
||||||
|
TRACE(0,"Handling %s as left bud",__func__);
|
||||||
|
//Lefty
|
||||||
|
send_play_pause();
|
||||||
|
}else {
|
||||||
|
TRACE(0,"Handling %s as right bud",__func__);
|
||||||
|
//Righty
|
||||||
|
send_play_pause();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
void app_key_triple_tap(APP_KEY_STATUS *status, void *param){
|
||||||
|
TRACE(2,"%s event %d", __func__, status->event);
|
||||||
|
|
||||||
|
if (!app_tws_ibrt_tws_link_connected()){
|
||||||
|
//No other bud paired
|
||||||
|
TRACE(0,"Handling %s in single bud mode",__func__);
|
||||||
|
send_vol_up();
|
||||||
|
}else {
|
||||||
|
//Bud's are working as a pair
|
||||||
|
if (app_tws_is_left_side()){
|
||||||
|
TRACE(0,"Handling %s as left bud",__func__);
|
||||||
|
//Lefty
|
||||||
|
send_vol_down();
|
||||||
|
}else {
|
||||||
|
TRACE(0,"Handling %s as right bud",__func__);
|
||||||
|
//Righty
|
||||||
|
send_vol_up();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
void app_key_quad_tap(APP_KEY_STATUS *status, void *param){
|
||||||
|
TRACE(2,"%s event %d", __func__, status->event);
|
||||||
|
|
||||||
|
if (!app_tws_ibrt_tws_link_connected()){
|
||||||
|
//No other bud paired
|
||||||
|
TRACE(0,"Handling %s in single bud mode",__func__);
|
||||||
|
send_vol_down();
|
||||||
|
}else {
|
||||||
|
//Bud's are working as a pair
|
||||||
|
if (app_tws_is_left_side()){
|
||||||
|
TRACE(0,"Handling %s as left bud",__func__);
|
||||||
|
//Lefty
|
||||||
|
}else {
|
||||||
|
TRACE(0,"Handling %s as right bud",__func__);
|
||||||
|
//Righty
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void app_key_reboot(APP_KEY_STATUS *status, void *param)
|
||||||
|
{
|
||||||
|
TRACE(1,"%s ",__func__);
|
||||||
|
hal_cmu_sys_reboot();
|
||||||
}
|
}
|
||||||
|
|
||||||
void app_key_init(void)
|
void app_key_init(void)
|
||||||
{
|
{
|
||||||
#if defined(IBRT_TESTMODE)
|
|
||||||
app_ibrt_ui_test_key_init();
|
|
||||||
#else
|
|
||||||
uint8_t i = 0;
|
uint8_t i = 0;
|
||||||
TRACE(1,"%s",__func__);
|
TRACE(1,"%s",__func__);
|
||||||
|
|
||||||
const APP_KEY_HANDLE key_cfg[] = {
|
const APP_KEY_HANDLE key_cfg[] = {
|
||||||
{{APP_KEY_CODE_PWR,APP_KEY_EVENT_CLICK},"bt function key",app_bt_function_key, NULL},
|
|
||||||
{{APP_KEY_CODE_PWR,APP_KEY_EVENT_DOUBLECLICK},"bt function key",app_bt_function_key, NULL},
|
{{APP_KEY_CODE_PWR,APP_KEY_EVENT_CLICK},"",app_key_single_tap, NULL},
|
||||||
{{APP_KEY_CODE_PWR,APP_KEY_EVENT_LONGPRESS},"bt function key",app_bt_function_key, NULL},
|
{{APP_KEY_CODE_PWR,APP_KEY_EVENT_DOUBLECLICK},"",app_key_double_tap, NULL},
|
||||||
{{APP_KEY_CODE_PWR,APP_KEY_EVENT_TRIPLECLICK},"bt anc key",app_anc_key, NULL},
|
{{APP_KEY_CODE_PWR,APP_KEY_EVENT_TRIPLECLICK},"",app_key_triple_tap, NULL},
|
||||||
|
{{APP_KEY_CODE_PWR,APP_KEY_EVENT_ULTRACLICK},"",app_key_quad_tap, NULL},
|
||||||
|
// {{APP_KEY_CODE_PWR,APP_KEY_EVENT_CONTINUED_DOWN},"",app_key_hold_tap, NULL},
|
||||||
|
// {{APP_KEY_CODE_PWR,APP_KEY_EVENT_LONGPRESS},"",app_key_hold_tap, NULL},
|
||||||
|
// {{APP_KEY_CODE_PWR,APP_KEY_EVENT_TRIPLECLICK},"bt anc key",app_anc_key, NULL},
|
||||||
|
{{APP_KEY_CODE_PWR,APP_KEY_EVENT_LONGLONGPRESS},"long click reboot",app_key_reboot, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
app_key_handle_clear();
|
app_key_handle_clear();
|
||||||
for (i=0; i<(sizeof(key_cfg)/sizeof(APP_KEY_HANDLE)); i++){
|
for (i=0; i<(sizeof(key_cfg)/sizeof(APP_KEY_HANDLE)); i++){
|
||||||
app_key_handle_registration(&key_cfg[i]);
|
app_key_handle_registration(&key_cfg[i]);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
|
||||||
void app_key_reboot(APP_KEY_STATUS *status, void *param)
|
|
||||||
{
|
|
||||||
TRACE(1,"%s ",__func__);
|
|
||||||
hal_cmu_sys_reboot();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void app_key_init_on_charging(void)
|
void app_key_init_on_charging(void)
|
||||||
|
|
Loading…
Reference in New Issue