comparison src/ui3/mfw/mfw_bt_api.c @ 420:e8ddbb0837ed

src/ui3: initial import of TCS3/LoCosto BMI & MFW code
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 21 Jan 2018 03:09:00 +0000
parents
children
comparison
equal deleted inserted replaced
419:59143cd42ec7 420:e8ddbb0837ed
1 /*******************************************************************************\
2 * *
3 * TEXAS INSTRUMENTS ISRAEL PROPRIETARY AND CONFIDENTIAL INFORMATION *
4 * *
5 * LEGAL NOTE: THE TRANSFER OF THE TECHNICAL INFORMATION IS BEING MADE *
6 * UNDER AN EXPORT LICENSE ISSUED BY THE ISRAELI GOVERNMENT AND THAT THE *
7 * APPLICABLE EXPORT LICENSE DOES NOT ALLOW THE TECHNICAL INFORMATION TO *
8 * BE USED FOR THE MODIFICATION OF THE BT ENCRYPTION OR THE DEVELOPMENT *
9 * OF ANY NEW ENCRYPTION. THE INFORMATION CAN BE USED FOR THE INTERNAL *
10 * DESIGN AND MANUFACTURE OF TI PRODUCTS THAT WILL CONTAIN THE BT IC. *
11 * *
12 \*******************************************************************************/
13 /*******************************************************************************\
14 *
15 * FILE NAME: mfw_bt_api.c
16 *
17 * DESCRIPTION: This file implements the API between BMI (MMI) and BT applications
18 *
19 * AUTHOR: Anandhi Ramesh
20 *
21 * Rev 0.1
22 *
23 \*******************************************************************************/
24 /* ========================================================== */
25 /*===========================================================
26 *!
27 *! Revision History
28 *! ===================================
29
30 Nov 12, 2007 DRT :OMAPS00151698 x0056422
31 Description: MM: Commands that are not recognized by MMI are
32 handled improperly in BMI_NotifyBtEvent function. *!
33 *!
34 *! 17-Jan-2006 mf: Revisions appear in reverse chronological order;
35 *! that is, newest first. The date format is dd-Mon-yyyy.
36 * =========================================================== */
37
38 /******************************************************************************
39 Include Files
40 *******************************************************************************/
41 #ifdef FF_MMI_A2DP_AVRCP
42 #if defined (NEW_FRAME)
43
44 #include "typedefs.h"
45 #include "vsi.h"
46 #include "pei.h"
47 #include "custom.h"
48 #include "gsm.h"
49
50 #else
51
52 #include "STDDEFS.H"
53 #include "custom.h"
54 #include "gsm.h"
55 #include "vsi.h"
56
57 #endif
58
59
60 #include "mfw_mfw.h"
61 #include "mfw_phb.h"
62 #include "mfw_phbi.h"
63 #include "mfw_cm.h"
64 #include "mfw_cmi.h"
65 #include "mfw_kbd.h"
66
67 #include "mfw_nm.h"
68 #include "mfw_sim.h"
69 #include "mfw_sima.h"
70 #include "mfw_nmi.h"
71 #include "mfw_simi.h"
72 #include "mfw_sms.h"
73 #include "mfw_smsi.h"
74 #include "mfw_win.h"
75
76 #include "ksd.h"
77 #include "psa.h"
78
79 #include "mfw_bt_api.h"
80 #include "mfw_bt_private.h"
81
82 /*Declaration of Global BT structure for BMI*/
83 BMI_BT_STRUCTTYPE tGlobalBmiBtStruct;
84
85 extern BOOL mmi_progress_bar;
86 /* temp comment */
87 extern T_AS_RET as_bt_cfg(BOOL , const T_RV_RETURN_PATH* );
88 /* ========================================================================== */
89 /**
90 * @fn BMI_SwitchAudioToBtHeadset : Sets BT connection status.
91 * Connect or disconnect the audio output to BT headset.
92 * BT will call this function to let BMI know an A2DP link to a wireless headset
93 * has been connected (and is in Open state), or disconnected.
94 *
95 * When link is connected, BMI will decide whether it wants to
96 * direct the audio output to the wireless headset.
97 *
98 * @param [in] connected
99 * connected [in] - whether the link has just been connected or disconnected:
100 * TRUE - connected
101 * FALSE - disconnected
102 *
103 * @return BOOL
104 * when connect parameter is TRUE:
105 * - return TRUE when BMI approves and will use A2DP headset as the audio output
106 * - return FALSE when BMI rejects using A2DP headset as the audio output
107 *
108 * when connect parameter is FALSE - returned value is ignored
109 *
110 * @see mfw_bt_api.h
111 */
112 /* ========================================================================== */
113
114 BOOL BMI_SwitchAudioToBtHeadset(BOOL connected)
115 {
116 static U8 first_time = 1;
117 TRACE_FUNCTION("BMI_SwitchAudioToBtHeadset");
118 if(first_time == 1)
119 {
120 tGlobalBmiBtStruct.tCmdSrc = BMI_BT_COMMAND_NONE;
121 first_time = 0;
122 }
123 if(connected == 0)
124 {
125 TRACE_FUNCTION("BMI_BT_Trace BMI_SwitchAudioToBtHeadset OFF");
126 tGlobalBmiBtStruct.bConnected = BMI_BT_NOTCONNECTED;
127 }
128 else
129 {
130 TRACE_FUNCTION("BMI_BT_Trace BMI_SwitchAudioToBtHeadset ON");
131 tGlobalBmiBtStruct.bConnected = BMI_BT_CONNECTED;
132 }
133
134 //send the status to AS layer.
135 as_bt_cfg(connected, NULL);
136 return connected;
137 }
138 /* ========================================================================== */
139 /**
140 * @fn BMI_NotifyBtEvent : Informs BMI of any events triggered by the BT headset.
141 * @Description : This function is called by BT to notify MMI of any events in the headset.
142 * MMI translates these events to corresponding keypad events and posts the event to itself.
143 *
144 * @param [in] BtAppEvent event
145 * The events that are recognised by MMI are
146 * BT_EVENT_USER_PLAY - user has pressed play on handset, or resume.
147 * BT_EVENT_USER_STOP - user has pressed stop on handset.
148 * BT_EVENT_USER_PAUSE - user has pressed pause on handset.
149 *
150 * @return none
151 *
152 * @see mfw_bt_api.h
153 */
154 /* ========================================================================== */
155
156 void BMI_NotifyBtEvent(BtAppEvent event)
157 {
158 U8 key_state, key_code;
159 int nPresses;
160 TRACE_FUNCTION("BMI_BT_Trace BMI_NotifyBtEvent Enter");
161 if(tGlobalBmiBtStruct.bConnected != BMI_BT_NOTCONNECTED)
162 {
163 key_state = KEY_STAT_PRS;
164
165 TRACE_FUNCTION("BMI_BT_Trace BMI_NotifyBtEvent - BT connected");
166 switch(event)
167 {
168 case BT_EVENT_USER_PLAY:
169 TRACE_FUNCTION("Play");
170 if(tGlobalBmiBtStruct.tAudioState == FM_AUD_PAUSE
171 && mmi_progress_bar==1)
172 key_code = 0x0D;
173 else if (tGlobalBmiBtStruct.tAudioState == FM_AUD_STOP ||
174 tGlobalBmiBtStruct.tAudioState == FM_AUD_NONE)
175 key_code = 0x17;
176 else
177 goto EXIT;
178 break;
179 case BT_EVENT_USER_STOP:
180 TRACE_FUNCTION("Stop");
181 if(tGlobalBmiBtStruct.tAudioState == FM_AUD_PLAY
182 && mmi_progress_bar==0)
183 key_code = 0x17;
184 else if(tGlobalBmiBtStruct.tAudioState != FM_AUD_NONE
185 && mmi_progress_bar==1)
186 key_code = 0x0E;
187 else
188 goto EXIT;
189 break;
190 case BT_EVENT_USER_PAUSE:
191 TRACE_FUNCTION("Pause");
192 if(tGlobalBmiBtStruct.tAudioState == FM_AUD_PLAY
193 && mmi_progress_bar == 1 )
194 key_code = 0x0D;
195 else
196 goto EXIT;
197 break;
198
199 /* OMAPS00151698 x0056422 */
200 default :
201 goto EXIT;
202 break;
203 }
204
205 //set the indication that this command came from BT and not handset
206 tGlobalBmiBtStruct.tCmdSrc = BMI_BT_HEADSET_COMMAND;
207
208 //<post a keypad indication message to the MMI>
209 //Add keypress to queue of key presses
210 nPresses = kbd_getNumElements();
211 kbd_putMakeAndKey( (char)key_state, (char)key_code);
212 /*also send a key release indicaiton for the same key.
213 If this is not done, the key press becomes a long press and is
214 handled differently */
215 key_state = KEY_STAT_REL;
216 kbd_putMakeAndKey( (char)key_state, (char)key_code);
217 if ((!kbd_stillProcessingKeys()) && (nPresses == 0))
218 { //Only this element present - create and send message.
219
220 sendKeyInd(key_code, KEY_STAT_PRS, 0);
221 }
222 if ((!kbd_stillProcessingKeys()) && (nPresses == 0))
223 { //Only this element present - create and send message.
224
225 sendKeyInd(key_code, KEY_STAT_REL, 0);
226 }
227 }
228 EXIT:
229 return;
230 }
231
232 /* ========================================================================== */
233 /**
234 * @fn BMI_RegisterEventCallback : BT calls this function to register a callback with MMI
235 * Whenever there is a
236 *
237 * @param [in] BtAppEvent event
238 * The events that are recognised by MMI are
239 * BT_EVENT_USER_PLAY - user has pressed play on handset, or resume.
240 * BT_EVENT_USER_STOP - user has pressed stop on handset.
241 * BT_EVENT_USER_PAUSE - user has pressed pause on handset.
242 *
243 * @return none
244 *
245 * @see mfw_bt_api.h
246 */
247 /* ========================================================================== */
248 void BMI_RegisterEventCallback(BmiEventCallback eventCallback)
249 {
250 TRACE_FUNCTION("BMI_RegisterEventCallback");
251 tGlobalBmiBtStruct.BmiEventCallback = eventCallback;
252 return;
253 }
254 #endif //FF_MMI_A2DP_AVRCP
255