📄 mfw_gprs.c
字号:
/*
* ACI call
*/
if (sAT_PlusCGEREP(CMD_SRC_LCL, mode, bfr) == AT_FAIL)
return MFW_RES_ERR;
/*
* change event reporting data in MFW GPRS data
*/
eventRep = (T_MFW_GPRS_EVENTREP *) mfwAlloc(sizeof(T_MFW_GPRS_EVENTREP));
eventRep->mode = mode;
eventRep->bfr = bfr;
gprs_signal(E_MFW_GPRS_S_EREP, eventRep);
return MFW_RES_OK;
}
/*
+----------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_GPRS |
| STATE : code ROUTINE: gprs_setServiceSMS |
+----------------------------------------------------------------------+
PURPOSE : The function specifies the service or service preference
to be used for SMS.
PARAMETERS :
n : service to use for SMS ( 0 - GPRS, 1 - circuit switch,
2 - GPRS preferred, 3 circuit switch preferred)
*/
T_MFW_RES gprs_setServiceSMS(T_CGSMS_SERVICE service)
{
TRACE_FUNCTION ("gprs_setServiceSMS()");
/*
* ACI call
*/
if (sAT_PlusCGSMS(CMD_SRC_LCL, service) == AT_FAIL)
return MFW_RES_ERR;
/*
* change SMS service data in MFW GPRS data
*/
gprs_signal(E_MFW_GPRS_S_SMSSERV, &service);
return MFW_RES_OK;
}
/*
+----------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_GPRS |
| STATE : code ROUTINE: gprs_getServiceSMS |
+----------------------------------------------------------------------+
PURPOSE : This function returns the service preference to be used for SMS.
PARAMETERS :
n : service to use for SMS ( 0 - GPRS, 1 - circuit switch,
2 - GPRS preferred, 3 circuit switch preferred)
*/
T_CGSMS_SERVICE gprs_getServiceSMS(void)
{
T_CGSMS_SERVICE service;
if (qAT_PlusCGSMS(CMD_SRC_LCL, &service) != AT_FAIL )
return service;
else
TRACE_EVENT("MFW_GPRS: Error. qAT_PlusCGCLASS failed");
return CGSMS_SERVICE_INVALID;
}
/*
+----------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_GPRS |
| STATE : code ROUTINE: gprs_counter |
+----------------------------------------------------------------------+
PURPOSE : SPR#1450 - SH
Resets the data counter if reset_counter is TRUE.
In either case, response returned in rAT_PercentSNCNT below.
*/
T_MFW_RES gprs_counter(BOOL reset_counter)
{
T_ACI_RETURN result;
TRACE_FUNCTION("gprs_counter");
result = sAT_PercentSNCNT(CMD_SRC_LCL, reset_counter);
if (result!=AT_EXCT && result!=AT_CMPL)
return MFW_RES_ERR;
if (result==AT_CMPL)
return MfwResDone; /* No response expected */
return MFW_RES_OK;
}
/*
+---------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_GPRS |
| STATE : code ROUTINE: gprs_counter_abort |
+---------------------------------------------------------------------+
PURPOSE : Cancel request for data count
SPR#1983 - SH - Added.
PARAMETERS : None.
*/
T_MFW_RES gprs_counter_abort(void)
{
T_ACI_RETURN result;
result = sAT_Abort(CMD_SRC_LCL, AT_CMD_SNCNT);
if (result==AT_FAIL)
return MFW_RES_ERR;
return MFW_RES_OK;
}
/*
+----------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_GPRS |
| STATE : code ROUTINE: gprs_status |
+----------------------------------------------------------------------+
PURPOSE : Returns the GPRS status value
*/
T_CGREG_STAT gprs_status()
{
T_ACI_RETURN result;
T_CGREG_STAT status = 0;
USHORT lac, ci;
TRACE_FUNCTION("gprs_status");
if (qAT_PlusCGREG(CMD_SRC_LCL, &status, &lac, &ci) == AT_FAIL )
{
TRACE_EVENT("MFW_GPRS: Error. qAT_PlusCGREG failed");
}
return status;
}
/*--------------------------------------------------------------------
ACI callback functions
--------------------------------------------------------------------*/
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_GPRS |
| STATE : code ROUTINE: rAT_PlusCGACT |
+--------------------------------------------------------------------+
PURPOSE : The function rAt_PlusCGACT informs the application about
the link identifier for the data transfer.
( ACI callback funtion )
PARAMETERS :
link_id: Link identifier
*/
void rAT_PlusCGACT ( SHORT link_id )
{
TRACE_FUNCTION ("rAT_PlusCGACT()");
/*
* send event and link id to the current mfw element
*/
gprs_signal(E_MFW_GPRS_R_ACT, &link_id);
}
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_GPRS |
| STATE : code ROUTINE: rAT_PlusCGDATA |
+--------------------------------------------------------------------+
PURPOSE : The function rAt_PlusCGDATA informs the application about
the link identifier for the data transfer after
activation/deactivation (without connect).
( ACI callback funtion )
PARAMETERS :
link_id: Link identifier
*/
void rAT_PlusCGDATA ( SHORT link_id )
{
TRACE_FUNCTION ("rAT_PlusCGDATA()");
/*
* send event and link id to the current mfw element
*/
gprs_signal(E_MFW_GPRS_R_DATA, &link_id);
}
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_GPRS |
| STATE : code ROUTINE: rAT_PlusCGANS |
+--------------------------------------------------------------------+
PURPOSE : The function rAt_PlusCGANS informs the application about
the link identifier for the data transfer. It is a
manual reponse to a network request for PDP context
activation (after request by +CRING or RING).
( ACI callback funtion )
PARAMETERS :
link_id: Link identifier
*/
void rAT_PlusCGANS ( SHORT link_id )
{
TRACE_FUNCTION ("rAT_PlusCGANS()");
/*
* send event and link id to the current mfw element
*/
gprs_signal(E_MFW_GPRS_R_ANS, &link_id);
}
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_GPRS |
| STATE : code ROUTINE: rAT_PlusCGEREP |
+--------------------------------------------------------------------+
PURPOSE : The function rAt_PlusCGEREP informs the application about
GPRS events connect.
( ACI callback funtion )
PARAMETERS :
event : GPRS event
param : event parameter
*/
void rAT_PlusCGEREP ( T_CGEREP_EVENT event,
T_CGEREP_EVENT_REP_PARAM *param )
{
char msg[30];
T_CGATT_STATE state;
TRACE_FUNCTION ("rAT_PlusCGEREP()");
TRACE_EVENT_P1("GPRS eventrep: %d", (short)event);
/*
* send event and data to the current mfw element
* SPR#2243 - SH - Use appropriate union fields in each gprs_signal.
*/
switch ( event )
{
case CGEREP_EVENT_REJECT:
gprs_signal(E_MFW_GPRS_R_EREP_RJ, ¶m->reject);
break;
case CGEREP_EVENT_NW_DETACH:
case CGEREP_EVENT_ME_DETACH:
state = CGATT_STATE_DETACHED;
gprs_signal(E_MFW_GPRS_R_EREP_ATT, &state);
break;
case CGEREP_EVENT_NW_REACT:
gprs_signal(E_MFW_GPRS_R_EREP_ACT, ¶m->act);
break;
case CGEREP_EVENT_NW_DEACT:
case CGEREP_EVENT_ME_DEACT:
gprs_signal(E_MFW_GPRS_R_EREP_DEACT, ¶m->act);
break;
case CGEREP_EVENT_NW_CLASS:
case CGEREP_EVENT_ME_CLASS:
gprs_signal(E_MFW_GPRS_R_EREP_CLASS, ¶m->mobile_class);
break;
}
}
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_GPRS |
| STATE : code ROUTINE: rAT_PlusCGREG |
+--------------------------------------------------------------------+
PURPOSE : The function rAt_PlusCGREG informs the application about
the GPRS registration status and location information.
( ACI callback funtion )
PARAMETERS :
stat : indicates the current registration
lac : two byte location area code
ci : two byte cell ID
*/
void rAT_PlusCGREG ( T_CGREG_STAT stat,
USHORT lac,
USHORT ci )
{
T_MFW_GPRS_CELL_STRUCT cell;
TRACE_FUNCTION ("rAT_PlusCGREG()");
#ifndef WIN32
TRACE_EVENT_P3("GPRS regState: %d, lac %X, ci %X", (short)stat, lac, ci);
#endif
/*
* send signal for changed registry state to current
* MFW element
*/
cell.stat = stat;
cell.lac = lac;
cell.ci = ci;
gprs_signal(E_MFW_GPRS_R_REG, &cell);
}
/*
+--------------------------------------------------------------------+
| PROJECT : GPRS (8441) MODULE : GACI_RET |
| STATE : code ROUTINE : rAT_PercentCGREG |
+--------------------------------------------------------------------+
PURPOSE : handles rAT_PercentCGREG call back
*/
GLOBAL void rAT_PercentCGREG ( T_P_CGREG_STAT stat, USHORT lac, USHORT ci )
{
T_MFW_GPRS_CELL_STRUCT_P cell;
TRACE_FUNCTION ("rAT_PercentCGREG()");
#ifndef WIN32
TRACE_EVENT_P3("GPRS regState: %d, lac %X, ci %X", (short)stat, lac, ci);
#endif
/*
* send signal for changed registry state to current
* MFW element
*/
cell.stat = stat;
cell.lac = lac;
cell.ci = ci;
gprs_signal(E_MFW_GPRS_R_REG, &cell);
}
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_GPRS |
| STATE : code ROUTINE: rAT_changedQOS |
+--------------------------------------------------------------------+
PURPOSE : The function rAt_changedQOS informs the application about
changes for the Quality of Service Profiles.
( ACI callback funtion )
PARAMETERS :
cid :
*qos :
*/
void rAT_changedQOS ( SHORT cid,
T_QOS *qos )
{
T_MFW_GPRS_CONTEXT *cntxt;
TRACE_FUNCTION ("rAT_changedQOS()");
/*
* send signal for changed quality of service profile to current
* MFW element
*/
cntxt = (T_MFW_GPRS_CONTEXT *) mfwAlloc(sizeof(T_MFW_GPRS_CONTEXT));
cntxt->id = cid;
memcpy (&(cntxt->data.qos), qos, sizeof (T_QOS));
gprs_signal(E_MFW_GPRS_R_QOS, cntxt);
}
/*
+--------------------------------------------------------------------+
| PROJECT : GPRS (8441) MODULE : MFW_GPRS |
| STATE : code ROUTINE : rAT_PercentSNCNT |
+--------------------------------------------------------------------+
PURPOSE : handles rAT_PercentSNCNT call back
*/
GLOBAL void rAT_PercentSNCNT ( UBYTE c_id,
ULONG octets_uplink,
ULONG octets_downlink,
ULONG packets_uplink,
ULONG packets_downlink )
{
T_MFW_GPRS_COUNTER counter;
TRACE_FUNCTION("rAT_PercentSNCNT()");
counter.octets_uplink = octets_uplink;
counter.octets_downlink = octets_downlink;
counter.packets_uplink = packets_uplink;
counter.packets_downlink = packets_downlink;
gprs_signal(E_MFW_GPRS_COUNTER, &counter);
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -