1 /******************************************************************************
2  *
3  *  Copyright (C) 2007-2012 Broadcom Corporation
4  *
5  *  Licensed under the Apache License, Version 2.0 (the "License");
6  *  you may not use this file except in compliance with the License.
7  *  You may obtain a copy of the License at:
8  *
9  *  http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *  Unless required by applicable law or agreed to in writing, software
12  *  distributed under the License is distributed on an "AS IS" BASIS,
13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *  See the License for the specific language governing permissions and
15  *  limitations under the License.
16  *
17  ******************************************************************************/
18 #ifndef UIPC_H
19 #define UIPC_H
20 
21 #define UIPC_CH_ID_AV_CTRL 0
22 #define UIPC_CH_ID_AV_AUDIO 1
23 #define UIPC_CH_NUM 2
24 
25 #define UIPC_CH_ID_ALL 3 /* used to address all the ch id at once */
26 
27 #define DEFAULT_READ_POLL_TMO_MS 100
28 
29 typedef uint8_t tUIPC_CH_ID;
30 
31 /* Events generated */
32 typedef enum {
33   UIPC_OPEN_EVT = 0x0001,
34   UIPC_CLOSE_EVT = 0x0002,
35   UIPC_RX_DATA_EVT = 0x0004,
36   UIPC_RX_DATA_READY_EVT = 0x0008,
37   UIPC_TX_DATA_READY_EVT = 0x0010
38 } tUIPC_EVENT;
39 
40 /*
41  * UIPC IOCTL Requests
42  */
43 
44 #define UIPC_REQ_RX_FLUSH 1
45 #define UIPC_REG_CBACK 2
46 #define UIPC_REG_REMOVE_ACTIVE_READSET 3
47 #define UIPC_SET_READ_POLL_TMO 4
48 
49 typedef void(tUIPC_RCV_CBACK)(
50     tUIPC_CH_ID ch_id,
51     tUIPC_EVENT event); /* points to BT_HDR which describes event type and
52                            length of data; len contains the number of bytes of
53                            entire message (sizeof(BT_HDR) + offset + size of
54                            data) */
55 
56 const char* dump_uipc_event(tUIPC_EVENT event);
57 
58 /*******************************************************************************
59  *
60  * Function         UIPC_Init
61  *
62  * Description      Initialize UIPC module
63  *
64  * Returns          void
65  *
66  ******************************************************************************/
67 void UIPC_Init(void*);
68 
69 /*******************************************************************************
70  *
71  * Function         UIPC_Open
72  *
73  * Description      Open UIPC interface
74  *
75  * Returns          void
76  *
77  ******************************************************************************/
78 bool UIPC_Open(tUIPC_CH_ID ch_id, tUIPC_RCV_CBACK* p_cback);
79 
80 /*******************************************************************************
81  *
82  * Function         UIPC_Close
83  *
84  * Description      Close UIPC interface
85  *
86  * Returns          void
87  *
88  ******************************************************************************/
89 void UIPC_Close(tUIPC_CH_ID ch_id);
90 
91 /*******************************************************************************
92  *
93  * Function         UIPC_Send
94  *
95  * Description      Called to transmit a message over UIPC.
96  *
97  * Returns          void
98  *
99  ******************************************************************************/
100 bool UIPC_Send(tUIPC_CH_ID ch_id, uint16_t msg_evt, const uint8_t* p_buf,
101                uint16_t msglen);
102 
103 /*******************************************************************************
104  *
105  * Function         UIPC_Read
106  *
107  * Description      Called to read a message from UIPC.
108  *
109  * Returns          void
110  *
111  ******************************************************************************/
112 uint32_t UIPC_Read(tUIPC_CH_ID ch_id, uint16_t* p_msg_evt, uint8_t* p_buf,
113                    uint32_t len);
114 
115 /*******************************************************************************
116  *
117  * Function         UIPC_Ioctl
118  *
119  * Description      Called to control UIPC.
120  *
121  * Returns          void
122  *
123  ******************************************************************************/
124 bool UIPC_Ioctl(tUIPC_CH_ID ch_id, uint32_t request, void* param);
125 
126 #endif /* UIPC_H */
127