FreeCalypso > hg > fc-magnetite
diff src/ui3/bmi/mmiBtips.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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ui3/bmi/mmiBtips.c Sun Jan 21 03:09:00 2018 +0000 @@ -0,0 +1,623 @@ +/* ========================================================= +* Texas Instruments OMAP(TM) Platform Software +* (c) Copyright Texas Instruments, Incorporated. All Rights Reserved. +* +* Use of this software is controlled by the terms and conditions found +* in the license agreement under which this software has been supplied. +* ========================================================== */ +/* + $Project name: Basic Bluetooth MMI + $Project code: + $Module: Bluetooth BMG APPlication + $File: MmiBtipsBmg.c + $Revision: 1.0 + $Author: Texas Instruments + $Date: 26/06/07 + +******************************************************************************** + + Description: + + This module provides the BTIPS BMG APPlication functionality. + +******************************************************************************** + $History: MmiBtipsBmg.c + + 26/06/07 Sasken original version + + $End + +*******************************************************************************/ + + + + +/******************************************************************************* + + Include files + +*******************************************************************************/ + +#define ENTITY_MFW + +#include <string.h> + +/* BTIPS Includes */ +#include "me.h" + +#if defined (NEW_FRAME) + +#include "typedefs.h" +#include "vsi.h" +#include "pei.h" +#include "custom.h" +#include "gsm.h" +#include "prim.h" + +#else + +#include "STDDEFS.H" +#include "custom.h" +#include "gsm.h" +#include "vsi.h" + +#endif + +#include "mfw_mfw.h" +#include "mfw_win.h" +#include "mfw_icn.h" /* included for mfw_mnu.h */ +#include "mfw_mnu.h" +#include "mfw_tim.h" +#include "mfw_kbd.h" +#include "mfw_sat.h" /* included for MmiDummy.h, included for MmiMenu.h */ +#include "MmiBlkLangDB.h" +#include "mmiColours.h" +#include "MmiDialogs.h" +#include "MmiDummy.h" /* included for MmiMenu.h */ +#include "MmiLists.h" +#include "MmiMenu.h" +#include "MmiSoftKeys.h" +#include "AUIEditor.h" +#include "MmiMain.h" +#include "Mmiicons.h" +#include "MmiWindow.h" +#include "MmiCall.h" +#include "mmiBookShared.h" + +/* GPF Includes */ +#include "typedefs.h" +#include "vsi.h" + +#include "Mfw_Btips.h" +#include "Mfw_BtipsBmg.h" +#include "mmiBtips.h" +#include "mmiBtipsBmg.h" + +#ifdef FF_MMI_BTIPS_APP +EXTERN char BTStr[20]; + +T_MFW_HND mmi_btips_app_win_create(T_MFW_HND parent); +static int mmi_btips_app_win_cb (MfwEvt evt, MfwWin *win); +static int mmi_btips_app_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter); +static void mmi_btips_app_exit (T_MFW_HND win); +static void mmi_btips_win_exit (T_MFW_HND win); + +MMI_Btips_data g_btipsData = {0}; +T_MFW_HND g_win_infodialog; + +void mmi_btips_init(void) +{ + TRACE_FUNCTION("mmiBtipsInit: Starting Bluetooth Initialization"); + if(0 == g_btipsData.ipBtipsHandle) + g_btipsData.ipBtipsHandle = aci_create(btipsPrimHandler,NULL); + mfw_btips_init(); +} + + +/******************************************************************************* + + $Function: mmi_btips_radioOnStatus + + $Description: Create the window which is going to have + the viewfinder bitmaps displayed on top of it. + + $Returns: Always returns MFW_EVENT_CONSUMED (1) + + $Arguments: m : pointer to the mnu data for the menu which caused this function to be called. + i : pointer to the item data from the menu. + +*******************************************************************************/ +USHORT mmi_btipsRadioOnStatus(struct MfwMnuTag *m, + struct MfwMnuAttrTag *ma, + struct MfwMnuItemTag *mi) +{ + if(mfw_btips_getRadioStatus()) + return TRUE; + else + return FALSE; +} + +/******************************************************************************* + + $Function: mmi_btips_radioOffStatus + + $Description: Create the window which is going to have + the viewfinder bitmaps displayed on top of it. + + $Returns: Always returns MFW_EVENT_CONSUMED (1) + + $Arguments: m : pointer to the mnu data for the menu which caused this function to be called. + i : pointer to the item data from the menu. + +*******************************************************************************/ +USHORT mmi_btipsRadioOffStatus(struct MfwMnuTag *m, + struct MfwMnuAttrTag *ma, + struct MfwMnuItemTag *mi) +{ + if(mfw_btips_getRadioStatus()) + return FALSE; + else + return TRUE; +} + +/******************************************************************************* + + $Function: mmi_btips_radioOn + + $Description: Create the window which is going to have + the viewfinder bitmaps displayed on top of it. + + $Returns: Always returns MFW_EVENT_CONSUMED (1) + + $Arguments: m : pointer to the mnu data for the menu which caused this function to be called. + i : pointer to the item data from the menu. + +*******************************************************************************/ + int mmi_btipsRadioOn(MfwMnu* m, MfwMnuItem* i) +{ + T_MFW_HND parent_win = mfwParent(mfw_header()); + + TRACE_FUNCTION ("mmi_btipsRadioOn()"); + return mfw_btips_radioOn(); +} + +/******************************************************************************* + + $Function: mmi_btips_radioOff + + $Description: Create the window which is going to have + the viewfinder bitmaps displayed on top of it. + + $Returns: Always returns MFW_EVENT_CONSUMED (1) + + $Arguments: m : pointer to the mnu data for the menu which caused this function to be called. + i : pointer to the item data from the menu. + +*******************************************************************************/ +GLOBAL int mmi_btipsRadioOff(void) +{ + TRACE_FUNCTION ("mmi_btipsRadioOff()"); + + return mfw_btips_radioOff(); +} + + +/****************************************************************************** + MFW Window Module (Creation, Deletion, Callbacks for MFW, Keyboard, etc) +******************************************************************************/ + + +void mmi_btips_app_incoming_pairing_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason) +{ + + TRACE_FUNCTION("mmi_btips_app_incoming_pairing_cb"); + + switch (reason) + { + case INFO_KCD_LEFT: + /*Launch the editor for taking pin-code request, with the parent as btips_main window, not this dialog*/ + g_btipsData.pinCode_editor = mmi_btips_bmg_pinCode_editor_create(win); + SEND_EVENT(g_btipsData.pinCode_editor, BTIPS_BMG_LOCAL_EDITOR_INIT, 0, 0); + break; + case INFO_KCD_HUP: + case INFO_KCD_RIGHT: + /*Reject the pairing operatio*/ + mfw_btips_bmgSendPin(&g_btipsData.bd_addr_incomingPinReq, NULL, 0); + break; + case INFO_KCD_CLEAR: + break; + default: + break; + } +} +/****************************************************************************** + MFW Window Module (Creation, Deletion, Callbacks for MFW, Keyboard, etc) +******************************************************************************/ +static void mmi_btips_app_push_pull_event_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason) +{ + TRACE_FUNCTION("mmi_btips_app_push_pull_event_cb"); + + switch (reason) + { + case INFO_KCD_LEFT: + mfw_btips_oppsAcceptObjectRequest(TRUE); + break; + + case INFO_KCD_HUP: + case INFO_KCD_RIGHT: + mfw_btips_oppsAcceptObjectRequest(FALSE); + break; + + case INFO_KCD_CLEAR: + /* Do nothing */ + break; + + default: + + break; + } +} + +static void mmi_btips_app_ftp_accept_cb (T_MFW_HND win, UBYTE identifier, UBYTE reason) +{ + TRACE_FUNCTION("mmi_btips_app_ftp_accept_cb"); + + switch (reason) + { + case INFO_KCD_LEFT: + TRACE_FUNCTION("mmi_btips_app_ftp_accept_cb: KCD LEFT"); + mfw_btips_ftpsAcceptObjectRequest (TRUE); + break; + + case INFO_KCD_HUP: + case INFO_KCD_RIGHT: + /*Reject the pairing operatio*/ + TRACE_FUNCTION("mmi_btips_app_ftp_accept_cb: KCD RIGHT"); + mfw_btips_ftpsAcceptObjectRequest (FALSE); + break; + case INFO_KCD_CLEAR: + break; + default: + break; + } +} + +static char ftpRequest[256]; + +/******************************************************************************* + + $Function: mmi_btips_app_root_cb + + $Description: This function is the notification from MFW to MMI for the BT Stack events that needs + updation on the BTIPS Main Window + + $Returns: None + + $Arguments: + +*******************************************************************************/ +int mmi_btips_app_root_cb(T_MFW_EVENT evnt, void *para) +{ + T_MFW_HND win = mfw_parent(mfw_header()); + MfwBtBmgEvent bmgBtEvent; + + TRACE_FUNCTION ("mmi_btips_app_root_cb()"); + TRACE_EVENT_P1("mmi_btips_app_root_cb - %d", evnt); + + + if(para != NULL) + { + bmgBtEvent = ((T_BTIPS_MMI_IND * )para)->data.bmgBtEvent; + } + switch (evnt) + { + case E_BTIPS_POWERON_SUCCESS: + TRACE_EVENT("E_BTIPS_POWERON_SUCCESS"); + mmi_btips_app_show_info(0,TxtBtipsApp,TxtBtipsOn,ONE_SECS,NULL); + break; + + case E_BTIPS_POWERON_FAILURE: + TRACE_EVENT("E_BTIPS_POWERON_FAILURE"); + mmi_btips_app_show_info(0,TxtBtipsApp,TxtBtipsFailed,ONE_SECS,NULL); + break; + + case E_BTIPS_BT_NOT_ON: + TRACE_EVENT("E_BTIPS_BT_NOT_ON"); + mmi_btips_app_show_info(0,TxtBtipsApp,TxtBtipsNotOn,ONE_SECS,NULL); + break; + + + case E_BTIPS_POWEROFF_SUCCESS: + TRACE_EVENT("E_BTIPS_POWEROFF_SUCCESS"); + mmi_btips_app_show_info(0,TxtBtipsApp,TxtBtipsOff,ONE_SECS,NULL); + break; + + case E_BTIPS_BMG_NAME_RESULT: + TRACE_EVENT("E_BTIPS_BMG_NAME_RESULT : mmibtips"); + if(TRUE == g_btipsData.incomingPinRequestState) + { + + //if(OS_MemCmp((U8*)&g_btipsData.bd_addr_incomingPinReq, sizeof(BD_ADDR), (U8*)&bmgBtEvent.bdAddr, sizeof(BD_ADDR))) + //{ + strcpy(g_btipsData.deviceName, bmgBtEvent.p.deviceName); + mmi_btips_app_ask_info(0, "Allow connection with", g_btipsData.deviceName, mmi_btips_app_incoming_pairing_cb); + + #if 0 + else + { + g_btipsData.incomingPinRequestState = FALSE; + //This case should not happen. + TRACE_ERROR("INCORRECT NAME RECEIVED FOR PIN_REQ"); + return MFW_EVENT_REJECTED; + } + #endif + } + else + { + return MFW_EVENT_REJECTED; + } + + break; + case E_BTIPS_INCOMING_PIN_REQ: + { + MfwBtBmgEvent bmgBtEvent = ((T_BTIPS_MMI_IND * )para)->data.bmgBtEvent; + TRACE_EVENT("E_BTIPS_INCOMING_PIN_REQ"); + OS_MemSet(g_btipsData.deviceName, 0, BT_MAX_REM_DEV_NAME); + OS_MemCopy((U8*)&g_btipsData.bd_addr_incomingPinReq, (U8*)&bmgBtEvent.bdAddr, sizeof(BD_ADDR)); + g_btipsData.incomingPinRequestState = TRUE; + } + break; + case E_BTIPS_BMG_PAIRING_COMPLETE: + { + MfwBtBmgEvent bmgBtEvent = ((T_BTIPS_MMI_IND * )para)->data.bmgBtEvent; + TRACE_EVENT("E_BTIPS_INCOMING_PIN_REQ"); + mfw_btips_bmgGetDeviceName(&bmgBtEvent.bdAddr, g_btipsData.deviceName); + mmi_btips_app_show_text(0, g_btipsData.deviceName, "Paired",NULL); + break; + } + + case E_BTIPS_FTPS_PUT_EVENT: + { + MfwBtFtpsEvent event = ((T_BTIPS_MMI_IND * )para)->data.ftpsBtEvent; + TRACE_EVENT("E_BTIPS_FTPS_PUT_EVENT"); +// sprintf (ftpRequest, "FTP Put %s", event.p.ftpPutRequest.objectName); +// mmi_btips_app_ask_info(0, ftpRequest, event.p.ftpPutRequest.deviceName, mmi_btips_app_ftp_accept_cb); + mmi_btips_app_ask_info(0, "FTP", "PUT", mmi_btips_app_ftp_accept_cb); + } + break; + + case E_BTIPS_FTPS_GET_EVENT: + { + MfwBtFtpsEvent event = ((T_BTIPS_MMI_IND * )para)->data.ftpsBtEvent; + TRACE_EVENT("E_BTIPS_FTPS_GET_EVENT"); + //sprintf (ftpRequest, "FTP Get %s", event.p.ftpGetRequest.objectName); + //mmi_btips_app_ask_info(0, ftpRequest, event.p.ftpGetRequest.deviceName, mmi_btips_app_ftp_accept_cb); + mmi_btips_app_ask_info(0, "FTP", " Get", mmi_btips_app_ftp_accept_cb);//sundeep + } + break; + + case E_BTIPS_FTPS_DELETE_EVENT: + { + MfwBtFtpsEvent event = ((T_BTIPS_MMI_IND * )para)->data.ftpsBtEvent; + TRACE_EVENT("E_BTIPS_FTPS_DELETE_EVENT"); +// sprintf (ftpRequest, "FTP Delete %s", event.p.ftpDeleteRequest.objectName); +// mmi_btips_app_ask_info(0, ftpRequest, event.p.ftpDeleteRequest.deviceName, mmi_btips_app_ftp_accept_cb); + mmi_btips_app_ask_info(0, "FTP", "DELETE", mmi_btips_app_ftp_accept_cb); + } + break; + /*case E_BTIPS_FTPS_COMPLETE_EVENT: + { + MfwBtFtpsEvent event = ((T_BTIPS_MMI_IND * )para)->data.ftpsBtEvent; + TRACE_EVENT("E_BTIPS_FTPS_COMPLETE_EVENT"); + //BTStr =GoepOpName1(event->ftpsEvent->oper); + mmi_btips_app_show_text(0, BTStr, "Completed",NULL); + break; + }*/ + case E_BTIPS_FTPS_CONNECT_EVENT: + { + MfwBtFtpsEvent event = ((T_BTIPS_MMI_IND * )para)->data.ftpsBtEvent; + TRACE_EVENT("E_BTIPS_FTPS_CONNECT_EVENT"); + mmi_btips_app_show_text(0, 0, "Connected",NULL); + } + break; + case E_BTIPS_FTPS_DISCONNECT_EVENT: + { + MfwBtFtpsEvent event = ((T_BTIPS_MMI_IND * )para)->data.ftpsBtEvent; + TRACE_EVENT("E_BTIPS_FTPS_DISCONNECT_EVENT"); + mmi_btips_app_show_text(0, 0, "Disconnected",NULL); + } + break; + case E_BTIPS_FTPS_ABORTED_EVENT: + { + MfwBtFtpsEvent event = ((T_BTIPS_MMI_IND * )para)->data.ftpsBtEvent; + TRACE_EVENT("E_BTIPS_FTPS_ABORTED_EVENT"); + mmi_btips_app_show_text(0, 0, "Aborted",NULL); + } + break; + case E_BTIPS_FTPS_PUT_COMP_EVENT: + { + MfwBtFtpsEvent event = ((T_BTIPS_MMI_IND * )para)->data.ftpsBtEvent; + TRACE_EVENT("E_BTIPS_FTPS_PUT_COMP_EVENT"); + mmi_btips_app_show_text(0, "PUT", "Completed",NULL); + } + break; + /*case E_BTIPS_FTPS_GET_COMP_EVENT: + { + MfwBtFtpsEvent event = ((T_BTIPS_MMI_IND * )para)->data.ftpsBtEvent; + TRACE_EVENT("E_BTIPS_FTPS_GET_COMP_EVENT"); + mmi_btips_app_show_text(0, "GET", "Completed",NULL); + } + break;*/ + case E_BTIPS_FTPS_DELETE_COMP_EVENT: + { + MfwBtFtpsEvent event = ((T_BTIPS_MMI_IND * )para)->data.ftpsBtEvent; + TRACE_EVENT("E_BTIPS_FTPS_DELETE_COMP_EVENT"); + mmi_btips_app_show_text(0, "DELETE", "Completed",NULL); + } + break; + case E_BTIPS_VG_CONNECT_EVENT: + { + MfwBtVgEvent event = ((T_BTIPS_MMI_IND * )para)->data.vgBtEvent; + mmi_btips_app_show_text (win, event.deviceName, "connected", NULL); + } + break; + + case E_BTIPS_VG_DISCONNECT_EVENT: + { + MfwBtVgEvent event = ((T_BTIPS_MMI_IND * )para)->data.vgBtEvent; + mmi_btips_app_show_text (win, "HF", "disconnected", NULL); + } + break; + + case E_BTIPS_VG_AUDIO_CONNECT_EVENT: + { + MfwBtVgEvent event = ((T_BTIPS_MMI_IND * )para)->data.vgBtEvent; + mmi_btips_app_show_text (win, "Audio", "connected", NULL); + } + break; + + case E_BTIPS_VG_AUDIO_DISCONNECT_EVENT: + { + MfwBtVgEvent event = ((T_BTIPS_MMI_IND * )para)->data.vgBtEvent; + mmi_btips_app_show_text (win, "Audio", "disconnected", NULL); + } + break; + case E_BTIPS_OPPS_PUSH_EVENT: + { + MfwBtOppsEvent oppsBtEvent = ((T_BTIPS_MMI_IND * )para)->data.oppsBtEvent; + U8 tempString1[256]; + TRACE_EVENT("E_BTIPS_OPPS_PUSH_EVENT"); + sprintf(tempString1, "Receive VCard %s from %s", oppsBtEvent.p.opps.oppObjectName, oppsBtEvent.p.opps.deviceName); + mmi_btips_app_ask_info(0, tempString1, oppsBtEvent.p.opps.deviceName, mmi_btips_app_push_pull_event_cb); + break; + } + + case E_BTIPS_OPPS_PULL_EVENT: + { + MfwBtOppsEvent oppsBtEvent = ((T_BTIPS_MMI_IND * )para)->data.oppsBtEvent; + U8 tempString1[256]; + TRACE_EVENT("E_BTIPS_OPPS_PULL_EVENT"); + sprintf(tempString1, "Send default VCard to %s", oppsBtEvent.p.opps.deviceName); + mmi_btips_app_ask_info(0, tempString1, oppsBtEvent.p.opps.deviceName, mmi_btips_app_push_pull_event_cb); + break; + } + +//#if 0 + case E_BTIPS_OPPS_PULL_COMP_EVENT: + { + MfwBtOppsEvent oppsBtEvent = ((T_BTIPS_MMI_IND * )para)->data.oppsBtEvent; + //mmi_btips_app_show_text(0, oppsBtEvent.p.opps.deviceName, "PULL Complete",NULL); + mmi_btips_app_show_text(0, "Sent", "VCard",NULL); + break; + } + + case E_BTIPS_OPPS_PUSH_COMP_EVENT: + { + MfwBtOppsEvent oppsBtEvent = ((T_BTIPS_MMI_IND * )para)->data.oppsBtEvent; + //mmi_btips_app_show_text(0, oppsBtEvent.p.opps.deviceName, "PUSH Complete",NULL); + mmi_btips_app_show_text(0, "Recived", "VCard",NULL); + break; + } + +//#endif + default: + TRACE_EVENT_P1("E_BTIPS_DEFAULT %d", evnt); + return MFW_EVENT_REJECTED; + } + dspl_Enable(1); + return MFW_EVENT_CONSUMED; +} + +/******************************************************************************* + + $Function: mmi_btips_app_show_info + + $Description: Displays the dialog box + + $Returns: Dialog window + + $Arguments: parent -parent window for dialog + str1- String to be displayed in dialog + str2 -String to be displayed in dialog + callback- Callback function + +*******************************************************************************/ +MfwHnd mmi_btips_app_show_info(T_MFW_HND parent, int str1, int str2, int timer,T_VOID_FUNC callback) +{ + T_DISPLAY_DATA display_info; + T_MFW_HND win; + + TRACE_FUNCTION ("mmi_btips_app_show_info()"); + + /* + ** Create a timed dialog to display the Message . + */ + dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, str1, str2, COLOUR_STATUS); + dlg_initDisplayData_events( &display_info, callback, timer, KEY_LEFT|KEY_RIGHT | KEY_CLEAR | KEY_HUP); + + win = info_dialog(parent, &display_info); + return win; +} + + +/******************************************************************************* + + $Function: mmi_fmRadio_app_show_info + + $Description: Displays the dialog box + + $Returns: Dialog window + + $Arguments: parent -parent window for dialog + str1- String to be displayed in dialog + str2 -String to be displayed in dialog + callback- Callback function + +*******************************************************************************/ +MfwHnd mmi_btips_app_show_text(T_MFW_HND parent, char * str1, char * str2, T_VOID_FUNC callback) +{ + T_DISPLAY_DATA display_info; + T_MFW_HND win; + /* + ** Create a timed dialog to display the Message . + */ + dlg_initDisplayData_TextStr( &display_info, TxtNull, TxtNull, str1, str2, COLOUR_STATUS); + dlg_initDisplayData_events( &display_info, callback, ONE_SECS, KEY_LEFT|KEY_RIGHT | KEY_CLEAR | KEY_HUP); + + win = info_dialog(parent, &display_info); + return win; +} + +T_MFW_HND mmi_btips_app_ask_info(T_MFW_HND parent, char * str1, char * str2, T_VOID_FUNC callback) +{ + T_DISPLAY_DATA display_info; + + TRACE_FUNCTION("mmi_btips_app_ask_info"); + dlg_initDisplayData_TextStr( &display_info, TxtYes, TxtNo, str1, str2, COLOUR_STATUS); + dlg_initDisplayData_events( &display_info, callback, FOREVER, KEY_LEFT|KEY_RIGHT | KEY_CLEAR | KEY_HUP); + return info_dialog(parent,&display_info); +} + +GLOBAL int mmi_btips_services(MfwMnu* m, MfwMnuItem* i) +{ + T_MFW_HND parent_win = mfw_parent(mfw_header()); + + BOOL discoverServices = FALSE ; + + BOOL status; + + TRACE_EVENT_P1 ("mmi_btips_services() %d",discoverServices); + + status = mmi_btips_bmgDeviceShowServices(parent_win, discoverServices); + + if(status == SERVICESMASK_EMPTY) + { + discoverServices = TRUE; + g_win_infodialog = mmi_btips_app_show_info(0,TxtBtipsRefreshing,NULL,TEN_SECS,NULL); + mmi_btips_bmgDeviceShowServices(parent_win, discoverServices); + } + + return MFW_EVENT_CONSUMED; +} + +#endif