📄 mfw_nm.c
字号:
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_NM |
| STATE : code ROUTINE : nm_ok_cops |
+--------------------------------------------------------------------+
PURPOSE : Successful selection of band
SPR919 - SH - added this function.
*/
void nm_ok_band (void)
{
TRACE_FUNCTION("nm_ok_band()");
nm_signal(E_NM_BAND, 0);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_NM |
| STATE : code ROUTINE : nm_error_cops |
+--------------------------------------------------------------------+
PURPOSE : error end of operator selection
*/
void nm_error_cops (void)
{
TRACE_FUNCTION("nm_error_cops()");
nm_search_reg_status();
reg_flag = 0;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_NM |
| STATE : code ROUTINE : nm_reg_status |
+--------------------------------------------------------------------+
PURPOSE : Check the registration status
*/
T_MFW nm_reg_status (void)
{
TRACE_FUNCTION("nm_reg_status()");
return reg_stat;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_NM |
| STATE : code ROUTINE : rAT_PlusCOPS |
+--------------------------------------------------------------------+
PURPOSE : Notify about available PLMN list
NOTE : oper_list defines as char *
Every operator (PLMN) uses 3 bytes
//SPR#0777 - DS - Added check to make sure last_ind is valid. If invalid set to 0.
// - Changed check to make last_ind equal to MAX_OPER-1 if last_ind is greater than MAX_OPER.
// - Changed <= to < in nm_copy_plmn_list for loop.
*/
void rAT_PlusCOPS (S16 last_ind, T_ACI_COPS_OPDESC *operLst)
{
int i;
char temp[80];
TRACE_FUNCTION ("rAT_PlusCOPS()");
memset(&plmn_list, 0, sizeof(T_MFW_PLMN_LIST));
if (operLst[0].status == COPS_STAT_Unknown)
{
nm_signal(E_NM_PLMN_LIST,&plmn_list);
return;
}
//TRACE
sprintf(temp, "rAT_PlusCOPS: last_ind: %d", last_ind);
TRACE_EVENT(temp);
if (last_ind > 128) //Invalid index passed in.
{
last_ind = -1;
}
else
{
if (last_ind >= MAX_OPER) //Index is larger than max number of operators.
{
last_ind = MAX_OPER-1;
}
}
//DS 27/5/2002 - changed <= to <
for (i = 0; i <= last_ind; i++) /* operLst == oper_list !! */
{
nm_copy_plmn_list(&plmn_list.plmn[i], &operLst[i]);
}
//TRACE
sprintf(temp, "rAT_PlusCOPS: Loop i val is %d", i);
TRACE_EVENT(temp);
plmn_list.count = i;
nm_signal(E_NM_PLMN_LIST,&plmn_list);
}
/*
+----------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_NM |
| STATE : code ROUTINE : nm_search_reg_status |
+----------------------------------------------------------------------+
PURPOSE : Change registration status
*/
void nm_search_reg_status(void)
{
T_ACI_NRG_RGMD regMode;
T_ACI_NRG_SVMD srvMode;
T_ACI_NRG_FRMT oprFrmt;
T_ACI_NRG_SVMD srvStat;
U8 oper[LONG_NAME];
qAT_PercentNRG(CMD_SRC_LCL,
®Mode,
&srvMode,
&oprFrmt,
&srvStat,
(char *)oper);
if (srvStat == NRG_SVMD_Limited)
{
reg_stat = MFW_LIMITED_SERVICE;
nm_signal(E_NM_LIMITED_SERVICE,NULL);
}
if (srvStat == NRG_SVMD_NoSrv)
{
reg_stat = MFW_NO_SERVICE;
nm_signal(E_NM_NO_SERVICE,NULL);
}
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_NM |
| STATE : code ROUTINE : rAT_PlusCREG |
+--------------------------------------------------------------------+
PURPOSE : Change registration status
*/
void rAT_PlusCREG (T_ACI_CREG_STAT stat,
USHORT lac,
USHORT cid)
{
T_MFW_NETWORK_STRUCT plmn_ident;
T_MFW_CELL_STRUCT cell;
T_ACI_NRG_RGMD regMode;
T_ACI_NRG_SVMD srvMode;
T_ACI_NRG_FRMT oprFrmt;
T_ACI_NRG_SVMD srvStat;
U8 oper[LONG_NAME];
TRACE_FUNCTION("rAT_PlusCREG()");
switch (stat)
{
case CREG_STAT_Reg:
case CREG_STAT_Roam:
reg_stat = MFW_FULL_SERVICE;
qAT_PercentNRG(CMD_SRC_LCL,
®Mode,
&srvMode,
&oprFrmt,
&srvStat,
(char *)oper);
#ifdef NO_ASCIIZ
sAT_PlusCOPSE(oper,(U8) oprFrmt,&plmn_ident.network_long,
&plmn_ident.network_short,
plmn_ident.network_numeric);
memcpy(plmn_ident.service_provider.data,
service_provider_name.data,
service_provider_name.len);
plmn_ident.service_provider.len = service_provider_name.len;
#else
sAT_PlusCOPSE(oper,(U8) oprFrmt,plmn_ident.network_long,
plmn_ident.network_short,
plmn_ident.network_numeric);
strcpy((char *) plmn_ident.service_provider,
(char *) service_provider_name);
#endif
plmn_ident.display_condition = display_condition & 0x01;
if (stat == CREG_STAT_Reg)
plmn_ident.roaming_indicator = 0;
if (stat == CREG_STAT_Roam)
plmn_ident.roaming_indicator = 1;
nm_signal(E_NM_FULL_SERVICE,&plmn_ident);
/* Cell ReSelection Code */
cell.ci = cid;
cell.lid = lac;
nm_signal(E_NM_CELL_SELECT,&cell);
break;
case CREG_STAT_NoSearch:
case CREG_STAT_Denied:
case CREG_STAT_NotPresent:
if (!reg_flag)
nm_search_reg_status();
break;
case CREG_STAT_Search:
if (reg_flag)
{
reg_stat = MFW_SEARCH_NETWORK;
nm_signal(E_NM_SEARCH_NETWORK,NULL);
}
else
nm_search_reg_status();
break;
default:
nm_search_reg_status();
break;
}
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_NM |
| STATE : code ROUTINE : nm_abort_avail_plmn|
+--------------------------------------------------------------------+
PURPOSE : Change registration status
*/
void nm_abort_avail_plmn(void)
{
sAT_Abort(CMD_SRC_LCL, AT_CMD_COPS);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_NM |
| STATE : code ROUTINE : nm_nitz_info_ind |
+--------------------------------------------------------------------+
PURPOSE : NITZ information indication
*/
void nm_nitz_info_ind(T_MMR_INFO_IND * mmr_info_ind)
{
UBYTE flag;
TRACE_FUNCTION("nm_nitz_info_ind()");
flag = 0;
/* copy country code and network code */
memset (net_ind.mcc, 0, SIZE_MCC);
memset (net_ind.mnc, 0, SIZE_MNC);
if (mmr_info_ind->plmn.v_plmn EQ TRUE)
{
flag = 1;
memcpy (net_ind.mcc, mmr_info_ind->plmn.mcc, SIZE_MCC);
memcpy (net_ind.mnc, mmr_info_ind->plmn.mnc, SIZE_MNC);
}
/* copy long name */
memset(&net_ind.long_name, 0, sizeof(T_MFW_NET_NAME));
if (mmr_info_ind->full_name.v_name EQ TRUE)
{
flag = 1;
net_ind.long_name.dcs = mmr_info_ind->full_name.dcs;
net_ind.long_name.add_ci = mmr_info_ind->full_name.add_ci;
net_ind.long_name.num_spare = mmr_info_ind->full_name.num_spare;
net_ind.long_name.len = MINIMUM (MMR_MAX_TEXT_LEN, mmr_info_ind->full_name.c_text);
memcpy (net_ind.long_name.data,
mmr_info_ind->full_name.text,
net_ind.long_name.len);
}
/* copy short name */
memset(&net_ind.short_name, 0, sizeof(T_MFW_NET_NAME));
if (mmr_info_ind->short_name.v_name EQ TRUE)
{
flag = 1;
net_ind.short_name.dcs = mmr_info_ind->short_name.dcs;
net_ind.short_name.add_ci = mmr_info_ind->short_name.add_ci;
net_ind.short_name.num_spare = mmr_info_ind->short_name.num_spare;
net_ind.short_name.len = MINIMUM (MMR_MAX_TEXT_LEN, mmr_info_ind->short_name.c_text);
memcpy (net_ind.short_name.data,
mmr_info_ind->short_name.text,
net_ind.short_name.len);
}
if (flag)
nm_signal(E_MFW_NET_IND, &net_ind);
flag = 0;
memset(&tim_ind, 0, sizeof(T_MFW_TIME_IND));
/* copy time */
if (mmr_info_ind->ntz.v_tz EQ TRUE AND
mmr_info_ind->time.v_time EQ TRUE )
{
flag = 1;
tim_ind.timezone = mmr_info_ind->ntz.tz;
tim_ind.year = mmr_info_ind->time.year;
tim_ind.month = mmr_info_ind->time.month;
tim_ind.day = mmr_info_ind->time.day;
tim_ind.hour = mmr_info_ind->time.hour;
tim_ind.minute = mmr_info_ind->time.minute;
tim_ind.second = mmr_info_ind->time.second;
}
else if (mmr_info_ind->ntz.v_tz EQ TRUE AND
mmr_info_ind->time.v_time NEQ TRUE )
{
flag = 1;
tim_ind.timezone = mmr_info_ind->ntz.tz;
}
if (flag)
nm_signal(E_MFW_TIME_IND, &tim_ind);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_NM |
| STATE : code ROUTINE : nmCommand |
+--------------------------------------------------------------------+
PURPOSE : handle mfw windows command
*/
static int nmCommand (U32 cmd, void *h)
{
switch (cmd)
{
case MfwCmdDelete: /* delete me */
if (!h)
return 0;
nm_delete(h);
return 1;
default:
break;
}
return 0;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_NM |
| STATE : code ROUTINE : nm_restrict_bands |
+--------------------------------------------------------------------+
PURPOSE : restrict the band usage
0: default
1: only GSM 900
2: only DCS 1800
*/
T_MFW nm_restrict_bands (U8 mode)
{
EXTERN void pl_pei_config (char *, char *);
char dummy [40];
switch (mode)
{
case 0:
pl_pei_config ( "CONFIG SET_BAND=0", dummy );
break;
case 1:
pl_pei_config ( "CONFIG SET_BAND=1", dummy );
break;
case 2:
pl_pei_config ( "CONFIG SET_BAND=2", dummy );
break;
}
return 0;
}
#ifdef NO_ASCIIZ
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_NM |
| STATE : code ROUTINE : nm_get_spn |
+--------------------------------------------------------------------+
PURPOSE : Function to give access to the service provider string
Parameters : None
Return: Service provider string
*/
void nm_get_spn (T_MFW_SP_NAME *name)
{
if (name NEQ NULL)
memcpy(name, &service_provider_name, sizeof(T_MFW_SP_NAME));
}
#else
/* PATCH PMC 000804 */
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_NM |
| STATE : code ROUTINE : nm_get_spn |
+--------------------------------------------------------------------+
PURPOSE : Function to give access to the service provider string
Parameters : None
Return: Service provider string
*/
void nm_get_spn (char *name)
{
if (name NEQ NULL)
strncpy (name, service_provider_name, LONG_NAME);
}
/* END PATCH PMC */
#endif
/*
+---------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_NM |
| STATE : code ROUTINE : nm_abort_registraion|
+---------------------------------------------------------------------+
PURPOSE : abort current registration
Parameters : None
*/
void nm_abort_registraion(void)
{
sAT_Abort(CMD_SRC_LCL, AT_CMD_NRG);
}
/* glowing,2004-06-10, import from M188A */
//-----------------------hxl added for l1tm_cust_add.c get net status -------------//
U16 get_net_status(void)
{
if((reg_stat==MFW_FULL_SERVICE)||(reg_stat==MFW_LIMITED_SERVICE))
return OK_STATUS;
else
return ERR_STATUS;
}
//-----------------------end of hxl added------------------------------------//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -