diff options
Diffstat (limited to 'stack/hid/hidd_int.h')
-rw-r--r-- | stack/hid/hidd_int.h | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/stack/hid/hidd_int.h b/stack/hid/hidd_int.h new file mode 100644 index 0000000..58d7a83 --- /dev/null +++ b/stack/hid/hidd_int.h @@ -0,0 +1,136 @@ +/****************************************************************************/ +/* */ +/* Name: hidd_int.h */ +/* */ +/* Function: this file contains HID DEVICE internal definitions */ +/* */ +/* */ +/* Copyright (c) 2002-2004, WIDCOMM Inc., All Rights Reserved. */ +/* WIDCOMM Bluetooth Core. Proprietary and confidential. */ +/* */ +/****************************************************************************/ + +#ifndef HIDD_INT_H +#define HIDD_INT_H +#include "hidd_api.h" +#include "hid_conn.h" +#include "l2c_api.h" + +/* Define the possible events of the HID Device state machine. +*/ +enum +{ + HOST_CONN_OPEN, + HOST_CONN_CLOSE, + HOST_CONN_LOST, + HOST_CONN_FAIL, + HID_API_CONNECT, + HID_API_DISCONNECT, + HID_API_SEND_DATA +}; + +/* Define the possible states of the HID Device. +*/ +enum +{ + HID_DEV_ST_NO_CONN, + HID_DEV_ST_CONNECTING, + HID_DEV_ST_CONNECTED, + HID_DEV_ST_DISC_ING +}; + +/* To remember the power mode and setting */ +typedef struct curr_pm_setting +{ + UINT8 mode; + UINT16 interval; +} tHID_DEV_PM_CURR; + +/* Define the HID management control block. +*/ +typedef struct hid_control_block +{ + BD_ADDR host_addr; /* BD-Addr of the host device */ + BOOLEAN host_known; /* Mode */ + BOOLEAN virtual_cable;/* If the device is to behave as virtual cable */ + UINT8 dev_state; /* Device state if in HOST-KNOWN mode */ + UINT8 conn_tries; /* Remembers to the number of connection attempts while CONNECTING */ + UINT8 sec_mask; + UINT16 get_rep_buf_sz; + tHID_CONN conn; /* L2CAP channel info */ + +#if HID_DEV_PM_INCLUDED == TRUE + TIMER_LIST_ENT idle_tle; /* Timer used for inactivity timing */ + tHID_DEV_PM_PWR_MD pm_params[3]; /* Power management parameters for the three possible states */ + tHID_DEV_PM_CURR curr_pm; /* Current power mode */ + BOOLEAN pm_ctrl_busy;/* A power mode transition is going on */ + UINT8 conn_substate; + tHID_DEV_PM_PWR_MD final_pm;/* To remember the power mode while a power mode change is ongoing */ +#endif + + BOOLEAN use_qos_flg; /* Qos information provided by application or not */ + BOOLEAN unplug_on; /* Virtual unplug has been sent or received */ + tHID_DEV_QOS_INFO qos_info; /* Storage for QoS provided by application */ + + tHID_DEV_CALLBACK *callback; /* Application callbacks */ + tL2CAP_CFG_INFO l2cap_ctrl_cfg; /* Configuration data for control channel */ + tL2CAP_CFG_INFO l2cap_int_cfg; /* Configuration data for interrupt channel */ + BOOLEAN reg_flag; + UINT8 trace_level; +} tHIDDEV_CB; + +typedef struct snd_data_params +{ + BOOLEAN ctrl_ch; /* TRUE if control channel, FALSE if interrupt */ + UINT8 trans_type; /* Transaction type */ + UINT8 param; /* Second byte after trans type */ + BT_HDR *buf ; /* Data that comes after param */ +} tHID_SND_DATA_PARAMS; /* Is defined for hidd_conn_snd_data */ + +/* HID management function prototype +*/ +typedef tHID_STATUS (tHIDD_MGMT_EVT_HDLR) (UINT8, void *); + +/* HID Globals +*/ +#ifdef __cplusplus +extern "C" +{ +#endif + +/****************************************************************************** +** Main Control Block +*******************************************************************************/ +#if HID_DYNAMIC_MEMORY == FALSE +HID_API extern tHIDDEV_CB hd_cb; +#else +HID_API extern tHIDDEV_CB *hidd_cb_ptr; +#define hd_cb (*hidd_cb_ptr) +#endif + +extern tHID_STATUS hidd_conn_reg (void); +extern void hidd_conn_dereg( void ); +extern tHID_STATUS hidd_conn_initiate (void); +extern void hidd_conn_disconnect (void); +extern tHID_STATUS hidd_conn_snd_data (tHID_SND_DATA_PARAMS *p_data); + +extern tHID_STATUS hidd_mgmt_process_evt( UINT8 event, void *data ); +extern void hidd_proc_repage_timeout (TIMER_LIST_ENT *p_tle); + +#if HID_DEV_PM_INCLUDED == TRUE +extern tHID_STATUS hidd_pm_start( void ) ; +extern tHID_STATUS hidd_pm_stop( void ); +extern tHID_STATUS hidd_pm_activity_evt( void ); +extern tHID_STATUS hidd_pm_suspend_evt( void ); +extern tHID_STATUS hidd_pm_unsuspend_evt( void ); +extern void hidd_pm_init( void ); +extern BOOLEAN hidd_pm_set_power_mode( tHID_DEV_PM_PWR_MD *pm) ; + +extern void hidd_pm_proc_mode_change( UINT8 hci_status, UINT8 mode, UINT16 interval ); +#endif /* HID_DEV_PM_INCLUDED == TRUE */ + +#ifdef __cplusplus +} +#endif + +#endif |