⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mfw_gprs.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 4 页
字号:
  /*
   * 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, &param->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, &param->act);
      break;

    case CGEREP_EVENT_NW_DEACT:
    case CGEREP_EVENT_ME_DEACT:
      gprs_signal(E_MFW_GPRS_R_EREP_DEACT, &param->act);
      break;

    case CGEREP_EVENT_NW_CLASS:
    case CGEREP_EVENT_ME_CLASS:
      gprs_signal(E_MFW_GPRS_R_EREP_CLASS, &param->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 + -