📄 smi_pei.c
字号:
/*
+-----------------------------------------------------------------------------
| Project : GSM-F&D (8411)
| Modul : SMI_PEI
+-----------------------------------------------------------------------------
| Copyright 2002 Texas Instruments Berlin, AG
| All rights reserved.
|
| This file is confidential and a trade secret of Texas
| Instruments Berlin, AG
| The receipt of or possession of this file does not convey
| any rights to reproduce or disclose its contents or to
| manufacture, use, or sell anything it may describe, in
| whole, or in part, without the specific written consent of
| Texas Instruments Berlin, AG.
+-----------------------------------------------------------------------------
| Purpose : This Modul defines the process body interface
| for the slim man machine interface
+-----------------------------------------------------------------------------
*/
#ifndef SMI_PEI_C
#define SMI_PEI_C
#define ENTITY_SMI
/*==== INCLUDES ===================================================*/
#include <stdlib.h>
#include <string.h>
#include "typedefs.h"
#include "vsi.h"
#include "custom.h"
#include "gsm.h"
#include "prim.h"
#include "pei.h"
#include "tok.h"
#include "message.h"
#include "aci_cmh.h"
#include "ksd.h"
#include "aca.h"
#include "smi.h"
#include "cnf_smi.h"
#include "gdi.h"
#include "kbd.h"
#include "pwr.h"
#include "light.h"
#include "audio.h"
#include "dspl.h"
/*==== CONSTANTS ==================================================*/
/*==== EXPORT =====================================================*/
GLOBAL T_MMI_DATA mmi_data_base [SMI_INSTANCES], *mmi_data;
/*==== PRIVATE ====================================================*/
LOCAL const void pei_not_supported (void *data);
/*==== TYPES ======================================================*/
/*==== VARIABLES ==================================================*/
LOCAL T_MONITOR smi_mon;
LOCAL USHORT t_flag = 0;
LOCAL CHAR* atRedirect[] = { "D", NULL };
/*==== FUNCTIONS ==================================================*/
/*
+--------------------------------------------------------------------+
| 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);
}
/*
* jumptable for the entity service access point. Contains
* the processing-function addresses and opcodes of
* confirmation and indication primitives.
*
*/
#ifdef BT_ADAPTER
LOCAL const T_FUNC btp_g_table[] = {
MAK_FUNC_0( bt_init_profile_cnf , BTP_INIT_PROFILE_CNF ),
MAK_FUNC_0( bt_deinit_profile_cnf , BTP_DEINIT_PROFILE_CNF ),
MAK_FUNC_N( pei_not_supported , 0 ),
MAK_FUNC_0( bt_device_search_cnf , BTP_DEVICE_SEARCH_CNF ),
MAK_FUNC_0( bt_device_found_ind , BTP_DEVICE_FOUND_IND ),
MAK_FUNC_0( bt_connect_device_cnf , BTP_CONNECT_DEVICE_CNF ),
MAK_FUNC_0( bt_connect_device_ind , BTP_CONNECT_DEVICE_IND ),
MAK_FUNC_0( bt_disconnect_device_cnf , BTP_DISCONNECT_DEVICE_CNF ),
MAK_FUNC_0( bt_disconnect_device_ind , BTP_DISCONNECT_DEVICE_IND ),
MAK_FUNC_0( bt_audio_connection_ind , BTP_AUDIO_CONNECTION_IND ),
MAK_FUNC_0( bt_transfer_audio_in_cnf , BTP_TRANSFER_AUDIO_IN_CNF ),
MAK_FUNC_0( bt_transfer_audio_out_cnf , BTP_TRANSFER_AUDIO_OUT_CNF ),
MAK_FUNC_0( bt_pin_ind , BTP_PIN_IND ),
MAK_FUNC_0( bt_reconfig_profile_cnf , BTP_RECONFIG_PROFILE_CNF )
};
#endif /* BT_ADAPTER */
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-F&D (8411) MODULE : SMI_PEI |
| STATE : code ROUTINE : _pei_init |
+--------------------------------------------------------------------+
PURPOSE : Initialize Protocol Stack Entity
*/
GLOBAL T_PEI_RETURN _pei_init ( void )
{
TRACE_FUNCTION ("_pei_init()")
/*
* initialize driver
*/
kbd_Init(kbd_callback);
pwr_Init(pwr_callback);
light_Init ();
audio_Init (NULL);
dspl_Init ();
mmi_data = &mmi_data_base[0];
ui_init ();
aca_init (TRUE);
smi_init_timer ();
return PEI_OK;
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-F&D (8411) MODULE : SMI_PEI |
| STATE : code ROUTINE : _pei_primitive |
+--------------------------------------------------------------------+
PURPOSE : Process protocol specific primitive.
*/
GLOBAL T_PEI_RETURN _pei_primitive (T_PRIM *prim)
{
/*
*
* ACI UPLINK
* |
* +------------------------v-----------------------+
* | |
* | ACI |
* | |
* +-----^----^-----^----^----^----^---^---^---^----+
* | | | | | | | | |
* SIM MMREG MNCC MNSS MNSMS MMI T30 L2R RA DOWNLINK
* | | | | | | | | |
*
*/
/* TRACE_FUNCTION ("_pei_primitive()"); */
if (prim NEQ NULL)
{
USHORT opc = (USHORT)prim->custom.opc;
USHORT n;
const T_FUNC *table;
PTRACE_IN (opc);
mmi_data = GET_INSTANCE (prim);
switch (opc & OPC_MASK)
{
#ifdef BT_ADAPTER
case BTP_G:
table = btp_g_table; n = TAB_SIZE (btp_g_table); break;
#endif /* BT_ADAPTER */
default: table = NULL; n = 0; break;
}
if (table != NULL )
{
if ((opc & PRM_MASK) < n)
{
table += opc & PRM_MASK;
#ifdef PALLOC_TRANSITION
P_SDU(prim) = table->soff ? (T_sdu*) (((char*)&prim->data) + table->soff) : 0;
#ifndef NO_COPY_ROUTING
P_LEN(prim) = table->size + sizeof (T_PRIM_HEADER);
#endif /* NO_COPY_ROUTING */
#endif /* PALLOC_TRANSITION */
JUMP (table->func) (P2D(prim));
}
else
{
_pei_not_supported (P2D(prim));
}
return PEI_OK;
}
/*
* Primitive is no GSM Primitive
* then forward to the environment
*/
#ifdef GSM_ONLY
PFREE (P2D(prim))
return PEI_ERROR;
#else
if (opc & SYS_MASK)
vsi_c_primitive (VSI_CALLER prim);
else
{
/* PFREE (P2D(prim)); */ /* Primitive would be freed twice, once here and once again by caller
if this function terminates with PEI_ERROR */
return PEI_ERROR;
}
#endif
}
return PEI_OK;
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-F&D (8411) MODULE : SMI_PEI |
| STATE : code ROUTINE : _pei_exit |
+--------------------------------------------------------------------+
PURPOSE : Close Resources and terminate
*/
GLOBAL T_PEI_RETURN _pei_exit (void)
{
TRACE_FUNCTION ("_pei_exit()")
smi_exit_timer ();
return PEI_OK;
}
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-F&D (8411) MODULE : SMI_PEI |
| STATE : code ROUTINE : _pei_config |
+--------------------------------------------------------------------+
PURPOSE : Dynamic Configuration
*/
#if !defined (NCONFIG)
LOCAL KW_DATA kwtab[] = {
SMI_KEY_SEQUENCE, KEY_SEQUENCE,
SMI_START_SS, START_SS,
#ifdef BT_ADAPTER
SMI_BT_PRIM, BT_PRIM,
#endif /* BT_ADAPTER */
SMI_EXT_TEST_ENABLE, EXT_TEST_ENABLE,
"", 0
};
GLOBAL KW_DATA _partab[] = {
"", 0
};
#endif
static const UBYTE facility[] =
{
0xA1, 0x17, 0x02, 0x01, 0x00, 0x02, 0x01, 0x0A,
0x30, 0x0F, 0x04, 0x01, 0x2A, 0x83, 0x01, 0x10, 0x84,
0x04, 0x91, 0x34, 0x21, 0x43, 0x85, 0x01, 0x05
};
#if defined (WIN32) && defined (BT_ADAPTER)
LOCAL T_BTP_INIT_PROFILE_CNF* btp_init_profile_cnf;
LOCAL T_BTP_DEINIT_PROFILE_CNF* btp_deinit_profile_cnf;
LOCAL T_BTP_DEVICE_SEARCH_CNF* btp_device_search_cnf;
LOCAL T_BTP_DEVICE_FOUND_IND* btp_device_found_ind;
LOCAL T_BTP_CONNECT_DEVICE_CNF* btp_connect_device_cnf;
LOCAL T_BTP_DISCONNECT_DEVICE_CNF* btp_disconnect_device_cnf;
LOCAL T_BTP_DISCONNECT_DEVICE_IND* btp_disconnect_device_ind;
LOCAL char prim_name[100];
LOCAL UBYTE prim_data[MAX_PSTRUCT_LEN_BTP];
LOCAL USHORT prim_idx;
LOCAL UBYTE bt_atoi ( char data )
{
if ( data >= '0' AND data <= '9')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -