FreeCalypso > hg > fc-magnetite
view src/cs/drivers/drv_app/kpd/kpd_process_internal_msg.h @ 597:f18b29e27be5
First attempt at MCSI voice path automatic switching
The function is implemented at the ACI level in both aci2 and aci3,
successfully avoids triggering the DSP bug on the first call,
but the shutdown of MCSI upon call completion is not working properly yet
in either version.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 27 Mar 2019 22:18:35 +0000 |
parents | 945cf7f506b2 |
children |
line wrap: on
line source
/** * @file kpd_process_internal_msg.h * * Declaration of internal function for keypad driver. * These functions process internal messages received by the keypad task. * * @author Laurent Sollier (l-sollier@ti.com) * @version 0.1 */ /* * History: * * Date Author Modification * ---------------------------------------- * 10/10/2001 L Sollier Create * * * (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved */ #ifndef _KPD_PROCESS_INTERNAL_MSG_H_ #define _KPD_PROCESS_INTERNAL_MSG_H_ #include "kpd/kpd_api.h" #include "rv/rv_general.h" #include "rvm/rvm_gen.h" /** * @name Internal functions * */ /*@{*/ /** * function: kpd_subscribe_i * * This function is called by the client before any use of the keypad driver services * It is called only once. * * @param subscriber_id Subscriber identification value. * @param mode Mode used by the keypad client. * @param notified_keys_p Define all the keys the client want to be notified. * @param return_path Return path for key pressed. * @return RV_OK. */ T_RV_RET kpd_subscribe_i(T_SUBSCRIBER_ID subscriber_id, T_KPD_MODE mode, T_KPD_VIRTUAL_KEY_TABLE* notified_keys_p, T_RV_RETURN return_path); /** * function: kpd_unsubscribe_i * * This function unsubscribes a client from the keypad driver. * * @param subscriber_id Subscriber identification value. * @return RV_OK. */ T_RV_RET kpd_unsubscribe_i( T_SUBSCRIBER_ID subscriber_id); /** * function: kpd_define_key_notification_i * * This function defines time repetition for a set of keys. * By default, all the keys are defined as KPD_RELEASE_NOTIF. * * @param subscriber_id Subscriber identification value. * @param repeat_key_table_p Set of keys which must be repeated. * @param notif_level Define what kind of notification is set for all the keys. * @param long_press_time Time in milliseconds before long press time notification. * @param repeat_time Time in millliseconds for key repetition. If repeat_time = 0, * keys defined by parameter keys are not repeated. * @return RV_OK. */ T_RV_RET kpd_define_key_notification_i(T_SUBSCRIBER_ID subscriber_id, T_KPD_VIRTUAL_KEY_TABLE* repeat_key_table_p, T_KPD_NOTIF_LEVEL notif_level, UINT16 long_press_time, UINT16 repeat_time); /** * function: kpd_change_mode_i * * This function changes the mode for the specific client. * * @param subscriber_id Subscriber identification value. * @param notified_keys_p Define all the keys the client want to be notified in the new mode. * @param new_mode New mode in which the client want to switch. * @return RV_OK. */ T_RV_RET kpd_change_mode_i(T_SUBSCRIBER_ID subscriber_id, T_KPD_VIRTUAL_KEY_TABLE* notified_keys_p, T_KPD_MODE new_mode); /** * function: kpd_own_keypad_i * * This function allows the latest subscriber being the only client to be notified by action * on keypad (less CPU time used). * After this call, the keypad is in the "single notified" state. * This action is cancelled when: * - The function is called with parameter is_keypad_owner to FALSE, * - The subscriber (which own the keypad) unsubscribe from keypad. * * Note that keypad is in the "multi notified" state if there is no subscriber (particularly * at the keypad initialisation). * * @param subscriber_id Subscriber identification value. * @param is_keypad_owner_p Define the state to change. * TRUE: keypad pass in "single notified" state * FALSE: keypad pass in "multi notified" state * @param keys_owner Set of keys only notified to the subscriber that call this function. * This is mandatory a subset of the keys defined at subscription. * @return RV_OK. */ T_RV_RET kpd_own_keypad_i(T_SUBSCRIBER_ID subscriber_id, BOOL is_keypad_owner, T_KPD_VIRTUAL_KEY_TABLE* keys_owner_p); /** * function: kpd_set_key_config_i * * This function allows setting dynamically a configuration for new or existing virtual keys. * The two tables define a mapping between each entry (new_keys[1] is mapped with reference_keys[1], * new_keys[2] is mapped with reference_keys[2], ...). * The call of this function doesn't change the mode of the client. * * @param subscriber_id Subscriber identification value. * @param reference_keys_p Set of keys available on keypad in default mode. * @param new_keys_p Set of keys which must map with the reference keys. * @return RV_OK. */ T_RV_RET kpd_set_key_config_i(T_SUBSCRIBER_ID subscriber_id, T_KPD_VIRTUAL_KEY_TABLE* reference_keys_p, T_KPD_VIRTUAL_KEY_TABLE* new_keys_p); /** * function: kpd_get_available_keys_i * * This function allows knowing all the available keys in default mode. * * @param available_keys_p Set of keys available on keypad in default mode. The structure * must be declared by the caller, and is filled by the function (OUT). * @return RV_OK. */ T_RV_RET kpd_get_available_keys_i( T_KPD_VIRTUAL_KEY_TABLE* available_keys_p); /** * function: kpd_get_ascii_key_code_i * * This function return associated ASCII value to defined key. * * @param key Key identification value. * @param mode Mode in which is defined the link between "key" and "ascii code". * @param ascii_code Associated ASCII code to parameter "key" (OUT). * @return RV_OK. */ T_RV_RET kpd_get_ascii_key_code_i(T_KPD_VIRTUAL_KEY_ID key, T_KPD_MODE mode, UBYTE** ascii_code); /** * function: kpd_process_key_pressed_i * * This function process a key pressed. * * @param physical_key_pressed_id Physical key pressed. */ void kpd_process_key_pressed_i(T_KPD_PHYSICAL_KEY_ID physical_key_pressed_id); /** * function: kpd_process_key_pressed_sn_mode_i * * This function process a key pressed when the keypad is in Single-notified mode, * and if the key is in the table defined by the keypad owner (see function kpd_own_keypad). * * @param physical_key_pressed_id Physical key pressed. */ void kpd_process_key_pressed_sn_mode_i(T_KPD_PHYSICAL_KEY_ID physical_key_pressed_id); /** * function: kpd_wait_for_key_release * * This function wait that key is released to unmask interrupt. * This function is usefull when limits memory size is reached, * to be sure that all messages could be sent to all the subscribers * */ void kpd_wait_for_key_release(void); /*@}*/ #endif /* #ifndef _KPD_PROCESS_INTERNAL_MSG_H_ */