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