📄 mfw_em.c
字号:
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) $Workfile:: mfw_em.c $|
| $Author: chenlang $ CONDAT UK $Revision: 1.2 $|
| CREATED: 23.09.02 $|
| STATE : code |
+--------------------------------------------------------------------+
MODULE : MFW_EM
PURPOSE : Engineering Mode functions
*/
/*
********************************Include Files**********************************************
**/
#define ENTITY_MFW
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#if defined (NEW_FRAME)
#include "typedefs.h"
#include "vsi.h"
#include "pei.h"
#include "custom.h"
#include "gsm.h"
#else
#include "stddefs.h"
#include "custom.h"
#include "gsm.h"
#include "vsi.h"
#endif
#include "pcm.h"
#include "ffs.h"
#include "message.h"
#include "prim.h"
#include "aci_cmh.h"
#if defined (FAX_AND_DATA)
#include "aci_fd.h"
#endif
#ifdef GPRS
#include "gprs.h"
#endif
#include "dti_conn_mng.h"
#include "phb.h"
#include "psa.h"
#include "cmh.h"
#include "cmh_phb.h"
#include "psa.h"
#include "psa_sim.h"
#include "cus_aci.h"
#include "cmh_mm.h"
#include "cmh_sim.h"
#include "aci_em.h"
#include "Mfw_em.h"
#include "Mfw_win.h"
#define ASCII_OFFSET 0x30 /*SPR 1554*/
/*
********************************Internal data types**********************************************
**/
typedef union
{
MFW_EM_Mobile_Info MobileInfo;
MFW_EM_Serving_Cell_Parameters SCInfo;
MFW_EM_Neighbour_Cell_Parameters NCInfo;
MFW_EM_Location_Parameters LocInfo;
MFW_EM_Ciph_hop_DTX_Parameters CHDTXInfo;
MFW_EM_GPRS_Parameter GPRSInfo;
}
T_MFW_EM_PARA;
typedef struct
{
T_MFW_EVENT emask; /* events of interest */
T_MFW_EVENT event; /* current event */
T_MFW_CB handler;
T_MFW_EM_PARA para;
} T_MFW_EM;
/*
********************************Global variables**********************************************
**/
MFW_EM_Data* MfwEmData= NULL;
EXTERN MfwHdr *current_mfw_elem;
/*
********************************Prototypes**********************************************
**/
int Mfw_em_sign_exec(T_MFW_HDR * hdr, T_MFW_EVENT event,T_MFW_EM_PARA *para);
void Mfw_em_signal(MfwEvt event, void *para);
void Mfw_em_cb(T_DRV_SIGNAL_EM* signal);
static int emCommand (U32 cmd, void *h);
/**************************************Public Functions*****************************************/
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_EM |
| STATE : code ROUTINE : Mfw_em_init |
+--------------------------------------------------------------------+
PURPOSE : initialise module
*/
int Mfw_em_init()
{ TRACE_EVENT("Mfw_em_init()");
#ifndef _INNOVATION_EMULATOR_
em_Init(Mfw_em_cb, NULL); /*init EM driver*/
#endif
mfwCommand[MfwTypEm] = (MfwCb) emCommand;
return TRUE;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_EM |
| STATE : code ROUTINE : Mfw_em_create |
+--------------------------------------------------------------------+
PURPOSE : binds passed callback function to event mask
*/
MfwHnd Mfw_em_create(MfwHnd hWin, MfwEvt event, MfwCb cb_func)
{
MfwHdr *hdr;
T_MFW_EM *em_para;
TRACE_EVENT("em_create()");
hdr = (MfwHdr *) mfwAlloc(sizeof(MfwHdr));
em_para = (T_MFW_EM *) mfwAlloc(sizeof(T_MFW_EM));
if (!hdr || !em_para)
return 0;
em_para->emask = event;
em_para->handler = cb_func;
hdr->data = em_para;
hdr->type = MfwTypEm;
return mfwInsert((MfwHdr *) hWin,hdr);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_EM |
| STATE : code ROUTINE : Mfw_em_exit |
+--------------------------------------------------------------------+
PURPOSE : exit module
*/
void Mfw_em_exit()
{ TRACE_EVENT("Mfw_em_exit()");
if (MfwEmData != NULL)
mfwFree((void*)MfwEmData, sizeof(MFW_EM_Data));
#ifndef _INNOVATION_EMULATOR_
em_Exit();
#endif
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_EM |
| STATE : code ROUTINE : Mfw_em_get_data |
+--------------------------------------------------------------------+
PURPOSE : requests data from ACI EM driver
*/
int Mfw_em_get_data(MfwEmDataType type)
{
TRACE_EVENT("Mfw_em_get_data()");
//#define _EM_MMI_MFW_TEST
#ifndef _EM_MMI_MFW_TEST
/*If not already allocated, Allocate memory to store data in*/
if (MfwEmData == NULL)
if ((MfwEmData = (MFW_EM_Data*)mfwAlloc(sizeof(MFW_EM_Data))) == NULL)
return FALSE;
/*Request appropriate data from Em driver*/
switch(type)
{
case EM_MOBILE_INFO:
/*MC SPR 1554, added call to request software version and identity param*/
em_Read_Data_Parameter(EM_CLASS_MOBILE_DATA, EM_SUBCLASS_SW_VERSION, 1,Mfw_em_cb);
em_Read_Data_Parameter(EM_CLASS_MOBILE_DATA,EM_SUBCLASS_ID, 1, Mfw_em_cb);
break;
case EM_SERVING_CELL_PARAMS:
em_Read_Data_Parameter(EM_CLASS_INFRA_DATA, EM_SUBCLASS_SC, 1, Mfw_em_cb);
break;
case EM_NEIGHBOURING_CELL_PARAMS:
em_Read_Data_Parameter(EM_CLASS_INFRA_DATA, EM_SUBCLASS_NC, 1, Mfw_em_cb);
break;
case EM_LOCATION_PARAMS:
em_Read_Data_Parameter(EM_CLASS_INFRA_DATA, EM_SUBCLASS_SC, 1, Mfw_em_cb);
em_Read_Data_Parameter(EM_CLASS_INFRA_DATA, EM_SUBCLASS_LOC_PAG, 1, Mfw_em_cb);
break;
case EM_CIPH_HOP_DTX_PARAMS:
em_Read_Data_Parameter(EM_CLASS_INFRA_DATA, EM_SUBCLASS_CIPH_HOP_DTX, 1, Mfw_em_cb);
break;
case EM_GPRS_PARAMS:
em_Read_Data_Parameter(EM_CLASS_INFRA_DATA, EM_SUBCLASS_SC_GPRS, 1, Mfw_em_cb);
break;
}
return TRUE;
#endif
#ifdef _EM_MMI_MFW_TEST
/*Test harness, just returns made-up data to MMI*/
if (MfwEmData == NULL)
if ((MfwEmData = (MFW_EM_Data*)mfwAlloc(sizeof(MFW_EM_Data))) == NULL)
return FALSE;
switch(type)
{
case EM_MOBILE_INFO:
{ //MfwEmData->MobileInfo.software_version = 0x44;
strcpy(MfwEmData->MobileInfo.IMEI, "123456789ABC");
strcpy(MfwEmData->MobileInfo.IMSI, "123456789ABC");
MfwEmData->MobileInfo.TMSI = 76;
Mfw_em_signal(EM_MOBILE_INFO, (void*)&MfwEmData->MobileInfo);
}
break;
case EM_SERVING_CELL_PARAMS:
{
MfwEmData->SCInfo.arfcn= 0x44;
MfwEmData->SCInfo.RSSI= 86;
MfwEmData->SCInfo.RXQ = 67;
MfwEmData->SCInfo.RLT = 67;
Mfw_em_signal(EM_SERVING_CELL_PARAMS, (void*)&MfwEmData->SCInfo);
}
break;
case EM_NEIGHBOURING_CELL_PARAMS:
{ MfwEmData->NCInfo.NUM= 0x05;
strcpy((char*)MfwEmData->NCInfo.arfcn, "WERTYUIOPAS");
strcpy((char*)MfwEmData->NCInfo.RSSI, "12345");
Mfw_em_signal(EM_NEIGHBOURING_CELL_PARAMS, (void*)&MfwEmData->NCInfo);
}
break;
case EM_LOCATION_PARAMS:
{ strcpy((char*)MfwEmData->LocInfo.MCC, "123");
strcpy((char*)MfwEmData->LocInfo.MNC, "456");
MfwEmData->LocInfo.LAC = 12345;
// MfwEmData->LocInfo.CI = 12045; Robert.Chen removed
MfwEmData->LocInfo.LUP = 50; //Robert.Chen added
Mfw_em_signal(EM_LOCATION_PARAMS, (void*)&MfwEmData->LocInfo);
}
break;
case EM_GPRS_PARAMS:
{
// MfwEmData->GPRSInfo.ULS= 0;
// MfwEmData->GPRSInfo.DLS= 0;
// MfwEmData->GPRSInfo.coding_scheme = 0;
MfwEmData->GPRSInfo.NMO = 2; // Robert.Chen changed
Mfw_em_signal(EM_GPRS_PARAMS, (void*)&MfwEmData->GPRSInfo);
}
break;
case EM_CIPH_HOP_DTX_PARAMS:
{ MfwEmData->CHDTXInfo.ciph_status= 0;
MfwEmData->CHDTXInfo.hopping_channels= 0;
MfwEmData->CHDTXInfo.DTX_status = 1;
Mfw_em_signal(EM_CIPH_HOP_DTX_PARAMS, (void*)&MfwEmData->CHDTXInfo);
}
break;
}
return TRUE;
#endif
}
/***********************************************Private functions:********************************/
/*
+--------------------------------------------------------------------+
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -