📄 mfw_mme.c
字号:
PURPOSE : configure signal quality information:
request from the PS an indication on change of the
rx level with n intervalls.
Parameters mode and level are not used in the moment.
*/
void mmeRxInfo (U8 intervalls, U16 level)
{
rx_DCB_Type rx_DCB;
rx_DCB.Steps = intervalls;
rx_SetConfig(&rx_DCB);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : mmeBattInfo |
+--------------------------------------------------------------------+
PURPOSE : configure battery level information
*/
void mmeBattInfo ( U8 intervalls, U16 level)
{
pwr_DCB_Type pwr_DCB;
if (level > 255) level = 255;
pwr_DCB.RangeMin = (U8) level; /* low level threshold */
pwr_DCB.RangeMax = 100; /* 100 Percent */
pwr_DCB.Steps = intervalls; /* n Steps */
pwr_SetConfig(&pwr_DCB);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : sigExec |
+--------------------------------------------------------------------+
PURPOSE : execute equipment signal
*/
static int sigExec (MfwHdr *curElem, U32 evt, U32 val)
{
MfwMme *ec;
while (curElem)
{
if (curElem->type == MfwTypMme)
{
ec = curElem->data;
if (ec->map & evt)
{ /* events match */
ec->value = val;
if (ec->handler) /* handler valid */
{
// PATCH LE 06.06.00
// store current mfw elem
current_mfw_elem = curElem;
// END PATCH LE 06.06.00
if ((*(ec->handler))(evt,ec))
return 1; /* event consumed */
}
}
}
curElem = curElem->next;
}
return 0;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : mmeSignal |
+--------------------------------------------------------------------+
PURPOSE : equipment event (called by driver/PEI)
*/
void mmeSignal (U32 evt, U32 value)
{
UBYTE temp;
//temp = dspl_Enable(0);
if (mfwSignallingMethod EQ 0)
{
if (mfwFocus)
if (sigExec(mfwFocus,evt,value))
{
// dspl_Enable(temp);
return;
}
if (mfwRoot)
sigExec(mfwRoot,evt,value);
}
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 (sigExec (h, evt, value))
{
// 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;
}
sigExec (mfwRoot, evt, value);
sigExec (mfwRoot, evt, value);
}
//dspl_Enable(temp);
return;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : mmeCommand |
+--------------------------------------------------------------------+
PURPOSE : handle mfw windows command
*/
static int mmeCommand (U32 cmd, void *h)
{
switch (cmd)
{
case MfwCmdDelete: /* delete me */
if (!h)
return 0;
mmeDelete(h);
return 1;
default:
break;
}
return 0;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : rAT_PercentSQ |
+--------------------------------------------------------------------+
PURPOSE : called by ACI on change of signal quality
*/
void rAT_PercentSQ (BYTE val)
{
TRACE_FUNCTION("rAT_PercentSQ()");
//ES!! no longer needed mmeSignal(MfwMmeSignal,val);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : rAT_PercentBC |
+--------------------------------------------------------------------+
PURPOSE : called by ACI on change of battery status
*/
void rAT_PercentBC (BYTE val)
{
TRACE_FUNCTION("rAT_PercentBC()");
//ES!! no longer needed mmeSignal(MfwMmeBattery,val);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : mmePrimHandler |
+--------------------------------------------------------------------+
PURPOSE : MME primitive handler
*/
static BOOL mmePrimHandler (USHORT opc, void *data)
{
U8 level;
U8 state;
// TRACE_FUNCTION ("mmePrimHandler()");
switch (opc)
{
case MMI_RXLEV_IND:
level = ((T_MMI_RXLEV_IND *) data)->rxlev;
mmeSignal(MfwMmeSignal,level);
return TRUE; /* processed by MME, delete */
case MMI_BATTERY_IND:
level = ((T_MMI_BATTERY_IND *) data)->volt;
state = ((T_MMI_BATTERY_IND *) data)->temp;
if (battLevel != level)
{
battLevel = level;
mmeSignal(MfwMmeBattery,level);
}
if (battState != state)
{
battState = state;
mmeSignal(MfwMmeBaState,state);
}
return TRUE; /* processed by MME, delete */
}
return FALSE; /* not processed, forward */
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : mmeFlagHandler |
+--------------------------------------------------------------------+
PURPOSE : MME driver flag handler
*/
void mmeFlagHandler (void)
{
TRACE_FUNCTION ("mmeFlagHandler()");
while (mfwMmeDrvFlag)
{
if (mfwMmeDrvFlag & MmeFlagRtcAlarm)
{
mfwMmeDrvFlag &= ~MmeFlagRtcAlarm;
mmeSignal(MfwMmeRtcAlarm,0);
}
else if (mfwMmeDrvFlag & MmeFlagHdsDetect)
{
mfwMmeDrvFlag &= ~MmeFlagHdsDetect;
mmeSignal(MfwMmeHdsDetect,hdsPresence);
}
else if (mfwMmeDrvFlag & MmeFlagIrdaMsg)
{
}
else
{
mfwMmeDrvFlag = 0;
}
}
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : pwr_callback |
+--------------------------------------------------------------------+
PURPOSE : Called by battery driver
*/
static void pwrCb (drv_SignalID_Type *signal_params)
{
pwr_Status_Type *para;
PALLOC(battery_ind, MMI_BATTERY_IND);
para = (pwr_Status_Type *) signal_params->UserData;
battery_ind->volt = para->BatteryLevel;
battery_ind->temp = para->Status;
#ifndef _INNOVATION_EMULATOR_
PSENDX(ACI,battery_ind);
#endif
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : rx_callback |
+--------------------------------------------------------------------+
PURPOSE : Called by fieldstrength driver
*/
static void rxCb (drv_SignalID_Type *signal_params)
{
rx_Status_Type *para;
PALLOC(rxlevel_ind,MMI_RXLEV_IND);
para = (rx_Status_Type *) signal_params->UserData;
rxlevel_ind->rxlev = para->actLevel;
#ifndef _INNOVATION_EMULATOR_
PSENDX(ACI,rxlevel_ind);
#endif
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : rtcCb |
+--------------------------------------------------------------------+
PURPOSE : alarm callback from RTC
*/
static void rtcCb (drv_SignalID_Type *signal_params)
{
mfwMmeDrvFlag |= MmeFlagRtcAlarm;
vsi_c_awake(VSI_CALLER_SINGLE);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_MME |
| STATE : code ROUTINE : hdsCb |
+--------------------------------------------------------------------+
PURPOSE : callback from headset detection
*/
static void hdsCb (drv_SignalID_Type *signal_params)
{
if (signal_params->SignalType == 1)
{
hdsPresence = (U16)signal_params->UserData;
mfwMmeDrvFlag |= MmeFlagHdsDetect;
vsi_c_awake(VSI_CALLER_SINGLE);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -