# HG changeset patch # User Mychaela Falconia # Date 1611034166 0 # Node ID 83c6933e8f908f817bc983e62bf5264450f07db5 # Parent e41c934ecd971d2f0ea75cd86a9739153271c8cd rm src/ui/mfw/mfw_Btips* diff -r e41c934ecd97 -r 83c6933e8f90 src/ui/mfw/mfw_Btips.c --- a/src/ui/mfw/mfw_Btips.c Tue Jan 19 05:23:24 2021 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,814 +0,0 @@ -/* ========================================================= -* 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 MFW - $File: Mfw_Btips.c - $Revision: 1.0 - $Author: Texas Instruments - $Date: 26/06/07 - -******************************************************************************** - - Description: - - This module provides the BTIPS BMG APPlication functionality. - -******************************************************************************** - $History: Mfw_Btips.c - - 26/06/07 Sasken original version - - $End - -*******************************************************************************/ - - - - -/******************************************************************************* - - Include files - -*******************************************************************************/ - -#define ENTITY_MFW -/* includes */ - -#include - - -/* BTIPS Includes */ -#include "me.h" -#include "osapi.h" -#include "btl_common.h" -#include "bthal_btdrv.h" -#include "bthal_fs.h" -#include "bthal_pm.h" -#include "bthal_config.h" -#include "bttypes.h" -#include "goep.h" -#include "bpp.h" -#include "Debug.h" - -/* BTL includes */ -#include "btl_bppsnd.h" -#include "btl_bmg.h" - -#if FM_STACK == XA_ENABLED - -#include "fms_api.h" -#endif - -#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 "Mfw_Btips.h" -#include "ffs/ffs_api.h" -/*------------------------------------------------------------------------ - * - * Default BT Demo folder fsPath (i.e. \MfwBtDemo) - */ -U8 Bt_DefaultDemoDir[BT_FS_MAX_PATH_LENGTH]; - -#define hCommACI _ENTITY_PREFIXED(hCommACI) - - -#define MFW_BTIPS_RADIO_OFF 0 -#define MFW_BTIPS_RADIO_ON 1 -#define MFW_BTIPS_RADIO_IN_PROGRESS -1 - -EXTERN MfwHdr * current_mfw_elem; - - -/* Declaration of static variables */ -static BOOL isBtRadioEnabled = MFW_BTIPS_RADIO_OFF; /* To check at start-up */ - -static void btips_btlCallBack(const BtlEvent *event); -static void mfw_btips_btlCallBack(T_BTIPS_MMI_IND *btips_mmi_ind); -static void mfw_btips_callBack(T_BTIPS_MMI_IND *btips_mmi_ind ); -static BOOL mfw_btips_createDemoRootDir(const BTHAL_U8 *fsPath); -BOOL mfw_btips_checkStatus(BtStatus btStatus); - -void Btips_ffs_log_clear(void) -{ - ffs_remove((const char*)"/ffslog"); -} -void Btips_ffs_log_message(char *LogMsg,...) -{ -#ifdef FFSLOG - fd_t fd= -1; - char log_ffs_buf[256]; - va_list varpars; - - va_start (varpars, LogMsg); - vsprintf(log_ffs_buf,LogMsg,varpars); - va_end (varpars); - fd = ffs_open((const char*)"/ffslog", FFS_O_APPEND | FFS_O_WRONLY ); - if(fd < 0) - fd=ffs_open((const char*)"/ffslog", FFS_O_CREATE |FFS_O_WRONLY ); - if(fd >= 0) - { - strcat(log_ffs_buf," \n "); - ffs_write(fd, log_ffs_buf, strlen(log_ffs_buf)); - ffs_close(fd); - } -#endif -} -#ifdef FF_MMI_BTIPS_APP - -/************************************************************************ - MFW - ACI Communication Module Start -************************************************************************/ - -/******************************************************************************* - - $Function: mfw_btips_sign_exec - - $Description: This function sends the Mfw BTIPS events from the Mfw to the BMI. - - $Returns: None - - $Arguments: None - -*******************************************************************************/ -BOOL mfw_btips_sign_exec (T_MFW_HDR * cur_elem, T_MFW_EVENT event, T_MFW_BTIPS_PARA * para) -{ - TRACE_FUNCTION("mfw_btips_sign_exec()"); - - while (cur_elem) - { - /* - * event handler is available - */ - TRACE_FUNCTION_P1("mfw_btips_sign_exec - %x", event); - if (cur_elem->type EQ MfwTyBtipsBmg) - { - T_MFW_BTIPS * btips_data; - - TRACE_FUNCTION("mfw_btips_sign_exec() cur_elem->type EQ MfwTyBtipsBmg"); - /* - * handler is CM management handler - */ - btips_data = (T_MFW_BTIPS *)cur_elem->data; - if (btips_data->emask & event) - { - /* - * event is expected by the call back function - */ - btips_data->event = event; - switch (event) - { - /* - ** BTIPS BMG Events - */ - case E_BTIPS_BMG_NAME_RESULT: - case E_BTIPS_BMG_SEARCH_COMPLETE: - case E_BTIPS_BMG_SEARCH_CANCELLED: - case E_BTIPS_BMG_BOND_COMPLETE: - case E_BTIPS_BMG_BOND_CANCELLED: - case E_BTIPS_BMG_DEVICE_SERVICES: - if(para!=NULL) - memcpy (&btips_data->para, para, sizeof (T_MFW_BTIPS_PARA)); - break; - default: - return FALSE; - - } - - /* - * if call back defined, call it - */ - if (btips_data->handler) - { - current_mfw_elem = cur_elem; - - if ((*(btips_data->handler)) (btips_data->event, (void *)&btips_data->para)) - return TRUE; - } - } - } - else if (cur_elem->type EQ MfwTyBtips) - { - T_MFW_BTIPS * btips_data; - - TRACE_FUNCTION("mfw_btips_sign_exec() cur_elem->type EQ MfwTyBtips"); - /* - * handler is CM management handler - */ - btips_data = (T_MFW_BTIPS *)cur_elem->data; - if (btips_data->emask & event) - { - /* - * event is expected by the call back function - */ - btips_data->event = event; - switch (event) - { - /* - ** BTIPS generic Events - */ - case E_BTIPS_POWERON_SUCCESS: - case E_BTIPS_POWERON_FAILURE: - case E_BTIPS_POWEROFF_SUCCESS: - case E_BTIPS_BT_NOT_ON: - case E_BTIPS_FATAL_ERROR: - case E_BTIPS_INCOMING_PIN_REQ: - case E_BTIPS_BMG_PAIRING_COMPLETE: - case E_BTIPS_OPPS_PUSH_EVENT: - case E_BTIPS_OPPS_PULL_EVENT: - case E_BTIPS_FTPS_PUT_EVENT: - case E_BTIPS_FTPS_GET_EVENT: - case E_BTIPS_FTPS_DELETE_EVENT: - case E_BTIPS_FTPS_COMPLETE_EVENT: //sundeep - case E_BTIPS_FTPS_ABORTED_EVENT: - case E_BTIPS_FTPS_PUT_COMP_EVENT: - // case E_BTIPS_FTPS_GET_COMP_EVENT: - case E_BTIPS_FTPS_CONNECT_EVENT: - case E_BTIPS_FTPS_DISCONNECT_EVENT: - case E_BTIPS_FTPS_DELETE_COMP_EVENT: - case E_BTIPS_VG_CONNECT_EVENT: - case E_BTIPS_VG_DISCONNECT_EVENT: - case E_BTIPS_VG_AUDIO_CONNECT_EVENT: - case E_BTIPS_VG_AUDIO_DISCONNECT_EVENT: - case E_BTIPS_BMG_NAME_RESULT: - case E_BTIPS_OPPS_PULL_COMP_EVENT: - case E_BTIPS_OPPS_PUSH_COMP_EVENT: - if(para!=NULL) - memcpy (&btips_data->para, para, sizeof (T_MFW_BTIPS_PARA)); - - break; - default: - return FALSE; - } - - /* - * if call back defined, call it - */ - if (btips_data->handler) - { - current_mfw_elem = cur_elem; - - if ((*(btips_data->handler)) (btips_data->event, (void *)&btips_data->para)) - return TRUE; - } - } - } - - - cur_elem = cur_elem->next; - } - return FALSE; -} - -/******************************************************************************* - - $Function: mfw_btips_signal - - $Description: This function sends the Mfw btipsnts from the Mfw to the BMI. - - $Returns: None - - $Arguments: T_MFW_EVENT : The event to be sent to the BMI - T_BTIPS_MMI_IND * : Pointer to the Event data - -*******************************************************************************/ -void mfw_btips_signal(T_MFW_EVENT event, T_BTIPS_MMI_IND * para) -{ - UBYTE temp; - temp = dspl_Enable(0); - - TRACE_FUNCTION("mfw_btips_signal()"); - - if (mfwSignallingMethod EQ 0) - { - /* - * focus is on a window - */ - if (mfwFocus) - { - /* - * send event to sim management - * handler if available - */ - if (mfw_btips_sign_exec (mfwFocus, event, para)) - { - dspl_Enable(temp); - return; - } - } - - /* - * actual focussed window is not available - * or has no network management registration - * handler, then search all nodes from the root. - */ - if (mfwRoot) - mfw_btips_sign_exec (mfwRoot, event, para); - } - else - { - MfwHdr * h = 0; - - /* - * Focus set, then start here - */ - if (mfwFocus) - h = mfwFocus; - - /* - * Focus not set, then start root - */ - if (!h) - h = mfwRoot; - - /* - * No elements available, return - */ - while (h) - { - /* - * Signal consumed, then return - */ - if (mfw_btips_sign_exec (h, event, para)) - { - dspl_Enable(temp); - return; - } - - /* - * All windows tried inclusive root - */ - if (h == mfwRoot) - { - dspl_Enable(temp); - return; - } - - /* - * get parent window - */ - h = mfwParent(mfwParent(h)); - - if (h) - h = ((MfwWin * )(h->data))->elems; - } - - mfw_btips_sign_exec (mfwRoot, event, para); - - } - - dspl_Enable(temp); - - return; -} - - -/******************************************************************************* - - $Function: mfw_btips_create - - $Description: This function initialises an Mfw BTIPS entity and adds it to the Window Stack - - $Returns: T_MFW_HND : A handle for the entity - - $Arguments: T_MFW_HND : Parent Window Handle - T_MFW_EVENT : Event Mask of the events to be handled - T_MFW_CB : Callback function to handle the events - -*******************************************************************************/ -T_MFW_HND mfw_btips_create(T_MFW_HND hWin, T_MFW_EVENT event, MfwTyp type, T_MFW_CB cbfunc) -{ - T_MFW_HDR *hdr; - T_MFW_BTIPS *btips_para; - - TRACE_FUNCTION_P1("mfw_btips_create TYPE = %x", type); - - hdr = (T_MFW_HDR *) mfwAlloc(sizeof (T_MFW_HDR)); - btips_para = (T_MFW_BTIPS *) mfwAlloc(sizeof (T_MFW_BTIPS)); - - if (!hdr OR !btips_para) - return FALSE; - - /* - * initialisation of the handler - */ - btips_para->emask = event; - btips_para->handler = cbfunc; - - hdr->data = btips_para; - hdr->type = type; - - /* - * installation of the handler - */ - return mfwInsert((T_MFW_HDR *)hWin, hdr); -} - - -/******************************************************************************* - - $Function: mfw_btips_delete - - $Description: This function clears down an Mfw BTIPS entity and removes it from the - Window Stack - - $Returns: T_MFW_RES : The result of the function - - $Arguments: T_MFW_HND : The Handle of the entity to be removed - -*******************************************************************************/ -T_MFW_RES mfw_btips_delete(T_MFW_HND hnd) -{ - TRACE_FUNCTION("mfw_btips_delete()"); - - if (!hnd OR !((T_MFW_HDR *)hnd)->data) - return MFW_RES_ILL_HND; - - if (!mfwRemove((T_MFW_HDR *)hnd)) - return MFW_RES_ILL_HND; - - mfwFree((U8 *)(((T_MFW_HDR *) hnd)->data),sizeof(T_MFW_BTIPS)); - mfwFree((U8 *)hnd,sizeof(T_MFW_HDR)); - - return MFW_RES_OK; -} - - - -/* -+------------------------------------------------------------------------------ -| Function : btipsNotifyMFW -+------------------------------------------------------------------------------ -| Description : Posts the FM Radio events to the MMI task -| -| Parameters : T_FMRADIO_EVENT fmradioevent -| void context - not used now -| -| Return : TRUE/FALSE -+------------------------------------------------------------------------------ -*/ -void btipsNotifyMFW (T_BTIPS_MMI_IND * event) -{ -#if defined (NEW_FRAME) - EXTERN T_HANDLE hCommACI; -#else - EXTERN T_VSI_CHANDLE hCommACI; -#endif - - PALLOC(btips_mmi_ind,BTIPS_MMI_IND); - TRACE_FUNCTION_P1 ("btipsNotifyMFW %x", event->mfwBtipsEventType); - /*Copy required data to btips_mmi_ind*/ - btips_mmi_ind->mfwBtipsEventType = event->mfwBtipsEventType; - btips_mmi_ind->data = event->data; - -#if defined (NEW_FRAME) - PSENDX(ACI,btips_mmi_ind); -#else -#if defined (_TMS470) - vsi_c_send("",hCommACI,D2P(btips_mmi_ind), - sizeof(T_PRIM_HEADER)+sizeof(T_BTIPS_MMI_IND)); -#else - PSEND(ACI,btips_mmi_ind); -#endif -#endif - return; - } -/* -+------------------------------------------------------------------------------ -| Function : btipsPrimHandler -+------------------------------------------------------------------------------ -| Description : This fn is the primitive handler for BTIPS MFW application -| -| Parameters : opc-opc code -| data - data -| -| -| Return : TRUE/FALSE -+------------------------------------------------------------------------------ -*/ -GLOBAL BOOL btipsPrimHandler (USHORT opc, void * data) -{ - TRACE_FUNCTION_P1 ("btipsPrimHandler %x", opc); - - if (opc EQ BTIPS_MMI_IND) - { - T_BTIPS_MMI_IND *btips_mmi_ind = (T_BTIPS_MMI_IND *)data; - mfw_btips_callBack(btips_mmi_ind); - PFREE(btips_mmi_ind); - return TRUE; - } - return FALSE; -} - -/*This function will be invoked in the ACI context and from here the signals will be -passed on to the respective mfw_btips_xxxx_callback()*/ -static void mfw_btips_callBack(T_BTIPS_MMI_IND *btips_mmi_ind ) -{ -/*Todo: implement function pointer callback*/ - switch(btips_mmi_ind->mfwBtipsEventType) - { - case MFW_BTIPS_MAIN_EVENT: - mfw_btips_btlCallBack(btips_mmi_ind); - break; - case MFW_BTIPS_BMG_EVENT: - mfw_btips_bmgCallback(btips_mmi_ind); - break; - - case MFW_BTIPS_OPPS_EVENT: - mfw_btips_oppsCallback(btips_mmi_ind); - break; - - case MFW_BTIPS_FTPS_EVENT: - mfw_btips_ftpsCallback(btips_mmi_ind); - break; - - case MFW_BTIPS_VG_EVENT: - mfw_btips_vgCallback(btips_mmi_ind); - break; - - case MFW_BTIPS_OPPC_EVENT: - mfw_btips_oppcCallback(btips_mmi_ind); - break; - - case MFW_BTIPS_MDG_EVENT: - mfw_btips_mdgCallback(btips_mmi_ind); - break; - - default: - break; - } -} -/************************************************************************ - MFW - ACI Communication Module End -************************************************************************/ - -/*--------------------------------------------------------------------------- - * mfw_btips_init - *--------------------------------------------------------------------------- - * - * Synopsis: To return the current status of BT radio. - * - * Return: TRUE if send PIN code is successful, FALSE otherwise. - * - */ -void mfw_btips_init(void) -{ - -// BTHAL_OS_Sleep(100); - /* Initialize BTIPS basic components: BT stack, BTL layer... */ - TRACE_FUNCTION(("mfw_btips_init: Starting BTL_Init")); - OS_StrCpy(Bt_DefaultDemoDir, BT_DEMO_FOLDER_PATH); - if (TRUE != mfw_btips_createDemoRootDir(Bt_DefaultDemoDir)) - { - Report(("Fatal Error: Could not create BT root folder\n"));; - } - if (BT_STATUS_SUCCESS != BTL_Init(btips_btlCallBack)) - { - mfw_BtipsReport(("Fatal Error: Could not initialize the BTIPS basic components\n")); - } - - /* Initialize application modules */ - mfw_btips_bmgInit(); - mfw_btips_a2dpInit(); - mfw_btips_ftpsInit(); - mfw_btips_vgInit(); - mfw_btips_oppsInit(); - mfw_btips_oppcInit(); -mfw_btips_mdgInit(); - - #if FM_STACK == XA_ENABLED - Assert(FM_STATUS_SUCCESS == FM_Init()); - #endif - - -} - -/*--------------------------------------------------------------------------- - * mfw_btips_getRadioStatus - *--------------------------------------------------------------------------- - * - * Synopsis: To return the current status of BT radio. - * - * Return: TRUE if send PIN code is successful, FALSE otherwise. - * - */ -BOOL mfw_btips_getRadioStatus (void) -{ - return isBtRadioEnabled; -} - - -/*--------------------------------------------------------------------------- - * mfw_btips_radioOn - *--------------------------------------------------------------------------- - * - * Synopsis: Enable BT radio. - * - * Return: TRUE if Enabling BT radio is successful, FALSE otherwise. - * - */ -BOOL mfw_btips_radioOn (void) -{ - BtStatus btStatus; - - TRACE_FUNCTION("mfw_btips_radioOn()"); - - Btips_ffs_log_clear(); - - if (MFW_BTIPS_RADIO_OFF == isBtRadioEnabled) - { - isBtRadioEnabled = MFW_BTIPS_RADIO_IN_PROGRESS; - btStatus = BTL_RadioOn(); - Assert(MFW_BTIPS_SUCCESS == mfw_btips_checkStatus(btStatus)); - } - else - { - TRACE_EVENT_P1("mfw_btips_radioOn -BT radio is already enabled %d", isBtRadioEnabled); - } -} - - -/*--------------------------------------------------------------------------- - * mfw_btips_radioOff - *--------------------------------------------------------------------------- - * - * Synopsis: Disable BT radio. - * - * Return: TRUE if Disabling BT radio is successful, FALSE otherwise. - * - */ -BOOL mfw_btips_radioOff (void) -{ - BtStatus btStatus; - - TRACE_FUNCTION("mfw_btips_radioOff()"); - - if (MFW_BTIPS_RADIO_ON == isBtRadioEnabled) - { - isBtRadioEnabled = MFW_BTIPS_RADIO_IN_PROGRESS; - btStatus = BTL_RadioOff(); - Assert(MFW_BTIPS_SUCCESS == mfw_btips_checkStatus(btStatus)); - } - else - { - mfw_BtipsReport(("APP MAIN: BT radio is already disabled")); - } -} - -/*--------------------------------------------------------------------------- - * btips_btlCallBack - *--------------------------------------------------------------------------- - * - * Synopsis: BTL Main application callback in BTS Context - * - * Return: - * - */ -static void btips_btlCallBack(const BtlEvent *event) -{ - T_BTIPS_MMI_IND btips_mmi_ind; - - TRACE_FUNCTION_P1("btips_btlCallBack %d", event->type); - btips_mmi_ind.mfwBtipsEventType = MFW_BTIPS_MAIN_EVENT; - switch (event->type) - { - case BTL_EVENT_RADIO_OFF_COMPLETE: - isBtRadioEnabled = MFW_BTIPS_RADIO_OFF; - btips_mmi_ind.data.btlBtEvent = BTL_EVENT_RADIO_OFF_COMPLETE; - btipsNotifyMFW(&btips_mmi_ind); - break; - - case BTL_EVENT_RADIO_ON_COMPLETE: - // Display Bluetooth Icon on the opening/default main window - isBtRadioEnabled = MFW_BTIPS_RADIO_ON; - btips_mmi_ind.data.btlBtEvent = BTL_EVENT_RADIO_ON_COMPLETE; - btipsNotifyMFW(&btips_mmi_ind); - break; - } -} - -/*--------------------------------------------------------------------------- - * mfw_btips_radioOff - *--------------------------------------------------------------------------- - * - * Synopsis: Disable BT radio. - * - * Return: TRUE if Disabling BT radio is successful, FALSE otherwise. - * - */ - -static void mfw_btips_btlCallBack(T_BTIPS_MMI_IND * para) -{ - MfwBtMainEvent event = para->data.btlBtEvent; - - TRACE_FUNCTION_P1("mfw_btips_btlCallBack %d", event); - - switch (event) - { - case BTL_EVENT_RADIO_OFF_COMPLETE: - mfw_btips_signal(E_BTIPS_POWEROFF_SUCCESS, NULL); - break; - - case BTL_EVENT_RADIO_ON_COMPLETE: - // Display Bluetooth Icon on the opening/default main window - mfw_btips_signal(E_BTIPS_POWERON_SUCCESS, NULL); - break; - - }; -} - -BOOL mfw_btips_checkStatus(BtStatus btStatus) -{ - BOOL mfwBtStatus = 0; - TRACE_EVENT_P1("mfw_btips_checkStatus : %s", pBT_Status(btStatus)); - switch(btStatus) - { - case BT_STATUS_SUCCESS: - case BT_STATUS_PENDING: - case BT_STATUS_IN_PROGRESS: - mfwBtStatus = MFW_BTIPS_SUCCESS; - break; - - case BTEVENT_HCI_FATAL_ERROR: - mfwBtStatus = MFW_BTIPS_FAILED; - TRACE_ERROR("mfw_btips_checkStatus - Fatal Error"); - mfw_btips_signal(E_BTIPS_FATAL_ERROR, NULL); - break; - - case BT_STATUS_INVALID_PARM: - mfwBtStatus = MFW_BTIPS_FAILED; - TRACE_ERROR("mfw_btips_checkStatus - Invalid Params"); - break; - - case BT_STATUS_DEVICE_NOT_FOUND: - mfwBtStatus = MFW_BTIPS_FAILED; - TRACE_ERROR("mfw_btips_checkStatus - BT_STATUS_DEVICE_NOT_FOUND"); - break; - - case BT_STATUS_HCI_INIT_ERR: - mfwBtStatus = MFW_BTIPS_FAILED; - TRACE_ERROR("mfw_btips_checkStatus - BT_STATUS_HCI_INIT_ERR"); - mfw_btips_signal(E_BTIPS_FATAL_ERROR, NULL); - break; - - default: - mfwBtStatus = MFW_BTIPS_SUCCESS; //For the time being - break; - } - return mfwBtStatus; -} - -static BOOL mfw_btips_createDemoRootDir(const BTHAL_U8 *fsPath) -{ - static char path[BTHAL_FS_MAX_PATH_LENGTH] = {'\0'}; - - BtFsStatus status; - BthalFsStat fileStat; - - if (BT_STATUS_HAL_FS_SUCCESS != BTHAL_FS_Stat((const BTHAL_U8 *)fsPath, &fileStat)) - { - /* First, create the root directory */ - status = BTHAL_FS_Mkdir((const BTHAL_U8 *)fsPath); - if ((status != BT_STATUS_HAL_FS_ERROR_EXISTS) && (status != BT_STATUS_HAL_FS_SUCCESS)) - { - Report(("Error: Unable to create Demo root dir %s\n", path)); - return FALSE; - } - - - } - - return TRUE; -} - -#endif - diff -r e41c934ecd97 -r 83c6933e8f90 src/ui/mfw/mfw_Btips.h --- a/src/ui/mfw/mfw_Btips.h Tue Jan 19 05:23:24 2021 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,270 +0,0 @@ -#ifndef DEF_MFW_BTIPS -#define DEF_MFW_BTIPS -/* ========================================================= -* 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 MFW - $File: Mfw_Btips.h - $Revision: 1.0 - $Author: Texas Instruments - $Date: 26/06/07 - -******************************************************************************** - - Description: - - This module provides the BTIPS BMG APPlication functionality. - -******************************************************************************** - $History: Mfw_Btips.h - - 26/06/07 Sasken original version - - $End - -*******************************************************************************/ - -#define MFW_BTIPS_SUCCESS 1 -#define MFW_BTIPS_FAILED 0 - -#define BT_FS_MAX_PATH_LENGTH 256 -#define BT_MAX_REM_DEV_NAME 248 -#define BT_DEMO_FOLDER_PATH "/MfwBtDemo" -/* Macro for sending events to UI - meanwhile, trace message to PCO Viewer */ -void mfw_BtipsReport(char *format,...); -#define mfw_BtipsReport(f) vsi_o_event_ttrace(f); - -#define BT_MAX_REM_DEV_NAME 248 -#define BT_MAX_OBJECT_NAME_LEN 256 - - -typedef U8 MfwBtMainEvent; - -typedef U8 BtEventType; - -typedef U8 MfwFtpsEventType; -typedef U8 MfwVgEventType; - -typedef struct _mfwBtBmgEvent -{ - BtEventType eventType; /* BtEventType - ME Event Type*/ - BtErrorCode errCode; /* BtErrorCode - Error code */ - BD_ADDR bdAddr; /* Device Address */ - union - { - U8 deviceName[BT_MAX_REM_DEV_NAME + 1]; - /* Results for BTEVENT_DISCOVER_SERVICES_RESULT event */ - SdpServicesMask discoveredServicesMask; - }p; - -}MfwBtBmgEvent; - -typedef struct _mfwBtOppsEvent -{ - BtEventType mfwOppsEventType; /* BtEventType - ME Event Type*/ - union - { - struct - { - U8 deviceName[BT_MAX_REM_DEV_NAME + 1]; - U8 oppObjectName[80]; - }opps; - }p; -}MfwBtOppsEvent; -typedef struct _mfwBtVgEvent -{ - MfwVgEventType event; - U8 deviceName[BT_MAX_REM_DEV_NAME + 1]; - BD_ADDR bdAddr; -}MfwBtVgEvent; - -typedef struct _mfwBtFtpsEvent -{ - MfwFtpsEventType event; - union - { - struct - { - U8 deviceName[BT_MAX_REM_DEV_NAME + 1]; - BD_ADDR bdAddr; - }ftpConnect; - struct - { - U8 deviceName[BT_MAX_REM_DEV_NAME + 1]; - BD_ADDR bdAddr; - }ftpDisconnect; - struct - { - U16 percent; - }ftpPercentComplete; - struct - { - U8 objectName[BT_MAX_OBJECT_NAME_LEN]; - }ftpComplete; - struct - { - U8 deviceName[BT_MAX_REM_DEV_NAME + 1]; - BD_ADDR bdAddr; - U8 objectName[BT_MAX_OBJECT_NAME_LEN]; - }ftpGetRequest; - struct - { - U8 deviceName[BT_MAX_REM_DEV_NAME + 1]; - BD_ADDR bdAddr; - U8 objectName[BT_MAX_OBJECT_NAME_LEN]; - }ftpPutRequest; - struct - { - U8 deviceName[BT_MAX_REM_DEV_NAME + 1]; - BD_ADDR bdAddr; - U8 objectName[BT_MAX_OBJECT_NAME_LEN]; - }ftpDeleteRequest; - - }p; - -}MfwBtFtpsEvent; - -typedef struct _mfwBtMdgEvent -{ - BtEventType mfwMdgEventType; /* BtEventType - ME Event Type*/ - union - { - struct - { - U8 deviceName[BT_MAX_REM_DEV_NAME + 1]; - }mdg; - }p; -}MfwBtMdgEvent; - -typedef U8 MfwBtOppcEvent; -typedef U8 MfwBtA2dpEvent; -/*mfwBtipsEventType modules*/ -#define MFW_BTIPS_MAIN_EVENT 0 -#define MFW_BTIPS_BMG_EVENT 1 -#define MFW_BTIPS_OPPS_EVENT 2 -#define MFW_BTIPS_OPPC_EVENT 3 -#define MFW_BTIPS_FTPS_EVENT 4 -#define MFW_BTIPS_VG_EVENT 5 -#define MFW_BTIPS_MDG_EVENT 6 - -#define MFW_BTIPS_FTPS_PUT_EVENT 1 -#define MFW_BTIPS_FTPS_GET_EVENT 2 -#define MFW_BTIPS_FTPS_DELETE_EVENT 3 -#define MFW_BTIPS_FTPS_COMPLETE_EVENT 4 //vamsee -#define MFW_BTIPS_FTPS_ABORTED_EVENT 5 //vamsee -#define MFW_BTIPS_FTPS_PUT_COMP_EVENT 6 -//#define MFW_BTIPS_FTPS_GET_COMP_EVENT 7 -#define MFW_BTIPS_FTPS_DELETE_COMP_EVENT 8 -#define MFW_BTIPS_FTPS_CONNECT_EVENT 9 -#define MFW_BTIPS_FTPS_DISCONNECT_EVENT 10 - - -#define MFW_BTIPS_VG_CONNECT_EVENT 1 -#define MFW_BTIPS_VG_DISCONNECT_EVENT 2 -#define MFW_BTIPS_VG_AUDIO_CONNECT_EVENT 3 -#define MFW_BTIPS_VG_AUDIO_DISCONNECT_EVENT 4 - -#define MFW_BTIPS_OPPS_PUSH_EVENT 1 -#define MFW_BTIPS_OPPS_PULL_EVENT 2 -#define MFW_BTIPS_OPPS_PUSH_COMP_EVENT 6 -#define MFW_BTIPS_OPPS_PULL_COMP_EVENT 4 -//#define MFW_BTIPS_OPPS_DISCONNECT_EVENT 4 - -typedef struct _T_BTIPS_MMI_IND -{ - U8 mfwBtipsEventType; - union - { - MfwBtMainEvent btlBtEvent; - MfwBtBmgEvent bmgBtEvent; - /*Give yr own required Structure definition for the data that is to be carried - from BTS context to the MMI (ACI) context*/ - MfwBtOppsEvent oppsBtEvent; - MfwBtOppcEvent oppcBtEvent; - MfwBtFtpsEvent ftpsBtEvent; - MfwBtVgEvent vgBtEvent; - MfwBtMdgEvent mdgBtEvent; - MfwBtA2dpEvent a2dpBtEvent; - - /*.....Event types can be defined for other modules*/ - }data; - -}T_BTIPS_MMI_IND; - -/******************BTIPS Generic EVENTS************************/ -#define E_BTIPS_POWERON_SUCCESS (T_MFW_EVENT)0x00000001 -#define E_BTIPS_POWERON_FAILURE (T_MFW_EVENT)0x00000002 -#define E_BTIPS_POWEROFF_SUCCESS (T_MFW_EVENT)0x00000004 -#define E_BTIPS_BMG_PAIRING_COMPLETE (T_MFW_EVENT)0x00000008 -#define E_BTIPS_INCOMING_PIN_REQ (T_MFW_EVENT)0x00000010 -#define E_BTIPS_BT_NOT_ON (T_MFW_EVENT)0x00000020 -#define E_BTIPS_FATAL_ERROR (T_MFW_EVENT)0x00000040 -#define E_BTIPS_FTPS_PUT_EVENT (T_MFW_EVENT)0x00000080 -#define E_BTIPS_FTPS_GET_EVENT (T_MFW_EVENT)0x00000100 -#define E_BTIPS_FTPS_COMPLETE_EVENT (T_MFW_EVENT)0x00400000 //sundeep -#define E_BTIPS_FTPS_ABORTED_EVENT (T_MFW_EVENT)0x00800000 //vamsee -#define E_BTIPS_FTPS_PUT_COMP_EVENT (T_MFW_EVENT)0x01000000 //sundeep -//#define E_BTIPS_FTPS_GET_COMP_EVENT (T_MFW_EVENT)0x02000000 //sundeep -#define E_BTIPS_FTPS_DELETE_COMP_EVENT (T_MFW_EVENT)0x04000000 //sundeep -#define E_BTIPS_FTPS_CONNECT_EVENT (T_MFW_EVENT)0x20000000 //sundeep -#define E_BTIPS_FTPS_DISCONNECT_EVENT (T_MFW_EVENT)0x40000000 //sundeep - - -#define E_BTIPS_FTPS_DELETE_EVENT (T_MFW_EVENT)0x00000200 -#define E_BTIPS_VG_CONNECT_EVENT (T_MFW_EVENT)0x00000400 -#define E_BTIPS_VG_DISCONNECT_EVENT (T_MFW_EVENT)0x00000800 -#define E_BTIPS_VG_AUDIO_CONNECT_EVENT (T_MFW_EVENT)0x00001000 -#define E_BTIPS_VG_AUDIO_DISCONNECT_EVENT (T_MFW_EVENT)0x00002000 - -/******************BMG EVENTS*********************************/ -#define E_BTIPS_BMG_NAME_RESULT (T_MFW_EVENT)0x00004000 -#define E_BTIPS_BMG_SEARCH_COMPLETE (T_MFW_EVENT)0x00008000 -#define E_BTIPS_BMG_SEARCH_CANCELLED (T_MFW_EVENT)0x00010000 -#define E_BTIPS_BMG_BOND_COMPLETE (T_MFW_EVENT)0x00020000 -#define E_BTIPS_BMG_DEVICE_SERVICES (T_MFW_EVENT)0x00040000 -#define E_BTIPS_OPPS_PUSH_EVENT (T_MFW_EVENT)0x00080000 -#define E_BTIPS_OPPS_PULL_EVENT (T_MFW_EVENT)0x00100000 -#define E_BTIPS_BMG_BOND_CANCELLED (T_MFW_EVENT)0x00200000 - -//#if 0 -#define E_BTIPS_OPPS_PULL_COMP_EVENT (T_MFW_EVENT)0x08000000 -#define E_BTIPS_OPPS_PUSH_COMP_EVENT (T_MFW_EVENT)0x10000000 -//#endif - -#define E_BTIPS_ALL_SERVICES (T_MFW_EVENT)0xFFFFFFFF - -typedef T_BTIPS_MMI_IND T_MFW_BTIPS_PARA; - -typedef struct -{ - T_MFW_EVENT emask; /* events of interest */ - T_MFW_EVENT event; /* current event */ - T_MFW_CB handler; - T_MFW_BTIPS_PARA para; -} T_MFW_BTIPS; - - -void Btips_ffs_log_message(char *LogMsg,...); - - -#ifdef FF_MMI_BTIPS_APP -#define BTIPS_MMI_IND 0x1107 //TISH: 0x110 this value is same as Camera primiive. -GLOBAL BOOL btipsPrimHandler (USHORT opc, void * data); -#endif//BT-MMI - FF_MMI_BTIPS_APP - -BOOL mfw_btips_checkStatus(BtStatus btStatus); - -void mfw_btips_signal(T_MFW_EVENT event, T_BTIPS_MMI_IND * para); -int mmi_btips_app_root_cb(T_MFW_EVENT evnt, void *para); -void mfw_btips_ftpsAcceptObjectRequest (BOOL flag); -void mfw_btips_ftpsDisconnect (void); - -#endif - diff -r e41c934ecd97 -r 83c6933e8f90 src/ui/mfw/mfw_BtipsA2dp.c --- a/src/ui/mfw/mfw_BtipsA2dp.c Tue Jan 19 05:23:24 2021 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,913 +0,0 @@ -/* ========================================================= -* 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: mfw_BtipsA2dp.c - $Revision: 1.0 - $Author: Texas Instruments - $Date: 26/06/07 - -******************************************************************************** - - Description: - - This module provides the BTIPS BMG APPlication functionality. - -******************************************************************************** - $History: mfw_BtipsA2dp.c - - 26/06/07 Sasken original version - - $End - -*******************************************************************************/ - - - - -/******************************************************************************* - - Include files - -*******************************************************************************/ - -#define ENTITY_MFW - -#if BT_STACK == XA_ENABLED -#include -#include -#include -#endif - -#include "btl_common.h" -#include "debug.h" -#include "vsi.h" -#include "overide.h" - -/* BTL includes */ -#include "btl_a2dp.h" -#include "btl_config.h" -#include "bthal_mm.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_BtipsA2dp.h" -#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 "mfw_btips.h" -#include "mfw_ffs.h" - -extern char szSelectedFileName[256]; -extern char* szSelectedFileExt; -extern int a2dp_files_count; -//Array to load fileNames in content directory -extern char* a2dp_file_names[A2DP_MAX_FILES]; - - -/*------------------------------------------------------------------------------- - * MAX_SUPPORTED_BITPOOL type - * - * Represents the maximum supported bitpool - */ -#define MAX_SUPPORTED_BITPOOL (53) - -/*------------------------------------------------------------------------------- - * MIN_SUPPORTED_BITPOOL type - * - * Represents the minimum supported bitpool - */ -#define MIN_SUPPORTED_BITPOOL (2) - -#define A2DP_MAX_NUM_STREAMS (BTL_CONFIG_A2DP_MAX_NUM_SBC_STREAMS_PER_CONTEXT + \ - BTL_CONFIG_A2DP_MAX_NUM_MPEG1_2_AUDIO_STREAMS_PER_CONTEXT) -static BOOL isStreamClosed[A2DP_MAX_NUM_STREAMS]; -static BOOL playingNow = FALSE; -static BOOL streamingNow = FALSE; -static BtSecurityLevel securityLevel = BSL_NO_SECURITY; -static BtlA2dpContext *btlA2dpContext = 0; -static BtlA2dpCodec codec; -BtlA2dpStreamId streamId = -1; -static BthalMmSbcInfo sbcLocalCap; -static BthalMmMpeg1_2_audioInfo mp3LocalCap; -static BOOL streamSbcFile = FALSE; -extern T_MFW_HND hA2dpDeviceWnd; -BOOL bPlayMp3File = FALSE; -BOOL bPlaySbcFile = FALSE; - -void APP_A2DP_StartPcmStream(BTHAL_U32 streamId); - -static void mfw_btips_a2dpEventCallBack(const BtlA2dpEvent *event); -static char * pCodecType(AvdtpCodecType CType); -static char * pAvError(AvdtpError Error); -static void mfw_btips_a2dpSetDefaultSbcLocalCap(void); -static void mfw_btips_a2dpSetDefaultMp3LocalCap(void); - -#ifdef FF_MMI_BTIPS_APP - -/*Function Definitions*/ -void APP_A2DP_StartPcmStream(BTHAL_U32 streamId) -{ - BtStatus status; - status = BTL_A2DP_StartStream(btlA2dpContext, streamId); - TRACE_FUNCTION_P1("BTL_A2DP_StartStream() returned %s.", - pBT_Status(status)); -} - -/******************************************************************************* - - $Function: mfw_btips_a2dpInit - - $Description: Function to initialise the a2dp file list. - - $Returns: None - - $Arguments: None - -*******************************************************************************/ -void mfw_btips_a2dpInit(void) -{ - BtStatus status; - TRACE_FUNCTION("mfw_btips_a2dpInit"); - - status = BTL_A2DP_Create(0, mfw_btips_a2dpEventCallBack, &securityLevel, &btlA2dpContext); - mfw_btips_a2dpSetDefaultSbcLocalCap(); - mfw_btips_a2dpSetDefaultMp3LocalCap(); - bthalMmSetExternalSbcEncoder(streamSbcFile); - bthalMmSetPcmPlatformSupportedCapabilities(&sbcLocalCap); - TRACE_FUNCTION("SBC Local capabilities has been set"); - - bthalMmSetMp3PlatformSupportedCapabilities(&mp3LocalCap); - TRACE_FUNCTION("MP3 Local capabilities has been set"); - - status = BTL_A2DP_Enable(btlA2dpContext, 0, (BTL_A2DP_SUPPORTED_FEATURES_PLAYER | BTL_A2DP_SUPPORTED_FEATURES_MIXER)); - - TRACE_FUNCTION_P1("BTL_A2DP_Enable() returned %s.", pBT_Status(status)); - if (status == BT_STATUS_SUCCESS) - { - OS_MemSet(isStreamClosed, TRUE, A2DP_MAX_NUM_STREAMS); - - } - else - { - TRACE_FUNCTION("A2DP Enable Failed!"); - } -} -/******************************************************************************* - - $Function: mfw_btips_a2dpPopulateFiles - - $Description:Populates the MIDI file names into the array - - $Returns: The count of the files in the directory - - $Arguments: file_names:Pointer to the arrayto store file names - max_files_count:Max file counts to be stored in array -*******************************************************************************/ - -int mfw_btips_a2dpPopulateFiles(char **file_names, int max_files_count,char* dir_name_p) -{ - - T_FFS_DIR dir = {0}; - char dest_name_p[100] = ""; - int i, files_count = 0; - char *fileExt; - - TRACE_FUNCTION("mfw_btips_a2dpPopulateFiles"); - - TRACE_FUNCTION_P1("a2dp_files_count - %s", dir_name_p); - if (ffs_opendir (dir_name_p, &dir) <= 0) - { - TRACE_FUNCTION("Cld not open Dir"); - - files_count = 0; - } - //Release previous allocated memory before allocating again - mfw_btips_a2dpUnpopulateFiles(file_names); - //read the file names - //file_count will be used to populate the array index - for (i = 0; ffs_readdir (&dir, dest_name_p, 100) > 0x0; i++) - { - - TRACE_FUNCTION_P1("Reading Dir - %s",dest_name_p); - (file_names[files_count]) = (char*)mfwAlloc(strlen(dest_name_p) + 1); - if(file_names[files_count] != NULL) - { - //Retrieve file extension.Store only the supported file formats in array - fileExt =mfw_btips_a2dpGetExtension(dest_name_p); - //List the MP3 files also.Mp3 files hsould not be listed or ULC - if ( (strcmp(fileExt, "mp3") == 0)) - { - - strcpy (file_names[files_count], dest_name_p); - TRACE_FUNCTION_P1("file_names - %s", file_names[files_count]); - files_count++; - } - else if ( (strcmp(fileExt, "wav")== 0)) - { - - strcpy (file_names[files_count], dest_name_p); - TRACE_FUNCTION_P1("file_names - %s", file_names[files_count]); - files_count++; - } - else if ( (strcmp(fileExt, "pcm")== 0)) - { - strcpy (file_names[files_count], dest_name_p); - TRACE_FUNCTION_P1("file_names - %s", file_names[files_count]); - files_count++; - } - else if(files_count >= max_files_count) - break; - } - else - { - //files_count = 0; - } - - } - //Closing the directory aa per the new FFS logic - ffs_closedir(dir); - - TRACE_EVENT_P1("read files_count is %d",files_count); - return files_count; -} -/******************************************************************************* - - $Function: mfw_btips_a2dpUnpopulateFiles - - $Description:Frees the memory allocated for the array - $Returns: None - - $Arguments: file_names:Pointer to the arrayto store file names - -*******************************************************************************/ -void mfw_btips_a2dpUnpopulateFiles(char **file_names) -{ - int i; - TRACE_FUNCTION("mfw_btips_a2dpUnpopulateFiles"); - - //Free the allocated memory for file names - for (i = 0; icallbackParms; - - TRACE_FUNCTION_P1("mfw_btips_a2dpEventCallBack %d",Parms->event); - - switch (Parms->event) { - case A2DP_EVENT_STREAM_OPEN_IND: - TRACE_FUNCTION_P1("A2DP_EVENT_STREAM_OPEN_IND streamId %d.", event->streamId); - TRACE_FUNCTION_P2(" Codec: %s, Length: %d", - pCodecType(Parms->p.configReq->codec.codecType), - Parms->p.configReq->codec.elemLen); - - /*if (promptUserOnIncomingConAndStart) - { - AppReport("Please Accept or Reject open stream request"); - } - else - */ - { - /* Auto-accept connection */ - status = BTL_A2DP_OpenStreamResponse(btlA2dpContext, event->streamId, A2DP_ERR_NO_ERROR); - TRACE_FUNCTION_P1("BTL_A2DP_OpenStreamResponse() returned %s.", - pBT_Status(status)); - } - - break; - - case A2DP_EVENT_GET_CONFIG_IND: - TRACE_FUNCTION_P1("A2DP_EVENT_GET_CONFIG_IND streamId %d.", event->streamId); - TRACE_FUNCTION("To configure and open strean press 'Open Stream' button "); - /*if(streamId > 0) - { - mfw_btips_a2dpCloseStream(); - }*/ - - status = BTL_A2DP_OpenStream(btlA2dpContext, streamId); - isStreamClosed[event->streamId] = FALSE; - bthalMmStreamStateIsConnected(event->streamId, TRUE); - TRACE_FUNCTION_P1("BTL_A2DP_OpenStream() returned %s.", - pBT_Status(status)); - break; - - case A2DP_EVENT_STREAM_OPEN: - TRACE_FUNCTION_P1("A2DP_EVENT_STREAM_OPEN streamId %d.", event->streamId); - isStreamClosed[event->streamId] = FALSE; - bthalMmStreamStateIsConnected(event->streamId, TRUE); - if(bPlaySbcFile) - { - TRACE_FUNCTION("Opening PCM File "); - if(AppPcmSimOpenFile(szSelectedFileName)) - { - TRACE_FUNCTION("PCM File Open Success!!"); - } - else - { - TRACE_FUNCTION("PCM File Open Failed!!"); - } - } - - if(bPlayMp3File) - { - TRACE_FUNCTION("Opening Mp3 File "); - if(AppMp3OpenFile(szSelectedFileName)) - { - TRACE_FUNCTION("Mp3 File Open Success!!"); - } - else - { - TRACE_FUNCTION("Mp3 File Open Failed!!"); - } - status = BTL_A2DP_StartStream(btlA2dpContext, streamId); - TRACE_FUNCTION_P1("BTL_A2DP_StartStream() returned %s.", - pBT_Status(status)); - - } - - - break; - - case A2DP_EVENT_STREAM_IDLE: - TRACE_FUNCTION_P1("A2DP_EVENT_STREAM_IDLE streamId %d.", event->streamId); - isStreamClosed[event->streamId] = FALSE; - streamStopped = TRUE; - - break; - - case A2DP_EVENT_STREAM_CLOSED: - TRACE_FUNCTION_P1("A2DP_EVENT_STREAM_CLOSED streamId %d.", event->streamId); - isStreamClosed[event->streamId] = TRUE; - streamStopped = TRUE; - bthalMmStreamStateIsConnected(event->streamId, FALSE); - break; - - case A2DP_EVENT_STREAM_START_IND: - TRACE_FUNCTION_P1("A2DP_EVENT_STREAM_START_IND streamId %d.", event->streamId); - - /*if (promptUserOnIncomingConAndStart) - { - AppReport("Please Accept or Reject start stream request"); - } - else - */ - { - /* Auto-accept stream start */ - status = BTL_A2DP_StartStreamResponse(btlA2dpContext, event->streamId, A2DP_ERR_NO_ERROR); - TRACE_FUNCTION_P1("BTL_A2DP_StartStreamResponse() returned %s.", - pBT_Status(status)); - } - - break; - - case A2DP_EVENT_STREAM_STARTED: - TRACE_FUNCTION_P1("A2DP_EVENT_STREAM_STARTED streamId %d.", event->streamId); - - isStreamClosed[event->streamId] = FALSE; - streamingNow = TRUE; - if(bPlaySbcFile) - { - TRACE_FUNCTION("Playing PCM File "); - AppPcmSimPlayFile(); - } - else if(bPlayMp3File) - { - TRACE_FUNCTION("Playing Mp3 File "); - AppMp3PlayFile(); - - } - TRACE_FUNCTION_P1("Playing File %s : ", szSelectedFileName); - break; - - case A2DP_EVENT_STREAM_SUSPENDED: - TRACE_FUNCTION_P1("A2DP_EVENT_STREAM_SUSPENDED streamId %d.", event->streamId); - - isStreamClosed[event->streamId] = FALSE; - - if (Parms->error != AVDTP_ERR_NO_ERROR) - { - TRACE_FUNCTION_P2("Stream Suspend Failed, reason: %s, status: %s", - pAvError(Parms->error), - pBT_Status(Parms->status)); - } - /*switch (event->streamId) - { - case (0): - SendDlgItemMessage(AppWnd, IDC_STREAM0_OPEND, BM_SETCHECK, BST_CHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM0_STREAMING, BM_SETCHECK, BST_UNCHECKED, 0L); - break; - - case (1): - SendDlgItemMessage(AppWnd, IDC_STREAM1_OPEND, BM_SETCHECK, BST_CHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM1_STREAMING, BM_SETCHECK, BST_UNCHECKED, 0L); - break; - - case (2): - SendDlgItemMessage(AppWnd, IDC_STREAM2_OPEND, BM_SETCHECK, BST_CHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM2_STREAMING, BM_SETCHECK, BST_UNCHECKED, 0L); - break; - - case (3): - SendDlgItemMessage(AppWnd, IDC_STREAM3_OPEND, BM_SETCHECK, BST_CHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM3_STREAMING, BM_SETCHECK, BST_UNCHECKED, 0L); - break; - } - */ - break; - - case A2DP_EVENT_STREAM_ABORTED: - TRACE_FUNCTION_P1("A2DP_EVENT_STREAM_ABORTED streamId %d.", event->streamId); - if (Parms->error != AVDTP_ERR_NO_ERROR) { - TRACE_FUNCTION_P2("Stream Abort Failed, reason: %s, status: %s", - pAvError(Parms->error), - pBT_Status(Parms->status)); - } - /*switch (event->streamId) - { - case (0): - if(isStreamClosed[0] == FALSE) - { - - SendDlgItemMessage(AppWnd, IDC_STREAM0_IDLE, BM_SETCHECK, BST_CHECKED, 0L); - } - SendDlgItemMessage(AppWnd, IDC_STREAM0_OPEND, BM_SETCHECK, BST_UNCHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM0_STREAMING, BM_SETCHECK, BST_UNCHECKED, 0L); - break; - - case (1): - if(isStreamClosed[1] == FALSE) - { - - SendDlgItemMessage(AppWnd, IDC_STREAM1_IDLE, BM_SETCHECK, BST_CHECKED, 0L); - } - SendDlgItemMessage(AppWnd, IDC_STREAM1_OPEND, BM_SETCHECK, BST_UNCHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM1_STREAMING, BM_SETCHECK, BST_UNCHECKED, 0L); - break; - - case (2): - if(isStreamClosed[2] == FALSE) - { - - SendDlgItemMessage(AppWnd, IDC_STREAM2_IDLE, BM_SETCHECK, BST_CHECKED, 0L); - } - SendDlgItemMessage(AppWnd, IDC_STREAM2_OPEND, BM_SETCHECK, BST_UNCHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM2_STREAMING, BM_SETCHECK, BST_UNCHECKED, 0L); - break; - - case (3): - if(isStreamClosed[3] == FALSE) - { - - SendDlgItemMessage(AppWnd, IDC_STREAM3_IDLE, BM_SETCHECK, BST_CHECKED, 0L); - } - SendDlgItemMessage(AppWnd, IDC_STREAM3_OPEND, BM_SETCHECK, BST_UNCHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM3_STREAMING, BM_SETCHECK, BST_UNCHECKED, 0L); - break; - } -*/ - isStreamClosed[event->streamId] = FALSE; - streamStopped = TRUE; - bPlaySbcFile = FALSE; - bPlayMp3File = FALSE; - break; - - case A2DP_EVENT_DISABLED: - TRACE_FUNCTION("A2DP_EVENT_DISABLED"); - /*SendDlgItemMessage(AppWnd, IDC_STREAM0_IDLE, BM_SETCHECK, BST_UNCHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM0_OPEND, BM_SETCHECK, BST_UNCHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM0_STREAMING, BM_SETCHECK, BST_UNCHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM0_CLOSED, BM_SETCHECK, BST_UNCHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM1_IDLE, BM_SETCHECK, BST_UNCHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM1_OPEND, BM_SETCHECK, BST_UNCHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM1_STREAMING, BM_SETCHECK, BST_UNCHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM1_CLOSED, BM_SETCHECK, BST_UNCHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM2_IDLE, BM_SETCHECK, BST_UNCHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM2_OPEND, BM_SETCHECK, BST_UNCHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM2_STREAMING, BM_SETCHECK, BST_UNCHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM2_CLOSED, BM_SETCHECK, BST_UNCHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM3_IDLE, BM_SETCHECK, BST_UNCHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM3_OPEND, BM_SETCHECK, BST_UNCHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM3_STREAMING, BM_SETCHECK, BST_UNCHECKED, 0L); - SendDlgItemMessage(AppWnd, IDC_STREAM3_CLOSED, BM_SETCHECK, BST_UNCHECKED, 0L); - */ - streamStopped = TRUE; - - break; - - default: - TRACE_FUNCTION_P1("MFW A2DP Unexpected event %d!", Parms->event); - break; - } - - if ( streamStopped ) - { - streamingNow = FALSE; - } -} -/*--------------------------------------------------------------------------- - * pCodecType() - *--------------------------------------------------------------------------- - * - * Synopsis: Prints codec type message - * - */ -static char * pCodecType(AvdtpCodecType CType) -{ - switch (CType) { - case AVDTP_CODEC_TYPE_SBC: - return "SBC"; - case AVDTP_CODEC_TYPE_MPEG1_2_AUDIO: - return "MPEG1_2_AUDIO"; - case AVDTP_CODEC_TYPE_MPEG2_4_AAC: - return "MPEG2_4_AAC"; - case AVDTP_CODEC_TYPE_ATRAC: - return "ATRAC"; - case AVDTP_CODEC_TYPE_NON_A2DP: - return "Non-A2DP"; - default: - return "UNKNOWN"; - } -} -/*--------------------------------------------------------------------------- - * pAvError() - *--------------------------------------------------------------------------- - * - * Synopsis: Prints AV error message - * - */ -static char * pAvError(AvdtpError Error) -{ - switch (Error) { - case AVDTP_ERR_NO_ERROR: - return "AVDTP_ERR_NO_ERROR"; - case AVDTP_ERR_BAD_HEADER_FORMAT: - return "AVDTP_ERR_BAD_HEADER_FORMAT"; - case AVDTP_ERR_BAD_LENGTH: - return "AVDTP_ERR_BAD_LENGTH"; - case AVDTP_ERR_BAD_ACP_SEID: - return "AVDTP_ERR_BAD_ACP_SEID"; - case AVDTP_ERR_IN_USE: - return "AVDTP_ERR_IN_USE"; - case AVDTP_ERR_NOT_IN_USE: - return "AVDTP_ERR_NOT_IN_USE"; - case AVDTP_ERR_BAD_SERV_CATEGORY: - return "AVDTP_ERR_BAD_SERV_CATEGORY"; - case AVDTP_ERR_BAD_PAYLOAD_FORMAT: - return "AVDTP_ERR_BAD_PAYLOAD_FORMAT"; - case AVDTP_ERR_NOT_SUPPORTED_COMMAND: - return "AVDTP_ERR_NOT_SUPPORTED_COMMAND"; - case AVDTP_ERR_INVALID_CAPABILITIES: - return "AVDTP_ERR_INVALID_CAPABILITIES"; - case AVDTP_ERR_BAD_RECOVERY_TYPE: - return "AVDTP_ERR_BAD_RECOVERY_TYPE"; - case AVDTP_ERR_BAD_MEDIA_TRANSPORT_FORMAT: - return "AVDTP_ERR_BAD_MEDIA_TRANSPORT_FORMAT"; - case AVDTP_ERR_BAD_RECOVERY_FORMAT: - return "AVDTP_ERR_BAD_RECOVERY_FORMAT"; - case AVDTP_ERR_BAD_ROHC_FORMAT: - return "AVDTP_ERR_BAD_ROHC_FORMAT"; - case AVDTP_ERR_BAD_CP_FORMAT: - return "AVDTP_ERR_BAD_CP_FORMAT"; - case AVDTP_ERR_BAD_MULTIPLEXING_FORMAT: - return "AVDTP_ERR_BAD_MULTIPLEXING_FORMAT"; - case AVDTP_ERR_UNSUPPORTED_CONFIGURATION: - return "AVDTP_ERR_UNSUPPORTED_CONFIGURATION"; - case AVDTP_ERR_BAD_STATE: - return "AVDTP_ERR_BAD_STATE"; - case A2DP_ERR_BAD_SERVICE: - return" A2DP_ERR_BAD_SERVICE"; - case A2DP_ERR_INSUFFICIENT_RESOURCE: - return" A2DP_ERR_INSUFFICENT_RESOURCE"; - case A2DP_ERR_INVALID_CODEC_TYPE: - return" A2DP_ERR_INVALID_CODEC_TYPE"; - case A2DP_ERR_NOT_SUPPORTED_CODEC_TYPE: - return" A2DP_ERR_NOT_SUPPORTED_CODEC_TYPE"; - case A2DP_ERR_INVALID_SAMPLING_FREQUENCY: - return" A2DP_ERR_INVALID_SAMPLING_FREQUENCY"; - case A2DP_ERR_NOT_SUPPORTED_SAMP_FREQ: - return" A2DP_ERR_NOT_SUPPORTED_SAMP_FREQ"; - case A2DP_ERR_INVALID_CHANNEL_MODE: - return" A2DP_ERR_INVALID_CHANNEL_MODE"; - case A2DP_ERR_NOT_SUPPORTED_CHANNEL_MODE: - return" A2DP_ERR_NOT_SUPPORTED_CHANNEL_MODE"; - case A2DP_ERR_INVALID_SUBBANDS: - return" A2DP_ERR_INVALID_SUBBANDS"; - case A2DP_ERR_NOT_SUPPORTED_SUBBANDS: - return" A2DP_ERR_NOT_SUPPORTED_SUBBANDS"; - case A2DP_ERR_INVALID_ALLOCATION_METHOD: - return" A2DP_ERR_INVALID_ALLOCATION_METHOD"; - case A2DP_ERR_NOT_SUPPORTED_ALLOC_METHOD: - return" A2DP_ERR_NOT_SUPPORTED_ALLOC_METHOD"; - case A2DP_ERR_INVALID_MIN_BITPOOL_VALUE: - return" A2DP_ERR_INVALID_MIN_BITPOOL_VALUE"; - case A2DP_ERR_NOT_SUPPORTED_MIN_BITPOOL_VALUE: - return" A2DP_ERR_NOT_SUPPORTED_MIN_BITPOOL_VALUE"; - case A2DP_ERR_INVALID_MAX_BITPOOL_VALUE: - return" A2DP_ERR_INVALID_MAX_BITPOOL_VALUE"; - case A2DP_ERR_NOT_SUPPORTED_MAX_BITPOOL_VALUE: - return" A2DP_ERR_NOT_SUPPORTED_MAX_BITPOOL_VALUE"; - case A2DP_ERR_INVALID_LAYER: - return" A2DP_ERR_INVALID_LAYER"; - case A2DP_ERR_NOT_SUPPORTED_LAYER: - return" A2DP_ERR_NOT_SUPPORTED_LAYER"; - case A2DP_ERR_NOT_SUPPORTED_CRC: - return" A2DP_ERR_NOT_SUPPORTED_CRC"; - case A2DP_ERR_NOT_SUPPORTED_MPF: - return" A2DP_ERR_NOT_SUPPORTED_MPF"; - case A2DP_ERR_NOT_SUPPORTED_VBR: - return" A2DP_ERR_NOT_SUPPORTED_VBR"; - case A2DP_ERR_INVALID_BIT_RATE: - return" A2DP_ERR_INVALID_BIT_RATE"; - case A2DP_ERR_NOT_SUPPORTED_BIT_RATE: - return" A2DP_ERR_NOT_SUPPORTED_BIT_RATE"; - case A2DP_ERR_INVALID_OBJECT_TYPE: - return" A2DP_ERR_INVALID_OBJECT_TYPE"; - case A2DP_ERR_NOT_SUPPORTED_OBJECT_TYPE: - return" A2DP_ERR_NOT_SUPPORTED_OBJECT_TYPE"; - case A2DP_ERR_INVALID_CHANNELS: - return" A2DP_ERR_INVALID_CHANNELS"; - case A2DP_ERR_NOT_SUPPORTED_CHANNELS: - return" A2DP_ERR_NOT_SUPPORTED_CHANNELS"; - case A2DP_ERR_INVALID_VERSION: - return" A2DP_ERR_INVALID_VERSION"; - case A2DP_ERR_NOT_SUPPORTED_VERSION: - return" A2DP_ERR_NOT_SUPPORTED_VERSION"; - case A2DP_ERR_NOT_SUPPORTED_MAXIMUM_SUL: - return" A2DP_ERR_NOT_SUPPORTED_MAXIMUM_SUL"; - case A2DP_ERR_INVALID_BLOCK_LENGTH: - return" A2DP_ERR_INVALID_BLOCK_LENGTH"; - case A2DP_ERR_INVALID_CP_TYPE: - return" A2DP_ERR_INVALID_CP_TYPE"; - case A2DP_ERR_INVALID_CP_FORMAT: - return" A2DP_ERR_INVALID_CP_FORMAT"; - default: - return "UNKNOWN"; - } -} - - -/*--------------------------------------------------------------------------- - * mfw_btips_a2dpSetDefaultSbcLocalCap() - *--------------------------------------------------------------------------- - * - * Synopsis: Save local SBC capabilities - * - */ -static void mfw_btips_a2dpSetDefaultSbcLocalCap(void) -{ - sbcLocalCap.samplingFreq = ( BTHAL_MM_SBC_SAMPLING_FREQ_16000 | BTHAL_MM_SBC_SAMPLING_FREQ_32000|BTHAL_MM_SBC_SAMPLING_FREQ_44100 |BTHAL_MM_SBC_SAMPLING_FREQ_48000); - sbcLocalCap.channelMode = BTHAL_MM_SBC_CHANNEL_MODE_MONO | BTHAL_MM_SBC_CHANNEL_MODE_DUAL_CHANNEL | BTHAL_MM_SBC_CHANNEL_MODE_STEREO | BTHAL_MM_SBC_CHANNEL_MODE_JOINT_STEREO; - sbcLocalCap.blockLength = (BTHAL_MM_SBC_BLOCK_LENGTH_4 | BTHAL_MM_SBC_BLOCK_LENGTH_8 | BTHAL_MM_SBC_BLOCK_LENGTH_12 | BTHAL_MM_SBC_BLOCK_LENGTH_16); - sbcLocalCap.subbands = BTHAL_MM_SBC_SUBBANDS_8 | BTHAL_MM_SBC_SUBBANDS_4; - sbcLocalCap.allocationMethod = BTHAL_MM_SBC_ALLOCATION_METHOD_LOUDNESS | BTHAL_MM_SBC_ALLOCATION_METHOD_SNR; - sbcLocalCap.maxBitpoolValue = MAX_SUPPORTED_BITPOOL; - sbcLocalCap.minBitpoolValue = MIN_SUPPORTED_BITPOOL; -} - -/*--------------------------------------------------------------------------- - * mfw_btips_a2dpSetDefaultMp3LocalCap() - *--------------------------------------------------------------------------- - * - * Synopsis: Save local PM3 capabilities - * - */ -static void mfw_btips_a2dpSetDefaultMp3LocalCap(void) -{ - mp3LocalCap.bitRate = 0xFFFF; - mp3LocalCap.channelMode = (BTHAL_MM_MPEG1_2_AUDIO_CHANNEL_MODE_MONO | BTHAL_MM_MPEG1_2_AUDIO_CHANNEL_MODE_DUAL_CHANNEL | BTHAL_MM_MPEG1_2_AUDIO_CHANNEL_MODE_STEREO | BTHAL_MM_MPEG1_2_AUDIO_CHANNEL_MODE_JOINT_STEREO); - mp3LocalCap.crcProtection = BTHAL_MM_MPEG1_2_AUDIO_CRC_PROTECTION_SUPPORTED; - mp3LocalCap.layer = (BTHAL_MM_MPEG1_2_AUDIO_LAYER_1 | BTHAL_MM_MPEG1_2_AUDIO_LAYER_2 | BTHAL_MM_MPEG1_2_AUDIO_LAYER_3); - mp3LocalCap.mpf2 = BTHAL_MM_MPEG1_2_AUDIO_MPF2_SUPPORTED; - mp3LocalCap.samplingFreq = (BTHAL_MM_MPEG1_2_AUDIO_SAMPLING_FREQ_48000 | BTHAL_MM_MPEG1_2_AUDIO_SAMPLING_FREQ_44100 | BTHAL_MM_MPEG1_2_AUDIO_SAMPLING_FREQ_32000 | BTHAL_MM_MPEG1_2_AUDIO_SAMPLING_FREQ_24000 | BTHAL_MM_MPEG1_2_AUDIO_SAMPLING_FREQ_22050 | BTHAL_MM_MPEG1_2_AUDIO_SAMPLING_FREQ_16000); - mp3LocalCap.vbr = BTHAL_MM_MPEG1_2_AUDIO_VBR_SUPPORTED; - -} - BtStatus mfw_btips_a2dpConnectStream(BD_ADDR bdAddr) -{ - BtStatus status; - - TRACE_FUNCTION("mfw_btips_a2dpConnectStream"); - - if ( (strcmp(szSelectedFileExt, "mp3") == 0)) - { - bPlayMp3File = TRUE; - bPlaySbcFile = FALSE; - codec = BTL_A2DP_CODEC_MPEG1_2_AUDIO; - status = BTL_A2DP_ConnectStream(btlA2dpContext,&bdAddr, codec, &streamId); - if (status == BT_STATUS_PENDING) - { - TRACE_FUNCTION("Connecting Mp3 stream (opening signaling channel in process)..."); - } - else - { - TRACE_FUNCTION_P1("connecting Mp3 stream failed, status: %s", pBT_Status(status)); - } - } - else if ( (strcmp(szSelectedFileExt, "pcm") == 0)) - { - bPlaySbcFile = TRUE; - bPlayMp3File = FALSE; - codec = BTL_A2DP_CODEC_SBC; - status = BTL_A2DP_ConnectStream(btlA2dpContext,&bdAddr, codec, &streamId); - if (status == BT_STATUS_PENDING) - { - TRACE_FUNCTION("Connecting SBC stream (opening signaling channel in process)..."); - } - else - { - TRACE_FUNCTION_P1("connecting SBC stream failed, status: %s", pBT_Status(status)); - } - - } - else if ( (strcmp(szSelectedFileExt, "wav") == 0)) - { - bPlaySbcFile = TRUE; - bPlayMp3File = FALSE; - codec = BTL_A2DP_CODEC_SBC; - status = BTL_A2DP_ConnectStream(btlA2dpContext,&bdAddr, codec, &streamId); - if (status == BT_STATUS_PENDING) - { - TRACE_FUNCTION("Connecting SBC stream (opening signaling channel in process)..."); - } - else - { - TRACE_FUNCTION_P1("connecting SBC stream failed, status: %s", pBT_Status(status)); - } - - } - return status; -} - BtStatus mfw_btips_a2dpCloseStream() -{ - BtStatus status; - - TRACE_FUNCTION("mfw_btips_a2dpCloseStream"); - - if ( (strcmp(szSelectedFileExt, "mp3") == 0)) - { - //AppMp3StopFile(); - AppStopAudioFile(); - AppMp3CloseFile(); - } - else if ( (strcmp(szSelectedFileExt, "pcm") == 0)) - { - - AppPcmSimStopFile(); - AppPcmSimCloseFile(); - } - else if ( (strcmp(szSelectedFileExt, "wav") == 0)) - { - - AppPcmSimStopFile(); - AppPcmSimCloseFile(); - } - status = BTL_A2DP_CloseStream(btlA2dpContext, streamId); - TRACE_FUNCTION_P1("BTL_A2DP_CloseStream returned %s", pBT_Status(status)); - return status; -} - - BOOL mfw_btips_a2dpGetConnectedDevice (BD_ADDR *bdAddr, U8 *name) -{ - BtStatus status; - - status = BTL_A2DP_GetConnectedDevice (btlA2dpContext, streamId, bdAddr); - - if (status == BT_STATUS_SUCCESS) - { - mfw_btips_bmgGetDeviceName (bdAddr, name); - return TRUE; - } - return FALSE; -} - -BOOL mfw_btips_a2dpDisconnect (BD_ADDR bdAddr) -{ - BtStatus btStatus; - - btStatus = BTL_A2DP_CloseStream (btlA2dpContext, streamId); - - return TRUE; -} - -#endif diff -r e41c934ecd97 -r 83c6933e8f90 src/ui/mfw/mfw_BtipsA2dp.h --- a/src/ui/mfw/mfw_BtipsA2dp.h Tue Jan 19 05:23:24 2021 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -#ifndef DEF_MFW_BTIPS_A2DP -#define DEF_MFW_BTIPS_A2DP -/* ========================================================= -* 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 MFW - $File: Mfw_BtipsA2dp.h - $Revision: 1.0 - $Author: Texas Instruments - $Date: 26/06/07 - -******************************************************************************** - - Description: - - This module provides the BTIPS A2DP APPlication functionality. - -******************************************************************************** - $History: Mfw_BtipsA2dp.h - - 26/06/07 Sasken original version - - $End - -*******************************************************************************/ - -/* Maximum files to be displayed in the MMI */ -#define A2DP_MAX_FILES 10 -//Number of files in content directory. - - -/*Function Declarations*/ -int mfw_btips_a2dpPopulateFiles(char **file_names, int max_files_count, - char* dir_name_p); - -void mfw_btips_a2dpUnpopulateFiles(char **file_names); - char *mfw_btips_a2dpGetExtension(char *src); - int mfw_btips_a2dpGetNumFiles(void); - char* mfw_btips_a2dpGetFileName(UBYTE index); - BtStatus mfw_btips_a2dpConnectStream(BD_ADDR bdAddr); - BtStatus mfw_btips_a2dpCloseStream(); - -#endif - - diff -r e41c934ecd97 -r 83c6933e8f90 src/ui/mfw/mfw_BtipsBmg.c --- a/src/ui/mfw/mfw_BtipsBmg.c Tue Jan 19 05:23:24 2021 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1203 +0,0 @@ -/* ========================================================= -* 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 MFW - $File: Mfw_Btips.c - $Revision: 1.0 - $Author: Texas Instruments - $Date: 26/06/07 - -******************************************************************************** - - Description: - - This module provides the BTIPS BMG APPlication functionality. - -******************************************************************************** - $History: Mfw_Btips.c - - 26/06/07 Sasken original version - - $End - -*******************************************************************************/ - - - - -/******************************************************************************* - - Include files - -*******************************************************************************/ - -#define ENTITY_MFW -/* includes */ - -#include -#ifdef FF_MMI_BTIPS_APP - -/* BTIPS Includes */ -#include "me.h" -#include "osapi.h" -#include "btl_common.h" -#include "bthal_btdrv.h" -#include "bthal_pm.h" -#include "bttypes.h" -#include "goep.h" -#include "bpp.h" -#include "Debug.h" - -/* BTL includes */ -#include "btl_bmg.h" - -#endif -#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 "Mfw_Btips.h" -#include "Mfw_BtipsBmg.h" - - -#ifdef FF_MMI_BTIPS_APP - -#define BTL_BMG_MAX_PIN_LEN 16 -#define BTL_BMG_SEARCH_ALL 0 -#define BTL_BMG_SEARCH_AUDIO_MAJOR 1 -#define PME_APP_NAME "Locosto Phone" - - - -//extern BtlA2dpContext *btlA2dpContext ; -//extern BtlFtpsContext *ftpsContext; -/* Internal functions prototypes */ -void btips_bmgCallback (const BtlBmgEvent *); -extern UBYTE g_device_name[BT_MAX_REM_DEV_NAME]; -extern BOOL g_Outgoing; - -static BtlBmgContext *mfwBtipsBmgContext; - -/*--------------------------------------------------------------------------- - * mfw_btips_bmgGetDeviceName - *--------------------------------------------------------------------------- - * - * Synopsis: Send PIN code. - * - * Return: TRUE if name is available. Else convert the BD_ADDR itself to a string. - * - */ -BOOL mfw_btips_bmgGetDeviceName(const BD_ADDR *bdAddr, U8 *name) -{ - BtStatus btStatus; - BtlBmgDeviceRecord record; - TRACE_FUNCTION("mfw_btips_bmgGetDeviceName"); - btStatus = BTL_BMG_FindDeviceRecord(mfwBtipsBmgContext, bdAddr, &record); - if(BT_STATUS_SUCCESS == btStatus) - { - - strcpy(name, record.name); - } - else - { - bdaddr_ntoa(bdAddr, name); - } - return TRUE; -} -//26-07-07 -/*--------------------------------------------------------------------------- - * mfw_btips_bmgSetDeviceRecord - *--------------------------------------------------------------------------- - * - * Synopsis: Send PIN code. - * - * Return: TRUE if name is available. Else convert the BD_ADDR itself to a string. - * - */ -BOOL mfw_btips_bmgSetDeviceNameInRecord(const BD_ADDR *bdAddr, UBYTE *name) -{ - BtStatus btStatus; - BtlBmgDeviceRecord record; - TRACE_FUNCTION("mfw_btips_bmgGetDeviceName"); - btStatus = BTL_BMG_FindDeviceRecord(mfwBtipsBmgContext, bdAddr, &record); - if(BT_STATUS_SUCCESS == btStatus) - { - - OS_MemCopy(record.name, name, BT_MAX_REM_DEV_NAME); - BTL_BMG_SetDeviceRecord(mfwBtipsBmgContext, &record); - - } - else - { - bdaddr_ntoa(bdAddr, name); - } - return TRUE; -} - - -BOOL mfw_btips_bmgGetDeviceState (const BD_ADDR *bdAddr, BtRemDevState *state) -{ - TRACE_FUNCTION("mfw_btips_bmgGetDeviceState"); - BTL_BMG_GetRemDevState (mfwBtipsBmgContext, bdAddr, state); - return TRUE; -} - -/*--------------------------------------------------------------------------- - * mfw_btips_bmgSendPin - *--------------------------------------------------------------------------- - * - * Synopsis: Send PIN code. - * - * Return: TRUE if send PIN code is successful, FALSE otherwise. - * - */ -BOOL mfw_btips_bmgSendPin (const BD_ADDR *bdAddr, - const U8 *pin, - const U8 len) -{ - BtStatus btStatus; - - btStatus = BTL_BMG_PinReply(mfwBtipsBmgContext, bdAddr, pin, len, BPT_SAVE_TRUSTED); - return mfw_btips_checkStatus(btStatus); -} - -/*--------------------------------------------------------------------------- - * mfw_btips_bmgSendHciCommand - *--------------------------------------------------------------------------- - * - * Synopsis: Send an HCI Command. - * - * Return: TRUE if command was sent successfully, FALSE otherwise. - * - */ -BOOL mfw_btips_bmgSendHciCommand (const U16 hciCommand, - const U8 parmsLen, - const U8 *parms, - const U8 event) -{ - BtStatus btStatus; - - TRACE_FUNCTION_P1("mfw_btips_bmgSendHciCommand %x", hciCommand); - btStatus = BTL_BMG_SendHciCommand(mfwBtipsBmgContext, hciCommand, parmsLen, parms, event); - return mfw_btips_checkStatus(btStatus); -} - - -BOOL mfw_btips_bmgBond(const BD_ADDR *bdAddr, - const U8 *pin, - const U8 len) -{ - BtStatus btStatus; - btStatus = BTL_BMG_Bond(mfwBtipsBmgContext, bdAddr, pin, len, BPT_SAVE_TRUSTED); - return mfw_btips_checkStatus(btStatus); -} - -BOOL mfw_btips_bmgCancelBond(const BD_ADDR *bdAddr) -{ - BtStatus btStatus; - TRACE_FUNCTION("mfw_btips_bmgCancelBond"); - btStatus = BTL_BMG_CancelBond(mfwBtipsBmgContext, bdAddr); - return mfw_btips_checkStatus(btStatus); - -} -BOOL mfw_btips_bmgGetCodMajorValue(U8* CODMajorStr, U32 *CODMajor) -{ - BOOL result; - #if 0 - LINE_PARSER_ToLower(CODMajorStr); - - *CODMajor = COD_MAJOR_MISCELLANEOUS; - result = TRUE; - - if (strcmp((const char*)CODMajorStr, "comp") == 0) - { - *CODMajor = COD_MAJOR_COMPUTER; - } - else if (strcmp((const char*)CODMajorStr, "phone") == 0) - { - *CODMajor = COD_MAJOR_PHONE; - } - else if (strcmp((const char*)CODMajorStr, "lan") == 0) - { - *CODMajor = COD_MAJOR_LAN_ACCESS_POINT; - } - else if (strcmp((const char*)CODMajorStr, "audio") == 0) - { - *CODMajor = COD_MAJOR_AUDIO; - } - else if (strcmp((const char*)CODMajorStr, "periph") == 0) - { - *CODMajor = COD_MAJOR_PERIPHERAL; - } - else if (strcmp((const char*)CODMajorStr, "imaging") == 0) - { - *CODMajor = COD_MAJOR_IMAGING; - } - else if (strcmp((const char*)CODMajorStr, "none") == 0) - { - *CODMajor = COD_MAJOR_MISCELLANEOUS; - } - else - { - result = FALSE; - } -#endif - return result; -} - -BOOL mfw_btips_bmgGetLAPValue(U8* lapStr, U32 *lap) -{ - BOOL result; - #if 0 - LINE_PARSER_ToLower(lapStr); - - result = TRUE; - - if (strcmp((const char*)lapStr, "giac") == 0) - { - *lap = BT_IAC_GIAC; - } - if (strcmp((const char*)lapStr, "liac") == 0) - { - *lap = BT_IAC_LIAC; - } - else - { - result = FALSE; - } -#endif - return result; -} - -/*--------------------------------------------------------------------------- - * mfw_btips_bmgSearch - *--------------------------------------------------------------------------- - * - * Synopsis: Starts search process. - * - * Return: TRUE if search process is successfull, FALSE otherwise. - * - */ -BOOL mfw_btips_bmgCancelSearch (void) -{ - BtStatus btStatus = BT_STATUS_FAILED; - - TRACE_FUNCTION ("mfw_btips_bmgCancelSearch()"); - - btStatus = BTL_BMG_CancelSearch(mfwBtipsBmgContext); - TRACE_FUNCTION_P1("MFW_BTIPS_BMG :BTL_BMG_CancelSearch returned btStatus: %s", pBT_Status(btStatus)); - - return mfw_btips_checkStatus(btStatus); -} - -/*--------------------------------------------------------------------------- - * mfw_btips_bmgSearch - *--------------------------------------------------------------------------- - * - * Synopsis: Starts search process. - * - * Return: TRUE if search process is successfull, FALSE otherwise. - * - */ -BOOL mfw_btips_bmgSearch (BOOL searchType) -{ - BtStatus status = BT_STATUS_FAILED; - BtlBmgCodFilter CODFilter; - BtlBmgCodFilter *CODFilterPtr = 0; -// U8 lapStr[11]; - BOOL performNameRequest = TRUE; - U8 maxResp = 0; -// U8 CODMajorStr[21]; -// U32 CODMajor; - - TRACE_FUNCTION_P1 ("mfw_btips_bmgSearch TYPE = %d", searchType); - - switch(searchType) - { - case BTIPS_GENERIC_DEVICE_SEARCH: - status = BTL_BMG_SearchByCod(mfwBtipsBmgContext, - BTL_BMG_SEARCH_REGULAR, - BT_IAC_GIAC, - BT_INQ_TIME_GAP100, - MAX_RESPONSES, - 0, - performNameRequest, - SDP_SERVICE_NONE); - break; - case BTIPS_A2DP_DEVICE_SEARCH: - CODFilter.codFilterMask = BTL_BMG_SEARCH_COD_FILTER_SERVICE_CLS|BTL_BMG_SEARCH_COD_FILTER_SERVICE_CLS; - CODFilter.serviceClass = COD_RENDERING|COD_AUDIO; - CODFilter.majorDeviceClass = COD_MAJOR_AUDIO; - status = BTL_BMG_SearchByCod(mfwBtipsBmgContext, - BTL_BMG_SEARCH_REGULAR, - BT_IAC_GIAC, - BT_INQ_TIME_GAP100, - MAX_RESPONSES, - &CODFilter, - performNameRequest, - SDP_SERVICE_NONE); - break; - - case BTIPS_OPP_DEVICE_SEARCH: - CODFilter.codFilterMask = BTL_BMG_SEARCH_COD_FILTER_SERVICE_CLS; - CODFilter.serviceClass = COD_OBJECT_TRANSFER; - status = BTL_BMG_SearchByCod(mfwBtipsBmgContext, - BTL_BMG_SEARCH_REGULAR, - BT_IAC_GIAC, - BT_INQ_TIME_GAP100, - MAX_RESPONSES, - &CODFilter, - performNameRequest, - SDP_SERVICE_NONE); - - break; - case BTIPS_HSHF_DEVICE_SEARCH: - CODFilter.codFilterMask = BTL_BMG_SEARCH_COD_FILTER_MAJOR_DEV_CLS; - CODFilter.majorDeviceClass = COD_MAJOR_AUDIO; - status = BTL_BMG_SearchByCod(mfwBtipsBmgContext, - BTL_BMG_SEARCH_REGULAR, - BT_IAC_GIAC, - BT_INQ_TIME_GAP100, - MAX_RESPONSES, - &CODFilter, - performNameRequest, - SDP_SERVICE_NONE); - break; - - } - - - mfw_BtipsReport(("MFW_BTIPS_BMG :BTL_BMG_SearchByCod returned status: %s", pBT_Status(status))); - return mfw_btips_checkStatus(status); -} - -/*--------------------------------------------------------------------------- - * mfw_btips_bmgGetLocalDeviceName - *--------------------------------------------------------------------------- - * - * Synopsis: Extract the currently set local name - * - * Return: - * - */ -BOOL mfw_btips_bmgGetLocalDeviceName(U8 *name) -{ - BtStatus btStatus; - U8 len = 0; - btStatus = BTL_BMG_GetLocalDeviceName(mfwBtipsBmgContext, name, &len); - return mfw_btips_checkStatus(btStatus); - -} - - -/*--------------------------------------------------------------------------- - * mfw_btips_bmgSetLocalDeviceName - *--------------------------------------------------------------------------- - * - * Synopsis: Set local name (Send a null terminated string) of our device. - * - * Return: TRUE if setting local name is successfull, FALSE otherwise. - * - */ -BOOL mfw_btips_bmgSetLocalDeviceName (U8 *name) -{ - U8 len = 0; - - BtStatus btStatus = BT_STATUS_FAILED; - len = (U8)(OS_StrLen((const char *)(name))); - name[len]=0; - btStatus = BTL_BMG_SetLocalDeviceName(mfwBtipsBmgContext, (U8 *)(name), len+1); - return mfw_btips_checkStatus(btStatus); -} - -/*--------------------------------------------------------------------------- - * mfw_btips_bmgSetPhoneVisibility - *--------------------------------------------------------------------------- - * - * Synopsis: Set Accessibility of the BT device. - * - * Return: . - * - */ -BOOL mfw_btips_bmgSetPhoneVisibility(BOOL status) -{ - BtStatus btStatus; - - BtAccessibleMode modeNC; - //BtAccessModeInfo infoNC; - BtAccessibleMode modeC; - //BtAccessModeInfo infoC; - - TRACE_FUNCTION("mfw_btips_bmgSetPhoneVisibility"); - - btStatus = BTL_BMG_GetAccessibleMode(mfwBtipsBmgContext, - &modeNC, - 0, - &modeC, - 0); - - TRACE_EVENT_P2("BTL_BMG_GetAccessibleMode %d, %d", modeNC, modeC); - - if(TRUE == status) - { - modeNC = BAM_GENERAL_ACCESSIBLE; - modeC = BAM_GENERAL_ACCESSIBLE; - } - else - { - modeNC = BAM_CONNECTABLE_ONLY; - modeC = BAM_CONNECTABLE_ONLY; - } - - btStatus = BTL_BMG_SetAccessibleMode(mfwBtipsBmgContext, - &modeNC, - 0, - &modeC, - 0); - - TRACE_EVENT_P2("BTL_BMG_SetAccessibleMode %d, %d", modeNC, modeC); - - return mfw_btips_checkStatus(btStatus); - -} - -/*--------------------------------------------------------------------------- - * mfw_btips_bmgSetPhoneVisibility - *--------------------------------------------------------------------------- - * - * Synopsis: Set Accessibility of the BT device. - * - * Return: . - * - */ -BOOL mfw_btips_bmgGetPhoneVisibility(void) -{ - BtStatus btStatus; - - BtAccessibleMode modeNC; - - BtAccessibleMode modeC; - - - TRACE_FUNCTION("mfw_btips_bmgSetPhoneVisibility"); - - btStatus = BTL_BMG_GetAccessibleMode(mfwBtipsBmgContext, - &modeNC, - 0, - &modeC, - 0); - - if(modeNC == BAM_GENERAL_ACCESSIBLE) - return TRUE; - - return FALSE; - -} -/*--------------------------------------------------------------------------- - * mfw_btips_bmgDeviceDelete - *--------------------------------------------------------------------------- - * - * Synopsis: Delete a record with the given "bdAddr" from the device database. - * - * Return: . - * - */ -BOOL mfw_btips_bmgDeviceDelete(const BD_ADDR *bdAddr) -{ - BtStatus btStatus; - - btStatus = BTL_BMG_DeleteDeviceRecord(mfwBtipsBmgContext, bdAddr); - mfw_BtipsReport(("BTL_BMG_GetNumberOfDeviceRecords() returned %s.\n", pBT_Status(btStatus))); - return mfw_btips_checkStatus(btStatus); -} - -/*--------------------------------------------------------------------------- - * mfw_btips_bmg_getPairedDevices - *--------------------------------------------------------------------------- - * - * Synopsis: Enumerate the device database. - * - * Return: . - * - */ -BOOL mfw_btips_bmg_getPairedDevices(Bmg_DeviceList *pairedDeviceList, U32 *count) -{ - BtStatus btStatus; - U32 index, numOfDevicesDB; - BtlBmgDeviceRecord deviceRecord; - *count = 0; - - TRACE_FUNCTION ("mfw_btips_bmg_getPairedDevices()"); - - /* Checks if the DB is empty or not*/ - btStatus= BTL_BMG_GetNumberOfDeviceRecords(mfwBtipsBmgContext, &numOfDevicesDB); - mfw_BtipsReport(("BTL_BMG_GetNumberOfDeviceRecords() returned %s.\n", pBT_Status(btStatus))); - if(numOfDevicesDB!=0) - { - /*Current limitation is to have a display of only BT_MAX_DEVICE_LIST devices*/ - for (index=0;index event; - BtStatus btStatus = BT_STATUS_FAILED; - char bdAddr[BDADDR_NTOA_SIZE]; - char *name; - T_BTIPS_MMI_IND btips_mmi_ind; - - TRACE_FUNCTION_P1("btips_bmgCallback: %s", pME_Event(event->eType)); - btips_mmi_ind.mfwBtipsEventType = MFW_BTIPS_BMG_EVENT; - btips_mmi_ind.data.bmgBtEvent.eventType = event->eType; - btips_mmi_ind.data.bmgBtEvent.errCode =event->errCode; - - switch (event->eType) - { - - case BTEVENT_LINK_CONNECT_IND: - btStatus = BTL_BMG_GetRemoteDeviceName(mfwBtipsBmgContext, &event->p.remDev->bdAddr); - break; - case BTEVENT_HCI_INITIALIZED: - btStatus = BTL_BMG_SetLocalDeviceName(mfwBtipsBmgContext, (U8 *)PME_APP_NAME, (U8)(sizeof(PME_APP_NAME))); - mfw_BtipsReport(("MFW_BTIPS_BMG :BTL_BMG_SetLocalDeviceName returned status: %s", pBT_Status(btStatus))); - - btStatus = BTL_BMG_SetDefaultLinkPolicy(mfwBtipsBmgContext, ((BLP_MASTER_SLAVE_SWITCH|BLP_HOLD_MODE|BLP_SNIFF_MODE|BLP_PARK_MODE|BLP_SCATTER_MODE)&(~BLP_MASK)), ((BLP_MASTER_SLAVE_SWITCH|BLP_HOLD_MODE|BLP_SNIFF_MODE|BLP_PARK_MODE|BLP_SCATTER_MODE)&(~BLP_MASK))); - mfw_BtipsReport(("MFW_BTIPS_BMG :BTL_BMG_SetDefaultLinkPolicy returned status: %s", pBT_Status(btStatus))); - - btStatus = BTL_BMG_SetSecurityMode(mfwBtipsBmgContext, BSM_SEC_LEVEL_2); - mfw_BtipsReport(("MFW_BTIPS_BMG :BTL_BMG_SetSecurityMode returned status: %s", pBT_Status(btStatus))); - - btipsNotifyMFW(btips_mmi_ind); - break; - - case BTEVENT_HCI_DEINITIALIZED: - btipsNotifyMFW(btips_mmi_ind); - break; - - - case BTEVENT_HCI_FAILED: - btipsNotifyMFW(&btips_mmi_ind); - break; - - case BTEVENT_PAIRING_COMPLETE: - TRACE_EVENT_P2("Pairing with %s complete. status %s.\n", bdaddr_ntoa( &event->p.remDev->bdAddr, bdAddr), pHC_Status(event->errCode)); - OS_MemCopy((U8*)&btips_mmi_ind.data.bmgBtEvent.bdAddr, (U8*)&event->p.remDev->bdAddr, sizeof(BD_ADDR)); - btipsNotifyMFW(&btips_mmi_ind); - break; - - case BTEVENT_BOND_RESULT: - if (event->errCode != BEC_NO_ERROR) - { - TRACE_EVENT_P2("Bond attempt to %s failed. Reason %s.", bdaddr_ntoa(&event->p.bdAddr, bdAddr), pHC_Status(event->errCode)); - } - else - { - TRACE_EVENT_P1("Bond to %s ended successfully", bdaddr_ntoa(&event->p.bdAddr, bdAddr)); - } - - OS_MemCopy((U8*)&btips_mmi_ind.data.bmgBtEvent.bdAddr, (U8*)&event->p.bdAddr, sizeof(BD_ADDR)); - - btipsNotifyMFW(&btips_mmi_ind); - break; - - case BTEVENT_BOND_CANCELLED: - btipsNotifyMFW(&btips_mmi_ind); - break; - - case BTEVENT_PIN_REQ: - if (event->errCode == BT_STATUS_SUCCESS) - { - T_BTIPS_MMI_IND btipsMmiInd = {0}; - BtlBmgDeviceRecord record; - - - btStatus=BTL_BMG_GetRemoteDeviceName(mfwBtipsBmgContext, &event->p.remDev->bdAddr); - TRACE_EVENT_P1("BTEVENT_PIN_REQ btStatus %d",btStatus); - /* Prompt the user for a PIN code */ - mfw_BtipsReport(("Please Enter PIN Code for %s", bdaddr_ntoa(&event->p.remDev->bdAddr, bdAddr))); - } - else - { - /* Cancel the PIN code request */ - mfw_BtipsReport ((("BMG: Pin code couldn't be displayed because of an error"))); - } - OS_MemCopy((U8*)&btips_mmi_ind.data.bmgBtEvent.bdAddr, (U8*)&event->p.remDev->bdAddr, sizeof(BD_ADDR)); - btipsNotifyMFW(&btips_mmi_ind); - break; - - case BTEVENT_AUTHORIZATION_REQ: - TRACE_EVENT_P1("Authorization request received from %s",bdaddr_ntoa(&event->p.remDev->bdAddr, bdAddr)); - break; - - case BTEVENT_INQUIRY_RESULT: - mfw_BtipsReport(("Inquiry result arrived, BD address: %s", bdaddr_ntoa(&event->p.inqResult.bdAddr, bdAddr))); - break; - - case BTEVENT_SEARCH_COMPLETE: - case BTEVENT_SEARCH_CANCELLED: - TRACE_EVENT_P1("Search %s ", ((event->eType == BTEVENT_SEARCH_COMPLETE) ? ("completed") : ("cancelled"))); - btipsNotifyMFW(&btips_mmi_ind); - break; - - case BTEVENT_INQUIRY_COMPLETE: - case BTEVENT_INQUIRY_CANCELED: - TRACE_EVENT_P1("Inquiry %s ", ((event->eType == BTEVENT_INQUIRY_COMPLETE) ? ("completed") : ("cancelled"))); - //btipsNotifyMFW(&btips_mmi_ind); - break; - - case BTEVENT_NAME_RESULT: - - if (event->errCode == BEC_NO_ERROR) - { - OS_MemCopy((U8*)&btips_mmi_ind.data.bmgBtEvent.bdAddr, (U8*)&event->p.meToken->p.name.bdAddr, sizeof(BD_ADDR)); - if (event->p.meToken->p.name.io.out.len == 0) - { - name = "Unknown"; - strcpy(btips_mmi_ind.data.bmgBtEvent.p.deviceName, bdaddr_ntoa(&event->p.meToken->p.name.bdAddr, bdAddr)); - } - else - { - name = (char *)(event->p.meToken->p.name.io.out.name); - if (name) - { - } - else - { - TRACE_EVENT("BTEVENT_NAME_RESULT Name = NULL"); - } - strcpy(btips_mmi_ind.data.bmgBtEvent.p.deviceName, name); - } - TRACE_EVENT_P2("Received name %s for device %s", name, bdaddr_ntoa(&event->p.meToken->p.name.bdAddr, bdAddr)); - btipsNotifyMFW(&btips_mmi_ind); - } - else - { - /* Record that the name request failed. Next time we'll skip it. */ - mfw_BtipsReport(("BMG: Name request for %s failed, status %s.\n", - bdaddr_ntoa(&event->p.meToken->p.name.bdAddr, bdAddr), - pHC_Status(event->errCode))); - } - break; - case BTEVENT_DISCOVER_SERVICES_RESULT : - btips_mmi_ind.data.bmgBtEvent.p.discoveredServicesMask = event->p.discoveredServices.discoveredServicesMask; - bdaddr_ntoa(&event->p.discoveredServices.bdAddr, bdAddr); - OS_MemCopy((U8*)&btips_mmi_ind.data.bmgBtEvent.bdAddr , (U8*)&event->p.discoveredServices.bdAddr, sizeof(BD_ADDR)); - btips_mmi_ind.data.bmgBtEvent.p.discoveredServicesMask = event->p.discoveredServices.discoveredServicesMask; - TRACE_EVENT_P2("Discover Services %x for %s",event->p.discoveredServices.discoveredServicesMask, bdAddr); - btipsNotifyMFW(&btips_mmi_ind); - break; - default: - break; - } -} - - -/************************************************************************ - BMG in ACI Context Module Start -************************************************************************/ -void mfw_btips_bmgCallback( T_BTIPS_MMI_IND * para) -{ - MfwBtBmgEvent bmgBtEvent = para->data.bmgBtEvent; - - TRACE_FUNCTION_P1("mfw_btips_bmgCallback - %s", pME_Event(bmgBtEvent.eventType)); - - switch(bmgBtEvent.eventType) - { - case BTEVENT_HCI_DEINITIALIZED: - break; - - case BTEVENT_HCI_INITIALIZED: - mfw_btips_bmgSetPhoneVisibility(TRUE); - break; - - case BTEVENT_HCI_FAILED: - mfw_btips_signal(E_BTIPS_POWERON_FAILURE, NULL); - break; - - case BTEVENT_PAIRING_COMPLETE: - mfw_btips_signal(E_BTIPS_BMG_PAIRING_COMPLETE, para); - break; - - case BTEVENT_BOND_RESULT: - mfw_btips_signal(E_BTIPS_BMG_BOND_COMPLETE, para); - break; - - case BTEVENT_BOND_CANCELLED: - mfw_btips_signal(E_BTIPS_BMG_BOND_CANCELLED, NULL); - break; - - case BTEVENT_PIN_REQ: - if (bmgBtEvent.errCode == BT_STATUS_SUCCESS) - { - mfw_btips_signal(E_BTIPS_INCOMING_PIN_REQ, para); - } - break; - - case BTEVENT_NAME_RESULT: - - TRACE_EVENT_P1("Received name for device %s", bmgBtEvent.p.deviceName); - mfw_btips_signal(E_BTIPS_BMG_NAME_RESULT, para); - break; - - case BTEVENT_SEARCH_COMPLETE: - mfw_btips_signal(E_BTIPS_BMG_SEARCH_COMPLETE, NULL); - break; - case BTEVENT_SEARCH_CANCELLED: - mfw_btips_signal(E_BTIPS_BMG_SEARCH_CANCELLED, NULL); - break; - - case BTEVENT_INQUIRY_COMPLETE: - break; - - case BTEVENT_INQUIRY_CANCELED: - break; - case BTEVENT_DISCOVER_SERVICES_RESULT: - TRACE_FUNCTION("mfw_btips_bmgCallback BTEVENT_DISCOVER_SERVICES_RESULT"); - mfw_btips_signal(E_BTIPS_BMG_DEVICE_SERVICES, para); - break; - - default: - break; - } -} -BOOL mfw_btips_bmgDeviceSetConnectPermissionAllow(const BD_ADDR *bdAddr,BOOL permission ) -{ - - BtlBmgDeviceRecord record; - - BtStatus btStatus = BT_STATUS_FAILED; - - TRACE_FUNCTION("mfw_btips_bmgDeviceSetConnectPermissionAllow()"); - - btStatus = BTL_BMG_FindDeviceRecord(mfwBtipsBmgContext, bdAddr, &record); - TRACE_EVENT_P1("BTL_BMG_FindDeviceRecord in mfw_btips_bmgDeviceSetConnectPermissionAllow returned - %d", btStatus); - - if(BT_STATUS_SUCCESS == btStatus) - { - record.trusted = TRUE; - record.trustedPerService= SDP_SERVICE_OPP|SDP_SERVICE_DUN|SDP_SERVICE_FTP|SDP_SERVICE_A2DP|SDP_SERVICE_HFP; //Not sure if this is the way to set the bits in the mask field - - btStatus = BTL_BMG_SetDeviceRecord(mfwBtipsBmgContext, &record); - - TRACE_EVENT_P1("BTL_BMG_SetDeviceRecord in mfw_btips_bmgDeviceSetConnectPermissionAllow returned - %d", btStatus); - } - - return mfw_btips_checkStatus(btStatus); - - - -} - -BOOL mfw_btips_bmgDeviceSetConnectPermissionAsk(const BD_ADDR *bdAddr,BOOL permission) -{ - - BtlBmgDeviceRecord record; - - BtStatus btStatus = BT_STATUS_FAILED; - - TRACE_FUNCTION("mfw_btips_bmgDeviceSetConnectPermissionAsk()"); - - - btStatus = BTL_BMG_FindDeviceRecord(mfwBtipsBmgContext, bdAddr,&record); - - TRACE_EVENT_P1("BTL_BMG_FindDeviceRecord in mfw_btips_bmgDeviceSetConnectPermissionAsk returned - %d", btStatus); - - - if(BT_STATUS_SUCCESS == btStatus) - { - record.trusted = FALSE; - - record.trustedPerService= 0; //Not sure if this is the way to set the bits in the mask field - - btStatus = BTL_BMG_SetDeviceRecord(mfwBtipsBmgContext, &record); - - TRACE_EVENT_P1("BTL_BMG_SetDeviceRecord in mfw_btips_bmgDeviceSetConnectPermissionAsk returned - %d", btStatus); - - } - - return mfw_btips_checkStatus(btStatus); - - -} - - -BOOL mfw_btips_bmgSetRemoteDeviceName( const BD_ADDR *bdAddr, U8 *name) -{ - - BtStatus btStatus = BT_STATUS_FAILED; - - BtlBmgDeviceRecord record; - - TRACE_FUNCTION("mfw_btips_bmgSetRemoteDeviceName()"); - - btStatus = BTL_BMG_FindDeviceRecord(mfwBtipsBmgContext, bdAddr,&record); - - if(BT_STATUS_SUCCESS == btStatus) - { - strcpy(record.name, name); - btStatus = BTL_BMG_SetDeviceRecord(mfwBtipsBmgContext, &record); - } - return mfw_btips_checkStatus(btStatus); -} - - //vamsee -/* Get the Services Supported by the Remote Device*/ -U32 mfw_btips_bmgDeviceGetServices(const BD_ADDR *bdAddr) -{ - - BtlBmgDeviceRecord record; - BtStatus btStatus = BT_STATUS_FAILED; - TRACE_FUNCTION("mfw_btips_bmgDeviceGetServices()"); - btStatus = BTL_BMG_FindDeviceRecord(mfwBtipsBmgContext, bdAddr, &record); - TRACE_EVENT_P1("Record Services %x",record.services); - return record.services; -} - -BOOL mfw_btips_bmg_DiscoverServices(const BD_ADDR *bdAddr, SdpServicesMask sdpServicesMask) -{ - BtStatus btStatus; - - TRACE_EVENT_P1("mfw_btips_bmg_DiscoverServices Discover %x",sdpServicesMask); - - btStatus = BTL_BMG_DiscoverServices(mfwBtipsBmgContext, bdAddr, sdpServicesMask); - return mfw_btips_checkStatus(btStatus); -} - -BOOL mfw_btips_bmgSetDeviceRecord( const BD_ADDR *bdAddr, U32 sdpSericesMask) -{ - - - BtStatus btStatus = BT_STATUS_FAILED; - - BtlBmgDeviceRecord record; - - TRACE_FUNCTION("mfw_btips_bmgSetDeviceRecord()"); - - btStatus = BTL_BMG_FindDeviceRecord(mfwBtipsBmgContext, bdAddr,&record); - - if(BT_STATUS_SUCCESS == btStatus) - { - TRACE_EVENT_P1("mfw_btips_bmgSetDeviceRecord() %x",sdpSericesMask); - - record.services = sdpSericesMask; - - TRACE_EVENT_P1("Record Services %x",record.services); - - btStatus = BTL_BMG_SetDeviceRecord(mfwBtipsBmgContext, &record); - } - return mfw_btips_checkStatus(btStatus); -} - -/************************************************************************ - BMG in ACI Context Module End -************************************************************************/ - - - - -#endif - diff -r e41c934ecd97 -r 83c6933e8f90 src/ui/mfw/mfw_BtipsBmg.h --- a/src/ui/mfw/mfw_BtipsBmg.h Tue Jan 19 05:23:24 2021 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,105 +0,0 @@ -#ifndef DEF_MFW_BTIPS_BMG -#define DEF_MFW_BTIPS_BMG -/* ========================================================= -* 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 MFW - $File: Mfw_BtipsBmg.h - $Revision: 1.0 - $Author: Texas Instruments - $Date: 26/06/07 - -******************************************************************************** - - Description: - - This module provides the BTIPS BMG APPlication functionality. - -******************************************************************************** - $History: Mfw_BtipsBmg.h - - 26/06/07 Sasken original version - - $End - -*******************************************************************************/ - - -#define BT_MAX_DEVICE_LIST 10 -#define MAX_RESPONSES 10 //limit the number of Inquiry responses to 10 - -#include -#include - -typedef struct _Bmg_DeviceList -{ - U8 myIndex; - BD_ADDR bdAddr; - UBYTE name[BT_MAX_REM_DEV_NAME]; -}Bmg_DeviceList; - -typedef struct _Bmg_ConnectedDeviceList -{ - U8 myIndex; - BD_ADDR bdAddr; - UBYTE name[BT_MAX_REM_DEV_NAME]; - U32 ServiceId; -}Bmg_ConnectedDeviceList ; - -typedef enum { - BTIPS_GENERIC_DEVICE_SEARCH=0, - BTIPS_A2DP_DEVICE_SEARCH, - BTIPS_OPP_DEVICE_SEARCH, - BTIPS_HSHF_DEVICE_SEARCH, - BTIPS_DEVICE_SERVICES_SEARCH, - BTIPS_CONNECTED_DEVICES_SEARCH -}BTIPS_SEARCH_TYPES; - -typedef enum{ - - BTIPS_SDP_SERVICE_FTPS=0, - BTIPS_SDP_SERVICE_OPPC, - BTIPS_SDP_SERVICE_OPPS, - BTIPS_SDP_SERVICE_VG, - BTIPS_SDP_SERVICE_A2DP, - BTIPS_MAX_PROFILE_COUNT, - -}BTIPS_SERVICE_TYPES; - -BOOL mfw_btips_bmgDeviceDelete(const BD_ADDR *bdAddr); -BOOL mfw_btips_bmgSetPhoneVisibility(BOOL status); -BOOL mfw_btips_bmgGetPhoneVisibility(void); -BOOL mfw_btips_bmgSendPin (const BD_ADDR *bdAddr, - const U8 *pin, - const U8 len); -BOOL mfw_btips_bmgBond(const BD_ADDR *bdAddr, - const U8 *pin, - const U8 len); - -BOOL mfw_btips_bmgSetLocalDeviceName (U8 *name); -BOOL mfw_btips_bmgGetLocalDeviceName(U8 *name); -BOOL mfw_btips_bmgSetRemoteDeviceName( const BD_ADDR *bdAddr, U8 *name); -BOOL mfw_btips_bmgSetDeviceRecord( const BD_ADDR *bdAddr, U32 sdpSericesMask); -BOOL mfw_btips_bmg_getPairedDevices(Bmg_DeviceList *pairedDeviceList, U32 *count); -BOOL mfw_btips_bmg_getConnectedDevices(Bmg_ConnectedDeviceList *pairedDeviceList, U32 *count); -U32 mfw_btips_bmg_getConnectedDevicesCount(void); -BOOL mfw_btips_bmg_getConnectedDevicesForProfile(U32 profile_num, BD_ADDR *bdAddr,U8 *name, U32 *ServiceId); -BOOL mfw_btips_bmgDeviceSetConnectPermissionAllow(const BD_ADDR *bdAddr,BOOL permission); -BOOL mfw_btips_bmgDeviceSetConnectPermissionAsk(const BD_ADDR *bdAddr,BOOL permission); -U32 mfw_btips_bmgDeviceGetServices(const BD_ADDR *bdAddr); -BOOL mfw_btips_ftpsGetConnectedDevice (BD_ADDR *bdAddr, U8 *name); -BOOL mfw_btips_bmgGetDeviceState (const BD_ADDR *bdAddr, BtRemDevState *state); -BOOL mfw_btips_bmgSetDeviceNameInRecord(const BD_ADDR *bdAddr, UBYTE *name); -BOOL mfw_btips_bmg_DiscoverServices(const BD_ADDR *bdAddr, SdpServicesMask sdpServicesMask); - - -#endif - - diff -r e41c934ecd97 -r 83c6933e8f90 src/ui/mfw/mfw_BtipsFtps.c --- a/src/ui/mfw/mfw_BtipsFtps.c Tue Jan 19 05:23:24 2021 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,539 +0,0 @@ -/* ========================================================= -* 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 MFW - $File: Mfw_Btips.c - $Revision: 1.0 - $Author: Texas Instruments - $Date: 26/06/07 - -******************************************************************************** - - Description: - - This module provides the BTIPS FTP Server APPlication functionality. - -******************************************************************************** - $History: Mfw_BtipsFtps.c - - 26/06/07 Sasken original version - - $End - -*******************************************************************************/ - - - - -/******************************************************************************* - - Include files - -*******************************************************************************/ - -#define ENTITY_MFW -/* includes */ - -#include - -#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 - -#ifdef FF_MMI_BTIPS_APP - -#include "osapi.h" - -/* GPF Includes */ -#include "typedefs.h" -#include "vsi.h" -//#include "../p_btt.h" - -#if BT_STACK == XA_ENABLED -#include -#include -#include -#endif - -#include "btl_common.h" -#include "btl_bmg.h" -#include "debug.h" - -#include "goep.h" -#include "ftp.h" - -/* BTL inclides */ -#include "btl_ftps.h" - -#include "bthal_fs.h" - -#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 "Mfw_Btips.h" -#include "Mfw_BtipsBmg.h" - -/* Internal Global variables for FTP Server*/ -static BtlFtpsContext *ftpsContext = 0; -static BtSecurityLevel securityLevel = BSL_NO_SECURITY; -static BD_ADDR bdAddr; - - -/**************************************************************************** - * - * Internal Function prototypes - * - ***************************************************************************/ -static void btips_ftpsCallBack(const BtlFtpsEvent *event); -#ifdef WIN32 -const char *pBT_Status(I8 Status); -#else -static const char *pBT_Status(I8 Status); -#endif -static const char *GoepOpName(GoepOperation Op); - - -/**************************************************************************** - * - * RAM data - * - ****************************************************************************/ - -#if OBEX_AUTHENTICATION == XA_ENABLED -static char realm[20]; /* OBEX realm */ -static char password[20]; /* OBEX Authentication password */ -static char userId[20]; /* OBEX Authentication userId */ -#endif /* OBEX_AUTHENTICATION == XA_ENABLED */ - -static char rootPath[80]; -static BtlFtpsObjectRequestMask objectRequestMask; -static BOOL accept; -char BTStr[20]; -/*--------------------------------------------------------------------------- - * mfw_btips_ftpsInit - *--------------------------------------------------------------------------- - * - * Synopsis: Create and Enable the FTP Server . - * - * Return: void - * - */ - -void mfw_btips_ftpsInit (void) -{ - BtStatus status; - - OS_StrCpy(realm, "MyRealm"); - OS_StrCpy(password, "MyPassword"); - OS_StrCpy(userId, "MyUserId"); - - OS_StrCpy(rootPath, "/"); - - status = BTL_FTPS_Create ((BtlAppHandle *) 0, btips_ftpsCallBack, - &securityLevel, &ftpsContext); - - Report(("BTL_FTPS_Create() returned %s.",pBT_Status(status))); - - OS_StrCpy (rootPath, BT_DEMO_FOLDER_PATH); - - status = BTL_FTPS_Enable(ftpsContext, 0, rootPath); - - Report(("BTL_FTPS_Enable() returned %s.",pBT_Status(status))); - - status = BTL_FTPS_ConfigObjectRequest ( ftpsContext, - BTL_FTPS_OBJECT_REQUEST_PUSH | - BTL_FTPS_OBJECT_REQUEST_PULL | - BTL_FTPS_OBJECT_REQUEST_DELETE ); - - Report(("BTL_FTPS_ConfigObjectRequest() returned %s.",pBT_Status(status))); - -} - -/*--------------------------------------------------------------------------- - * mfw_btips_ftpsAbort - *--------------------------------------------------------------------------- - * - * Synopsis: Requests the current operation be aborted. - * - * Return: void - * - */ -void mfw_btips_ftpsAbort(void) -{ - BtStatus status; - - status = BTL_FTPS_Abort(ftpsContext, OBRC_CONFLICT); - - Report(("BTL_FTPS_Abort() returned %s.",pBT_Status(status))); - -} - -/*--------------------------------------------------------------------------- - * mfw_btips_ftpsAcceptObjectRequest - *--------------------------------------------------------------------------- - * - * Synopsis: This function must be called after receiving object request from the client, - * in order to accept or reject the request. - * - * Return: BOOL - * - */ -void mfw_btips_ftpsAcceptObjectRequest (BOOL flag) -{ - BtStatus status; - - status = BTL_FTPS_AcceptObjectRequest (ftpsContext, flag); - - Report(("BTL_FTPS_AcceptObjectRequest() returned %s.", pBT_Status(status))); -} - -/*--------------------------------------------------------------------------- - * mfw_btips_ftpsSetSecurityLevel - *--------------------------------------------------------------------------- - * - * Synopsis: Sets security level for the given FTPS context. - * - * Return: TRUE if security level is ON, else FALSE. - * - */ -BOOL mfw_btips_ftpsSetSecurityLevel (void) -{ - BtStatus status; - BtSecurityLevel newSecurityLevel = securityLevel; - - status = BTL_FTPS_SetSecurityLevel (ftpsContext, &newSecurityLevel); - - Report(("BTL_FTPS_SetSecurityLevel() returned %s.", pBT_Status(status))); - - return TRUE; -} - - -#if OBEX_AUTHENTICATION == XA_ENABLED -/*--------------------------------------------------------------------------- - * mfw_btips_ftpsObexAuthenticationResponse - *--------------------------------------------------------------------------- - * - * Synopsis: Responde to OBEX auth. - * - * Return: void - * - */ -BOOL mfw_btips_ftpsObexAuthenticationResponse (void) -{ - BtStatus status; - - status = BTL_FTPS_ObexAuthenticationResponse (ftpsContext, userId, password); - - Report(("BTL_FTPS_ObexAuthenticationResponse() returned %s.",pBT_Status(status))); - - return ((status == BT_STATUS_SUCCESS) ? (TRUE) : (FALSE)); -} -#endif /* OBEX_AUTHENTICATION == XA_ENABLED */ - -BOOL mfw_btips_ftpsGetConnectedDevice (BD_ADDR *bdAddr, U8 *name) -{ - BtStatus status; - - status = BTL_FTPS_GetConnectedDevice (ftpsContext, bdAddr); - - if (status == BT_STATUS_SUCCESS) - { - mfw_btips_bmgGetDeviceName (bdAddr, name); - return TRUE; - } - return FALSE; -} - -void mfw_btips_ftpsDisconnect (void) -{ - BTL_FTPS_Disconnect (ftpsContext); -} - - -/*--------------------------------------------------------------------------- - * btips_ftpsCallBack - *--------------------------------------------------------------------------- - * - * Synopsis: This function processes FTP Events received from BTL, only events requested in BTL_FTPS_ConfigObjectRequest - * will be received - * Return: void - * - */ -static void btips_ftpsCallBack(const BtlFtpsEvent *event) -{ - char addr[BDADDR_NTOA_SIZE]; - T_BTIPS_MMI_IND btips_mmi_ind; - BtlBmgDeviceRecord record; - BtStatus status; - - TRACE_FUNCTION_P1("btips_ftpsCallback %d", event->ftpsEvent->event); - - btips_mmi_ind.mfwBtipsEventType = MFW_BTIPS_FTPS_EVENT; - - - /* First process only events that are not "object" related. */ - switch ( event->ftpsEvent->event) - { - case FTPS_EVENT_TP_CONNECTED: - BTL_FTPS_GetConnectedDevice(ftpsContext, &bdAddr); - TRACE_FUNCTION_P1("FTP Server: Transport Connection is up to %s.", bdaddr_ntoa(&bdAddr, addr)); - break; - - case FTPS_EVENT_TP_DISCONNECTED: - TRACE_FUNCTION(("FTP Server: Transport Connection has been disconnected.")); - break; - -#if OBEX_AUTHENTICATION == XA_ENABLED - - case FTPS_EVENT_AUTH_CHALLENGE: - TRACE_FUNCTION_P1("FTP Server: Received Authenticate Challenge for %s operation.", - GoepOpName(event->ftpsEvent->oper)); -#if OBEX_MAX_REALM_LEN > 0 - Report(("FTP Server: Realm: %s, charset %d , Options %d.", - event->ftpsEvent->info.challenge.realm+1, event->ftpsEvent->info.challenge.realm[0], event->ftpsEvent->info.challenge.options)); -#endif /* OBEX_MAX_REALM_LEN > 0 */ - - mfw_btips_ftpsObexAuthenticationResponse ( ); - break; - -#endif /* OBEX_AUTHENTICATION == XA_ENABLED */ - - case FTPS_EVENT_START: - TRACE_FUNCTION_P1("FTP Server: Receiving a %s operation.", GoepOpName(event->ftpsEvent->oper)); - break; - - case FTPS_EVENT_ABORTED: - TRACE_FUNCTION_P1("FTPServer: %s operation aborted.", GoepOpName(event->ftpsEvent->oper)); - btips_mmi_ind.data.ftpsBtEvent.event = MFW_BTIPS_FTPS_ABORTED_EVENT; - btipsNotifyMFW(&btips_mmi_ind); - break; - - case FTPS_EVENT_COMPLETE: - TRACE_FUNCTION_P1("FTPServer: %s operation complete.", GoepOpName(event->ftpsEvent->oper)); - switch(event->ftpsEvent->oper) - { - case GOEP_OPER_PUSH: - btips_mmi_ind.data.ftpsBtEvent.event = MFW_BTIPS_FTPS_PUT_COMP_EVENT; - break; - case GOEP_OPER_DELETE: - btips_mmi_ind.data.ftpsBtEvent.event = MFW_BTIPS_FTPS_DELETE_COMP_EVENT; - break; - case GOEP_OPER_CONNECT: - btips_mmi_ind.data.ftpsBtEvent.event = MFW_BTIPS_FTPS_CONNECT_EVENT; - break; - case GOEP_OPER_DISCONNECT: - btips_mmi_ind.data.ftpsBtEvent.event = MFW_BTIPS_FTPS_DISCONNECT_EVENT; - break; - } - btipsNotifyMFW(&btips_mmi_ind); - break; - - case FTPS_EVENT_OBJECT_PROGRESS: - Report(("FTPServer: %d percent of progress was complete.", - (event->ftpsEvent->info.progress.currPos/event->ftpsEvent->info.progress.maxPos)*100)); - break; - - case FTPS_EVENT_OBJECT_REQUEST: - Report(("FTP Object request : operation \"%s\".", GoepOpName(event->ftpsEvent->oper))); - Report(("FTP Object request: name \"%s\".", event->ftpsEvent->info.request.name)); - Report(("FTP Object request: length \"%d\".", event->ftpsEvent->info.request.objectLen)); - TRACE_FUNCTION("FTP Please accept or reject!"); - -#if 0 - status = BTL_BMG_DDB_FindRecord (bdAddr, &record); - if (status == BT_STATUS_SUCCESS) - { -#endif - if (event->ftpsEvent->oper == GOEP_OPER_PUSH) - { - btips_mmi_ind.data.ftpsBtEvent.event = MFW_BTIPS_FTPS_PUT_EVENT; - strcpy (btips_mmi_ind.data.ftpsBtEvent.p.ftpPutRequest.objectName, event->ftpsEvent->info.request.name); -// strcpy (btips_mmi_ind.data.ftpsBtEvent.p.ftpPutRequest.deviceName, record.name); -// btips_mmi_ind.data.ftpsBtEvent.p.ftpPutRequest.bdAddr = bdAddr; - mfw_btips_ftpsGetConnectedDevice (&(btips_mmi_ind.data.ftpsBtEvent.p.ftpPutRequest.bdAddr), btips_mmi_ind.data.ftpsBtEvent.p.ftpPutRequest.deviceName); - } - else if (event->ftpsEvent->oper == GOEP_OPER_PULL) - { - btips_mmi_ind.data.ftpsBtEvent.event = MFW_BTIPS_FTPS_GET_EVENT; - strcpy (btips_mmi_ind.data.ftpsBtEvent.p.ftpGetRequest.objectName, event->ftpsEvent->info.request.name); -// strcpy (btips_mmi_ind.data.ftpsBtEvent.p.ftpGetRequest.deviceName, record.name); -// btips_mmi_ind.data.ftpsBtEvent.p.ftpGetRequest.bdAddr = bdAddr; - mfw_btips_ftpsGetConnectedDevice (&(btips_mmi_ind.data.ftpsBtEvent.p.ftpGetRequest.bdAddr), btips_mmi_ind.data.ftpsBtEvent.p.ftpGetRequest.deviceName); - } - else if (event->ftpsEvent->oper == GOEP_OPER_DELETE) - { - btips_mmi_ind.data.ftpsBtEvent.event = MFW_BTIPS_FTPS_DELETE_EVENT; - strcpy (btips_mmi_ind.data.ftpsBtEvent.p.ftpDeleteRequest.objectName, event->ftpsEvent->info.request.name); -#if 0 - strcpy (btips_mmi_ind.data.ftpsBtEvent.p.ftpDeleteRequest.deviceName, record.name); - btips_mmi_ind.data.ftpsBtEvent.p.ftpDeleteRequest.bdAddr = bdAddr; -#endif - mfw_btips_ftpsGetConnectedDevice (&(btips_mmi_ind.data.ftpsBtEvent.p.ftpDeleteRequest.bdAddr), btips_mmi_ind.data.ftpsBtEvent.p.ftpDeleteRequest.deviceName); - } - else - { - break; - } - - btipsNotifyMFW(&btips_mmi_ind); -#if 0 - } -#endif - break; - } -} - -void mfw_btips_ftpsCallback(T_BTIPS_MMI_IND * mmiInd) -{ - MfwBtFtpsEvent ftpsBtEvent = mmiInd->data.ftpsBtEvent; - - TRACE_FUNCTION_P1("mfw_btips_ftpsCallback Event = %x", ftpsBtEvent.event); - switch(ftpsBtEvent.event) - { - case MFW_BTIPS_FTPS_PUT_EVENT: - mfw_btips_signal(E_BTIPS_FTPS_PUT_EVENT, mmiInd); - break; - - case MFW_BTIPS_FTPS_GET_EVENT: - mfw_btips_signal(E_BTIPS_FTPS_GET_EVENT, mmiInd); - break; - - case MFW_BTIPS_FTPS_DELETE_EVENT: - mfw_btips_signal(E_BTIPS_FTPS_DELETE_EVENT, mmiInd); - break; - - case MFW_BTIPS_FTPS_COMPLETE_EVENT: - mfw_btips_signal(E_BTIPS_FTPS_COMPLETE_EVENT,mmiInd); - break; - - case MFW_BTIPS_FTPS_ABORTED_EVENT: - mfw_btips_signal(E_BTIPS_FTPS_ABORTED_EVENT,mmiInd); - break; - - case MFW_BTIPS_FTPS_CONNECT_EVENT: - mfw_btips_signal(E_BTIPS_FTPS_CONNECT_EVENT,mmiInd); - break; - - case MFW_BTIPS_FTPS_DISCONNECT_EVENT: - mfw_btips_signal(E_BTIPS_FTPS_DISCONNECT_EVENT,mmiInd); - break; - - case MFW_BTIPS_FTPS_PUT_COMP_EVENT: - mfw_btips_signal(E_BTIPS_FTPS_PUT_COMP_EVENT,mmiInd); - break; - - case MFW_BTIPS_FTPS_DELETE_COMP_EVENT: - mfw_btips_signal(E_BTIPS_FTPS_DELETE_COMP_EVENT,mmiInd); - break; - - } -} - -/*--------------------------------------------------------------------------- - * GoepOpName - *--------------------------------------------------------------------------- - * - * Synopsis: Return a pointer to the name of the current server operation. - * - * Return: ASCII String pointer. - * - */ -static const char *GoepOpName(GoepOperation Op) -{ - switch (Op) { - case GOEP_OPER_PUSH: - return "Push"; - case GOEP_OPER_PULL: - return "Pull"; - case GOEP_OPER_CONNECT: - return "Connect"; - case GOEP_OPER_DISCONNECT: - return "Disconnect"; - case GOEP_OPER_SETFOLDER: - return "Set Folder"; - case GOEP_OPER_DELETE: - return "Delete"; - case GOEP_OPER_ABORT: - return "Abort"; - } - return "Unknown"; -} - -/*--------------------------------------------------------------------------- - * General Purpose Debug functions - *--------------------------------------------------------------------------- - */ -const char *pBT_Status(I8 Status) -{ - switch (Status) { - case BT_STATUS_SUCCESS: - return ("Success"); - case BT_STATUS_FAILED: - return ("Failed"); - case BT_STATUS_PENDING: - return ("Pending"); - case BT_STATUS_BUSY: - return ("Busy"); - case BT_STATUS_NO_RESOURCES: - return ("No Resources"); - case BT_STATUS_NOT_FOUND: - return ("Not Found"); - case BT_STATUS_DEVICE_NOT_FOUND: - return ("Device Not Found"); - case BT_STATUS_CONNECTION_FAILED: - return ("Connection Failed"); - case BT_STATUS_TIMEOUT: - return ("Timeout"); - case BT_STATUS_NO_CONNECTION: - return ("No Connection"); - case BT_STATUS_INVALID_PARM: - return ("Invalid parameter"); - case BT_STATUS_IN_PROGRESS: - return ("In Progress"); - case BT_STATUS_RESTRICTED: - return ("Restricted"); - case BT_STATUS_INVALID_TYPE: - return ("Invalid Type"); - case BT_STATUS_HCI_INIT_ERR: - return ("HCI Initialization Error"); - case BT_STATUS_NOT_SUPPORTED: - return ("Not Supported"); - case BT_STATUS_IN_USE: - return ("In Use"); - case BT_STATUS_SDP_CONT_STATE: - return ("SDP Continue"); - case BT_STATUS_CANCELLED: - return ("Cancelled"); - } - return ("UNKNOWN"); -} - -#endif - diff -r e41c934ecd97 -r 83c6933e8f90 src/ui/mfw/mfw_BtipsMdg.c --- a/src/ui/mfw/mfw_BtipsMdg.c Tue Jan 19 05:23:24 2021 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,857 +0,0 @@ -/* ========================================================= -* 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 MFW - $File: Mfw_Btips.c - $Revision: 1.0 - $Author: Texas Instruments - $Date: 26/06/07 - -******************************************************************************** - - Description: - - This module provides the BTIPS BMG APPlication functionality. - -******************************************************************************** - $History: Mfw_Btips.c - - 26/06/07 Sasken original version - - $End - -*******************************************************************************/ - - - - -/******************************************************************************* - - Include files - -*******************************************************************************/ - -#define ENTITY_MFW -/* includes */ - -#include - -#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" - -#include "bttypes.h" -#include "sec.h" -#include "spp.h" -#include "osapi.h" -#include "debug.h" -#include "btl_mdg.h" - -#endif - -#ifdef FF_MMI_BTIPS_APP - -/* Macro for sending events to UI - meanwhile, trace message to PCO Viewer */ -extern int vsi_o_state_ttrace ( const char * const format, ... ); -#define UI_DISPLAY(s) vsi_o_state_ttrace s - -#include "bttypes.h" -#include "sec.h" -#include "spp.h" -#include "osapi.h" -#include "debug.h" -//#include "../lineparser.h" -#include "btl_mdg.h" -//#include "../app_main.h" - - -/******************************************************************************** - * - * Constants - * - *******************************************************************************/ - -/* MDG Application states */ -#define MDGA_SERVER_STATE_NONE (0) -#define MDGA_SERVER_STATE_ENABLED (1) -#define MDGA_SERVER_STATE_DISABLING (2) -#define MDGA_SERVER_STATE_DT_CONNECTED (3) -#define MDGA_SERVER_STATE_MODEM_CONNECTED (4) -#define MDGA_SERVER_STATE_CONNECTED (5) - -/* Security level of the MDG Application */ -#define MDGA_SECURITY_LEVEL (BSL_AUTHENTICATION_IN | BSL_AUTHENTICATION_OUT) - -/* Max number of Rx Sync packets - this value will be given to peer serial port - * as amount of credits for RFCOMM credit based flow control */ -#define MDGA_MAX_NUM_OF_RX_SYNC_PACKETS (5) - - -/******************************************************************************** - * - * Types - * - *******************************************************************************/ - -/* Structure to keep track of server information */ -typedef struct -{ - U8 state; - const BtSecurityLevel securityLevel; - BtlMdgServerContext *serverContext; - BtlMdgServerSettings serverSettings; - SppLineStatus lineStatus; -} MdgaServer; - - -/******************************************************************************** - * - * Function prototypes - * - *******************************************************************************/ -void mfw_btips_mdgInit(void); -void MDGA_Deinit(void); -void MDGA_Enable(U8 serverIndex); -void MDGA_Disable(U8 serverIndex); -void MDGA_GetSecurityLevel(U8 serverIndex); -void MDGA_SetSecurityLevel(U8 serverIndex, BtSecurityLevel *securityLevel); -void MDGA_GetComSettings(U8 serverIndex); -void MDGA_SetComSettings(U8 serverIndex, SppComSettings *comSettings); -void MDGA_GetConnectedDevice(U8 serverIndex); -void MDGA_TerminateDataCall(void); - -void mfw_btips_mdgCallback(const BtlMdgCallbackParms *parms); -static const char *MdgaEventName(BtlMdgServerEvent mdgEvent); -static const char *MdgaStateName(int state); - - -/******************************************************************************** - * - * Globals - * - *******************************************************************************/ - -static MdgaServer mdgaServers[] = -{ - { - MDGA_SERVER_STATE_NONE, MDGA_SECURITY_LEVEL, NULL, - {BTL_SPP_SERVICE_TYPE_DUN, - "BTIPS DUN", - {SPP_SERVER_PORT, - BTL_SPP_SERVICE_TYPE_DUN, - SPP_PORT_DATA_PATH_TX_SYNC | SPP_PORT_DATA_PATH_RX_ASYNC, - MDGA_MAX_NUM_OF_RX_SYNC_PACKETS, - {SPP_COM_SETTING_BAUDRATE_DEFAULT, - SPP_COM_SETTING_DATA_FORMAT_DEFAULT, - SPP_COM_SETTING_FLOW_CONTROL_DEFAULT, - SPP_COM_SETTING_XON_CHAR_DEFAULT, - SPP_COM_SETTING_XOFF_CHAR_DEFAULT, - 0 - } - }, - }, - 0 - } -}; - -#define MDGA_NUM_SERVERS (sizeof(mdgaServers) / sizeof(MdgaServer)) - - -/******************************************************************************** - * - * Function definitions - * - *******************************************************************************/ - - /*------------------------------------------------------------------------------- - * mfw_btips_mdgInit() - * - * Initialize application module. - * - * Type: - * Synchronous. - * - * Parameters: - * None. - * - * Returns: - * None. - */ -void mfw_btips_mdgInit() -{ - BtStatus status; - U32 idx; - MdgaServer *server = &mdgaServers[0]; - - Report(("mfw_btips_mdgInit")); - - /* Create and enable all MDG servers */ - for (idx=0; idxsecurityLevel, - &server->serverContext); - if (BT_STATUS_SUCCESS != status) - { - Report(("MDGA: BTL_MDG_Create() failed for server %s, status %s", - server->serverSettings.serviceName, - pBT_Status(status))); - } - else - { - /* Enable MDG server */ - status = BTL_MDG_Enable(server->serverContext, - &server->serverSettings); - - if (BT_STATUS_SUCCESS != status) - { - Report(("MDGA: BTL_MDG_Enable() failed for server %s, status %s", - server->serverSettings.serviceName, - pBT_Status(status))); - } - else - { - server->state = MDGA_SERVER_STATE_ENABLED; - } - } - } -} - -/*------------------------------------------------------------------------------- - * MDGA_Deinit() - * - * Deinitialize application module. - * - * Type: - * Synchronous. - * - * Parameters: - * None. - * - * Returns: - * None. - */ -void MDGA_Deinit() -{ - BtStatus status; - U32 idx; - MdgaServer *server = &mdgaServers[0]; - - Report(("MDGA_Deinit")); - - /* Disable and destroy all MDG servers */ - for (idx=0; idxstate >= MDGA_SERVER_STATE_ENABLED) && - (MDGA_SERVER_STATE_DISABLING != server->state)) - { - /* Disable MDG server */ - status = BTL_MDG_Disable(server->serverContext); - - if (BT_STATUS_SUCCESS == status) - { - /* Destroy MDG server */ - status = BTL_MDG_Destroy(&server->serverContext); - - if (BT_STATUS_SUCCESS != status) - { - Report(("MDGA: BTL_MDG_Destroy() failed for server %s, status %s", - server->serverSettings.serviceName, - pBT_Status(status))); - } - else - { - server->state = MDGA_SERVER_STATE_NONE; - } - } - else if ((BT_STATUS_PENDING == status) || (BT_STATUS_IN_PROGRESS == status)) - { - /* Continue disabling server in mfw_btips_mdgCallback() */ - server->state = MDGA_SERVER_STATE_DISABLING; - } - else - { - Report(("MDGA: BTL_MDG_Disable() failed, status %s", pBT_Status(status))); - } - } - } -} - -/*------------------------------------------------------------------------------- - * MDGA_Enable() - * - * Processes command 'enable'. - * - * Type: - * Synchronous. - * - * Parameters: - * serverIndex - index of the server. - * - * Returns: - * None. - */ -void MDGA_Enable(U8 serverIndex) -{ - BtStatus status; - MdgaServer *server; - - server = &mdgaServers[serverIndex]; - - /* Check validity of the command */ - if (server->state >= MDGA_SERVER_STATE_ENABLED) - { - Report(("MDGA: server %s is already enabled", - server->serverSettings.serviceName)); - return; - } - - /* Create MDG server */ - status = BTL_MDG_Create(0, - mfw_btips_mdgCallback, - &server->securityLevel, - &server->serverContext); - if (BT_STATUS_SUCCESS != status) - { - Report(("MDGA: BTL_MDG_Create() failed, status %s", - pBT_Status(status))); - } - else - { - /* Enable MDG server */ - status = BTL_MDG_Enable(server->serverContext, - &server->serverSettings); - - if (BT_STATUS_SUCCESS != status) - { - Report(("MDGA: BTL_MDG_Enable() failed, status %s", - pBT_Status(status))); - } - else - { - server->state = MDGA_SERVER_STATE_ENABLED; - UI_DISPLAY(("MDGA: server %s enabled", - server->serverSettings.serviceName)); - } - } - - return; -} - -/*------------------------------------------------------------------------------- - * MDGA_Disable() - * - * Processes command 'enable'. - * - * Type: - * Synchronous. - * - * Parameters: - * serverIndex - index of the server. - * - * Returns: - * None. - */ -void MDGA_Disable(U8 serverIndex) -{ - BtStatus status; - MdgaServer *server = &mdgaServers[serverIndex]; - - /* Check validity of the command */ - if (server->state < MDGA_SERVER_STATE_ENABLED) - { - Report(("MDGA: server %s is not enabled", - server->serverSettings.serviceName)); - return; - } - - /* Disable MDG server */ - status = BTL_MDG_Disable(server->serverContext); - - if (BT_STATUS_SUCCESS == status) - { - /* Destroy MDG server */ - status = BTL_MDG_Destroy(&server->serverContext); - - if (BT_STATUS_SUCCESS != status) - { - Report(("MDGA: BTL_MDG_Destroy() failed, status %s", - pBT_Status(status))); - } - else - { - server->state = MDGA_SERVER_STATE_NONE; - UI_DISPLAY(("MDGA: server %s disabled", - server->serverSettings.serviceName)); - } - } - else if ((BT_STATUS_PENDING == status) || (BT_STATUS_IN_PROGRESS == status)) - { - /* Continue disabling server in mfw_btips_mdgCallback() */ - server->state = MDGA_SERVER_STATE_DISABLING; - UI_DISPLAY(("MDGA: disabling server %s", - server->serverSettings.serviceName)); - } - else - { - Report(("MDGA: BTL_MDG_Disable() failed, status %s", pBT_Status(status))); - } - - return; -} - -/*------------------------------------------------------------------------------- - * MDGA_GetSecurityLevel() - * - * Processes command 'getsec'. - * - * Type: - * Synchronous. - * - * Parameters: - * serverIndex - index of the server. - * - * Returns: - * None. - */ -void MDGA_GetSecurityLevel(U8 serverIndex) -{ - BtStatus status; - BtSecurityLevel securityLevel; - MdgaServer *server = &mdgaServers[serverIndex]; - - status = BTL_MDG_GetSecurityLevel(server->serverContext, &securityLevel); - - if (BT_STATUS_SUCCESS == status) - { - UI_DISPLAY(("UI_EVENT: MDGA got security level %d for server %s", - securityLevel, - server->serverSettings.serviceName)); - } - else - { - Report(("MDGA: BTL_MDG_GetSecurityLevel() failed for server %s, status %s", - server->serverSettings.serviceName, - pBT_Status(status))); - } - - return; -} - -/*------------------------------------------------------------------------------- - * MDGA_SetSecurityLevel() - * - * Processes command 'setsec'. - * - * Type: - * Synchronous. - * - * Parameters: - * serverIndex - index of the server. - * - * Returns: - * None. - */ -void MDGA_SetSecurityLevel(U8 serverIndex, BtSecurityLevel *securityLevel) -{ - BtStatus status; - MdgaServer *server = &mdgaServers[serverIndex]; - - status = BTL_MDG_SetSecurityLevel(server->serverContext, securityLevel); - - if (BT_STATUS_SUCCESS == status) - { - UI_DISPLAY(("UI_EVENT: MDGA set security level %d for server %s", - *securityLevel, - server->serverSettings.serviceName)); - } - else - { - Report(("MDGA: BTL_MDG_SetSecurityLevel() failed for server %s, status %s", - server->serverSettings.serviceName, - pBT_Status(status))); - } - - return; -} - -/*------------------------------------------------------------------------------- - * MDGA_GetComSettings() - * - * Processes command 'getcomset'. - * - * Type: - * Synchronous. - * - * Parameters: - * serverIndex - index of the server. - * - * Returns: - * None. - */ -void MDGA_GetComSettings(U8 serverIndex) -{ - BtStatus status; - SppComSettings comSettings; - MdgaServer *server = &mdgaServers[serverIndex]; - - status = BTL_MDG_GetComSettings(server->serverContext, &comSettings); - - if (BT_STATUS_SUCCESS == status) - { - UI_DISPLAY(("UI_EVENT: MDGA got com settings for server %s -", server->serverSettings.serviceName)); - UI_DISPLAY(("UI_EVENT: MDGA baudrate 0x%02x, data format 0x%02x, flow control 0x%02x, XON 0x%02x, XOFF 0x%02x", - comSettings.baudRate, - comSettings.dataFormat, - comSettings.flowControl, - comSettings.xonChar, - comSettings.xoffChar)); - } - else - { - Report(("MDGA: BTL_MDG_GetComSettings() failed for server %s, status %s", - server->serverSettings.serviceName, - pBT_Status(status))); - } - - return; -} - -/*------------------------------------------------------------------------------- - * MDGA_SetComSettings() - * - * Processes command 'setcomset'. - * - * Type: - * Synchronous. - * - * Parameters: - * serverIndex - index of the server. - * - * Returns: - * None. - */ -void MDGA_SetComSettings(U8 serverIndex, SppComSettings *comSettings) -{ - BtStatus status; - MdgaServer *server = &mdgaServers[serverIndex]; - - status = BTL_MDG_SetComSettings(server->serverContext, comSettings); - - if (BT_STATUS_SUCCESS == status) - { - UI_DISPLAY(("UI_EVENT: MDGA set com settings for server %s -", server->serverSettings.serviceName)); - UI_DISPLAY(("UI_EVENT: MDGA baudrate 0x%02x, data format 0x%02x, flow control 0x%02x, XON 0x%02x, XOFF 0x%02x, parm mask 0x%04x", - comSettings->baudRate, - comSettings->dataFormat, - comSettings->flowControl, - comSettings->xonChar, - comSettings->xoffChar, - comSettings->parmMask)); - } - else if ((BT_STATUS_PENDING != status) && (BT_STATUS_IN_PROGRESS != status)) - { - Report(("MDGA: BTL_MDG_GetComSettings() failed for server %s, status %s", - server->serverSettings.serviceName, - pBT_Status(status))); - } - - return; -} - -/*------------------------------------------------------------------------------- - * MDGA_GetConnectedDevice() - * - * Processes command 'getcondev'. - * - * Type: - * Synchronous. - * - * Parameters: - * serverIndex - index of the server. - * - * Returns: - * None. - */ -void MDGA_GetConnectedDevice(U8 serverIndex) -{ - BtStatus status; - BD_ADDR bdAddr; - char addr[BDADDR_NTOA_SIZE]; - MdgaServer *server = &mdgaServers[serverIndex]; - - status = BTL_MDG_GetConnectedDevice(server->serverContext, &bdAddr); - - if (BT_STATUS_SUCCESS == status) - { - UI_DISPLAY(("UI_EVENT: MDGA server %s is connected to %s", - server->serverSettings.serviceName, - bdaddr_ntoa((const BD_ADDR *)&bdAddr, addr))); - } - else - { - Report(("MDGA: MdgaGetConnectedDevice() failed for server %s, status %s", - server->serverSettings.serviceName, - pBT_Status(status))); - } - - return; -} - -/*------------------------------------------------------------------------------- - * MDGA_TerminateDataCall() - * - * Processes command 'termdatacall'. - * - * Type: - * Synchronous. - * - * Parameters: - * None. - * - * Returns: - * None. - */ -void MDGA_TerminateDataCall() -{ - return; -} - -/*------------------------------------------------------------------------------- - * mfw_btips_mdgCallback() - * - * Callback function for receiving BTL MDG events. - * - * Type: - * Synchronous. - * - * Parameters: - * parms - received event. - * - * Returns: - * None. - */ - -void mfw_btips_mdgCallback(const BtlMdgCallbackParms *parms) -{ - BtStatus status; - MdgaServer *server; - int idx; - - TRACE_EVENT_P1("mfw_btips_mdgCallback - %d", parms->event); - /* Find a server according to given BTL MDG context */ - for (idx = 0, server=&mdgaServers[0]; idxserverContext == parms->serverContext) - { - break; - } - } - - /* Check whether we found a port in array of clients */ - if (MDGA_NUM_SERVERS == idx) - { - - /* Server is not found */ - Report(("MDGA: server's context is unknown")); - return; - } - - /* Display received event and server's service name */ - UI_DISPLAY(("UI_EVENT: MDGA received event %s for server %s", - MdgaEventName(parms->event), - server->serverSettings.serviceName)); - - /* Change port's state according to event */ - switch(parms->event) - { - case BTL_MDG_SERVER_EVENT_ENABLED: - server->state = MDGA_SERVER_STATE_ENABLED; - break; - - case BTL_MDG_SERVER_EVENT_DISABLED: - if (MDGA_SERVER_STATE_DISABLING == server->state) - { - /* Destroy MDG server */ - status = BTL_MDG_Destroy(&server->serverContext); - - if (BT_STATUS_SUCCESS != status) - { - Report(("MDGA: BTL_MDG_Destroy() failed, status %s", - pBT_Status(status))); - } - else - { - server->state = MDGA_SERVER_STATE_NONE; - UI_DISPLAY(("MDGA: server %s disabled", - server->serverSettings.serviceName)); - } - } - break; - - case BTL_MDG_SERVER_EVENT_DT_CONNECTED: - if (MDGA_SERVER_STATE_MODEM_CONNECTED == server->state) - { - server->state = MDGA_SERVER_STATE_CONNECTED; - } - else - { - server->state = MDGA_SERVER_STATE_DT_CONNECTED; - } - break; - - case BTL_MDG_SERVER_EVENT_DT_DISCONNECTED: - if (MDGA_SERVER_STATE_CONNECTED == server->state) - { - server->state = MDGA_SERVER_STATE_MODEM_CONNECTED; - } - else if (MDGA_SERVER_STATE_DISABLING != server->state) - { - server->state = MDGA_SERVER_STATE_ENABLED; - } - break; - - case BTL_MDG_SERVER_EVENT_MODEM_CONNECTED: - if (MDGA_SERVER_STATE_DT_CONNECTED == server->state) - { - server->state = MDGA_SERVER_STATE_CONNECTED; - } - else - { - server->state = MDGA_SERVER_STATE_DT_CONNECTED; - } - break; - - case BTL_MDG_SERVER_EVENT_MODEM_DISCONNECTED: - if (MDGA_SERVER_STATE_CONNECTED == server->state) - { - server->state = MDGA_SERVER_STATE_DT_CONNECTED; - } - else if (MDGA_SERVER_STATE_DISABLING != server->state) - { - server->state = MDGA_SERVER_STATE_ENABLED; - } - break; - - default: - break; - } - - /* Display server's new state */ - Report(("MDGA: %s server's state %s", - server->serverSettings.serviceName, - MdgaStateName(server->state))); -} - -/*------------------------------------------------------------------------------- - * MdgaEventName() - * - * Gets event's name. - * - * Type: - * Synchronous. - * - * Parameters: - * mdgEvent - event. - * - * Returns: - * String with event's name. - */ -static const char *MdgaEventName(BtlMdgServerEvent mdgEvent) -{ - switch (mdgEvent) - { - case BTL_MDG_SERVER_EVENT_INITIALIZED: - return "BTL_MDG_SERVER_EVENT_INITIALIZED"; - - case BTL_MDG_SERVER_EVENT_DEINITIALIZED: - return "BTL_MDG_SERVER_EVENT_DEINITIALIZED"; - - case BTL_MDG_SERVER_EVENT_ENABLED: - return "BTL_MDG_SERVER_EVENT_ENABLED"; - - case BTL_MDG_SERVER_EVENT_DISABLED: - return "BTL_MDG_SERVER_EVENT_DISABLED"; - - case BTL_MDG_SERVER_EVENT_DT_CONNECTED: - return "BTL_MDG_SERVER_EVENT_DT_CONNECTED"; - - case BTL_MDG_SERVER_EVENT_DT_DISCONNECTED: - return "BTL_MDG_SERVER_EVENT_DT_DISCONNECTED"; - - case BTL_MDG_SERVER_EVENT_MODEM_CONNECTED: - return "BTL_MDG_SERVER_EVENT_MODEM_CONNECTED"; - - case BTL_MDG_SERVER_EVENT_MODEM_DISCONNECTED: - return "BTL_MDG_SERVER_EVENT_MODEM_DISCONNECTED"; - - default: - return "MDGA: server received unknown event"; - } -} - -/*------------------------------------------------------------------------------- - * MdgaStateName() - * - * Gets state's name. - * - * Type: - * Synchronous. - * - * Parameters: - * state - server's state. - * - * Returns: - * String with state's name. - */ -static const char *MdgaStateName(int state) -{ - switch (state) - { - case MDGA_SERVER_STATE_NONE: - return "MDGA_SERVER_STATE_NONE"; - - case MDGA_SERVER_STATE_ENABLED: - return "MDGA_SERVER_STATE_ENABLED"; - - case MDGA_SERVER_STATE_DISABLING: - return "MDGA_SERVER_STATE_DISABLING"; - - case MDGA_SERVER_STATE_DT_CONNECTED: - return "MDGA_SERVER_STATE_DT_CONNECTED"; - - case MDGA_SERVER_STATE_MODEM_CONNECTED: - return "MDGA_SERVER_STATE_MODEM_CONNECTED"; - - case MDGA_SERVER_STATE_CONNECTED: - return "MDGA_SERVER_STATE_CONNECTED"; - - default: - return "MDG server unknown state"; - } -} - -#endif - diff -r e41c934ecd97 -r 83c6933e8f90 src/ui/mfw/mfw_BtipsOppc.c --- a/src/ui/mfw/mfw_BtipsOppc.c Tue Jan 19 05:23:24 2021 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1001 +0,0 @@ -/* ========================================================= -* 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 MFW - $File: Mfw_BtipsOppc.c - $Revision: 1.0 - $Author: Texas Instruments - $Date: 26/06/07 - -******************************************************************************** - - Description: - - This module provides the OPP Client APPlication functionality. - -******************************************************************************** - $History: Mfw_BtipsOppc.c - - 26/06/07 Sasken original version - - $End - -*******************************************************************************/ - - - - -/******************************************************************************* - - Include files - -*******************************************************************************/ - -#define ENTITY_MFW -/* includes */ - -#include - -#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 - -#ifdef FF_MMI_BTIPS_APP -#include "osapi.h" -#include "btl_common.h" -#include "debug.h" - -//#include "../app_main.h" -#include "btl_oppc.h" -#include "btl_config.h" -#include "bthal_fs.h" -//#include "../../btl/inc/int/obstore.h" -#include "obstore.h" - -#include "mfw_BtipsOppc.h" -#include "Mfw_mfw.h" -#include "mfw_Btips.h" -#include "mfw_ffs.h" - -extern int oppc_files_count; -//Array to load fileNames in content directory -extern char* oppc_file_names[OPPC_MAX_FILES]; - -/* Macro for sending events to UI - meanwhile, trace message to PCO Viewer */ -extern int vsi_o_state_ttrace ( const char * const format, ... ); -#define UI_DISPLAY(s) vsi_o_state_ttrace s - -/******************************************************************************** - * - * Constants - * - *******************************************************************************/ - - -/******************************************************************************* - * - * Macro definitions - * - ******************************************************************************/ -#define OPPCA_BUFF_MAX (1 * 512) - -#define BTL_CONFIG_OPP_MAX_FILE_NAME_LEN min(GOEP_MAX_UNICODE_LEN/2-2, BTHAL_FS_MAX_FILE_NAME_LENGTH) - - -#define OPPCA_CHECK_FS_NAME_LEN(fsPath) \ - (OS_StrLen(fsPath) < (BTL_CONFIG_OPP_MAX_FILE_NAME_LEN + BTHAL_FS_MAX_PATH_LENGTH + 1)) - - - - - -/******************************************************************************* - * - * OPPC External Function prototypes - * - ******************************************************************************/ - -void mfw_btips_oppcInit(void); -void mfw_btips_oppcDeinit(void); - -void mfw_btips_oppcEncapsulatePush(const char *fsPushPath, BD_ADDR *bd_addr); -void mfw_btips_oppcEncapsulatePull(const char *fsPullPath, BD_ADDR *bd_addr); -void mfw_btips_oppcEncapsulateExchange(const char *fsPushPath, const char *fsPullPath, BD_ADDR *bd_addr); - - - - - - - -/*------------------------------------------------------------------------------- - * OppcaCurrOperation type - * - * Defines the OPPCA current operation. - */ -typedef U8 OppcaCurrOperation; - -#define OPPCA_OPER_NONE 0x00 -#define OPPCA_OPER_BASIC_PULL 0x01 /* Pull */ -#define OPPCA_OPER_BASIC_PUSH 0x02 /* Push */ -#define OPPCA_OPER_BASIC_EXCHANGE 0x03 /* Push-Pull */ -#define OPPCA_OPER_ENC_PULL 0x04 /* Connect-Pull-Disconnect */ -#define OPPCA_OPER_ENC_PUSH 0x05 /* Connect-Push-Disconnect */ -#define OPPCA_OPER_ENC_EXCHANGE 0x06 /* Connect-Push-Pull-Disconnect */ - - -/*------------------------------------------------------------------------------- - * OppcaState type - * - * Defines the OPPCA current state. - */ -typedef U8 OppcaState; - -#define OPPCA_IDLE 0x00 /* OBEX and Transport disconnected */ -#define OPPCA_CONNECTING 0x01 /* OBEX connecting */ -#define OPPCA_TP_CONNECTED 0x02 /* Transport connected */ -#define OPPCA_CONNECTED 0x03 /* OBEX connected */ -#define OPPCA_DISCONNECTING 0x04 /* OBEX disconnecting */ -#define OPPCA_TP_DISCONNECTING 0x05 /* Transport disconnecting */ -#define OPPCA_DISABLING 0x06 /* OBEX and Transport disabling */ - - -typedef struct _OppcaData -{ - OppcaState state; - - BOOL isConnected; - - BOOL operationOngoing; - - BtSecurityLevel securityLevel; - - BtlObjectLocation objLocation; - - OppcaCurrOperation currOper; - - /* Memory Objects */ - char pushBuff[OPPCA_BUFF_MAX]; - char pullBuff[OPPCA_BUFF_MAX]; - -} OppcaData; - - -/******************************************************************************** - * - * Globals - * - *******************************************************************************/ - -static OppcaData oppClient; -static BtlOppcContext *oppcContext = 0; - -static char ObPushName[BTL_CONFIG_OPP_MAX_FILE_NAME_LEN + 1] = {'\0'}; -static char ObPullName[BTL_CONFIG_OPP_MAX_FILE_NAME_LEN + 1] = {'\0'}; - -extern char push_file_name[]; - -/******************************************************************************* - * - * Internal Function prototypes - * - ******************************************************************************/ -static void btips_oppcCallback(const BtlOppcEvent *Event); - -static const char *mfw_btips_oppcGoepOpName(GoepOperation Op); - -static BOOL mfw_btips_oppcBuildPushObject(BtlObject *objToPush, const char *fsPath, char *buff); -static BOOL mfw_btips_oppcBuildPullObject(BtlObject *objToPull, const char *fsPath, char *buff); - -static BOOL mfw_btips_oppcConvertToMemPushObject(BtlObject *obj, const char *fsPushPathh, char *buff); -static void mfw_btips_oppcSetFsPushObject(BtlObject *obj, const char *fsPushPath); -static void mfw_btips_oppcSetFsPullObject(BtlObject *obj, const char *fsPullPath); -static void mfw_btips_oppcSetMemPullObject(BtlObject *obj, const char *fsPullPath, char *buff); - -/*--------------------------------------------------------------------------- - * mfw_btips_oppcInit - *--------------------------------------------------------------------------- - * - * Synopsis: Initialize the OBEX Client for the OPP application - * and the Object Store. - * - * Return: void - * - */ -void mfw_btips_oppcInit(void) -{ - BtStatus status; - - oppClient.state = OPPCA_IDLE; - oppClient.isConnected = FALSE; - oppClient.operationOngoing = FALSE; - oppClient.securityLevel = BSL_NO_SECURITY; - oppClient.currOper = OPPCA_OPER_NONE; - oppClient.objLocation = BTL_OBJECT_LOCATION_FS; - - status = BTL_OPPC_Create((BtlAppHandle *)0, btips_oppcCallback, &oppClient.securityLevel, &oppcContext); - TRACE_EVENT_P1("BTL_OPPC_Create() returned %s.",pBT_Status(status)); - - status = BTL_OPPC_Enable(oppcContext); - TRACE_EVENT_P1("BTL_OPPC_Enable() returned %s.",pBT_Status(status)); -} - - -/*--------------------------------------------------------------------------- - * mfw_btips_oppcDeinit - *--------------------------------------------------------------------------- - * - * Synopsis: Deinitialize the OBEX Client protocol. - * - * Return: void - * - */ -void mfw_btips_oppcDeinit(void) -{ - BtStatus status; - - status = BTL_OPPC_Disable(oppcContext); - - Report(("BTL_OPPC_Disable() returned %s.",pBT_Status(status))); - - if (status == BT_STATUS_SUCCESS) - { - status = BTL_OPPC_Destroy(&oppcContext); - - Report(("BTL_OPPC_Destroy() returned %s.", pBT_Status(status))); - - oppClient.state = OPPCA_IDLE; - oppClient.isConnected = FALSE; - oppClient.operationOngoing = FALSE; - } - else - { - oppClient.state = OPPCA_DISABLING; - } -} - - -/*--------------------------------------------------------------------------- - * mfw_btips_oppcEncapsulatePush - *--------------------------------------------------------------------------- - * - * Synopsis: Initiate an OBEX Object Push procedure. - * Includes Connect and Disconnect from the opp server. - * If the given BD_ADDR is NULL, a search is performed. - * - * Return: void - * - */ -void mfw_btips_oppcEncapsulatePush(const char *fsPushPath, BD_ADDR *bd_addr) -{ - BtStatus status; - BtlObject objToPush; - - Report(("mfw_btips_oppcEncapsulatePush: fsPushPath = %s", fsPushPath)); - - if (TRUE != OPPCA_CHECK_FS_NAME_LEN(fsPushPath)) - { - Report(("mfw_btips_oppcEncapsulatePush: Can't push. fsPushPath too long")); - return; - } - - if (TRUE != mfw_btips_oppcBuildPushObject(&objToPush, fsPushPath, oppClient.pushBuff)) - { - Report(("OPPCA_BasicPull: Can't pull")); - return; - } - - status = BTL_OPPC_ConnectPushDisconnect(oppcContext, bd_addr, &objToPush); - - Report(("BTL_OPPC_ConnectPushDisconnect() returned %s.", pBT_Status(status))); - if (status == OB_STATUS_PENDING) - { - Report(("mfw_btips_oppcEncapsulatePush(): Started ...")); - oppClient.operationOngoing = TRUE; - oppClient.currOper = OPPCA_OPER_ENC_PUSH; - } -} - - -/*--------------------------------------------------------------------------- - * mfw_btips_oppcEncapsulatePull - *--------------------------------------------------------------------------- - * - * Synopsis: Initiate an OBEX Business Card Pull procedure. - * Includes Connect and Disconnect from the opp server. - * If the given BD_ADDR is NULL, a search is performed. - * - * Return: void - * - */ -void mfw_btips_oppcEncapsulatePull(const char *fsPullPath, BD_ADDR *bd_addr) -{ - BtStatus status; - BtlObject objToPull; - - Report(("mfw_btips_oppcEncapsulatePull: fsPullPath = %s", fsPullPath)); - - if (TRUE != OPPCA_CHECK_FS_NAME_LEN(fsPullPath)) - { - Report(("mfw_btips_oppcEncapsulatePull: Can't pull. fsPullPath too long")); - return; - } - - if (TRUE != mfw_btips_oppcBuildPullObject(&objToPull, fsPullPath, oppClient.pullBuff)) - { - Report(("mfw_btips_oppcEncapsulatePull: Can't pull")); - return; - } - - status = BTL_OPPC_ConnectPullDisconnect(oppcContext, bd_addr, &objToPull); - - Report(("BTL_OPPC_Pull() returned %s.", pBT_Status(status))); - - if (status == OB_STATUS_PENDING) - { - Report(("mfw_btips_oppcEncapsulatePull(): Started ...")); - oppClient.operationOngoing = TRUE; - oppClient.currOper = OPPCA_OPER_ENC_PULL; - } -} - - -/*--------------------------------------------------------------------------- - * mfw_btips_oppcEncapsulateExchange - *--------------------------------------------------------------------------- - * - * Synopsis: Initiate an OBEX Business Card Exchange procedure. - * Includes Connect and Disconnect from the opp server. - * If the given BD_ADDR is NULL, a search is performed. - * - * Return: void - * - */ -void mfw_btips_oppcEncapsulateExchange(const char *fsPushPath, const char *fsPullPath, BD_ADDR *bd_addr) -{ - BtStatus status; - BtlObject objToPush, objToPull; - - Report(("mfw_btips_oppcEncapsulateExchange: fsPushPath = %s, fsPullPath = %s", fsPushPath, fsPullPath)); - - - /* -------- Push Operation --------- */ - - if (TRUE != OPPCA_CHECK_FS_NAME_LEN(fsPushPath)) - { - Report(("mfw_btips_oppcEncapsulateExchange: Can't push. fsPushath too long")); - return; - } - - if (TRUE != mfw_btips_oppcBuildPushObject(&objToPush, fsPushPath, oppClient.pushBuff)) - { - Report(("mfw_btips_oppcEncapsulateExchange: Can't push")); - return; - } - - /* -------- Pull Operation --------- */ - - if (TRUE != OPPCA_CHECK_FS_NAME_LEN(fsPullPath)) - { - Report(("mfw_btips_oppcEncapsulateExchange: Can't pull. fsPullPath too long")); - return; - } - - if (TRUE != mfw_btips_oppcBuildPullObject(&objToPull, fsPullPath, oppClient.pullBuff)) - { - Report(("mfw_btips_oppcEncapsulateExchange: Can't pull")); - return; - } - - - status = BTL_OPPC_ConnectExchangeDisconnect(oppcContext, bd_addr, &objToPush, &objToPull); - - Report(("BTL_OPPC_ConnectExchangeDisconnect() returned %s.", pBT_Status(status))); - - if (status == OB_STATUS_PENDING) - { - Report(("mfw_btips_oppcEncapsulateExchange(): Started ...")); - oppClient.operationOngoing = TRUE; - oppClient.currOper = OPPCA_OPER_ENC_EXCHANGE; - } -} - - -/*--------------------------------------------------------------------------- - * btips_oppcCallback - *--------------------------------------------------------------------------- - * - * Synopsis: This function processes OBEX Client protocol events. - * - * Return: void - * - */ -static void btips_oppcCallback(const BtlOppcEvent *Event) -{ - BD_ADDR bdAddr; - char addr[BDADDR_NTOA_SIZE]; - BtStatus status; - - switch (Event->oppcEvent->event) - { - case OPPC_EVENT_COMPLETE: - - TRACE_EVENT_P1("btips_oppcCallback: The current %s is complete.", mfw_btips_oppcGoepOpName(Event->oppcEvent->oper)); - - switch (Event->oppcEvent->oper) - { - case GOEP_OPER_CONNECT: - TRACE_EVENT_P1("btips_oppcCallback: Transport Connection has been established with %s", bdaddr_ntoa(&bdAddr, addr)); - BTL_OPPC_GetConnectedDevice(oppcContext, &bdAddr); - oppClient.state = OPPCA_CONNECTED; - oppClient.isConnected = TRUE; - break; - - case GOEP_OPER_DISCONNECT: - TRACE_EVENT("btips_oppcCallback: Transport Connection has been disconnected."); - oppClient.isConnected = FALSE; - oppClient.state = OPPCA_IDLE; - oppClient.operationOngoing = FALSE; - break; - - - case GOEP_OPER_PULL: - - switch(oppClient.currOper) - { - case OPPCA_OPER_BASIC_PULL: - oppClient.operationOngoing = FALSE; - break; - - case OPPCA_OPER_BASIC_EXCHANGE: - oppClient.operationOngoing = FALSE; - break; - } - - break; - - - case GOEP_OPER_PUSH: - - switch(oppClient.currOper) - { - case OPPCA_OPER_BASIC_PUSH: - oppClient.operationOngoing = FALSE; - break; - } - break; - } - break; - - case OPPC_EVENT_ABORTED: - - UI_DISPLAY(("btips_oppcCallback: %s operation failed.", mfw_btips_oppcGoepOpName(Event->oppcEvent->oper))); - break; - - case OPPC_EVENT_TP_CONNECTED: - - BTL_OPPC_GetConnectedDevice(oppcContext, &bdAddr); - UI_DISPLAY(("btips_oppcCallback: Transport Connection is up to %s.", bdaddr_ntoa(&bdAddr, addr))); - - oppClient.state = OPPCA_TP_CONNECTED; - oppClient.isConnected = TRUE; - break; - - case OPPC_EVENT_TP_DISCONNECTED: - - UI_DISPLAY(("btips_oppcCallback: Transport Connection has been disconnected.")); - - - oppClient.isConnected = FALSE; - oppClient.operationOngoing = FALSE; - - if (oppClient.state != OPPCA_DISABLING) - { - oppClient.state = OPPCA_IDLE; - } - break; - - - case OPPC_EVENT_DISCOVERY_FAILED: - - UI_DISPLAY(("btips_oppcCallback: Discovery Failure.")); - oppClient.state = OPPCA_IDLE; - break; - - case OPPC_EVENT_NO_SERVICE_FOUND: - - UI_DISPLAY(("btips_oppcCallback: No OBEX Service Found.")); - oppClient.state = OPPCA_IDLE; - break; - - - case OPPC_EVENT_OBJECT_PROGRESS: - - UI_DISPLAY(("btips_oppcCallback: progress bar ...")); - - break; - - - case OPPC_EVENT_DISABLED: - - UI_DISPLAY(("btips_oppcCallback: Receiving OPPC_EVENT_DISABLED.")); - - if (OPPCA_DISABLING == oppClient.state) - { - status = BTL_OPPC_Destroy(&oppcContext); - - Report(("BTL_OPPC_Destroy() returned %s.", pBT_Status(status))); - } - - oppClient.state = OPPCA_IDLE; - break; - - default: - - UI_DISPLAY(("btips_oppcCallback: Unexpected event: %i", Event->oppcEvent->event)); - break; - } -} - - -/*--------------------------------------------------------------------------- - * mfw_btips_oppcGoepOpName - *--------------------------------------------------------------------------- - * - * Synopsis: Return a pointer to the name of the current operation. - * - * Return: ASCII String pointer. - * - */ -static const char *mfw_btips_oppcGoepOpName(GoepOperation Op) -{ - switch (Op) - { - case GOEP_OPER_PUSH: - return "Push"; - case GOEP_OPER_PULL: - return "Pull"; - case GOEP_OPER_CONNECT: - return "Connect"; - case GOEP_OPER_DISCONNECT: - return "Disconnect"; - case GOEP_OPER_ABORT: - return "Abort"; - case GOEP_OPER_DELETE: - return "Delete"; - case GOEP_OPER_SETFOLDER: - return "Set Folder"; - } - return "Unknown"; -} - - -/*--------------------------------------------------------------------------- - * mfw_btips_oppcBuildPushObject() - * - * Synopsis: Build push object - * - * Return: TRUE - success FALSE - failed - * - */ -static BOOL mfw_btips_oppcBuildPushObject(BtlObject *objToPush, const char *fsPath, char *buff) -{ - if (oppClient.objLocation == BTL_OBJECT_LOCATION_MEM) - { - if (TRUE != mfw_btips_oppcConvertToMemPushObject(objToPush, fsPath, buff)) - { - return FALSE; - } - } - else if (oppClient.objLocation == BTL_OBJECT_LOCATION_FS) - { - mfw_btips_oppcSetFsPushObject(objToPush, fsPath); - } - - return TRUE; -} - - -/*--------------------------------------------------------------------------- - * mfw_btips_oppcBuildPullObject() - * - * Synopsis: Build push object - * - * Return: TRUE - success FALSE - failed - * - */ -static BOOL mfw_btips_oppcBuildPullObject(BtlObject *objToPull, const char *fsPath, char *buff) -{ - if (oppClient.objLocation == BTL_OBJECT_LOCATION_MEM) - { - mfw_btips_oppcSetMemPullObject(objToPull, fsPath, buff); - } - else if (oppClient.objLocation == BTL_OBJECT_LOCATION_FS) - { - mfw_btips_oppcSetFsPullObject(objToPull, fsPath); - } - - return TRUE; -} - - -/*--------------------------------------------------------------------------- - * mfw_btips_oppcConvertToMemPushObject() - * - * Synopsis: Function for testing OPP from memory objects. Convert file object to memory object by reading the - * file and modifying proper fileds uses a static buffer, so only one such object can be supported at a time - * maximum file size is 512 KB - * - * Return: void - * - */ -static BOOL mfw_btips_oppcConvertToMemPushObject(BtlObject *obj, const char *fsPushPath, char *buff) -{ - BtFsStatus btFsStatus; - BthalFsFileDesc fd; - BTHAL_U32 numRead; - BthalFsStat FileStat; - - btFsStatus = BTHAL_FS_Stat((const BTHAL_U8 *)fsPushPath, &FileStat); - if(btFsStatus != BT_STATUS_HAL_FS_SUCCESS) - { - Report(("Client: Error - File was not found %s", fsPushPath)); - return FALSE; - } - - if (FileStat.size > OPPCA_BUFF_MAX) - { - Report(("Client: Error pushed file > %d bytes", OPPCA_BUFF_MAX)); - return FALSE; - } - - btFsStatus = BTHAL_FS_Open((const BTHAL_U8 *)fsPushPath, - BTHAL_FS_O_RDONLY | BTHAL_FS_O_BINARY, /* Read Only */ - (BthalFsFileDesc *)&fd); - - if (btFsStatus == BT_STATUS_HAL_FS_SUCCESS) - { - btFsStatus = BTHAL_FS_Read(fd, oppClient.pushBuff, OPPCA_BUFF_MAX, &numRead); - - if (btFsStatus == BT_STATUS_HAL_FS_SUCCESS) - { - Report(("Client: fsPushPath = %s, numRead = %d", fsPushPath, numRead)); - } - - BTHAL_FS_Close(fd); - - /* Extract object name from fsPath */ - OBSTORE_ExtractObjName(fsPushPath, ObPushName); - - obj->objectLocation = BTL_OBJECT_LOCATION_MEM; - obj->objectName = ObPushName; - obj->location.memLocation.memAddr = buff; - obj->location.memLocation.size = numRead; - obj->objectMimeType = "text/x-vCard"; - } - else - { - Report(("Client: Error - could not open %s", fsPushPath)); - return FALSE; - } - - return TRUE; -} - - -/*--------------------------------------------------------------------------- - * mfw_btips_oppcSetMemPullObject() - * - * Synopsis: Function for testing OPP from memory objects. - * Sets memory object fields prior to PULL operation - * - * Return: void - * - */ -static void mfw_btips_oppcSetMemPullObject(BtlObject *obj, const char *fsPullPath, char *buff) -{ - OBSTORE_ExtractObjName(fsPullPath, ObPullName); - - obj->objectLocation = BTL_OBJECT_LOCATION_MEM; - - obj->location.fsLocation.fsPath = NULL; - obj->location.memLocation.memAddr = buff; - obj->location.memLocation.size = OPPCA_BUFF_MAX; - - obj->objectMimeType = "text/x-vCard";; - obj->objectName = ObPullName; -} - - -/*--------------------------------------------------------------------------- - * mfw_btips_oppcSetFsPushObject() - * - * Synopsis: Function for testing OPP from FS Push objects. - * - * Return: void - * - */ -static void mfw_btips_oppcSetFsPushObject(BtlObject *obj, const char *fsPushPath) -{ - OBSTORE_ExtractObjName(fsPushPath, ObPushName); - - obj->objectName = ObPushName; - obj->location.fsLocation.fsPath = fsPushPath; - - /* This should be provided by the user (i.e. this is just an example) */ - obj->objectMimeType = "text/x-vCard"; - obj->objectLocation = BTL_OBJECT_LOCATION_FS; -} - - -/*--------------------------------------------------------------------------- - * mfw_btips_oppcSetFsPullObject() - * - * Synopsis: Function for testing OPP from FS Pull objects. - * - * Return: void - * - */ -static void mfw_btips_oppcSetFsPullObject(BtlObject *obj, const char *fsPullPath) -{ - OBSTORE_ExtractObjName(fsPullPath, ObPullName); - - obj->objectName = ObPullName; - obj->location.fsLocation.fsPath = fsPullPath; - obj->objectMimeType = "text/x-vCard"; - obj->objectLocation = BTL_OBJECT_LOCATION_FS; -} - -/*--------------------------------------------------------------------------- - * mfw_btips_oppcCallback - *--------------------------------------------------------------------------- - * - * Synopsis: This function processes OBEX client protocol events. - * - * Return: void - * - */ -void mfw_btips_oppcCallback(T_BTIPS_MMI_IND *para) -{ - -} - -/******************************************************************************* - - $Function: mfw_btips_oppcPopulateFiles - - $Description:Populates file names into the array - - $Returns: The count of the files in the directory - - $Arguments: file_names:Pointer to the arrayto store file names - max_files_count:Max file counts to be stored in array -*******************************************************************************/ -int mfw_btips_oppcPopulateFiles(char **file_names, int max_files_count,char* dir_name_p) -{ - - T_FFS_DIR dir = {0}; - char dest_name_p[100] = ""; - int i, files_count = 0; - char *fileExt; - - TRACE_FUNCTION_P1("mfw_btips_oppcPopulateFiles from directory %s", dir_name_p); - - if (ffs_opendir (dir_name_p, &dir) <= 0) - { - TRACE_ERROR("Could not open Dir"); - - files_count = 0; - } - //Release previous allocated memory before allocating again - mfw_btips_oppcUnpopulateFiles(file_names); - //read the file names - //file_count will be used to populate the array index - for (i = 0; ffs_readdir (&dir, dest_name_p, 100) > 0x0; i++) - { - if((strcmp(dest_name_p, ".") == 0) || (strcmp(dest_name_p, "..") == 0)) - continue; - TRACE_FUNCTION_P1("Reading Dir - %s",dest_name_p); - (file_names[files_count]) = (char*)mfwAlloc(strlen(dest_name_p) + 1); - if(file_names[files_count] != NULL) - { - #if 0 - //Retrieve file extension.Store only the supported file formats in array - fileExt =mfw_btips_oppcGetExtension(dest_name_p); - //List the MP3 files also.Mp3 files hsould not be listed or ULC - if ( (strcmp(fileExt, "mp3") == 0)) - { - strcpy (file_names[files_count], dest_name_p); - files_count++; - } - else if ( (strcmp(fileExt, "wav")== 0)) - { - strcpy (file_names[files_count], dest_name_p); - files_count++; - } - else if ( (strcmp(fileExt, "pcm")== 0)) - { - strcpy (file_names[files_count], dest_name_p); - files_count++; - } - else if(files_count >= max_files_count) - break; - #endif - strcpy (file_names[files_count], dest_name_p); - TRACE_FUNCTION_P1("file_names - %s", file_names[files_count]); - files_count++; - if(files_count >= max_files_count) - break; - } - else - { - //files_count = 0; - } - - } - //Closing the directory aa per the new FFS logic - ffs_closedir(dir); - - TRACE_EVENT_P1("read files_count is %d",files_count); - TRACE_FUNCTION_P1("read files_count is %d",files_count); - return files_count; -} -/******************************************************************************* - - $Function: mfw_btips_oppcUnpopulateFiles - - $Description:Frees the memory allocated for the array - $Returns: None - - $Arguments: file_names:Pointer to the arrayto store file names - -*******************************************************************************/ -void mfw_btips_oppcUnpopulateFiles(char **file_names) -{ - int i; - TRACE_FUNCTION("mfw_btips_oppcUnpopulateFiles"); - mfw_BtipsReport("mfw_btips_oppcUnpopulateFiles"); - - //Free the allocated memory for file names - for (i = 0; i - -#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 - -#ifdef FF_MMI_BTIPS_APP -#include "btl_bmg.h" - -/* Macro for sending events to UI - meanwhile, trace message to PCO Viewer */ -extern int vsi_o_state_ttrace ( const char * const format, ... ); -#define UI_DISPLAY(s) vsi_o_state_ttrace s - -#include "osapi.h" -#include "btl_common.h" -#include "debug.h" - -#include "btl_opps.h" -#include "btl_config.h" -#include "bthal_config.h" -#include "bthal_fs.h" - -#include "Mfw_mfw.h" -#include "Mfw_Btips.h" - - - -/******************************************************************************** - * - * Constants - * - *******************************************************************************/ - -#define OPPSA_DEFAULT_VCARD_NAME "mycard.vcf" -#define OPPSA_ACCEPT_DEFAULT_DIR "/MfwBtDemo" - -#define OPPSA_DEFAULT_FULL_NAME "/MfwBtDemo/default/mycard.vcf" - -#define OPPSA_SERVER_NAME "OBEX Object Push" - -#define OPPSA_DEFAULT_FULL_DIR "/MfwBtDemo" - -#define OPPSA_NEW_PUSH_NAME "pushed_file.vcf"//sundeep - -#define OPPSA_PULL_USE_DEFAULT_OBJ (0x01)//sundeep -#define OPPSA_PULL_USE_NEW_OBJ (0x02)//sundeep -#define OPPSA_NEW_VCARD_NAME "mycard_t.vcf" -#define OPPSA_NEW_FULL_NAME "/QbInbox/default_object/mycard_t.vcf" -typedef U8 OppsaPullUseObject; - - /******************************************************************************* - * - * Macro definitions - * - ******************************************************************************/ -#define OPPSA_BUFF_MAX (1 * 512) - - -#define OPPSA_CHECK_OBJ_LOCATION(objectLocation) \ - ((objectLocation == BTL_OBJECT_LOCATION_FS) || \ - (objectLocation == BTL_OBJECT_LOCATION_MEM)) -//sundeep -static char userPushFileName[BTHAL_FS_MAX_FILE_NAME_LENGTH + 1] = {'\0'}; -static char userPushPath[BTHAL_FS_MAX_PATH_LENGTH + 1] = {'\0'}; -static char userPushFsPath[BTHAL_FS_MAX_FILE_NAME_LENGTH + BTHAL_FS_MAX_PATH_LENGTH + 1] = {'\0'}; - - -/******************************************************************************* - * - * OPP External Function prototypes - * - ******************************************************************************/ -#if 1 -void mfw_btips_oppsInit(void); -void mfw_btips_oppsDeinit(void); -void mfw_btips_opps_AbortServer(void); -void mfw_btips_opps_Disconnect(void); -void mfw_btips_opps_GetConnectedDevice(void); -BOOL mfw_btips_opps_GetSecurityLevel(void); -BOOL mfw_btips_opps_SetSecurityLevel(BtSecurityLevel level); -void mfw_btips_oppsAcceptObjectRequest(BOOL accept); -void OPPSA_SetObjLocation(BtlObjectLocation objLocation); -#endif - - -/*------------------------------------------------------------------------------- - * OppsaState type - * - * Defines the OPPS current state. - */ -typedef U8 OppsaState; - -#define OPPSA_IDLE 0x00 /* OBEX and Transport disconnected */ -#define OPPSA_CONNECTING 0x01 /* OBEX connecting */ -#define OPPSA_TP_CONNECTED 0x02 /* Transport connected */ -#define OPPSA_CONNECTED 0x03 /* OBEX connected */ -#define OPPSA_DISCONNECTING 0x04 /* OBEX disconnecting */ -#define OPPSA_TP_DISCONNECTING 0x05 /* Transport disconnecting */ -#define OPPSA_DISABLING 0x06 /* OBEX and Transport disabling */ - - -typedef struct _OppsaData -{ - OppsaState state; - - BOOL isConnected; - - BOOL operationOngoing; - - BtSecurityLevel securityLevel; - - OppsOperation serverOperation; - - BtlObjectLocation objLocation; - - /* Memory Objects */ - char pushBuff[OPPSA_BUFF_MAX]; - char pullBuff[OPPSA_BUFF_MAX]; - -} OppsaData; - - -/******************************************************************************** - * - * Globals - * - *******************************************************************************/ - -static OppsaData oppServer; - -static BtlOppsContext *oppsContext = 0; - - -/******************************************************************************* - * - * Internal Function prototypes - * - ******************************************************************************/ -static void btips_oppsCallback(const BtlOppsEvent *Event); -static const char *mfw_btips_oppsGoepOpName(GoepOperation Op); -//static void mfw_btips_oppsSetDefaultObject(BtlObject *obj, const char *ObName, const char* fullPath);//sundeep -static void mfw_btips_oppsSetDefaultObject(BtlObject *obj, OppsaPullUseObject useObj); -static void mfw_btips_oppsSetToMemObject(BtlObject *obj, char *buff); -static void mfw_btips_oppsSetToFsObject(BtlObject *obj, char *userPushFileName, char *userPushPath); -static void mfw_btips_oppsCreateDefaultVCardFile(void); -BOOL mfw_btips_oppsGetConnectedDevice (BD_ADDR *bdAddr, U8 *name); -BOOL mfw_btips_OppsDisconnect (); - -/*--------------------------------------------------------------------------- - * mfw_btips_oppsInit - *--------------------------------------------------------------------------- - * - * Synopsis: Initialize the OBEX server for the OPP application - * and the Object Store. - * - * Return: voidOppsaPullUseObject useObj - * - */ -void mfw_btips_oppsInit(void) -{ - BtStatus status; - BtlObject serverObject; - - oppServer.securityLevel = BSL_NO_SECURITY; - oppServer.state = OPPSA_IDLE; - oppServer.isConnected = FALSE; - oppServer.operationOngoing = FALSE; - oppServer.objLocation = BTL_OBJECT_LOCATION_FS; - - status = BTL_OPPS_Create((BtlAppHandle *)0, btips_oppsCallback, &oppServer.securityLevel, &oppsContext); - Report(("BTL_OPPS_Create() returned %s.",pBT_Status(status))); - - mfw_btips_oppsCreateDefaultVCardFile(); - - //mfw_btips_oppsSetDefaultObject(&serverObject, OPPSA_DEFAULT_VCARD_NAME, OPPSA_DEFAULT_FULL_NAME);//sundeep - mfw_btips_oppsSetDefaultObject(&serverObject, OPPSA_PULL_USE_DEFAULT_OBJ); - status = BTL_OPPS_SetDefaultObject(&serverObject); - Report(("BTL_OPPS_SetDefaultObject() returned %s.",pBT_Status(status))); - - status = BTL_OPPS_Enable(oppsContext, "OPPS Server", BTL_OPPS_SUPPORTED_FORMATS_ANY); - Report(("BTL_OPPS_Enable() returned %s.",pBT_Status(status))); -} - - -/*--------------------------------------------------------------------------- - * mfw_btips_oppsDeinit - *--------------------------------------------------------------------------- - * - * Synopsis: Deinitialize the OBEX Server protocol. - * - * Return: voidOPPSA_PULL_USE_DEFAULT_OBJ - * - */ - -void mfw_btips_oppsDeinit(void) -{ - BtStatus status; - - status = BTL_OPPS_Disable(oppsContext); - - Report(("BTL_OPPS_Disable() returned %s.",pBT_Status(status))); - - if (status == BT_STATUS_SUCCESS) - { - status = BTL_OPPS_Destroy(&oppsContext); - - Report(("BTL_OPPS_Destroy() returned %s.", pBT_Status(status))); - - oppServer.state = OPPSA_IDLE; - oppServer.isConnected = FALSE; - oppServer.operationOngoing = FALSE; - } - else - { - oppServer.state = OPPSA_DISABLING; - } -} - - -/*--------------------------------------------------------------------------- - * mfw_btips_opps_AbortServer - *--------------------------------------------------------------------------- - * - * Synopsis: Requests the current operation to be aborted. - * - * Return: void - * - */ -void mfw_btips_opps_AbortServer(void) -{ - BtStatus status; - - if (oppServer.operationOngoing == TRUE) - { - status = BTL_OPPS_Abort(oppsContext, OBRC_CONFLICT); - Report(("BTL_OPPS_Abort() returned %s.",pBT_Status(status))); - } - else - { - Report(("mfw_btips_opps_AbortServer: No ongoing OPP operation!")); - } -} - - -/*--------------------------------------------------------------------------- - * mfw_btips_opps_Disconnect - *--------------------------------------------------------------------------- - * - * Synopsis: Disconnects - * - */ -void mfw_btips_opps_Disconnect(void) -{ - BtStatus status; - - if (oppServer.isConnected == TRUE) - { - status = BTL_OPPS_Disconnect(oppsContext); - Report(("BTL_OPPS_Disconnect() returned %s.", pBT_Status(status))); - } - else - { - Report(("mfw_btips_opps_Disconnect: Server is not connected!")); - } -} - - - - -/*--------------------------------------------------------------------------- - * mfw_btips_opps_SetSecurityLevel - * - * Synopsis: Set the OPP Server security level. - * - * Return: void - * - */ -BOOL mfw_btips_opps_SetSecurityLevel(BtSecurityLevel level) -{ - BtStatus status; - BtSecurityLevel securityLevel; - BOOL ret_val; - - securityLevel = oppServer.securityLevel; - - if (securityLevel & level) - { - securityLevel &= (~level); - ret_val = FALSE; - } - else - { - securityLevel |= level; - ret_val = TRUE; - } - - status = BTL_OPPS_SetSecurityLevel(oppsContext, &securityLevel); - - Report(("BTL_OPPS_SetSecurityLevel() returned %s.", pBT_Status(status))); - - if (status == BT_STATUS_SUCCESS) - { - oppServer.securityLevel = securityLevel; - } - - return ((status == BT_STATUS_SUCCESS) ? (ret_val) : (!ret_val)); -} - - -/*--------------------------------------------------------------------------- - * mfw_btips_opps_GetSecurityLevel - *--------------------------------------------------------------------------- - * - * Synopsis: Gets security level for the given OPPC context. - * - * Return: TRUE if security level is ON, else FALSE. - * - */ -BOOL mfw_btips_opps_GetSecurityLevel(void) -{ - BtStatus status; - BtSecurityLevel securityLevel; - - status = BTL_OPPS_GetSecurityLevel(oppsContext, &securityLevel); - - Report(("BTL_OPPS_GetSecurityLevel() returned %s.",pBT_Status(status))); - - switch (securityLevel) - { - case 0: - Report(("Security level: BSL_NO_SECURITY")); - break; - case 1: - Report(("Security level: BSL_AUTHENTICATION_IN")); - break; - case 2: - Report(("Security level: BSL_AUTHORIZATION_IN")); - break; - case 4: - Report(("Security level: BSL_ENCRYPTION_IN")); - break; - case 3: - Report(("Security level: BSL_AUTHENTICATION_IN")); - Report(("and BSL_AUTHORIZATION_IN")); - break; - case 5: - Report(("Security level: BSL_AUTHENTICATION_IN")); - Report(("and BSL_ENCRYPTION_IN")); - break; - case 6: - Report(("Security level: BSL_AUTHORIZATION_IN")); - Report(("and BSL_ENCRYPTION_IN")); - break; - case 7: - Report(("Security level: BSL_AUTHENTICATION_IN")); - Report(("and BSL_AUTHORIZATION_IN")); - Report(("and BSL_ENCRYPTION_IN")); - break; - default: - Report(("Error: Wrong security level")); - break; - - } - - return ((status == BT_STATUS_SUCCESS) ? (TRUE) : (FALSE)); -} - - -/*--------------------------------------------------------------------------- - * OPPSA_AcceptObjectRequest - *--------------------------------------------------------------------------- - * - * Synopsis: Accept the pending object request. - * - * Return: void - * - */ -void mfw_btips_oppsAcceptObjectRequest(BOOL accept) -{ - BtStatus status; - BtlObject serverObject; - - TRACE_FUNCTION_P1("mfw_btips_oppsAcceptObjectRequest - %d", accept); - if (TRUE != OPPSA_CHECK_OBJ_LOCATION(oppServer.objLocation)) - { - Report(("OPPSA_AcceptObjectRequest: Invalid objectLocation")); - return; - } - - if (accept == FALSE) - { - mfw_btips_oppsSetToFsObject(&serverObject, userPushFileName, OPPSA_ACCEPT_DEFAULT_DIR); - - status = BTL_OPPS_AcceptObjectRequest(oppsContext, FALSE, &serverObject); - - Report(("BTL_OPPS_AcceptObjectRequest() returned %s.", pBT_Status(status))); - } - else - { - if (oppServer.serverOperation == GOEP_OPER_PUSH) - { - if (oppServer.objLocation == BTL_OBJECT_LOCATION_MEM) - { - mfw_btips_oppsSetToMemObject(&serverObject, oppServer.pushBuff); - } - else if (oppServer.objLocation == BTL_OBJECT_LOCATION_FS) - { - mfw_btips_oppsSetToFsObject(&serverObject, userPushFileName, OPPSA_ACCEPT_DEFAULT_DIR); - } - } - else if (oppServer.serverOperation == GOEP_OPER_PULL) - { - if (oppServer.objLocation == BTL_OBJECT_LOCATION_MEM) - { - mfw_btips_oppsSetToMemObject(&serverObject, oppServer.pullBuff); - } - else if (oppServer.objLocation == BTL_OBJECT_LOCATION_FS) - { - mfw_btips_oppsSetToFsObject(&serverObject, userPushFileName, OPPSA_ACCEPT_DEFAULT_DIR); - } - } - - status = BTL_OPPS_AcceptObjectRequest(oppsContext, accept, &serverObject); - - Report(("BTL_OPPS_AcceptObjectRequest() returned %s.", pBT_Status(status))); - } -} - - -/*--------------------------------------------------------------------------- - * OPPSA_SetObjLocation - *--------------------------------------------------------------------------- - * - * Synopsis: Set the object Location (Memory or FS) - * - * Return: None - * - */ -void OPPSA_SetObjLocation(BtlObjectLocation objLocation) -{ - oppServer.objLocation = objLocation; -} - - -/*--------------------------------------------------------------------------- - * btips_oppsCallback - *--------------------------------------------------------------------------- - * - * Synopsis: This function processes OBEX server protocol events. - * - * Return: void - * - */ -void btips_oppsCallback(const BtlOppsEvent *Event) -{ - /* Local variables */ - static BD_ADDR bdAddr; - char addr[BDADDR_NTOA_SIZE]; - BtStatus status = BT_STATUS_FAILED; - BtlBmgDeviceRecord record; - T_BTIPS_MMI_IND btips_mmi_ind; - - btips_mmi_ind.mfwBtipsEventType = MFW_BTIPS_OPPS_EVENT; - - TRACE_EVENT_P1("btips_oppsCallback %d", Event->oppsEvent->event); - /* Save the GOEP operation for future use */ - oppServer.serverOperation = Event->oppsEvent->oper; - - switch (Event->oppsEvent->event) - { - case OPPS_EVENT_START: - TRACE_EVENT_P1("Server: Starting %s operation.", mfw_btips_oppsGoepOpName(Event->oppsEvent->oper)); - oppServer.operationOngoing = TRUE; - break; - - case OPPS_EVENT_COMPLETE: - TRACE_EVENT_P1("Server: %s operation complete.", mfw_btips_oppsGoepOpName(Event->oppsEvent->oper)); - oppServer.operationOngoing = FALSE; -//#if 0 - if (Event->oppsEvent ->oper == GOEP_OPER_PUSH) - { - btips_mmi_ind.data.oppsBtEvent.mfwOppsEventType = MFW_BTIPS_OPPS_PUSH_COMP_EVENT; - } - if(Event->oppsEvent ->oper == GOEP_OPER_PULL) - { - btips_mmi_ind.data.oppsBtEvent.mfwOppsEventType = MFW_BTIPS_OPPS_PULL_COMP_EVENT; - } - btipsNotifyMFW(&btips_mmi_ind); -#if 0 - if (Event->oppsEvent ->oper == GOEP_OPER_DISCONNECT) - { - btips_mmi_ind.data.oppsBtEvent.mfwOppsEventType = MFW_BTIPS_OPPS_DISCONNECT_EVENT; - } - btipsNotifyMFW(&btips_mmi_ind); -#endif - break; - - case OPPS_EVENT_ABORTED: - TRACE_EVENT_P1("Server: GOEP %s operation failed or aborted.", mfw_btips_oppsGoepOpName(Event->oppsEvent->oper)); - oppServer.isConnected = FALSE; - oppServer.operationOngoing = FALSE; - oppServer.state = OPPSA_IDLE; - break; - - case OPPS_EVENT_TP_CONNECTED: - BTL_OPPS_GetConnectedDevice(oppsContext, &bdAddr); - TRACE_EVENT_P1("Server: Transport Connection is up to %s.", bdaddr_ntoa(&bdAddr, addr)); - oppServer.state = OPPSA_TP_CONNECTED; - oppServer.isConnected = TRUE; - break; - - case OPPS_EVENT_TP_DISCONNECTED: - TRACE_EVENT("Server: Transport Connection has been disconnected."); - oppServer.isConnected = FALSE; - oppServer.operationOngoing = FALSE; - if (oppServer.state != OPPSA_DISABLING) - { - oppServer.state = OPPSA_IDLE; - } - break; - - case OPPS_EVENT_OBJECT_PROGRESS: - TRACE_EVENT("OPPSA_Callback: progress bar ..."); - break; - - case OPPS_EVENT_OBJECT_REQUEST: - TRACE_EVENT_P1("Server: Incoming object request: %s operation.", mfw_btips_oppsGoepOpName(Event->oppsEvent->oper)); - TRACE_EVENT_P3("Server: Name: %s, Type: %s, Size: %u.", Event->oppsEvent->info.request.name, - Event->oppsEvent->info.request.type, Event->oppsEvent->info.request.objectLen); - TRACE_EVENT("Server: Please accept or reject!"); - status = BTL_BMG_DDB_FindRecord(bdAddr, &record); - Report(("BTL_BMG_DDB_FindRecord() returned %s.", pBT_Status(status))); - btips_mmi_ind.data.oppsBtEvent.mfwOppsEventType = Event->oppsEvent ->oper; - strcpy(btips_mmi_ind.data.oppsBtEvent.p.opps.deviceName, record.name); - strcpy(btips_mmi_ind.data.oppsBtEvent.p.opps.oppObjectName, Event ->oppsEvent->info.request.name); -#if 1 - btipsNotifyMFW(&btips_mmi_ind); -#else - mfw_btips_oppsAcceptObjectRequest(TRUE); -#endif - break; - - case OPPS_EVENT_DISABLED: - UI_DISPLAY(("Server: Receiving OPPS_EVENT_DISABLED.")); - if (OPPSA_DISABLING == oppServer.state) - { - status = BTL_OPPS_Destroy(&oppsContext); - Report(("BTL_OPPS_Destroy() returned %s.", pBT_Status(status))); - } - oppServer.state = OPPSA_IDLE; - break; - - default: - UI_DISPLAY(("Server: Unexpected event: %i", Event->oppsEvent->event)); - break; - - } -} - -/*--------------------------------------------------------------------------- - * mfw_btips_oppsCallback - *--------------------------------------------------------------------------- - * - * Synopsis: This function processes OBEX server protocol events. - * - * Return: void - * - */ -void mfw_btips_oppsCallback(T_BTIPS_MMI_IND *para) -{ - - MfwBtOppsEvent oopsBtEvent = para->data.oppsBtEvent; - TRACE_FUNCTION_P1("mfw_btips_oppsCallback %d", oopsBtEvent.mfwOppsEventType); - - switch(oopsBtEvent.mfwOppsEventType) - { - case OPPS_OPER_PUSH: - mfw_btips_signal(E_BTIPS_OPPS_PUSH_EVENT, para); - break; - - case OPPS_OPER_PULL: - mfw_btips_signal(E_BTIPS_OPPS_PULL_EVENT, para); - break; -//#if 0 - case MFW_BTIPS_OPPS_PUSH_COMP_EVENT: - mfw_btips_signal(E_BTIPS_OPPS_PUSH_COMP_EVENT, para); - break; - - case MFW_BTIPS_OPPS_PULL_COMP_EVENT: - mfw_btips_signal(E_BTIPS_OPPS_PULL_COMP_EVENT, para); -//#endif - } - -} - -/*--------------------------------------------------------------------------- - * mfw_btips_oppsGoepOpName - *--------------------------------------------------------------------------- - * - * Synopsis: Return a pointer to the name of the current operation. - * - * Return: ASCII String pointer. - * - */ -static const char *mfw_btips_oppsGoepOpName(GoepOperation Op) -{ - switch (Op) - { - case GOEP_OPER_PUSH: - return "Push"; - case GOEP_OPER_PULL: - return "Pull"; - case GOEP_OPER_CONNECT: - return "Connect"; - case GOEP_OPER_DISCONNECT: - return "Disconnect"; - case GOEP_OPER_ABORT: - return "Abort"; - case GOEP_OPER_DELETE: - return "Delete"; - case GOEP_OPER_SETFOLDER: - return "Set Folder"; - } - return "Unknown"; -} - - -/*--------------------------------------------------------------------------- - * mfw_btips_oppsSetDefaultObject() - * - * Synopsis: Function for setting the OPPS default object. - * - * Return: void - * - */ -//static void mfw_btips_oppsSetDefaultObject(BtlObject *obj, const char *ObName, const char* fullPath) -static void mfw_btips_oppsSetDefaultObject(BtlObject *obj, OppsaPullUseObject useObj) -{ - switch (useObj) - { - case OPPSA_PULL_USE_DEFAULT_OBJ: - obj->objectName = (const BtlUtf8 *)OPPSA_DEFAULT_VCARD_NAME; - obj->location.fsLocation.fsPath = (const BtlUtf8 *)OPPSA_DEFAULT_FULL_NAME; - break; - - case OPPSA_PULL_USE_NEW_OBJ: - obj->objectName = (const BtlUtf8 *)OPPSA_NEW_VCARD_NAME; - obj->location.fsLocation.fsPath = (const BtlUtf8 *)OPPSA_NEW_FULL_NAME; - break; - } - // obj->objectName = ObName; - //obj->location.fsLocation.fsPath = fullPath; - - obj->objectMimeType = "text/x-vCard"; - obj->objectLocation = oppServer.objLocation; -} - -/*--------------------------------------------------------------------------- - * mfw_btips_oppsSetToMemObject() - * - * Synopsis: Function for testing OPP from memory objects. - * Sets memory object fields prior to PULL operation - * - * Return: void - * - */ -static void mfw_btips_oppsSetToMemObject(BtlObject *obj, char *buff) -{ - obj->objectLocation = BTL_OBJECT_LOCATION_MEM; - obj->location.fsLocation.fsPath = NULL; - obj->location.memLocation.memAddr = buff; - obj->location.memLocation.size = OPPSA_BUFF_MAX; - - obj->objectMimeType = NULL; -} - -/*--------------------------------------------------------------------------- - * mfw_btips_oppsSetToFsObject() - * - * Synopsis: Function for testing OPP from memory objects. - * Sets FS object - * - * Return: void - * - */ -static void mfw_btips_oppsSetToFsObject(BtlObject *obj, char *userPushFileName, char *userPushPath) -{ - U16 len; - /* ToDo: obj->objectName - - [NULL]- pushed objects are saved in C:\QInbox location - - ["defaultPushed.vcf"] - pushed objects are saved in C:\QInbox location, - and then rename to "defaultPushed.vcf" file. - */ - - //obj->objectName = "defaultPushed.vcf"; - obj->objectName = NULL; - obj->objectMimeType = NULL; - obj->objectLocation = BTL_OBJECT_LOCATION_FS; - //obj->location.fsLocation.fsPath = OPPSA_ACCEPT_DEFAULT_DIR; - if (userPushFileName[0] == '\0') - { - OS_StrCpyUtf8(userPushFileName, (const char *)OPPSA_NEW_PUSH_NAME); - } - - userPushFsPath[0] = '\0'; - OS_StrCpyUtf8(userPushFsPath, userPushPath); - len = OS_StrLenUtf8(userPushFsPath); - userPushFsPath[len] = BTHAL_FS_PATH_DELIMITER; - userPushFsPath[++len] = '\0'; - OS_StrCatUtf8(userPushFsPath, userPushFileName); - - userPushFileName[0] = '\0'; - - obj->location.fsLocation.fsPath = (const BtlUtf8 *)userPushFsPath; -} - -/*--------------------------------------------------------------------------- - * OppsaUiCreateDefaultVCardFile - *--------------------------------------------------------------------------- - * - * Synopsis: Creates the default VCard file - * - * Return: void. - * - */ -static void mfw_btips_oppsCreateDefaultVCardFile(void) -{ - static char content[] = "BEGIN:VCARD\nVERSION:2.1\nN:Adam;Smith\nFN:Adam Smith\nTEL;WORK;VOICE:erez972-76271234\nTEL;CELL:972-9-54-785345\n \ - X-IRMC-LUID:0000000089112FB8F5ED98469F141223445D85EC0700651F055323C0104ABA16A3A82F42C81E000000D0841B0000B783C70B99B5BE4CAF782AB8DD188B6D0000DF0956010000\n \ - END:VCARD"; - - BtFsStatus btFsStatus; - BthalFsFileDesc fp; - BTHAL_U32 pNumWritten; - BTHAL_INT nSize; - - /* Creates / Overwrites the current default VCard file */ - - //BTHAL_FS_Remove(OPPSA_DEFAULT_FULL_NAME); - btFsStatus = BTHAL_FS_Open((const BTHAL_U8 *)OPPSA_DEFAULT_FULL_NAME, - BTHAL_FS_O_RDWR| BTHAL_FS_O_BINARY, (BthalFsFileDesc *)&fp); - if (BT_STATUS_HAL_FS_SUCCESS == btFsStatus) - { - BTHAL_FS_Close(fp); - return; - } - btFsStatus = BTHAL_FS_Open((const BTHAL_U8 *)OPPSA_DEFAULT_FULL_NAME, - BTHAL_FS_O_CREATE | BTHAL_FS_O_RDWR | BTHAL_FS_O_BINARY, /* Create file */ - (BthalFsFileDesc *)&fp); - if (BT_STATUS_HAL_FS_SUCCESS != btFsStatus) - { - Report(("OppsaUiCreateDefaultVCardFile(): Error - could not create Default VCard file %s.", OPPSA_DEFAULT_FULL_NAME)); - Report(("Make sure that %s directory exists !.", OPPSA_DEFAULT_FULL_DIR)); - return; - } - - nSize = OS_StrLen(content); - - if (BT_STATUS_HAL_FS_SUCCESS == BTHAL_FS_Write(fp, (void*)content, nSize, &pNumWritten)) - { - Report(("OppsaUiCreateDefaultVCardFile(): Default VCard file \"%s\" created successfully.", OPPSA_DEFAULT_FULL_NAME)); - } - else - { - Report(("OppsaUiCreateDefaultVCardFile(): Error - Unable to create default VCard file.")); - } - - - BTHAL_FS_Close(fp); - - Report(("OppsaUiCreateDefaultVCardFile(): nSize = %d, pNumWritten = %d", nSize, pNumWritten)); -} - -/******************************************************************************* - - $Function: mfw_btips_oppsGetConnectDevice - - $Description: Returns the TRUE when succeeds - $Returns: TRUE or FALSE - - $Arguments: - -*******************************************************************************/ - -BOOL mfw_btips_oppsGetConnectedDevice (BD_ADDR *bdAddr, U8 *name) -{ - BtStatus status; - - - status = BTL_OPPS_GetConnectedDevice (oppsContext, bdAddr); - - - - - if (status == BT_STATUS_SUCCESS) - { - mfw_btips_bmgGetDeviceName (bdAddr, name); - TRACE_FUNCTION_P1("mfw_btips_oppsGetConnectDevice OPPS name %s ",name); - return TRUE; - } - return FALSE; -} - - - -#endif - diff -r e41c934ecd97 -r 83c6933e8f90 src/ui/mfw/mfw_BtipsVg.c --- a/src/ui/mfw/mfw_BtipsVg.c Tue Jan 19 05:23:24 2021 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,480 +0,0 @@ -/* ========================================================= -* 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 MFW - $File: Mfw_Btips.c - $Revision: 1.0 - $Author: Texas Instruments - $Date: 26/06/07 - -******************************************************************************** - - Description: - - This module provides the BTIPS BMG APPlication functionality. - -******************************************************************************** - $History: Mfw_Btips.c - - 26/06/07 Sasken original version - - $End - -*******************************************************************************/ - - - - -/******************************************************************************* - - Include files - -*******************************************************************************/ - -#define ENTITY_MFW -/* includes */ - -#include - -#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 - -#ifdef FF_MMI_BTIPS_APP - -#include "osapi.h" - -/* GPF Includes */ -#include "typedefs.h" -#include "vsi.h" -//#include "../p_btt.h" - -#if BT_STACK == XA_ENABLED -#include -#include -#include -#endif - -#include "btl_common.h" -#include "btl_bmg.h" -#include "debug.h" - -#include "bthal_fs.h" -#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 */ - -/* BTL inclides */ -#include "hfg.h" -#include "btl_vg.h" -#include "btl_vgi.h" -#include "Mfw_Btips.h" -#include "Mfw_BtipsBmg.h" -#include "mfw_BtipsVg.h" - -static void btips_vgCallback(const BtlVgEvent *event); - -static const BtSecurityLevel noSecurity = BSL_NO_SECURITY; -static const BtlVgAudioSourcesAction noActions = {0}; -static AtAgFeatures features = HFG_FEATURE_REJECT | HFG_FEATURE_RING_TONE; - -static BOOL closingVoiceGateway = FALSE; - -static BtlVgChannelId mfwBtipsVgChannelId = BTL_VG_CHANNEL_ID_NONE; -static BtlVgContext *mfwBtipsVgContext =0; -static int audio_on_hands_free = 0; - -/*--------------------------------------------------------------------------- - * mfw_btips_vgInit - *--------------------------------------------------------------------------- - * - * Synopsis: VG application initialization. - * - * Return: NONE. - * - */ - -void mfw_btips_vgInit ( ) -{ - if (BT_STATUS_SUCCESS != BTL_VG_Create(0, btips_vgCallback, &noSecurity, &mfwBtipsVgContext)) - { - TRACE_FUNCTION("BTL_VG_Create failed"); - } - - if (BT_STATUS_PENDING != BTL_VG_Enable(mfwBtipsVgContext, 0, &features, &noActions)) - { - TRACE_FUNCTION("BTL_VG_Enable failed"); - } -} - -BOOL mfw_btips_vgGetConnectedDevice (BD_ADDR *bdAddr, U8 *name) -{ - BtStatus status; - - TRACE_FUNCTION("mfw_btips_vgGetConnectedDevice"); - - status = BTL_VG_GetConnectedDevice (mfwBtipsVgContext, mfwBtipsVgChannelId, bdAddr); - - if (status == BT_STATUS_SUCCESS) - { - mfw_btips_bmgGetDeviceName (bdAddr, name); - return TRUE; - } - return FALSE; -} - -BOOL mfw_btips_vgIsDeviceConnected (BD_ADDR bdAddr) -{ - BtRemDevState state; - - TRACE_FUNCTION("mfw_btips_vgIsDeviceConnected"); - - if (mfwBtipsVgChannelId != BTL_VG_CHANNEL_ID_NONE) - { -#if 0 - BD_ADDR connectedDev; - BTL_VG_GetConnectedDevice (mfwBtipsVgContext, mfwBtipsVgChannelId, &connectedDev) -#endif - mfw_btips_bmgGetDeviceState (&bdAddr, &state); - if (state == BDS_CONNECTED) - { - return TRUE; - } - } - return FALSE; - -} - -BOOL mfw_btips_vgConnect (BD_ADDR bdAddr) -{ - BtStatus btStatus; - - TRACE_FUNCTION("mfw_btips_vgConnect"); - - btStatus = BTL_VG_Connect (mfwBtipsVgContext, &bdAddr, BTL_VG_AUDIO_SOURCE_MODEM); - - if (BT_STATUS_IN_USE == btStatus) - { - TRACE_FUNCTION("VG APP: An SLC to a remote device already exists"); - TRACE_FUNCTION("VG APP: Disconnect or perform handover to connect to a new device"); - } - return mfw_btips_checkStatus(btStatus); -} - -BOOL mfw_btips_vgDisconnect (BD_ADDR bdAddr) -{ - BtStatus btStatus; - - TRACE_FUNCTION("mfw_btips_vgDisconnect"); - - btStatus = BTL_VG_Disconnect (mfwBtipsVgContext, mfwBtipsVgChannelId); - return mfw_btips_checkStatus(btStatus); -} - -BOOL mfw_btips_vgTransferAudioToPhone (void) -{ - BtStatus btStatus; - - TRACE_FUNCTION("mfw_btips_vgTransferAudioToPhone"); - - if ((mfwBtipsVgChannelId != BTL_VG_CHANNEL_ID_NONE) && (audio_on_hands_free == 1)) - { - btStatus = BTL_VG_DisconnectAudio (mfwBtipsVgContext, mfwBtipsVgChannelId); - } - return mfw_btips_checkStatus(btStatus); -} - -BOOL mfw_btips_vgTransferAudioToHF (void) -{ - BtStatus btStatus; - - TRACE_FUNCTION_P1("mfw_btips_vgTransferAudioToHF audio_on_hands_free=%d", audio_on_hands_free); - - if ((mfwBtipsVgChannelId != BTL_VG_CHANNEL_ID_NONE) && (audio_on_hands_free == 0)) - { - btStatus = BTL_VG_ConnectAudio (mfwBtipsVgContext, mfwBtipsVgChannelId); - } - return mfw_btips_checkStatus(btStatus); -} - -BOOL mfw_btips_vgIsAudioOnPhone (void) -{ - - TRACE_FUNCTION("mfw_btips_vgIsAudioOnPhone"); - if (audio_on_hands_free == 0) - { - return TRUE; - } - else if (mfwBtipsVgChannelId != BTL_VG_CHANNEL_ID_NONE) - { - return FALSE; - } - else - { - return TRUE; - } -} - -BOOL mfw_btips_vgIsAudioOnHF (void) -{ - if (audio_on_hands_free == 1) - { - return TRUE; - } - else if (mfwBtipsVgChannelId != BTL_VG_CHANNEL_ID_NONE) - { - return FALSE; - } - else - { - return TRUE; - } -} - -BOOL mfw_btips_vgIsHandOverPossible (void) -{ - if (audio_on_hands_free == 1) - { - return TRUE; - } - else - { - return FALSE; - } -} - -void btips_vgCallback(const BtlVgEvent *event) -{ - T_BTIPS_MMI_IND btips_mmi_ind; - BtStatus status; - char str[MFW_VG_APP_AT_STR_LEN]; - U16 strLen; - U16 scoHandle = 0; - - TRACE_FUNCTION_P1("btips_vgCallback %d", event->type); - - btips_mmi_ind.mfwBtipsEventType = MFW_BTIPS_VG_EVENT; - - switch (event->type) - { - case BTL_VG_EVENT_SLC_REQUEST: - TRACE_EVENT("VG APP: SLC request from device:"); - break; - - case BTL_VG_EVENT_ADDITIONAL_SERVICE_CONNECT_REQ: - TRACE_EVENT("VG APP: Addtional SLC request received from device:"); - break; - - case BTL_VG_EVENT_SLC_CONNECTED: - mfwBtipsVgChannelId = event->channelId; - TRACE_EVENT("VG APP: Connection established"); - /* turn off inband ring tone */ - if (BT_STATUS_SUCCESS != BTL_VG_EnableInbandRingTone(mfwBtipsVgContext, event->channelId, FALSE)) - { - TRACE_EVENT("VG_APP: Error disabling inband ring tone after SLC established"); - } - btips_mmi_ind.data.vgBtEvent.event = MFW_BTIPS_VG_CONNECT_EVENT; - - status = BTL_VG_GetConnectedDevice (mfwBtipsVgContext, event->channelId, - &(btips_mmi_ind.data.vgBtEvent.bdAddr)); - if (status == BT_STATUS_SUCCESS) - { - mfw_btips_bmgGetDeviceName (&(btips_mmi_ind.data.vgBtEvent.bdAddr), - btips_mmi_ind.data.vgBtEvent.deviceName); - - btipsNotifyMFW (&btips_mmi_ind); - } - - break; - - case BTL_VG_EVENT_SLC_DISCONNECTED: - mfwBtipsVgChannelId = BTL_VG_CHANNEL_ID_NONE; - TRACE_EVENT("VG APP: Connection lost"); - btips_mmi_ind.data.vgBtEvent.event = MFW_BTIPS_VG_DISCONNECT_EVENT; - #ifdef FF_MMI_FMRADIO_APP - if(mfw_fmRadio_isFmOverBT()) - { - /*Inform FM module of the SLC disconnection*/ - mfw_fmRadio_listenViaBT(FALSE); - mfw_fmRadio_setFmOverBT(FALSE, 0); - } - #endif - - btipsNotifyMFW (&btips_mmi_ind); - - break; - - case BTL_VG_EVENT_HANDOVER_COMPLETED: - mfwBtipsVgChannelId = event->channelId; - TRACE_EVENT("VG APP: Handover completed"); - break; - - case BTL_VG_EVENT_AUDIO_CONNECTED: - { - HfgChannel *handsfreeChannel; - BtlVgChannel *vgChannel; - CmgrHandler cmgrHandler; - scoHandle = 0x101; - btips_mmi_ind.data.vgBtEvent.event = MFW_BTIPS_VG_AUDIO_CONNECT_EVENT; -#if 0 - vgChannel = &(event->context->channels[event->channelId]); - handsfreeChannel = &(vgChannel->c.handsfreeChannel); - cmgrHandler = handsfreeChannel->cmgrHandler; - scoHandle = cmgrHandler.scoConnect->scoHciHandle; - - TRACE_EVENT_P1("VG APP: Audio connection established, scoHandle = %x", scoHandle); -#endif - audio_on_hands_free = 1; - -#ifdef FF_MMI_FMRADIO_APP - if(mfw_fmRadio_isFmOverBT()) - { - /*Send VS commands to BRF for routing FM audio to BT headset*/ - mfw_fmRadio_setFmOverBT(TRUE, scoHandle); - } -#endif - btipsNotifyMFW (&btips_mmi_ind); - - } break; - - case BTL_VG_EVENT_AUDIO_DISCONNECTED: - TRACE_EVENT("VG APP: Audio conenction lost"); - btips_mmi_ind.data.vgBtEvent.event = MFW_BTIPS_VG_AUDIO_DISCONNECT_EVENT; - - audio_on_hands_free = 0; -#ifdef FF_MMI_FMRADIO_APP - if(mfw_fmRadio_isFmOverBT()) - { - /*Inform FM module of the SLC disconnection*/ - mfw_fmRadio_listenViaBT(FALSE); - mfw_fmRadio_setFmOverBT(FALSE, 0); - } -#endif - - btipsNotifyMFW (&btips_mmi_ind); - - break; - - case BTL_VG_EVENT_PHONE_NUMBER_REQUESTED: - TRACE_EVENT("VG APP: unsupported event: BTL_VG_EVENT_PHONE_NUMBER_REQUESTED"); - break; - - case BTL_VG_EVENT_MICROPHONE_VOLUME: - TRACE_EVENT_P1("VG APP: microphone volume: %u", event->p.volume); - break; - - case BTL_VG_EVENT_SPEAKER_VOLUME: - TRACE_EVENT_P1("VG APP: speaker volume: %u", event->p.volume); - break; - - case BTL_VG_EVENT_VOICE_RECOGNITION_STATUS: - TRACE_EVENT_P1("VG APP: voice recognition is :%s", (event->p.enabled ? "enabled" : "disabled")); - break; - -#if HFG_FEATURE_RING_TONE & HFG_SDK_FEATURES - - case BTL_VG_EVENT_INBAND_RING_STATUS: - TRACE_EVENT_P1("VG APP: inband ringing is: %s", (event->p.enabled ? "enabled" : "disabled")); - break; -#endif - - case BTL_VG_EVENT_UNRECOGNIZED_AT_COMMAND: - strLen = event->p.atCommand->commandLength; - if (strLen > MFW_VG_APP_AT_STR_LEN ) - { - TRACE_EVENT("VG APP: AT Command string is too long"); - strLen = MFW_VG_APP_AT_STR_LEN - 1; - } - OS_MemCopy((U8*)str, (const U8*) event->p.atCommand->atCommand, strLen); - str[strLen] = '\0'; - TRACE_EVENT_P1("VG APP: unrecognized AT command: %s", str); - if (BT_STATUS_SUCCESS != BTL_VG_SentAtError(event->context, event->channelId, ATCME_OP_NOT_SUPPORTED)) - { - TRACE_EVENT("VG APP: BTL_VG_SentAtError failed"); - } - break; - - case BTL_VG_EVENT_VG_CONTEXT_ENABLED: - TRACE_EVENT("VG APP: VG is enabled"); - break; - - case BTL_VG_EVENT_VG_CONTEXT_DISABLED: - TRACE_EVENT("VG APP: VG is disabled"); - if (TRUE == closingVoiceGateway) - { - BtStatus status; - - status = BTL_VG_Destroy(&mfwBtipsVgContext); - TRACE_EVENT_P1("BTL_VG_Destroy returned: %s", pBT_Status(status)); - closingVoiceGateway = FALSE; - } - break; - - default: - TRACE_EVENT_P1("VG APP: Unexpected VG event: %u", event->type); - break; - } - -} -void mfw_btips_vgCallback (T_BTIPS_MMI_IND * mmiInd) -{ - MfwBtVgEvent vgBtEvent = mmiInd->data.vgBtEvent; - - TRACE_FUNCTION_P1("mfw_btips_vgCallback: Event %d", vgBtEvent.event); - - switch (vgBtEvent.event) - { - case MFW_BTIPS_VG_CONNECT_EVENT: - #ifdef FF_MMI_FMRADIO_APP - if(mfw_fmRadio_isFmOverBT()) - { - /*Automatically create the SCO for FM Radio routing - In this case Modem Audio will not be routed to the MSCI port, hence - all GSM calls will be answered on the Phone Handset ONLY*/ - mfw_btips_vgTransferAudioToHF(); - } - #endif - mfw_btips_signal(E_BTIPS_VG_CONNECT_EVENT, mmiInd); - break; - - case MFW_BTIPS_VG_DISCONNECT_EVENT: - mfw_btips_signal(E_BTIPS_VG_DISCONNECT_EVENT, mmiInd); - break; - - case MFW_BTIPS_VG_AUDIO_CONNECT_EVENT: - mfw_btips_signal(E_BTIPS_VG_AUDIO_CONNECT_EVENT, mmiInd); - break; - - case MFW_BTIPS_VG_AUDIO_DISCONNECT_EVENT: - mfw_btips_signal(E_BTIPS_VG_AUDIO_DISCONNECT_EVENT, mmiInd); - break; - } -} - -#endif - diff -r e41c934ecd97 -r 83c6933e8f90 src/ui/mfw/mfw_BtipsVg.h --- a/src/ui/mfw/mfw_BtipsVg.h Tue Jan 19 05:23:24 2021 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -#ifndef DEF_MFW_BTIPS_VG -#define DEF_MFW_BTIPS_VG -/* ========================================================= -* 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 MFW - $File: Mfw_BtipsVg.h - $Revision: 1.0 - $Author: Texas Instruments - $Date: 26/06/07 - -******************************************************************************** - - Description: - - This module provides the BTIPS VG APPlication functionality. - -******************************************************************************** - $History: Mfw_BtipsVg.h - - 26/06/07 Sasken original version - - $End - -*******************************************************************************/ - -/* Maximum files to be displayed in the MMI */ - -#define MFW_VG_APP_AT_STR_LEN 100 - - -BOOL mfw_btips_vgConnect (BD_ADDR bdAddr); - -BOOL mfw_btips_vgDisconnect (BD_ADDR bdAddr); - -BOOL mfw_btips_vgIsDeviceConnected (BD_ADDR bdAddr); - -BOOL mfw_btips_vgTransferAudioToPhone (void); - -BOOL mfw_btips_vgTransferAudioToPhone (void); - -BOOL mfw_btips_vgIsAudioOnPhone (void); - -BOOL mfw_btips_vgIsAudioOnHF (void); - -BOOL mfw_btips_vgIsHandOverPossible (void); -BOOL mfw_btips_vgGetConnectedDevice (BD_ADDR *bdAddr, U8 *name); - -#endif - -