📄 smi_pei.c
字号:
return data - '0';
if ( data >= 'A' AND data <= 'F')
return data - 'A' + 0x0a;
if ( data >= 'a' AND data <= 'f')
return data - 'a' + 0x0a;
}
LOCAL void scan_for_prim_data ( UBYTE* data )
{
while ( *data NEQ 0 )
{
prim_data[prim_idx] = ( bt_atoi ( *data ) << 4 );
data++;
prim_data[prim_idx] += bt_atoi ( *data );
prim_idx++;
data++;
}
}
#endif /* WIN32 && BT_ADAPTER */
GLOBAL T_PEI_RETURN _pei_config ( T_PEI_CONFIG inString,
T_PEI_CONFIG outString )
{
#if !defined (NCONFIG)
char * s = inString;
SHORT valno;
USHORT keyno;
char * keyw;
char * val [10];
outString = "";
TRACE_FUNCTION ("_pei_config()");
TRACE_FUNCTION (s);
tok_init(s);
/*
* Parse next keyword and number of variables
*/
while ((valno = tok_next(&keyw,val)) != TOK_EOCS)
{
switch ((keyno = tok_key((KW_DATA *)kwtab,keyw)))
{
#if defined (WIN32) && defined (BT_ADAPTER)
case BT_PRIM:
if ( valno EQ 2)
{
switch (atoi(val[0]))
{
case ( 1 ):
strcpy ( prim_name, val[1] );
if ( strcmp ( val[1], "BTP_INIT_PROFILE_CNF" ) EQ 0 )
{
PALLOC ( dummy, BTP_INIT_PROFILE_CNF );
prim_idx = 0;
btp_init_profile_cnf = dummy;
}
else if ( strcmp ( val[1], "BTP_DEINIT_PROFILE_CNF" ) EQ 0 )
{
PALLOC ( dummy, BTP_DEINIT_PROFILE_CNF );
prim_idx = 0;
btp_deinit_profile_cnf = dummy;
}
else if ( strcmp ( val[1], "BTP_DEVICE_SEARCH_CNF" ) EQ 0 )
{
PALLOC ( dummy, BTP_DEVICE_SEARCH_CNF );
prim_idx = 0;
btp_device_search_cnf = dummy;
}
else if ( strcmp ( val[1], "BTP_DEVICE_FOUND_IND" ) EQ 0 )
{
PALLOC ( dummy, BTP_DEVICE_FOUND_IND );
prim_idx = 0;
btp_device_found_ind = dummy;
}
else if ( strcmp ( val[1], "BTP_CONNECT_DEVICE_CNF" ) EQ 0 )
{
PALLOC ( dummy, BTP_CONNECT_DEVICE_CNF );
prim_idx = 0;
btp_connect_device_cnf = dummy;
}
else if ( strcmp ( val[1], "BTP_DISCONNECT_DEVICE_CNF" ) EQ 0 )
{
PALLOC ( dummy, BTP_DISCONNECT_DEVICE_CNF );
prim_idx = 0;
btp_disconnect_device_cnf = dummy;
}
else if ( strcmp ( val[1], "BTP_DISCONNECT_DEVICE_IND" ) EQ 0 )
{
PALLOC ( dummy, BTP_DISCONNECT_DEVICE_IND );
prim_idx = 0;
btp_disconnect_device_ind = dummy;
}
break;
case ( 2 ):
scan_for_prim_data ( val[1] );
break;
case ( 3 ):
scan_for_prim_data ( val[1] );
if ( strcmp ( prim_name, "BTP_INIT_PROFILE_CNF" ) EQ 0 )
{
memcpy ( (CHAR*)btp_init_profile_cnf, (CHAR*)prim_data, prim_idx );
PSEND ( ACI, btp_init_profile_cnf );
}
else if ( strcmp ( prim_name, "BTP_DEINIT_PROFILE_CNF" ) EQ 0 )
{
memcpy ( (CHAR*)btp_deinit_profile_cnf, (CHAR*)prim_data, prim_idx );
PSEND ( ACI, btp_deinit_profile_cnf );
}
else if ( strcmp ( prim_name, "BTP_DEVICE_SEARCH_CNF" ) EQ 0 )
{
memcpy ( (CHAR*)btp_device_search_cnf, (CHAR*)prim_data, prim_idx );
PSEND ( ACI, btp_device_search_cnf );
}
else if ( strcmp ( prim_name, "BTP_DEVICE_FOUND_IND" ) EQ 0 )
{
memcpy ( (CHAR*)btp_device_found_ind, (CHAR*)prim_data, prim_idx );
PSEND ( ACI, btp_device_found_ind );
}
else if ( strcmp ( prim_name, "BTP_CONNECT_DEVICE_CNF" ) EQ 0 )
{
memcpy ( (CHAR*)btp_connect_device_cnf, (CHAR*)prim_data, prim_idx );
PSEND ( ACI, btp_connect_device_cnf );
}
else if ( strcmp ( prim_name, "BTP_DISCONNECT_DEVICE_CNF" ) EQ 0 )
{
memcpy ( (CHAR*)btp_disconnect_device_cnf, (CHAR*)prim_data, prim_idx );
PSEND ( ACI, btp_disconnect_device_cnf );
}
else if ( strcmp ( prim_name, "BTP_DISCONNECT_DEVICE_IND" ) EQ 0 )
{
memcpy ( (CHAR*)btp_disconnect_device_ind, (CHAR*)prim_data, prim_idx );
PSEND ( ACI, btp_disconnect_device_ind );
}
break;
}
break;
}
else
{
TRACE_ERROR ("[PEI_CONFIG]: Wrong Number of Parameters");
}
break;
#endif /* WIN32 && BT_ADAPTER */
case KEY_SEQUENCE:
{
if (valno EQ 1)
{
static T_KEYSEQ_HND hnd;
aca_keySeqHndInit (&hnd);
aca_keySeqInd (val[0], &hnd);
}
else
{
TRACE_ERROR ("[PEI_CONFIG]: Wrong Number of Parameters");
}
break;
}
case START_SS:
/*
* Simulates Starting of SS Service
*/
{
PALLOC (mnss_begin_req, MNSS_BEGIN_REQ);
mnss_begin_req->ti = 0;
mnss_begin_req->fac_inf.l_fac = 25<<3;
mnss_begin_req->fac_inf.o_fac = 0;
memcpy (&mnss_begin_req->fac_inf.fac, (void *)facility,
sizeof (facility));
mnss_begin_req->ss_ver.len = 1;
mnss_begin_req->ss_ver.ver [0] = 0;
#if defined (NEW_FRAME)
PSEND(hCommSS, mnss_begin_req);
#else
PSEND(SS, mnss_begin_req);
#endif
break;
}
#if defined (AT_INTERPRETER)
case EXT_TEST_ENABLE:
if (valno EQ 1)
{
if ( atoi ( val[0] ) EQ 0 )
{
/*
*-------------------------------------------------------
* remove all redirections of AT commands
*-------------------------------------------------------
*/
sAT_CfgEXT ( NULL );
}
else
{
/*
*-------------------------------------------------------
* redirect ATD commands from the AT command interpreter
* to the extension mechanism if necessary
*-------------------------------------------------------
*/
sAT_CfgEXT ( atRedirect );
}
}
else
{
TRACE_ERROR ("[PEI_CONFIG]: Wrong Number of Parameters");
}
break;
#endif
default:
{
TRACE_ERROR ("[PEI_CONFIG]: Illegal Keyword");
}
break;
}
}
#endif
return PEI_OK;
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-F&D (8411) MODULE : SMI_PEI |
| STATE : code ROUTINE : _pei_monitor |
+--------------------------------------------------------------------+
PURPOSE : Monitoring of physical Parameters
*/
GLOBAL T_PEI_RETURN _pei_monitor (void ** monitor)
{
TRACE_FUNCTION ("_pei_monitor()")
smi_mon.version = VERSION_SMI;
*monitor = &smi_mon;
return PEI_OK;
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-F&D (8411) MODULE : SMI_PEI |
| STATE : code ROUTINE : pei_not_supported |
+--------------------------------------------------------------------+
PURPOSE : An unsupported primitive is received.
*/
LOCAL const void pei_not_supported (void *data)
{
TRACE_FUNCTION ("pei_not_supported()");
PFREE (data);
}
/*==== EOF ========================================================*/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -