FreeCalypso > hg > fc-magnetite
view src/ui3/bmi/mmiBtipsOppc.c @ 460:4d4f0bba9469
doc/D-Sample written
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 19 Mar 2018 18:45:16 +0000 |
parents | e8ddbb0837ed |
children |
line wrap: on
line source
/* ========================================================= * Texas Instruments OMAP(TM) Platform Software * (c) Copyright Texas Instruments, Incorporated. All Rights Reserved. * * Use of this software is controlled by the terms and conditions found * in the license agreement under which this software has been supplied. * ========================================================== */ /* $Project name: Basic Bluetooth MMI $Project code: $Module: Bluetooth BMG APPlication $File: MmiBtipsBmg.c $Revision: 1.0 $Author: Texas Instruments $Date: 26/06/07 ******************************************************************************** Description: This module provides the BTIPS BMG APPlication functionality. ******************************************************************************** $History: MmiBtipsBmg.c 26/06/07 Sasken original version $End *******************************************************************************/ /******************************************************************************* Include files *******************************************************************************/ #define ENTITY_MFW #include <string.h> /* BTIPS Includes */ #include "me.h" #if defined (NEW_FRAME) #include "typedefs.h" #include "vsi.h" #include "pei.h" #include "custom.h" #include "gsm.h" #include "prim.h" #else #include "STDDEFS.H" #include "custom.h" #include "gsm.h" #include "vsi.h" #endif #include "mfw_mfw.h" #include "mfw_win.h" #include "mfw_icn.h" /* included for mfw_mnu.h */ #include "mfw_mnu.h" #include "mfw_tim.h" #include "mfw_kbd.h" #include "mfw_sat.h" /* included for MmiDummy.h, included for MmiMenu.h */ #include "MmiBlkLangDB.h" #include "mmiColours.h" #include "MmiDialogs.h" #include "MmiDummy.h" /* included for MmiMenu.h */ #include "MmiLists.h" #include "MmiMenu.h" #include "MmiSoftKeys.h" #include "AUIEditor.h" #include "MmiMain.h" #include "Mmiicons.h" #include "MmiWindow.h" #include "MmiCall.h" #include "mmiBookShared.h" #include "mmiBtips.h" #include "mfw_btips.h" #include "mmiBtipsOppc.h" #include "mfw_BtipsOppc.h" #include "mfw_BtipsBmg.h" #ifdef FF_MMI_BTIPS_APP #endif /*Function Declarations*/ #define OPPC_MAX_FILES 10 int oppc_files_count; char* oppc_file_names[OPPC_MAX_FILES]; #define OPPC_INFO_SCRN_TIMEOUT 1500//Timeout for InfoDialog char push_file_name[256]; char pull_file_name[256]; int mmi_btips_oppcDeviceSearchCallback(BD_ADDR bdAddr); int mmi_btips_oppcPullDeviceSearchCallback(BD_ADDR bdAddr); int mmi_btips_oppcExchangeDeviceSearchCallback(BD_ADDR bdAddr); int mmi_btips_oppcPullHandler(MfwMnu* m, MfwMnuItem* i) { TRACE_FUNCTION("mmi_btips_oppcPullHandler"); mmi_btips_oppcDeviceSearchWnd(1); } int mmi_btips_oppcExchangeHandler(MfwMnu* m, MfwMnuItem* i) { TRACE_FUNCTION("mmi_btips_oppcExchangeHandler"); mmi_btips_oppcDeviceSearchWnd(2); } int mmi_btips_oppcHandler(MfwMnu* m, MfwMnuItem* i) { T_MFW_HND win; T_MFW_HND parent_win = mfw_parent(mfw_header()); int numFiles=0; TRACE_FUNCTION ("mmi_btips_oppcHandler"); oppc_files_count = OPPC_MAX_FILES; oppc_files_count=mfw_btips_oppcPopulateFiles(oppc_file_names,OPPC_MAX_FILES, BT_DEMO_FOLDER_PATH); TRACE_FUNCTION_P1("oppc_files_count - %d", oppc_files_count); numFiles = mfw_btips_oppcGetNumFiles(); mmi_btips_oppcShowInfoDlg(0, TxtMidiFileNotLoaded, TxtNull, NULL); TRACE_EVENT_P1("mmi_btips_oppcHandler: numFiles is %d",numFiles); if(numFiles <= 0) { mmi_btips_oppcShowInfoDlg(0, TxtMidiFileNotLoaded, TxtNull, NULL); } else { win = mmi_btips_oppcBuildMenu(parent_win); if (win NEQ NULL) { SEND_EVENT (win, BTIPS_OPPC_LIST_INIT, 0, 0); } } return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: mmi_btips_oppcBuildMenu $Description: To hold list window $Returns: Window handle $Arguments: *******************************************************************************/ static T_MFW_HND mmi_btips_oppcBuildMenu( MfwHnd parent_window) { T_MMI_Btips_Oppc_Win_data * data = (T_MMI_Btips_Oppc_Win_data *)mfwAlloc(sizeof (T_MMI_Btips_Oppc_Win_data)); T_MFW_WIN * win; TRACE_FUNCTION ("mmi_btips_oppcBuildMenu"); /* * Create window handler */ data->win = win_create (parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)mmi_btips_oppcListWinCb); if (data->win EQ NULL) { return NULL; } TRACE_EVENT("list holder window created: " ); /* * connect the dialog data to the MFW-window */ data->mmi_control.dialog = (T_DIALOG_FUNC)mmi_btips_oppcListWinExecCb; data->mmi_control.data = data; win = ((T_MFW_HDR *)data->win)->data; win->user = (void *)data; data->parent = parent_window; winShow(data->win); /* * return window handle */ return data->win; } /******************************************************************************* $Function: mmi_btips_oppcListWinCb $Description: Window event handler $Returns: MFW_EVENT_REJECTED: MFW_EVENT_CONSUMED: $Arguments: *******************************************************************************/ static int mmi_btips_oppcListWinCb (MfwEvt e, MfwWin *w) { TRACE_FUNCTION ("mmi_btips_oppcListWinCb()"); switch (e) { case MfwWinVisible: /* window is visible */ break; case MfwWinFocussed: /* input focus / selected */ case MfwWinDelete: /* window will be deleted */ default: return MFW_EVENT_REJECTED; } return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: mmi_btips_oppcListWinExecCb $Description: Call back function $Returns: none $Arguments: *******************************************************************************/ void mmi_btips_oppcListWinExecCb (T_MFW_HND win, USHORT event, SHORT value, void * parameter) { T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data; T_MMI_Btips_Oppc_Win_data * data = (T_MMI_Btips_Oppc_Win_data *)win_data->user; int max_file_number; int i; ListWinInfo * mnu_data = (ListWinInfo *)parameter; TRACE_FUNCTION ("mmi_btips_oppcListWinExecCb()"); switch (event) { T_MFW OppcListCreationStatus; case BTIPS_OPPC_LIST_INIT: { TRACE_EVENT("mmi_btips_oppcListWinExecCb() Event:E_INIT"); /* initialization of administrative data */ data->menu_list_data = (ListMenuData *)ALLOC_MEMORY(sizeof(ListMenuData)); if(data->menu_list_data == 0) { TRACE_EVENT("Failed memory alloc 1 "); return; } max_file_number = mfw_btips_oppcGetNumFiles(); //In case no files have been loaded display info message //In case no files have been loaded return info message if(max_file_number == 0) { return; } data->menu_list_data->List = (T_MFW_MNU_ITEM *)ALLOC_MEMORY( max_file_number * sizeof(T_MFW_MNU_ITEM) ); if(data->menu_list_data->List == 0) { TRACE_EVENT("Failed memory alloc 2"); return; } for (i = 0; i < max_file_number ; i++) { mnuInitDataItem(&data->menu_list_data->List[i]); data->menu_list_data->List[i].flagFunc = item_flag_none; //Display the OPPC file names in the list data->menu_list_data->List[i].str = (char *)mfw_btips_oppcGetFileName(data->oppc_file_count++); } data->menu_list_data->ListLength =max_file_number; data->menu_list_data->ListPosition = 1; data->menu_list_data->CursorPosition = 1; data->menu_list_data->SnapshotSize = max_file_number; data->menu_list_data->Font = 0; data->menu_list_data->LeftSoftKey = TxtSoftSelect; data->menu_list_data->RightSoftKey = TxtSoftBack; data->menu_list_data->KeyEvents = KEY_ALL; data->menu_list_data->Reason = 0; data->menu_list_data->Strings = TRUE; data->menu_list_data->Attr = (MfwMnuAttr*)&BtipsOppcList_Attrib; data->menu_list_data->Attr->hdrId = TxtPlayerSelectFile; data->menu_list_data->autoDestroy = FALSE; OppcListCreationStatus = listDisplayListMenu (win, data->menu_list_data, (ListCbFunc)mmi_btips_oppcListMenuCb,0); if (LISTS_OK == OppcListCreationStatus) { #if 0 /*If control reached this point then List of files are showed on display*/ isMidiListON = TRUE; /*Create one timer and play the file only if that timer expires*/ /*Play the first file if user hasn't pressed the up and down for half a second */ mfw_player_currently_playing_idx = 0; midiBrowseTimer = timCreate( 0, TIME_HALFSECOND, (MfwCb)midi_test_play_browsing); timStart( midiBrowseTimer ); #endif } } break; default: break; } } /******************************************************************************* $Function: midi_mt_menu_list_listmnu_cb $Description: destroy lists and menu in case of back softkey or menu exit $Returns: $Arguments: *******************************************************************************/ static void mmi_btips_oppcListMenuCb(T_MFW_HND Parent, ListMenuData * ListData) { T_MFW_WIN *win_data = ((T_MFW_HDR *)Parent)->data; T_MMI_Btips_Oppc_Win_data *data = (T_MMI_Btips_Oppc_Win_data *)win_data->user; char* szSelectedFileExt; T_MFW_HND parent_win = mfw_parent(mfw_header()); TRACE_FUNCTION ("mmi_btips_oppcListMenuCb()"); if ((ListData->Reason EQ LISTS_REASON_BACK) || (ListData->Reason EQ LISTS_REASON_CLEAR) || (ListData->Reason EQ LISTS_REASON_HANGUP)) { /* ** Destroy the window --- Not sure if this is required! ... leave it out for now */ listsDestroy(ListData->win); /* ** Free the memory set aside for ALL the devices to be listed. */ if (data->menu_list_data != NULL) { FREE_MEMORY ((void *)data->menu_list_data->List, (U16)(data->oppc_num_file * sizeof (T_MFW_MNU_ITEM))); FREE_MEMORY ((void *)data->menu_list_data, sizeof (ListMenuData)); } mmi_btips_oppcListMenuDestroy(data->win); #if 0 // June 19, 2006 REF: DRT OMAPS00076378 x0012849 /*At this point the MIDI list is destroyed*/ isMidiListON = FALSE; /* At this point the play need to be stopped. If user wants the file need to be played while going across menu then 'play' or 'play all' need to be selected */ midi_stop_player (NULL, NULL); if (midiBrowseTimer != NULL) { // Delete the timer. It's not required any more. timDelete (midiBrowseTimer); } #endif } else if(ListData->Reason EQ LISTS_REASON_SELECT) { strcpy(push_file_name, OPPC_DEFAULT_PUSH_PULL_DIR); //strcat(push_file_name, ListData->List->str); strcat(push_file_name, ListData->List[ListData->ListPosition].str); mmi_btips_oppcDeviceSearchWnd(0); #if 0 szSelectedFileExt = mfw_btips_oppcGetExtension(mfw_btips_oppcGetFileName(ListData->CursorPosition)); //This was for the Options menu //data->oppc_optionsMenu=(T_MFW_HND)bookMenuStart( parent_win, btipsOppcOptionsMenuAttributes(), 0); if ( (strcmp(szSelectedFileExt, "mp3") == 0)) { mmi_btips_oppcDeviceSearchWnd(); } else if ( (strcmp(szSelectedFileExt, "pcm") == 0)) { mmi_btips_oppcDeviceSearchWnd(); } else if ( (strcmp(szSelectedFileExt, "wav") == 0)) { mmi_btips_oppcDeviceSearchWnd(); } else { //It should never come here } #endif #if 0 TRACE_EVENT_P1("list position is %d",ListData->ListPosition); mt_menu_data.mt_list_idx = ListData->ListPosition; //call mfw to save selected index mfw_player_save_selected_file_idx(mt_menu_data.mt_list_idx); //display a "file selected" text here mmi_midi_test_show_info(0, TxtMidiFileSelected, TxtNull, NULL); #endif } return; } /******************************************************************************* $Function: mmi_btips_oppcListMenuDestroy $Description: destroy menu window $Returns: $Arguments: window to be destroyed *******************************************************************************/ static void mmi_btips_oppcListMenuDestroy(MfwHnd window) { T_MFW_WIN * win_data = ((T_MFW_HDR *)window)->data; T_MMI_Btips_Oppc_Win_data * data = (T_MMI_Btips_Oppc_Win_data *)win_data->user; TRACE_FUNCTION ("mmi_btips_oppcListMenuDestroy"); if (window == NULL) { return; } if (data) { win_delete(data->win); /* ** Free Memory */ mfwFree((void *)data, sizeof (T_MMI_Btips_Oppc_Win_data)); } } /******************************************************************************* $Function: mmi_btips_oppcShowInfoDlg $Description: Display the Dialog $Returns: $Arguments: *******************************************************************************/ static MfwHnd mmi_btips_oppcShowInfoDlg(T_MFW_HND parent, int str1, int str2, T_VOID_FUNC callback) { T_DISPLAY_DATA display_info; TRACE_FUNCTION ("mmi_btips_oppcShowInfoDlg()"); /* ** Create a timed dialog to display the Message "Failed" */ dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, str1, str2, COLOUR_STATUS); dlg_initDisplayData_events( &display_info, callback, OPPC_INFO_SCRN_TIMEOUT, KEY_LEFT | KEY_CLEAR | KEY_HUP); return info_dialog(parent, &display_info); } int mmi_btips_oppcDeviceSearchWnd(int type) { T_MFW_HND parent_win = mfwParent(mfw_header()); //mmi_btips_bmg_devices_win_create(parent_win, BTIPS_GENERIC_DEVICE_SEARCH, NULL); switch (type) { case 0: mmi_btips_bmg_devices_win_create(parent_win, BTIPS_OPP_DEVICE_SEARCH, mmi_btips_oppcDeviceSearchCallback); break; case 1: mmi_btips_bmg_devices_win_create(parent_win, BTIPS_OPP_DEVICE_SEARCH, mmi_btips_oppcPullDeviceSearchCallback); break; case 2: mmi_btips_bmg_devices_win_create(parent_win, BTIPS_OPP_DEVICE_SEARCH, mmi_btips_oppcExchangeDeviceSearchCallback); break; } return MFW_EVENT_CONSUMED; } int mmi_btips_oppcDeviceSearchCallback(BD_ADDR bdAddr) { static char szDevName[128]; mfw_btips_bmgGetDeviceName(&bdAddr, szDevName); TRACE_FUNCTION_P1("mmi_btips_oppcDeviceSearchCallback with Dev Name %s", szDevName); mmi_btips_app_show_text(0, szDevName, "Selected Device",NULL); //mmi_btips_app_show_text(0, szBdAddr, TxtNull, NULL); //OPPCA_Connect(&bdAddr); mfw_btips_oppcEncapsulatePush(push_file_name, &bdAddr); return MFW_EVENT_CONSUMED; } int mmi_btips_oppcPullDeviceSearchCallback(BD_ADDR bdAddr) { static char szDevName[128]; mfw_btips_bmgGetDeviceName(&bdAddr, szDevName); TRACE_FUNCTION_P1("mmi_btips_oppcDeviceSearchCallback with Dev Name %s", szDevName); mmi_btips_app_show_text(0, szDevName, "Selected Device",NULL); //mmi_btips_app_show_text(0, szBdAddr, TxtNull, NULL); //OPPCA_Connect(&bdAddr); strcpy(pull_file_name, OPPC_DEFAULT_PUSH_PULL_DIR); strcat(pull_file_name, szDevName); strcat(pull_file_name, OPPC_VCF_EXT); mfw_btips_oppcEncapsulatePull(pull_file_name, &bdAddr); return MFW_EVENT_CONSUMED; } int mmi_btips_oppcExchangeDeviceSearchCallback(BD_ADDR bdAddr) { static char szDevName[128]; mfw_btips_bmgGetDeviceName(&bdAddr, szDevName); TRACE_FUNCTION_P1("mmi_btips_oppcDeviceSearchCallback with Dev Name %s", szDevName); mmi_btips_app_show_text(0, szDevName, "Selected Device",NULL); //mmi_btips_app_show_text(0, szBdAddr, TxtNull, NULL); //OPPCA_Connect(&bdAddr); strcpy(push_file_name, OPPC_DEFAULT_PUSH_CARD); strcpy(pull_file_name, OPPC_DEFAULT_PUSH_PULL_DIR); strcat(pull_file_name, szDevName); strcat(pull_file_name, OPPC_VCF_EXT); mfw_btips_oppcEncapsulateExchange(push_file_name, pull_file_name, &bdAddr); return MFW_EVENT_CONSUMED; }