FreeCalypso > hg > fc-tourmaline
diff src/cs/services/fcbm/fcbm_kpd_if.c @ 230:baa738eeb842
FCBM code implemented in first pass
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 01 May 2021 10:05:53 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cs/services/fcbm/fcbm_kpd_if.c Sat May 01 10:05:53 2021 +0000 @@ -0,0 +1,76 @@ +/* + * This module implements the interface to KPD for FCBM. + */ + +#include "fcbm/fcbm_env.h" +#include "fcbm/fcbm_func_i.h" +#include "kpd/kpd_api.h" +#include "rv/rv_general.h" +#include "rvf/rvf_api.h" +#include "rvm/rvm_use_id_list.h" + +static T_KPD_SUBSCRIBER fcbm_kpd_sub; + +T_RV_RET fcbm_subscribe_kpd(void) +{ + T_RV_RET rc; + T_RV_RETURN return_path; + T_KPD_VIRTUAL_KEY_TABLE notified_keys; + + return_path.callback_func = 0; + return_path.addr_id = fcbm_addr_id; + + notified_keys.nb_notified_keys = KPD_NB_PHYSICAL_KEYS; + notified_keys.notified_keys[0] = KPD_KEY_0; + notified_keys.notified_keys[1] = KPD_KEY_1; + notified_keys.notified_keys[2] = KPD_KEY_2; + notified_keys.notified_keys[3] = KPD_KEY_3; + notified_keys.notified_keys[4] = KPD_KEY_4; + notified_keys.notified_keys[5] = KPD_KEY_5; + notified_keys.notified_keys[6] = KPD_KEY_6; + notified_keys.notified_keys[7] = KPD_KEY_7; + notified_keys.notified_keys[8] = KPD_KEY_8; + notified_keys.notified_keys[9] = KPD_KEY_9; + notified_keys.notified_keys[10] = KPD_KEY_UP; + notified_keys.notified_keys[11] = KPD_KEY_DOWN; + notified_keys.notified_keys[12] = KPD_KEY_SOFT_LEFT; + notified_keys.notified_keys[13] = KPD_KEY_SOFT_RIGHT; + notified_keys.notified_keys[14] = KPD_KEY_CONNECT; + notified_keys.notified_keys[15] = KPD_KEY_DISCONNECT; + notified_keys.notified_keys[16] = KPD_KEY_STAR; + notified_keys.notified_keys[17] = KPD_KEY_DIESE; + notified_keys.notified_keys[18] = KPD_KEY_LEFT; + notified_keys.notified_keys[19] = KPD_KEY_RIGHT; + notified_keys.notified_keys[20] = KPD_KEY_ENTER; + notified_keys.notified_keys[21] = KPD_KEY_VOL_UP; + notified_keys.notified_keys[22] = KPD_KEY_VOL_DOWN; + notified_keys.notified_keys[23] = KPD_KEY_RECORD; + + rc = kpd_subscribe(&fcbm_kpd_sub, KPD_DEFAULT_MODE, ¬ified_keys, + return_path); + if (rc != RV_OK) { + rvf_send_trace("kpd_subscribe() failed", 22, rc, + RV_TRACE_LEVEL_ERROR, FCBM_USE_ID); + return rc; + } + + /* long press and repeat times are dummies copied from MFW */ + rc = kpd_define_key_notification(fcbm_kpd_sub, ¬ified_keys, + KPD_FIRST_PRESS_NOTIF | + KPD_RELEASE_NOTIF, 30, 50); + if (rc != RV_OK) + rvf_send_trace("kpd_define_key_notification() failed", 36, rc, + RV_TRACE_LEVEL_ERROR, FCBM_USE_ID); + return rc; +} + +T_RV_RET fcbm_unsubscribe_kpd(void) +{ + T_RV_RET rc; + + rc = kpd_unsubscribe(&fcbm_kpd_sub); + if (rc != RV_OK) + rvf_send_trace("kpd_unsubscribe() failed", 24, rc, + RV_TRACE_LEVEL_ERROR, FCBM_USE_ID); + return rc; +}