FreeCalypso > hg > fc-magnetite
view src/aci2/bmi/mmiLists.c @ 638:cab2f315827e
FFS dev.c: added Spansion PL032J to the "generic" table
With the discovery of first GTM900 and then Tango, it now appears that
Openmoko was not the only manuf after all who kept TI's TCS211 firmware
largely intact (as opposed to changing it beyond all recognition like
Compal, Chi-Mei and BenQ did), thus we are now getting new "alien" targets
on which we reuse the original manuf's FFS with IMEI and RF calibration
tables as if it were native. On these targets we use the original
device table for FFS, even though we previously thought that it would
never apply to any target other than dsample, leonardo and gtamodem.
We have previously added Samsung K5L33xxCAM (a new kind of multi-ID device)
to the generic table to support its use in Huawei GTM900-B modules; now
we got news that some slightly older GTM900-B specimen used S71PL032J
instead, so we are now adding PL032J as well.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 30 Jan 2020 17:45:48 +0000 |
parents | 3c2acfa1a72f |
children |
line wrap: on
line source
/******************************************************************************* CONDAT (UK) ******************************************************************************** This software product is the property of Condat (UK) Ltd and may not be disclosed to any third party without the express permission of the owner. ******************************************************************************** $Project name: Basic MMI $Project code: BMI (6349) $Module: MMI $File: MmiLists.c $Revision: 1.0 $Author: Condat(UK) $Date: 22/02/01 ******************************************************************************** Description: ******************************************************************************** $History: MmiLists.c xrashmic 5 Oct, 2005 MMI-SPR-29356, MMI-SPR-29357 Using the MenuSelect Key for requesting the help info in STK menu. Storing the info that MenuSelectKey was pressed in a list view. May 24, 2005 REF: CRR 29358 x0021334 Description: CT_PTCRB 27.22.4.9.8 fails: wrong terminal response Fix: The implementation is now based on timer. After the specified timeout period the control comes back to SAT main menu, if there is no selection done by the user. 25/10/00 Original Condat(UK) BMI version. $End *******************************************************************************/ #define ENTITY_MFW /* includes */ #include <string.h> #include <stdio.h> #include <stdlib.h> #if defined (NEW_FRAME) #include "typedefs.h" #include "vsi.h" #include "pei.h" #include "custom.h" #include "gsm.h" #else #include "STDDEFS.H" #include "custom.h" #include "gsm.h" #include "vsi.h" #endif #include "pconst.cdg" #include "mconst.cdg" #include "message.h" #include "ccdapi.h" #include "prim.h" #include "cus_aci.h" #include "cnf_aci.h" #include "mon_aci.h" #include "tok.h" #include "prim.h" #ifndef PCM_2_FFS #include "pcm.h" #endif #include "mfw_sys.h" #include "mfw_mfw.h" #include "mfw_win.h" #include "mfw_kbd.h" #include "mfw_lng.h" /* SPR#1428 - SH - New Editor changes */ #ifndef NEW_EDITOR #include "mfw_edt.h" #endif #include "mfw_icn.h" #include "mfw_mnu.h" #include "mfw_tim.h" #include "mfw_sim.h" #include "mfw_cm.h" #include "mfw_nm.h" #include "mfw_phb.h" #include "mfw_mme.h" #include "mfw_sat.h" #include "mfw_sms.h" #include "dspl.h" #include "ksd.h" #include "psa.h" #include "MmiMain.h" #include "MmiBookController.h" #include "MmiDummy.h" #include "MmiDialogs.h" #include "MmiLists.h" #include "MmiMenu.h" #include "mmiCall.h" #include "Mmiicons.h" #include "MmiIdle.h" #include "MmiSoftKeys.h" #include "MmiSounds.h" #include "MmiIdle.h" #include "MmiNetwork.h" #include "mmiSat_i.h" #include "MmiAoc.h" #include "gdi.h" #include "audio.h" #include "cus_aci.h" #include "mfw_ffs.h" #include "MmiTimers.h" #include "mmiColours.h" #ifndef MFW_EVENT_PASSED #define MFW_EVENT_PASSED 0 #endif extern MfwRect menuArea; /* menus display area */ extern BOOL getMelodyListStatus(void); typedef enum { E_INIT, E_BACK, E_RETURN, E_ABORT, E_EXIT } e_lists_events; /*----------------------------------------------------------------------------- * * List menu handling functions: * *-----------------------------------------------------------------------------*/ // ADDED BY RAVI - 28-11-2005 EXTERN UBYTE mnuDCSType (MfwHnd m, UBYTE listLanguageType); EXTERN BOOL getScrollStatus(void); // END RAVI - 28-11-2005 static int listsKeyEvent(MfwEvt event, MfwKbd *keyboard); static int listsWinEvent(MfwEvt e, MfwWin *w); static int listsListCbMenu(MfwEvt EventCode, MfwMnu *MenuHandle); static void lists_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter); /******************************************************************************* $Function: listDisplayListMenu $Description: Creates a list menu from data stored in NVRAM. $Returns: none. $Arguments: *******************************************************************************/ T_MFW listDisplayListMenu (MfwHnd Parent, ListMenuData *Data, ListCbFunc cbFunc,int inUnicode) { // UBYTE i; // RAVI - Not Used. MfwWin * win; MfwHnd winLists; T_MFW Status = LISTS_OK; TRACE_FUNCTION ("listDisplayListMenu()"); winLists = winCreate(Parent, 0, E_WIN_VISIBLE, (MfwCb)listsWinEvent); if (winLists == NULL) { Status = LISTS_FAIL; /* Inform caller of failure. */ TRACE_EVENT ("win creation fails"); } else { ListWinInfo * ListData = (ListWinInfo *)ALLOC_MEMORY (sizeof (ListWinInfo)); if (!ListData) { /* cq12719. if insufficient memory for listdata then delete window and Free allocated memory.16-03-04.MZ */ if(NULL != winLists) winDelete(winLists); TRACE_EVENT ("(ListWinInfo *)ALLOC_MEMORY fails"); return LISTS_FAIL; } ListData->mmi_control.dialog = (T_DIALOG_FUNC)lists_exec_cb; ListData->mmi_control.data = ListData; win = ((MfwHdr *)winLists)->data; win->user = (void *) ListData; ListData->Parent = Parent; ListData->Callback = cbFunc; ListData->winLists = winLists; ListData->kbdLists = kbdCreate(winLists,Data->KeyEvents|KEY_MAKE, (MfwCb)listsKeyEvent); ListData->kbdLists_long = kbdCreate(winLists,Data->KeyEvents|KEY_LONG,(MfwCb)listsKeyEvent); if ((ListData->kbdLists == NULL) || (ListData->kbdLists_long == NULL)) { Status = LISTS_FAIL; TRACE_EVENT ("ListData->kbdLists fails"); } else { /* Create initial list menu for display. */ /* * set menu list from outside */ ListData->MenuListsAttr = *Data->Attr; /* copy contents */ /* SPR#2492 - DS - Do not overwrite mode settings unless mode is zero */ if (ListData->MenuListsAttr.mode == 0x0000) /* Mode not yet setup */ ListData->MenuListsAttr.mode = MNU_LEFT | MNU_LIST | MNU_CUR_LINE; else ListData->MenuListsAttr.mode |= Data->Attr->mode; ListData->MenuListsAttr.font = Data->Font; ListData->MenuListsAttr.items = Data->List; ListData->MenuListsAttr.nItems = Data->ListLength; /* * Intialize List Menu Data */ ListData->MenuData = *Data; /* copy contents */ ListData->MenuData.listCol = COLOUR_LIST_XX; //Set-up colour ListData->MenuData.Attr = &ListData->MenuListsAttr; /* copy data*/ ListData->MenuLists = mnuCreate(winLists, &ListData->MenuListsAttr, E_MNU_SELECT | E_MNU_ESCAPE, (MfwCb)listsListCbMenu); ListData->MenuData.win = winLists; Data->win = winLists; mnuScrollMode(ListData->MenuLists,1); if (Data->Strings) mnuLang (ListData->MenuLists,0); else mnuLang (ListData->MenuLists,mainMmiLng); /* SPR#1983 - SH - Set up whether menu is in unicode or not */ if (inUnicode != 0) { mnuDCSType(ListData->MenuLists, inUnicode); /* Unicode display */ } mnuChooseVisibleItem(ListData->MenuLists, Data->ListPosition-1); mnuUnhide(ListData->MenuLists); TRACE_EVENT ("mmiList winShow()"); winShow(winLists); } } return Status; } /******************************************************************************* $Function: listsKeyEvent $Description: Keyboard event handler $Returns: none. $Arguments: *******************************************************************************/ static int listsKeyEvent (MfwEvt e, MfwKbd *k) /* list keyboard event handler */ { T_MFW_HND win = mfwParent(mfw_header()); T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; ListWinInfo * data = (ListWinInfo *)win_data->user; MfwMnu *MenuHandle; TRACE_FUNCTION("listsKeyEvent()"); //xrashmic 5 Oct, 2005 MMI-SPR-29356, MMI-SPR-29357 //Initialize selectKey to FALSE here. It will be set to TRUE only when a key event for KCD_MNUSELECT occurs. data->MenuData.selectKey = FALSE; if (!(e & KEY_MAKE)) { return MFW_EVENT_CONSUMED; } if (e & KEY_LONG) { switch (k->code) { case KCD_HUP: /* back to previous menu */ mnuEscape(data->MenuLists); break; case KCD_RIGHT: /* Power Down */ return MFW_EVENT_PASSED; /* handled by idle */ default: /* no response to all other keys */ return MFW_EVENT_CONSUMED; } } else { switch (k->code) { case KCD_MNUUP: /* highlight previous entry */ mnuUp(data->MenuLists); //GW Not needed? winShow(win); // Only required in melody list selection. if(getMelodyListStatus()== TRUE) { MenuHandle = mfwControl(data->MenuLists); data->MenuData.Reason = LISTS_REASON_SCROLL; data->MenuData.CursorPosition = MenuHandle->lCursor[MenuHandle->level]; data->MenuData.ListPosition = MenuHandle->lCursor[MenuHandle->level]; SEND_EVENT(data->Parent,E_START_MELODY,0,(void*)data); } // May 24, 2005 REF: CRR 29358 x0021334 // Description: CT_PTCRB 27.22.4.9.8 fails: wrong terminal response // Required when user scrolls list items. Depeneding on this, the timer needs // to be restarted for another 20 seconds. if(getScrollStatus() == TRUE) { // Send event to indicate that the user has scrolled list items SEND_EVENT(data->Parent, LISTS_REASON_SCROLL, 0, NULL); } break; case KCD_MNUDOWN: /* highlight next entry */ mnuDown(data->MenuLists); //GW Not needed? winShow(win); if(getMelodyListStatus() == TRUE) { MenuHandle = mfwControl(data->MenuLists); data->MenuData.Reason = LISTS_REASON_SCROLL; data->MenuData.CursorPosition = MenuHandle->lCursor[MenuHandle->level]; data->MenuData.ListPosition = MenuHandle->lCursor[MenuHandle->level]; SEND_EVENT(data->Parent,E_START_MELODY,0,(void*)data); } // May 24, 2005 REF: CRR 29358 x0021334 // Description: CT_PTCRB 27.22.4.9.8 fails: wrong terminal response // Required when user scrolls list items. Depeneding on this, the timer needs // to be restarted for another 20 seconds. if(getScrollStatus() == TRUE) { // Send event to indicate that the user has scrolled list items SEND_EVENT(data->Parent, LISTS_REASON_SCROLL, 0, NULL); } break; case KCD_MNUSELECT: //xrashmic 5 Oct, 2005 MMI-SPR-29356, MMI-SPR-29357 //Menu Select Key was pressed, storing this for future use. data->MenuData.selectKey = TRUE; //Break is delibrately not used here. The control should pass through the KCD_LEFT case. case KCD_LEFT: /* activate this entry */ mnuSelect(data->MenuLists); MenuHandle = mfwControl(data->MenuLists); if ((MenuHandle != NULL) && // Marcus: Issue 1810: 12/03/2003 (MenuHandle->curAttr != NULL) && winIsFocussed(win)) { softKeys_displayId( TxtSoftSelect, TxtSoftBack, 0, MenuHandle->curAttr->mnuColour); } break; case KCD_CALL: /* press send key */ data->ExitReason = LISTS_REASON_SEND; data->MenuData.Reason = LISTS_REASON_SEND; MenuHandle = mfwControl(data->MenuLists); data->MenuData.CursorPosition = MenuHandle->lCursor[MenuHandle->level]; data->MenuData.ListPosition = MenuHandle->lCursor[MenuHandle->level]; /* True cursor position in list menu. */ /* SPR998 - SH - check if callback exists before calling it! */ if (data->Callback) data->Callback(data->Parent, &data->MenuData); if (data->MenuData.autoDestroy) { winDelete (win); FREE_MEMORY ((void*)data, sizeof (ListWinInfo)); } break; case KCD_HUP: /* back to previous menu */ data->ExitReason = LISTS_REASON_HANGUP; data->MenuData.Reason = LISTS_REASON_HANGUP; /*NM, p023 */ MenuHandle = mfwControl(data->MenuLists); data->MenuData.CursorPosition = MenuHandle->lCursor[MenuHandle->level]; data->MenuData.ListPosition = MenuHandle->lCursor[MenuHandle->level]; /* True cursor position in list menu. */ /*NM, p023 end */ data->Callback(data->Parent, &data->MenuData); if (data->MenuData.autoDestroy) { winDelete (win); FREE_MEMORY ((void*)data, sizeof (ListWinInfo)); } break; case KCD_RIGHT: /* back to previous menu */ mnuEscape(data->MenuLists); break; default: /* no response to all other keys */ return MFW_EVENT_CONSUMED; } } TRACE_FUNCTION("listsKeyEvent()-end"); return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: listsWinEvent $Description: window event handler $Returns: none. $Arguments: *******************************************************************************/ static int listsWinEvent(MfwEvt e, MfwWin *w) { ListWinInfo * ListData = (ListWinInfo *)w->user; TRACE_FUNCTION("listsWinEvent()"); switch (e) { case E_WIN_VISIBLE: if (w->flags & E_WIN_VISIBLE) { dspl_ClearAll(); softKeys_displayId(ListData->MenuData.LeftSoftKey, ListData->MenuData.RightSoftKey, 0, ListData->MenuListsAttr.mnuColour ); } #ifdef FF_MMI_RINGTONE SEND_EVENT(ListData->Parent,E_VISIBLE_MELODY,0,(void*)ListData); #endif break; #ifdef FF_MMI_RINGTONE case MfwWinSuspend: SEND_EVENT(ListData->Parent,E_SUSPEND_MELODY,0,(void*)ListData); break; #endif default: return MFW_EVENT_PASSED; // break; // RAVI } return MFW_EVENT_CONSUMED; } static void lists_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter) { T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data; ListWinInfo * ListData = (ListWinInfo *)win_data->user; T_MFW_HND * l_parent; SHORT l_id; TRACE_FUNCTION ("lists_exec_cb()"); switch (event) { case E_INIT: case E_BACK: case E_RETURN: case E_ABORT: case E_EXIT: /* defaultreaction */ l_parent = ListData->Parent; l_id = ListData->id; winDelete (win); FREE_MEMORY ((void*) ListData, sizeof (ListWinInfo)); SEND_EVENT (l_parent, event, l_id, NULL); /* forward event to parent */ break; default: return; } } /******************************************************************************* $Function: listsListCbMenu $Description: List menu handler. (mfw callback function) $Returns: none. $Arguments: *******************************************************************************/ int listsListCbMenu(MfwEvt EventCode, MfwMnu *MenuHandle) { int Status = LISTS_OK; T_MFW_HND win = mfw_parent (mfw_header()); T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; ListWinInfo* ListData = (ListWinInfo *)win_data->user; TRACE_FUNCTION("listsCbMenu()"); switch (EventCode) { case E_MNU_SELECT: ListData->ExitReason = E_MNU_SELECT; ListData->MenuData.Reason = LISTS_REASON_SELECT;// MZ 14/2/01 E_MNU_SELECT; ListData->MenuData.CursorPosition = MenuHandle->lCursor[MenuHandle->level]; ListData->MenuData.ListPosition = MenuHandle->lCursor[MenuHandle->level]; /* True cursor position in list menu. */ /* SPR998 - SH - check if callback exists before calling it! */ if (ListData->Callback) ListData->Callback(ListData->Parent, &ListData->MenuData); break; case E_MNU_ESCAPE: ListData->ExitReason = LISTS_REASON_BACK; ListData->MenuData.Reason = LISTS_REASON_BACK; /*NM, p023*/ ListData->MenuData.CursorPosition = MenuHandle->lCursor[MenuHandle->level]; ListData->MenuData.ListPosition = MenuHandle->lCursor[MenuHandle->level]; /* True cursor position in list menu. */ /*NM, p023*/ /* SPR998 - SH - check if callback exists before calling it! */ if (ListData->Callback) ListData->Callback(ListData->Parent, &ListData->MenuData); break; default: Status = LISTS_FAIL; TRACE_EVENT("Activation 77 error"); break; } /* * Free all allocated memory and handler */ if (ListData->MenuData.autoDestroy) { winDelete (win); FREE_MEMORY ((void*) ListData, sizeof (ListWinInfo)); } return Status; } void listsDestroy(T_MFW_HND win) { T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data; ListWinInfo * ListData = (ListWinInfo *)win_data->user; winDelete (win); FREE_MEMORY ((void*) ListData, sizeof (ListWinInfo)); }