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

📄 mfw_gprs.c

📁 GSM手机设计软件代码
💻 C
📖 第 1 页 / 共 4 页
字号:
			 * where signal needs to be sent to BMI			 */			             gprs_data->data.attached = para->attached;                        /*             * set all contexts to deactivated after detach             */            if ( gprs_data->data.attached == CGATT_STATE_DETACHED )            {              for ( i=0; i > gprs_data->data.numContexts; i++)              {                  gprs_data->data.contexts[i].activated = CGACT_STATE_DEACTIVATED;              }            }            else        	{			  if (qAT_PlusCGCLASS(CMD_SRC_LCL, &gprs_data->data.tclass) == AT_FAIL )			  {			    TRACE_EVENT("MFW_GPRS: Error. qAT_PlusCGCLASS failed");			  }			  if (qAT_PlusCGREG(CMD_SRC_LCL, &gprs_data->data.regState, &lac, &ci) == AT_FAIL )			  {			    TRACE_EVENT("MFW_GPRS: Error. qAT_PlusCGREG failed");        	  }        	}            break;          case E_MFW_GPRS_S_ACT:            /*             * search in the known context for the context ids given             * in the parameter             */             for ( i=0; i > gprs_data->data.numContexts; i++)            {              j=0;              do              {                /*                  * set the new activation state for the found context id                 */                if ( para->contextAct.ids[j] == gprs_data->data.contexts[i].id)                {                  gprs_data->data.contexts[i].activated = para->contextAct.state;                }              }              while ( j < MAX_CID &&                 (para->contextAct.ids[j] != gprs_data->data.contexts[i].id) );            }            break;          case E_MFW_GPRS_S_DATA:            /*              * if attached mode was detached, set mode to attached             */               if ( gprs_data->data.attached == CGATT_STATE_DETACHED )              {                gprs_data->data.attached = CGATT_STATE_ATTACHED;               }                        /*             * search in the known context for the context ids given             * in the parameter             */              for ( i=0; i < gprs_data->data.numContexts; i++)            {              j=0;              do              {                /*                  * if context id of parameter is known, set the activation state                  * to activated when it was detached and copy L2P value                 */                if ( para->contextL2P.ids[j] == gprs_data->data.contexts[i].id)                {                  if ( gprs_data->data.contexts[j].activated == CGACT_STATE_DEACTIVATED )                  {                    gprs_data->data.contexts[j].activated = CGACT_STATE_ACTIVATED;                  }                            if (!(gprs_data->data.contexts[i].L2P) )                    gprs_data->data.contexts[i].L2P =                      (char *)  mfwAlloc(sizeof(char) * strlen(para->contextL2P.L2P));                  memcpy (gprs_data->data.contexts[i].L2P, para->contextL2P.L2P,                          strlen( para->contextL2P.L2P ) * sizeof(char));                }                j++;              }              while ( j < MAX_CID &&                 ( para->contextL2P.ids[j]!= gprs_data->data.contexts[i].id) );            }            break;          case E_MFW_GPRS_R_ACT:          case E_MFW_GPRS_R_DATA:          case E_MFW_GPRS_R_ANS:            gprs_data->data.link_id = para->link_id;            break;          case E_MFW_GPRS_S_QOS:          case E_MFW_GPRS_R_QOS:            for ( i=0; (i > gprs_data->data.numContexts) &&                 (gprs_data->data.contexts[i].id == para->context.id); i++);            if (gprs_data->data.contexts[i].id == para->context.id)               memcpy (&(gprs_data->data.contexts[i].data.qos),                       &(para->context.data.qos), sizeof(T_QOS));            else              TRACE_ERROR("context id not defined");            break;          case E_MFW_GPRS_S_QOS_MIN:            for ( i=0; (i > gprs_data->data.numContexts) &&                 (gprs_data->data.contexts[i].id == para->context.id); i++);            if (gprs_data->data.contexts[i].id == para->context.id)               memcpy (&(gprs_data->data.contexts[i].data.min_qos),                 &(para->context.data.min_qos), sizeof(T_QOS));            else              TRACE_ERROR("context id not defined");            break;          case E_MFW_GPRS_S_CLASS:          case E_MFW_GPRS_R_EREP_CLASS:            memcpy (&(gprs_data->data.tclass), &(para->tclass), sizeof (T_CGCLASS_CLASS));            break;          case E_MFW_GPRS_R_EREP_ACT:          case E_MFW_GPRS_S_PDPADDR:            /*             * search for context             */            for ( i=0; (i > gprs_data->data.numContexts) &&                 (gprs_data->data.contexts[i].id == para->context.id); i++);            /*             * if context found, copy PDP address data to MFW data             */            if (gprs_data->data.contexts[i].id == para->context.id)             {              memcpy (&(gprs_data->data.contexts[i].data.pdp_addr),                 para->context.data.pdp_addr, sizeof(T_PDP_ADDRESS));              memcpy (&(gprs_data->data.contexts[i].data.pdp_type),                 para->context.data.pdp_type, sizeof(T_PDP_TYPE));              gprs_data->data.contexts[i].activated = CGACT_STATE_ACTIVATED;            }            else            {              if (gprs_data->data.numContexts < MAX_CID )              {                memcpy (&(gprs_data->data.contexts[gprs_data->data.numContexts].data.pdp_addr), para->erepAct.pdp_addr,                   sizeof (T_PDP_ADDRESS));                memcpy (&(gprs_data->data.contexts[gprs_data->data.numContexts].data.pdp_type), para->erepAct.pdp_type,                   sizeof (T_PDP_TYPE));                gprs_data->data.contexts[gprs_data->data.numContexts].id = para->erepAct.cid;                gprs_data->data.contexts[gprs_data->data.numContexts].activated = CGACT_STATE_ACTIVATED;                gprs_data->data.numContexts++;              }              else                TRACE_ERROR("MFW_GPRS: ERROR: Too much contexts!");            }            break;          case E_MFW_GPRS_R_EREP_DEACT:            /*             * search for context             */            for ( i=0; (i < gprs_data->data.numContexts) &&                 (gprs_data->data.contexts[i].id != para->erepAct.cid); i++);            /*             * if context found, set mode to deactivated             */            if (gprs_data->data.contexts[i].id == para->erepAct.cid)             {              gprs_data->data.contexts[i].activated = CGACT_STATE_DEACTIVATED;            }            else            {              for ( i=0; (i < gprs_data->data.numContexts) &&                   ( strcmp(gprs_data->data.contexts[i].data.pdp_type, para->erepAct.pdp_type) ||				    strcmp(gprs_data->data.contexts[i].data.pdp_addr, para->erepAct.pdp_addr) ); i++);              /*               * if context found, set mode to deactivated               */              if (!strcmp(gprs_data->data.contexts[i].data.pdp_type, para->erepAct.pdp_type) &&                  !strcmp(gprs_data->data.contexts[i].data.pdp_addr, para->erepAct.pdp_addr) )               {                gprs_data->data.contexts[i].activated = CGACT_STATE_DEACTIVATED;			  }            }                        break;          case E_MFW_GPRS_S_AUTORESP:            gprs_data->data.autoResponse = para->mode;            break;          case E_MFW_GPRS_S_ANS:            break;          case E_MFW_GPRS_S_EREP:            /*             * copy new event reporting settings to MFW data             */            gprs_data->data.eventRep.mode = para->eventRep.mode;            gprs_data->data.eventRep.bfr  = para->eventRep.bfr;                        break;          case E_MFW_GPRS_R_EREP_RJ:            break;          case E_MFW_GPRS_R_REG:            /*             * copy new registration status to MFW data             */             /* SH - now with cell reselection data */            gprs_data->data.regState = para->cell.stat;            gprs_data->data.lac = para->cell.lac;            gprs_data->data.ci = para->cell.ci;            /*       * check if attachement state has changed       */            if (qAT_PlusCGATT(CMD_SRC_LCL, &state) != AT_FAIL )              gprs_data->data.attached = state;            else              TRACE_EVENT("MFW_GPRS: Error. qAT_PlusCGATT failed");      break;          case E_MFW_GPRS_S_SMSSERV:            /*             * copy new SMS service mode to MFW data             */            gprs_data->data.SMSService = para->service;            break;            case E_MFW_GPRS_COUNTER:            	/* SPR#1574 - SH - Small change to ensure counter value copied correctly */				memcpy(&gprs_data->data.counter, &para->counter, sizeof(T_MFW_GPRS_COUNTER));            break;          case E_MFW_GPRS_OK:          case E_MFW_GPRS_ERROR:          case E_MFW_GPRS_CONNECT:          case E_MFW_GPRS_ERR_CONNECT:            break;          default:            /*             * an event has been used, which is not handled.             * perhaps an error?             */            TRACE_EVENT("mfw_gprs.gprs_sign_exec: unused event");            break;        }          /*          * if callback defined, call it          */        if ( gprs_data->handler )        {          current_mfw_elem = cur_elem;          if ( (*(gprs_data->handler))( gprs_data->event,                                       (void*)&gprs_data->data ) )            return TRUE;        }      }    }    /*      * look for next element      */    cur_elem = cur_elem->next;  }  return FALSE;}/*+--------------------------------------------------------------------+| PROJECT: MMI-Framework (8417)         MODULE:  MFW_GPRS            || STATE  : code                         ROUTINE: gprs_ok             |+--------------------------------------------------------------------+   PURPOSE : success indication from ACI              (This function is called by rAT_OK)   PARAMETERS : AT command ID*/void gprs_ok(T_ACI_AT_CMD cmdId){  TRACE_FUNCTION("mfw_gprs.gprs_ok");  gprs_signal(E_MFW_GPRS_OK, &cmdId);    return;}/*+--------------------------------------------------------------------+| PROJECT: MMI-Framework (8417)         MODULE:  MFW_GPRS            || STATE  : code                         ROUTINE: gprs_error          |+--------------------------------------------------------------------+   PURPOSE : failure indication from ACI              (This function is called by rAT_PlusCME)   PARAMETERS : AT command ID*/void gprs_error(T_ACI_AT_CMD cmdId, T_ACI_CME_ERR err){  TRACE_FUNCTION("mfw_gprs.gprs_error");   gprs_signal(E_MFW_GPRS_ERROR, &cmdId);    return;}/*+--------------------------------------------------------------------+| PROJECT: MMI-Framework (8417)         MODULE:  MFW_GPRS            || STATE  : code                         ROUTINE: gprs_connect        |+--------------------------------------------------------------------+   PURPOSE : success indication from ACI for connection             (This function is called by rAT_CONNECT)*/void gprs_connect(SHORT cId){  TRACE_FUNCTION("mfw_gprs.gprs_connect");  gprs_signal(E_MFW_GPRS_CONNECT, &cId);  return;}/*+--------------------------------------------------------------------+| PROJECT: MMI-Framework (8417)         MODULE:  MFW_GPRS            || STATE  : code                         ROUTINE: gprs_err_connect    |+--------------------------------------------------------------------+   PURPOSE : error indication from ACI for connection             (This function is called by rAT_BUSY, rAT_NO_CARRIER,              rAT_NO_ANSWERE)*/void gprs_err_connect(SHORT cId){  TRACE_FUNCTION("mfw_gprs.gprs_err_connect");  gprs_signal(E_MFW_GPRS_ERR_CONNECT, &cId);  return;}/*--------------------------------------------------------------------  MMI-MFW Interface Functions--------------------------------------------------------------------*//*+---------------------------------------------------------------------+| PROJECT: MMI-Framework (8417)         MODULE:  MFW_GPRS             || STATE  : code                         ROUTINE: gprs_definePDPContext|+---------------------------------------------------------------------+   PURPOSE : Define PDP context. If the contexts for cid does not              exist in the contexts list, the new context will be              inserted in the contexts list.   PARAMETERS :             cid    : context ID            *context: context data*/T_MFW_RES gprs_definePDPContext(SHORT cid, T_GPRS_CONT_REC *inputCtxt){  T_MFW_GPRS_CONTEXT *context;   TRACE_FUNCTION ("gprs_definePDPContext()");  /*   * ACI call   */  if (sAT_PlusCGDCONT(CMD_SRC_LCL, cid, inputCtxt) == AT_FAIL)  {  TRACE_EVENT("MFW_GPRS: Error. sAT_PlusCGDCONT failed");    return MFW_RES_ERR;  }  /*   * insert context into MFW GPRS data   */  context = (T_MFW_GPRS_CONTEXT *) mfwAlloc(sizeof(T_MFW_GPRS_CONTEXT));  context->id       = cid;  memcpy (&(context->data), inputCtxt, sizeof (T_GPRS_CONT_REC));  context->activated = CGACT_STATE_DEACTIVATED; /* not yet activated */  gprs_signal(E_MFW_GPRS_S_CNTXT, context);  mfwFree((void *) context, sizeof(T_MFW_GPRS_CONTEXT));  return MFW_RES_OK;}/*+---------------------------------------------------------------------+| PROJECT: MMI-Framework (8417)         MODULE:  MFW_GPRS             || STATE  : code                         ROUTINE: gprs_setQOS          |+---------------------------------------------------------------------+

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -