view src/ui3/bmi/mmiBtips.c @ 686:59f07d67eb45

luna target split into luna1 and luna2 luna1 is FC Luna based on iWOW DSK v4.0 or v5.0 motherboard luna2 is FC Luna based on FC Caramel2 MB
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 12 Oct 2020 18:51:24 +0000
parents e8ddbb0837ed
children
line wrap: on
line source

/* =========================================================
*             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