📄 mfw_mme.c
字号:
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) $Workfile:: mfw_mme.c $|
| $Author: root $ CONDAT GmbH $Revision: 1.1.1.1 $|
| CREATED: 11.02.99 $Modtime:: 3.03.00 17:40 $|
| STATE : code |
+--------------------------------------------------------------------+
MODULE : MFW_MME
PURPOSE : Miscelleaneous Mobile Equipment functions
EXPORT :
TO DO :
$History:: mfw_mme.c $
*
* ***************** Version 5 *****************
* User: Kk Date: 3.03.00 Time: 17:52
* Updated in $/GSM/Condat/MS/SRC/MFW
*
* ***************** Version 4 *****************
* User: Es Date: 2.03.00 Time: 16:48
* Updated in $/GSM/Condat/MS/SRC/MFW
* generate battery/signal primitives with more info from driver
* callbacks. Catch the primitives on reception and call MMI event
* handler. Don't use ACI any longer for this purpose.
*
* ***************** Version 3 *****************
* User: Es Date: 14.04.99 Time: 17:34
* Updated in $/GSM/DEV/MS/SRC/MFW
* moved to CST
|
| ***************** Version 2 *****************
| User: Le Date: 14.04.99 Time: 9:51
| Updated in $/GSM/DEV/MS/SRC/MFW
*
* ***************** Version 1 *****************
* User: Es Date: 20.02.99 Time: 11:54
* Created in $/GSM/DEV/MS/SRC/MFW
* mobile equipment
*/
#define ENTITY_MFW
#include <stdio.h>
#if defined (NEW_FRAME)
#include "typedefs.h"
#include "vsi.h"
#include "custom.h"
#include "gsm.h"
#else
#include "stddefs.h"
#include "custom.h"
#include "gsm.h"
#include "vsi.h"
#endif
#include "mfw_mfw.h"
#include "mfw_sys.h"
#include "prim.h"
#include "message.h"
#include "prim.h"
#include "aci_cmh.h"
#include "gdi.h"
#include "audio.h"
#include "pwr.h"
#include "rx.h"
#include "light.h"
#include "mfw_acie.h"
#include "mfw_mme.h"
#include "mfw_win.h"
#define hCommPL _ENTITY_PREFIXED(hCommPL)
#define hCommACI _ENTITY_PREFIXED(hCommACI)
#if defined (NEW_FRAME)
EXTERN T_HANDLE hCommPL;
EXTERN T_HANDLE hCommACI;
#else
EXTERN T_VSI_CHANDLE hCommPL;
EXTERN T_VSI_CHANDLE hCommACI;
#endif
EXTERN MfwHdr * current_mfw_elem;
/* FLAG DRIVER CALLBACKS */
#define MmeFlagRtcAlarm 1 /* rtc alarm */
#define MmeFlagHdsDetect 2 /* headset detection */
#define MmeFlagIrdaMsg 4 /* IRDA event */
U16 mfwMmeDrvFlag = 0; /* hold driver CB flags */
static U8 battLevel = 0; /* battery level */
static U8 battState = 0; /* state of power supply */
static U16 hdsPresence = 0; /* headset presence */
static U16 irdaMsg = 0; /* IRDA message */
static int mmeCommand (U32 cmd, void *h);
/* driver callbacks */
static void pwrCb (drv_SignalID_Type *signal_params);
static void rxCb (drv_SignalID_Type *signal_params);
static void rtcCb (drv_SignalID_Type *signal_params);
static BOOL mmePrimHandler (USHORT opc, void *data);
static int pSlot; /* primitive handler slot */
static void hdsCb (drv_SignalID_Type *signal_params);
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : mmeInit |
+--------------------------------------------------------------------+
PURPOSE : initialize equipment handler
*/
MfwRes mmeInit (void)
{
int i;
mfwCommand[MfwTypMme] = (MfwCb) mmeCommand;
mfwMmeDrvFlag = 0;
battLevel = 0;
battState = 0;
hdsPresence = 0;
irdaMsg = 0;
pwr_Init(pwrCb); //power driver
rx_Init(rxCb); //fieldstrength driver
light_Init(); //light emitting driver
audio_Init(hdsCb); //audio driver
mmeBattInfo ( 10, 0);
mmeRxInfo(5,0);
/* install prim handler */
pSlot = aci_create((T_PRIM_HANDLER)mmePrimHandler,NULL);
return MfwResOk;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : mmeExit |
+--------------------------------------------------------------------+
PURPOSE : finalize equipment handler
*/
MfwRes mmeExit (void)
{
aci_delete(pSlot); /* remove prim handler */
mfwCommand[MfwTypMme] = 0;
return MfwResOk;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : mmeCreate |
+--------------------------------------------------------------------+
PURPOSE : create equipment control
*/
MfwHnd mmeCreate (MfwHnd w, MfwEvt e, MfwCb f)
{
MfwHdr *hdr = (MfwHdr *) mfwAlloc(sizeof(MfwHdr));
MfwMme *mme = (MfwMme *) mfwAlloc(sizeof(MfwMme));
MfwHdr *insert_status =0;
if (!hdr || !mme)
{
TRACE_ERROR("ERROR: mmeCreate() Mem Alloc Failed.");
if(hdr)
mfwFree((U8*)hdr,sizeof(MfwHdr));
if(mme)
mfwFree((U8*)mme,sizeof(MfwMme));
return 0;
}
mme->map = e;
mme->handler = f;
mme->value = 0;
hdr->data = mme;
hdr->type = MfwTypMme;
insert_status = mfwInsert(w,hdr);
if(!insert_status)
{
TRACE_ERROR("ERROR: mmeCreate() Failed to Install Handler. ");
mfwFree((U8*)hdr,sizeof(MfwHdr));
mfwFree((U8*)mme ,sizeof(MfwMme));
return 0;
}
return insert_status;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : mmeDelete |
+--------------------------------------------------------------------+
PURPOSE : delete equipment control
*/
MfwRes mmeDelete (MfwHnd h)
{
MfwRes res;
if (!h)
return MfwResIllHnd;
res = (mfwRemove(h)) ? MfwResOk : MfwResIllHnd;
mfwFree(((MfwHdr *) h)->data,sizeof(MfwMme));
mfwFree(h,sizeof(MfwHdr));
return res;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : mmeHdsInit |
+--------------------------------------------------------------------+
PURPOSE : init the Headset detection and setup callback handler
*/
MfwRes mmeHdsInit (void (*hds_init) ())
{
mfwMmeDrvFlag &= ~MmeFlagHdsDetect;
return 1;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : mmeRtcInit |
+--------------------------------------------------------------------+
PURPOSE : init the RTC and setup the alarm callback handler
extern UBYTE clk_Init (USHORT, drv_SignalCB_Type, UBYTE*);
*/
MfwRes mmeRtcInit (USHORT drvHandle, UBYTE *info)
{
mfwMmeDrvFlag &= ~MmeFlagRtcAlarm;
}
static int mme_backlightStatus[BL_LAST_OPTION];
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : mme_setBacklightIdle |
+--------------------------------------------------------------------+
PURPOSE : called when an event may change the backlight level/status
*/
void mme_backlightEvent(int event)
{
int light;
if ((event >=BL_INIT) && (event <BL_LAST_OPTION))
{
light = mme_backlightStatus[event];
if (light == BL_SET_IDLE)
{
light_setBacklightIdle();
}
else if (light == BL_NO_CHANGE)
{
//No change
}
else if ((light >=BL_NO_LIGHT) && (light <=BL_MAX_LIGHT))
{
mmeBackLight ((U8)light);
}
}
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : mme_setBacklightIdle |
+--------------------------------------------------------------------+
PURPOSE : called to initialise backlight events
*/
void mme_setBacklightEvent(int event, int lightLevel)
{
if ((event >=BL_INIT) && (event <BL_LAST_OPTION))
{
mme_backlightStatus[event] = lightLevel;
}
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : mmeBackLight |
+--------------------------------------------------------------------+
PURPOSE : set display backlight
*/
void mmeBackLight (U8 level)
{
light_SetStatus(LIGHT_DEVICE_BACKLIGHT,level);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : mmeAudioTone |
+--------------------------------------------------------------------+
PURPOSE : configure the buzzer
*/
void mmeAudioTone (U8 callTone, U8 volume, U8 toneStat)
{
if (toneStat EQ TONE_SWT_OFF)
audio_StopSoundbyID(AUDIO_SPEAKER,callTone);
else
audio_PlaySoundID(AUDIO_SPEAKER,callTone,volume,toneStat);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : mmeSetVolume |
+--------------------------------------------------------------------+
PURPOSE : configure mic and speaker volume
*/
MfwRes mmeSetVolume (U16 audioIn, U16 audioOut)
{
if (audioIn > 255) audioIn = 255;
if (audioOut > 255) audioOut = 255;
audio_SetAmplf(AUDIO_MICROPHONE,(U8) audioIn);
audio_SetAmplf(AUDIO_SPEAKER,(U8) audioOut);
return MfwResOk;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : mmeRxInfo |
+--------------------------------------------------------------------+
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -