cdrprocess::cdrwxcallcheck,failreason:nsis error是什么意思 - oc

>> bms11vm.c - Digit core phone 源代码-Digit core ph
点击查看更多 ▼
点击收缩隐藏 ▲
bms11vm.c - Digit core phone 源代码-Digit core ph
源码下载: &
/* == IDENTIFICATION ==========================================================
* Copyright (C) 2003, Philips Semiconductors Nuernberg
: Vega-Family
* Component
: FTMMS state machine and vm
: bms11vm.c
%filespec: bms11vm.c-56 %
/* == HISTORY ========================================================= */
Ver Action
* --------------------------------------------------------------------
* tcmc_asa
27-Nov-2003 56
Task 1757: D67: make compilable without SMS12
* tcmc_asa 18-Nov-2003 55
D67: change p_dr12_ResetCIDDetect to
p_cl11_ResetCIDDetect
* tcmc_dbm 02-Sep-2003 54
PR 282, Task1576: remove PID check
* tcmc_dbm
20-Aug-2003 53
PR 243, Task1533: correct DLL_NACK length check
* tcmc_asa 20-May-2003 52 Task1391: use p_cl11_ResetCIDDetect()
* tcmc_dbm 07-May-2003 51
PR 211, Task1348: CID message handling
* tcmc_asa 06-May-2003 50 PR 216, Task1361: add further SD02_SUB_OFFSET
* tcmc_asa 28-Apr-2003 49 Task 1352: change p_da_GetDSPValue for VegaTB
* tcmc_asa 09-Apr-2003 48 Task 1332: changed p_da_GetDSPValue usage
* tcmc_asa 05-Feb-2003 47 merged 45.1.1 and 46
* tcmc_thc
20-Dec-2002 46
correction in handling the PT number in setup
link and rel. link (see p_ms11_DecodeIWUInfo() )
* tcmc_asa 13-Jan-.1 remove portpin setting
* tcmc_asa 16-Dec-2002 45 Task 1044: correct CID reception for SMS on
VegaXS/VegaLite
* tcmc_asa 12-Dec-2002 44
change function call for CID mode
* tcmc_thc 09-Dez-2002 43
merge and change function call for mode
* tcmc_asa 28-Nov-.1 adapt for VegaLite
* tcmc_thc
27-Sep-2002 42
PR131: p_ms11_CheckSMSLink() added
* tcmc_asa 08-Aug-2002 41 Task803:p_dr13_EEPROMReadByte(SD02_LRMS_SUPPORT)
* tcmc_asa 31-Jul-2002 40 PR 95: add new SMS compiler switch VDSW_SMS_MMS
* tcmc_asa 26-Jul-2002 39
Task 780: LRMS support read from EEPROM and
stored in global variable u8_LMRS
* tcmc_thc
25-Jul-.1 PR117/Task 777 changed names
* tcmc_asa 19-Jul-2002 37
PR 110: correct LRMS support check
* tcmc_thc 18-Jul-2002 36 set mode back to seizure mode in cleanup functions
(see D53 / PR111)
* tcmc_asa 10-Jul-2002 35 Task 739: remove semi-colons in if st.
* tcmc_dbm 27-Jun-2002 34 Add incrementation of TP-MR
* tcmc_thc 07-Jun-2002 33 descriptions improved G_u8_mi01_ClipSMS
not set anymore within p_ms11_StartSMSCall()
* tcmc_thc 28-May-2002 32
changed smsc-Nr. 3
* tcmc_asa 24-May-2002 31 merged version 30 and 29.1.1
* tcmc_thc
24-May-2002 30
indicate successfully sent SMS to FTMMI
* tcmc_thc
21-May-2002 28
Speechmode set in functions instead of state-
* tcmc_asa 17-May-2002 27 Task 639: change setting of Send buffers for FT
initiated link.
* tcmc_thc
17-May-2002
26 notification of incoming SMS in
p_ms11_CleanIncErr() removed temp code (V25)
* tcmc_asa 14-May-2002
25 Task 630: added MMS_RELEASE_SMS_REQ and
MMI_SMS_RELEASE_CFM/IND
* tcmc_asa 14-May-.1 Task 627: changed G_u8_ms00_SMSCNuumber...
* tcmc_thc
14-May-2002
23 used G_u8_ms00_SMSDataTransmitLength for out-
going SMS,
* tcmc_asa 13-May-2002
22 Task 622: change storage of
G_u8_ms01_LastCCInstance in p_ms11_DecodeIWUInfo
* tcmc_thc
13-May-2002
21 send_rpy for outgoing SMS, inform MMI if SMS
could not be sent in almost every case, change
in ScanDll for NACK
* tcmc_asa 08-May-.1 changed first Service Centre number
* tcmc_thc
03-May-2002
20 merge from parallel versions with
multimessage handling
* tcmc_asa 02-May-2002
19 changed init setting of pu8_SMSData
added RP Header include
* tcmc_thc
02-May-.1 modem settings, smsc-check changed
* tcmc_asa 26-Apr-.1 Task 588: add use of u8_ESCData
* tcmc_asa 25-Apr-2002
17 Task 580: add check of LRMS support
* tcmc_thc
24-Apr-2002
16 removed workaround
* tcmc_thc
23-Apr-2002
15 initalized variables
* tcmc_dbm 19-Apr-2002
13 add TP Layer Error handeling
* tcmc_asa 19-Apr-2002
12 corrected DecodeEscCmd
* tcmc_asa 18-Apr-2002
11 merged 9.1.7 and 10
* tcmc_asa 18-Mar-2002 correct // - Task 508
* tcmc_asa 16-Apr-.5.1.1 Task 547: add IWU-to-IWU to MMS_ESC_CMD
* tcmc_dbm
03-Apr-2002
add error dll handeling
* tcmc_thc
18-Mar-2002
different changes for basic SMS version
* tcmc_asa 20-Feb-2002 corrected G_u8_ms01_SMSDataRev/ceiveBuffer
* tcmc_asa 08-Jan-2002 created
/*MPM==========================================================================
* ABSTRACT:
* This module contains the FTMMS main router (state machine)
* Global functions to be called by other modules:
* -----------------------------------------------
* Module functions to be called by other units:
* ---------------------------------------------
* Unit functions to be called only by this unit:
* ----------------------------------------------
/* == OPERATOR ASPECTS ========================================================
/* == DESIGN ==================================================================
* &explanation of general principles&
#define bms11_c
/* == GLOBAL DECLARATIONS
======================================= */
#include &cg0type.h&
#include &bsd09cnf.h& /* component-globalal, system configuration */
#include &bsd09ddl.h& /* messages and processes */
#include &cap03def.h& /* xx_const.h */
#include &bsd02eep.h&
#include &cos00int.h&
#include &cos09use.h&
#include &bhl00int.h&
#include &bms01dat.h&
#include &cda00api.h&
#include &bdr02aud.h&
#include &bmi01dat.h&
#include &bms00int.h&
#include &bcl00int.h&
#include &csys2vpb.h&
#include &stdio.h&
/* because p_dr13_EEPROMReadByte: */
#include &cdr03eep.h&
/* == DEFINITION OF LOCAL CONSTANTS ======================================== */
/* == DEFINITION OF LOCAL MACROS =========================================== */
#define p_ms11_ReadSubscState(i) p_dr13_EEPROMReadByte(SD02_SUB((i)-1) +SD02_SUB_STATUS-SD02_SUB_OFFSET)
# if (VDSW_FEATURES & VDSW_SMS_MMS)
/*for setup list: */
#define ADD_INST
#define REMOVE_INST 0
#define MS11_COMM_TYPE_MASK 0x7C
#define MS11_U_LSB
(unsigned)1
#define MS11_ASCII_ZERO
#define MS11_ASCII_NINE
#define MS11_ASCII_STAR
#define MS11_ASCII_HASH
#define MS11_ASCII_A
#define MS11_ASCII_B
#define MS11_ASCII_C
#define MS11_BCD_STAR
#define MS11_BCD_HASH
#define MS11_BCD_A
#define MS11_BCD_B
#define MS11_BCD_C
#define MS11_ADDR_FILL
#define MS11_RP_MTI_RP_DATA_N
/* n -&ms */
#define MS11_RP_MESSAGE_REF
#define MS11_RP_ADDR_LEN_0
#define MS11_RP_USER_DATA_IE
#define MS11_TP_RP_BIT
#define MS11_TP_UDHI_BIT
#define MS11_TP_SRI_BIT
#define MS11_TP_MMS_BIT
#define MS11_TP_MTI_BIT
#define MS11_TP_MTI_MASK
/* == DEFINITION OF LOCAL ENUMERATIONS ===================================== */
/* == DECLARATION OF LOCAL TYPES =========================================== */
/* == DECLARATION OF LOCAL DATA
=========================================== */
u8 u8_ms11_InstanceR
u8 u8_ms11_OAInB
u8 *pu8_ms11_UDInB
u8 u8_ms11_UDInB
# endif /*
VDSW_SMS_MMS */
# ifndef NO_NEW_SMS_IND
u8 u8_ms11_LRMS;
u8 u8_ms11_InstanceHandsetNr;
/* == DECLARATION OF LOCAL FUNCTION PROTOTYPES ============================= */
/* & note that this is only necessary for functions which cannot
be defined before they are used.
Normally armcc generates more efficient code if it has seen
the definition before the call, so only the needed forward
declarations shall be found in this section
/****************************************************************************/
/* FUNCTIONAL DESCRIPTION:
* &short description of functionality&
&usage of global data, if any&
* &optionally explain combinations of parameter settings&
* &par1 value&
&par2 value&
* INTERFACE DECLARATION:
* &description of algorithm: optional for short functions&
#if (VDSW_FEATURES & VDSW_SMS)
void p_ms11_InitMMS(void)
/*for later: G_u8_ms01_ActiveLinkNr = 0;*/
/* initialise active SMS link number */
G_st_hl00_IWUTransmit[0].u8_SMSDataLen = 0;
G_st_hl00_IWUTransmit[1].u8_SMSDataLen = 0;
# if (VDSW_FEATURES & VDSW_SMS_MMS)
/************************************************************************/
/* take care :
/* the G_st_hl00_IWUReceive buffer receives a messages from the PT.
/* For the FT this is written into G_u8_ms00_SMSDataTransmitBuffer,
/* which is the transmit buffer for transmission to the line. */
/************************************************************************/
G_st_hl00_IWUReceive[0].pu8_SMSData =
(u8 *)&G_u8_ms00_SMSDataTransmitBuffer[0][2];
/* here we don't have a second buffer within MMS. Therefore the pointer
* of the second IWU buffer points to the same MMS buffer (for
* future implementations this might be changed)
G_st_hl00_IWUReceive[1].pu8_SMSData =
(u8 *)&G_u8_ms00_SMSDataTransmitBuffer[0][2];
/* used for MMS_ESC_CMD messages: */
G_st_hl00_IWUReceive[0].pu8_ESCData = G_st_ms00_UserDataReceive.pu8_UserD
/* NOTE: the second buffer is used for the transmission of unsent
* messages */
/* ASA 02-May-2002: changed setting of pointer from
* G_u8_ms00_SMSDataReceiveBuffer to G_u8_mi01_sendSMSBuffer, this
* has to be repeated while SMS call setup */
G_st_hl00_IWUTransmit[0].pu8_SMSData =G_st_ms00_UserDataTransmit.pu8_UserD
G_st_hl00_IWUTransmit[1].pu8_SMSData =G_st_ms00_UserDataTransmit.pu8_UserD
G_u8_ms00_SMSDataTransmitLength[0]= 0;
G_u8_ms00_SMSDataTransmitLength[1]= 0;
G_u8_ms00_SMSDataReceiveLength[0] = 0;
G_u8_ms00_SMSDataReceiveLength[1] = 0;
/*initialize buffer number*/
G_u8_ms00_MsgCount = 0;
/*initialize the statemachine:*/
p_ms13_ChrtFTMS(1);
/* read the numbers from permanent memory:
actually made constant */
memcpy(G_u8_ms00_SMSCNumberBuffer[0],&0193010&,strlen(&0193010&));
G_u8_ms00_SMSCNumberLength[0] =
strlen ((char *) G_u8_ms00_SMSCNumberBuffer[0]);
memcpy(G_u8_ms00_SMSCNumberBuffer[1],&&,strlen(&&));*/
G_u8_ms00_SMSCNumberLength[1] = */
strlen ((char *) G_u8_ms00_SMSCNumberBuffer[1]);
memcpy(G_u8_ms00_SMSCNumberBuffer[1],&019301&,strlen(&019301&));
G_u8_ms00_SMSCNumberLength[1] =
strlen ((char *) G_u8_ms00_SMSCNumberBuffer[1]);
memcpy(G_u8_ms00_SMSCNumberBuffer[2],&&,strlen(&&));
G_u8_ms00_SMSCNumberLength[2] =
strlen ((char *) G_u8_ms00_SMSCNumberBuffer[2]);
G_u8_ms01_DllErrCount = 0; /* flag for statemachine, that
there was another protocol error already */
G_u8_ms01_SentCount = 0; /*flag for statemachine that this
protocol message was sent already */
VDSW_SMS_MMS */
/* buffer usage is different (as in VDSW 111) */
G_st_hl00_IWUReceive[0].pu8_SMSData =(u8 *)&G_u8_ms00_SMSDataReceiveBuffer[0];
G_st_hl00_IWUReceive[1].pu8_SMSData =(u8 *)&G_u8_ms00_SMSDataReceiveBuffer[1];
G_st_hl00_IWUTransmit[0].pu8_SMSData =
(u8 *)&G_u8_ms00_SMSDataTransmitBuffer[0];
G_st_hl00_IWUTransmit[1].pu8_SMSData =
(u8 *)&G_u8_ms00_SMSDataTransmitBuffer[1];
/* used for MMS_ESC_CMD messages: */
G_st_hl00_IWUReceive[0].pu8_ESCData =
(u8 *)&G_u8_ms00_SMSDataReceiveBuffer[0];
# endif /*
VDSW_SMS_MMS */
} /* p_ms11_InitMMS */
#if (VDSW_FEATURES & VDSW_SMS_MMS)
/****************************************************************************/
/* FUNCTIONAL DESCRIPTION:
* This procedure decodes an received IWU_INFO message and sends an indication
* to the FTMSI process if needed.
* INTERFACE DECLARATION:
void p_ms11_DecodeIWUInfo(void)
/* u8 u8_IWUBufferNr; */
u8 * pu8_GenH
/* check if this is a reply to a global SMS call or a local SMS message */
if ((G_st_os00_Act.u8_SInst &= 2*SD09_MAX_NUM_INST) &&
(G_u8_ms01_IncSMSType &
(0x01 && (G_st_os00_Act.u8_SInst%SD09_MAX_NUM_INST))))
pu8_GenHdr =
(u8*) &G_u8_hl00_MMSGenHeader[G_st_os00_Act.u8_SInst%SD09_MAX_NUM_INST];
pu8_GenHdr =
(u8*) &G_st_hl00_IWUReceive[(G_st_os00_Act.u8_SInst/SD09_MAX_NUM_INST)-1]
.u8_MMSGenHeader[0];
/* save CC instance for answer
G_u8_ms01_LastCCInstance = G_st_os00_Act.u8_SI
/* switch MMS command type from Generic Header
switch ((*(pu8_GenHdr+1) & MS11_COMM_TYPE_MASK) && 2)
case MMS_ESC_CMD:
/* Internal SMS request from PT
/* pass information to MMS MMI
/* maybe additional data need to be sent
/* send Command (CC instance now stored locally)
p_os10_PutMsgInfo(FTMMS_ID, 0, MMS_ESC_CMD_IND,(u16) *(pu8_GenHdr+2));
case MMS_ESC_CMD_RPY:
/* ESC message type
/* switch extended MMS Command type
switch (*(pu8_GenHdr+2))
case MS00_NEW_SMS_IND:
/* reply to MS00_NEW_SMS_IND
/* if PTMMS wants to get the message, it sends MMS_ESC_CMD
/* no reply is requested, release SMS call
/*thc: PR131 a link release only takes place for links that were not
* existing before the NEW_SMS_IND
if (G_u8_ms01_ActiveLinkNr != G_st_os00_Act.u16_SInstInfo)
p_os10_PutMsg(FTCC_ID, G_st_os00_Act.u8_SInst, MNCC_RELEASE_REQ);
printf(&not released: %d\n&,G_u8_ms01_ActiveLinkNr);
case MMS_SEND:
/* PT has sent a GSM SMS message, u16_XInfo contains IWU Receive buffer
/* further information might be added ...
/* send this event to the FTMMS PSTN
/*first copy the length of the message into transmit length
/* note: some bytes at the beginning where used for RP layer
G_u8_ms00_SMSDataTransmitLength[0]= G_st_hl00_IWUReceive[0].u8_SMSDataLen-6;
/*every time the PT sends a new SM increment the TP-MR*/
/*TP-MR byte is the 2nd byte in the TP-Layer (+6 RP-layer bytes)*/
G_st_hl00_IWUReceive[0].pu8_SMSData[7]=EEPROM(SD02_SMS_TP_MR);
p_dr13_EEPROMWriteByte(SD02_SMS_TP_MR,
G_st_hl00_IWUReceive[0].pu8_SMSData[7]+1);
p_os10_PutMsgInfo(FTMMS_ID, 0, MMS_SMS_RECV_IND,
(u16) ((G_st_os00_Act.u8_SInst/SD09_MAX_NUM_INST)-1));
/*thc 0705 here we send back a send rpy */
p_ms11_PutGenObjHdr(MMS_SEND_RPY, 0);
p_os10_PutMsg(FTCC_ID, G_u8_ms01_LastCCInstance, MNCC_IWU_INFO_REQ);
/*** p_os10_PutMsg(FTCC_ID, G_st_os00_Act.u8_SInst, MNCC_RELEASE_REQ); */
/*here we automatically release the link which is not wanted */
/*this is not wanted anymore*/
} /* p_ms11_DecodeIWUInfo */
# endif /*
VDSW_SMS_MMS */
# ifndef NO_NEW_SMS_IND
/****************************************************************************/
/* FUNCTIONAL DESCRIPTION:
* This procedure sends a global incoming SMS to all subscribed handsets
* INTERFACE DECLARATION:
void p_ms11_HandleGlobalSMSCall(void)
u8 u8_Found = 0;
/* check if instance is available */
if (G_st_os00_Act.u16_XInfo != 0xF)
/* send indication of incoming SMS to handset and store CC instance */
/* u8_ms11_IncSMSInst[u8_ms11_InstanceHandsetNr] =
G_st_os00_Act.u16_XI */
p_os10_PutMsgInfo(FTCC_ID, G_st_os00_Act.u16_XInfo,
MNCC_SETUP_REQ, HL00_GLOBAL_SMS);
/* indicate global SMS call for received message Generic Object
/* buffer handling */
G_u8_ms01_IncSMSType |= 0x01 &&
((u8) G_st_os00_Act.u16_XInfo%SD09_MAX_NUM_INST);
/* continue searching */
for (u8_Handset = u8_ms11_InstanceHandsetNr+1;
(u8_Handset &= SD09_MAX_NUM_SUB) && !u8_F
u8_Handset++)
/* Is the handset subscribed? */
if ((p_ms11_ReadSubscState(u8_Handset) == HL00_SUBSCRIBED) &&
(u8_ms11_LRMS & (0x01 && (u8_Handset - 1))))
/* check if there is not already a incoming SMS link existing */
/* -currently no check, since incoming SMS call is only used for
* this incoming SMS indication. In call other cases the PT
* initiates the SMS call */
u8_Found = 1;
u8_ms11_InstanceHandsetNr = u8_H
p_hl00_GetIncomingMMSInstance(u8_Handset);
} /* p_ms11_HandleGlobalSMSCall */
# endif /* NO_NEW_SMS_IND */
# ifndef NO_NEW_SMS_IND
/****************************************************************************/
/* FUNCTIONAL DESCRIPTION:
* This procedure writes the Generic and Object Headers to the
* global buffers for sending a SMS message
* G_u8_ms00_SMSDataTransmitBuffer
SMS send buffer
* G_st_hl00_IWUTransmit
IWU Transmit buffer
* INTERFACE DECLARATION:
void p_ms11_PutGenObjHdr(u8 u8_MessageType, u8 u8_TransInstOrMsg)
u8 * pu8_H
u8 u8_TrasmitI
if (VDSW_FEATURES & VDSW_SMS_MMS)
u8_TrasmitInst = (G_u8_ms01_LastCCInstance/SD09_MAX_NUM_INST) - 1;
VDSW_SMS_MMS */
if (u8_MessageType == MMS_NEW_SMS)
u8_TrasmitInst = 1;
/* Parameters see ETSI EN 300 757 and User Manual Protocol interface */
pu8_Header =
(u8*) &G_st_hl00_IWUTransmit[u8_TransInstOrMsg].u8_MMSGenHeader[0];
switch (u8_MessageType)
case MMS_ESC_CMD:
case MMS_NEW_SMS:
pu8_Header=(u8*)&G_st_hl00_IWUTransmit[u8_TrasmitInst].u8_MMSGenHeader[0];
/* length of Generic Header is 3 bytes for MMS_ESC_CMD */
*pu8_Header++ = 3;
/* 1. Byte (octed 3) MMS_ESC_CMD + No reply requested */
/* MSB always set */
*pu8_Header++ = MMS_ESC_CMD && 2;
/* extended MMS Command type (octet 3a) */
/* command type as given by MMS MMI */
*pu8_Header++ =
u8_TransInstOrM
/* MMS message Identifier - Initial request, always only one SMS message
* is transfered simultaneously concerning one PP */
*pu8_Header++ = 0x80;
if (VDSW_FEATURES & VDSW_SMS_MMS)
case MMS_ESC_CMD_RPY:
pu8_Header=(u8*)&G_st_hl00_IWUTransmit[u8_TrasmitInst].u8_MMSGenHeader[0];
/* Reply to request from PT */
/* length of Generic Header is 3 bytes for MMS_ESC_CMD */
*pu8_Header++ = 3;
/* 1. Byte (octed 3) MMS_ESC_CMD_RPY + No reply requested */
/* MSB always set */
*pu8_Header++ = MMS_ESC_CMD_RPY && 2;
/* extended MMS Command type (octet 3a) */
/* command type as given by MMS MMI */
*pu8_Header++ =
u8_TransInstOrM
/* MMS message Identifier - Initial request, always only one SMS message
* is transfered simultaneously concerning one PP */
*pu8_Header++ = 0x80;
case MMS_SEND:
/* add all parameters */
/* first the Generic Header */
/* length of Generic Header is 3 bytes for MMS_SEND */
*pu8_Header++ = 3;
/* 1. Byte = 0x80 + MMS_SEND + No reply requested */
/* MSB always set */
*pu8_Header++ = 0x80;
/* MMS message Identifier - Initial request, always only one SMS message
* is transfered simultaneously concerning one PP */
*pu8_Header++ = 0x80;
/* Service type */
*pu8_Header++ = MS01_GSM_SMS;
/* secondly the Object Header */
pu8_Header =
(u8*) &G_st_hl00_IWUTransmit[u8_TransInstOrMsg].u8_MMSObjHeader[0];
/* length */
*pu8_Header++ = 4;
/* User data lenght specified - 1 octed */
*pu8_Header++ = 0x00;
/* actual number of octets */
/* for this it is necessary, that the procedure p_ms11_PutUserData is
* called first , so that u8_SMSDataLen is set correctly */
*pu8_Header++ = G_st_hl00_IWUTransmit[u8_TransInstOrMsg].u8_SMSDataL
/* Other user, no transfer encoding - 0x80 | 0x60 */
*pu8_Header++ = 0xE0;
/* Source user data type */
*pu8_Header++ = MS01_ENCAPS_GSM_SMS;
case MMS_SEND_RPY:
/* only Generic Header is used, no Object Header */
G_st_hl00_IWUTransmit[u8_TransInstOrMsg].u8_MMSObjHeader[0] = 0;
/* length of Generic Header is 4 bytes for MMS_SEND_RPY */
*pu8_Header++ = 4;
/* 1. Byte = 0x80 + MMS_SEND_RPY + No reply requested */
/* MSB always set */
*pu8_Header++ = 0x80 | (MMS_SEND_RPY&&2);
/* MMS message Identifier - Initial request, always only one SMS message
* is transfered simultaneously concerning one PP */
*pu8_Header++ = 0x80;
/* Service type */
*pu8_Header++ = MS01_GSM_SMS;
/* Command outcome, not really used, but see Note 1 in Table 7.10 of
/* EN 300 757; use only 'Command successfully completed by the MCE'
/* change, if other values needed */
*pu8_Header++ = 0x00;
VDSW_SMS_MMS */
/* p_ms11_PutGenObjHdr */
# endif /* NO_NEW_SMS_IND */
/****************************************************************************/
# if (VDSW_FEATURES & VDSW_SMS_MMS)
/****************************************************************************/
/* FUNCTIONAL DESCRIPTION:
* This procedure writes copies the contents of the
* G_u8_ms00_SMSDataTransmitBuffer
SMS send buffer
* G_st_hl00_IWUTransmit
IWU Transmit buffer
* INTERFACE DECLARATION:
void p_ms11_PutIWUTransmit(void)
u8 u8_TrasmitI
u8_TrasmitInst = (G_u8_ms01_LastCCInstance/SD09_MAX_NUM_INST) - 1;
if (G_st_os00_Act.u8_Event == MMS_SEND_REQ)
/* for MMS_SEND the RPHeader is added */
/* we use only the fixed lenght without originater and destination
* address.
G_st_hl00_IWUTransmit[u8_TrasmitInst].u8_RPHeader[0] = 6;
G_st_hl00_IWUTransmit[u8_TrasmitInst].u8_RPHeader[1] =
MS11_RP_MTI_RP_DATA_N;
G_st_hl00_IWUTransmit[u8_TrasmitInst].u8_RPHeader[2] =
MS11_RP_MESSAGE_REF;
G_st_hl00_IWUTransmit[u8_TrasmitInst].u8_RPHeader[3] =
MS11_RP_ADDR_LEN_0;
G_st_hl00_IWUTransmit[u8_TrasmitInst].u8_RPHeader[4] =
MS11_RP_ADDR_LEN_0;
G_st_hl00_IWUTransmit[u8_TrasmitInst].u8_RPHeader[5] =
MS11_RP_USER_DATA_IE;
G_st_hl00_IWUTransmit[u8_TrasmitInst].u8_RPHeader[6] =
G_st_ms00_UserDataTransmit.u8_UserDataL
G_st_hl00_IWUTransmit[u8_TrasmitInst].u8_RPHeader[0] = 0;
/* copy MMI data to IWUTransmit buffer */
/*memcpy(G_st_hl00_IWUTransmit[u8_TrasmitInst].pu8_SMSData,
G_st_ms00_UserDataTransmit.pu8_UserData,
G_st_ms00_UserDataTransmit.u8_UserDataLen);
G_st_hl00_IWUTransmit[u8_TrasmitInst].u8_SMSDataLen =
G_st_ms00_UserDataTransmit.u8_UserDataL
} /* p_ms11_PutIWUTransmit */
/****************************************************************************/
/* FUNCTIONAL DESCRIPTION:
* INTERFACE DECLARATION:
u8 p_ms11_IfEvent (u8 u8_Event, u8 u8_Spec)
/* first check the u8_Event */
if (G_st_os00_Act.u8_Event != u8_Event)
/* It's not the same */
return (0);
G_st_os00_Act.u16_XInfo == u8_Spec*/
switch(G_st_os00_Act.u8_Event)
/* the following events are not further checked as there was no */
/* XInfo element*/
case FTMS_INC_START:
case MI_SMS_LINE_ACK:
case FTMS_LINEREQ_EXP:
case FTMS_SMSC_REQ_EXP:
/*case MMS_SEND_SMS_REQ:*/
case MMS_INSTANCE_CFM:
case MMS_PAGE_SMS_REQ:
case MNCC_CONNECT_IND:
case MNCC_IWU_INFO_IND:
case MNCC_SETUP_IND:
case MS_SMS_END_IND:
case MMS_SMS_RECV_IND:
case MMS_ESC_CMD_IND:
case FTMS_WAIT1_EXP:
case FTMS_WAIT3_EXP:
case FTMS_WAIT4_EXP:
case FTMS_PAGE_EXP:
case MNCC_RELEASE_CFM:
case MMS_RELEASE_SMS_REQ:
case NEW_MODE_ACTIVE:
case MNCC_RELEASE_IND:
case MMS_RESEND_SMS_REQ:
case SMS_PSTN_BREAK:
return (1);
/* the following events will be checked further as they appear in*/
/* different ways (XInfo element must match too) */
case MS_DLL_SMS_IND:
if (u8_Spec == (u8)G_st_os00_Act.u16_XInfo)
return (1);
case MS_INC_SMS_IND:
if (u8_Spec == (u8)G_st_os00_Act.u16_XInfo)
return (1);
case MMI_FSK_SENT:
if (u8_Spec == (u8)G_st_os00_Act.u16_XInfo)
/*-- UNMUTE CID --------------------------------------------*/
#if defined(VegaXS) || defined(VegaLite)
p_da_SetDSPValue(DSP_ADDR_SU2_VOL2(DSP_SUM2),0x0800);
p_da_SetDSPValue(DSP_ADDR_V4_VOL(DSP_TXV2),0x0800);
return (1);
/* the timer event ended the transmission: */
case FTMS_SMS_EXP:
printf(&TIMEOUT\r\n&);
return(1);
p_os19_RaiseException(OS09_EXC_ILL_EV);
} /*switch
/* the event did not match */
return (0);
} /* p_ms11_IfEvent() */
/****************************************************************************/
/* FUNCTIONAL DESCRIPTION:
* This function is used for sending DLL messages to to the service center
* The message has to be written into the output buffer and transmission has
* to be started by sending the first mark bits.
* The rest of the transmission is done within the callback function
* p_da_DSPCallBack();
* Input values: enum DLL_MESSAGE
* Output values: Transmission Buffer with the according DLL-message
p_ms11_SendDllMsg (t_e_ms01_DllMessages DllMessage)*/
p_ms11_SendDllMsg (u8 DllMessage)
u8 u8_CheckSum = 0;
u8_PayLoadLength = 0;
u8 u8_ErrorC
switch (DllMessage)
case DLL_SMS_DATA:
/**========================= NOTE ===============================**/
/* because of the RL protocol, the first 8 bytes in the buffer
/* are unused. Byte 7 and 8 are used for the message type and the*/
/* length and the delivered message length is too long as well
/*write message type in the header: */
G_u8_ms00_SMSDataTransmitBuffer[0][6] = 0x91;
/* length of message from PT can be read from:*/
/* u8_PayLoadLength = G_st_hl00_IWUReceive[0].u8_SMSDataLen-6;*/
u8_PayLoadLength = G_u8_ms00_SMSDataTransmitLength[0];
/*write payload length */
G_u8_ms00_SMSDataTransmitBuffer[0][7] = u8_PayLoadL
/* calculate checksum of */
u8_CheckSum = 0;
/* now generate the checksum and set the length*/
for (i=6;i&u8_PayLoadLength+6+2;i++)
u8_CheckSum = u8_CheckSum + (0xFF -
G_u8_ms00_SMSDataTransmitBuffer[0][i] + 0x01);
/* write the checksum to the end of the message:*/
G_u8_ms00_SMSDataTransmitBuffer[0][u8_PayLoadLength+6+2]= u8_CheckS
/* write length of message */
G_u8_ms01_UserDataLen = u8_PayLoadLength + 3;
/* set the transmit pointer to the correct buffer:*/
pu8_Transmit = (u8*)&G_u8_ms00_SMSDataTransmitBuffer[0][6];
/*activate transmission flag for CallBack*/
G_u8_ms01_SendingActive = 1;
printf(&send DLL_SMS_DATA: \n&);
/*----------------------------------------------------------------*/
case DLL_SMS_ERROR:
u8_ErrorCause = G_u8_ms01_Dll_ErrorC
/*write message type in the header: */
G_u8_ms01_SMSDllMessageBuffer[0] = 0x92;
/* G_u8_ms00_SMSDataTransmitBuffer[0][0] = 0x92;*/
/*write payload length */
G_u8_ms01_SMSDllMessageBuffer[1] = 0x01;
/* write error cause: */
G_u8_ms01_SMSDllMessageBuffer[2] = u8_ErrorC
/* calculate checksum */
u8_CheckSum = 0xFF - 0x92 + 0x01;
u8_CheckSum = u8_CheckSum + (0xFF - 0x01 + 0x01);
u8_CheckSum = u8_CheckSum + (0xFF - u8_ErrorCause + 0x01);
/* write checksum */
G_u8_ms01_SMSDllMessageBuffer[3] = u8_CheckS
/* write length of message including checksum */
G_u8_ms01_UserDataLen = 0x04;
/*activate transmission flag for CallBack*/
G_u8_ms01_SendingActive = 1;
/* set the transmit pointer to the correct buffer:*/
pu8_Transmit = (u8*)&G_u8_ms01_SMSDllMessageBuffer[0];
printf(&send DLL_SMS_ERROR: \n&);
/*----------------------------------------------------------------*/
/* this message is fix and alway has the same checksum */
case DLL_SMS_EST:
/*write message type in the header: */
G_u8_ms01_SMSDllMessageBuffer[0] = 0x93;
/*write payload length */
G_u8_ms01_SMSDllMessageBuffer[1] = 0x00;
/* write checksum */
/*checksum is fix: 0x6D so we don't calcualte it */
G_u8_ms01_SMSDllMessageBuffer[2] = 0x6D;
/* write length of message including checksum */
G_u8_ms01_UserDataLen = 0x03;
/*activate transmission flag for CallBack*/
G_u8_ms01_SendingActive = 1;
/* set the transmit pointer to the correct buffer:*/
pu8_Transmit = (u8*)&G_u8_ms01_SMSDllMessageBuffer[0];
printf(&send DLL_SMS_EST: \n&);
/*----------------------------------------------------------------*/
case DLL_SMS_REL:
/*write message type in the header: */
G_u8_ms01_SMSDllMessageBuffer[0] = 0x94;
/*write payload length */
G_u8_ms01_SMSDllMessageBuffer[1] = 0x00;
/* write checksum */
/*checksum is fix: 0x6C so we don't calcualte it */
G_u8_ms01_SMSDllMessageBuffer[2] = 0x6C;
/* write length of message including checksum */
G_u8_ms01_UserDataLen = 0x03;
/*activate transmission flag for CallBack*/
G_u8_ms01_SendingActive = 1;
/* set the transmit pointer to the correct buffer:*/
pu8_Transmit = (u8*)&G_u8_ms01_SMSDllMessageBuffer[0];
printf(&send DLL_SMS_REL: \n&);
/*----------------------------------------------------------------*/
case DLL_SMS_ACK:
/*write message type in the header: */
G_u8_ms01_SMSDllMessageBuffer[0] = 0x95;
/*write payload length */
G_u8_ms01_SMSDllMessageBuffer[1] = 0x02;
/*Acknowledge consists of TP-MTI and TP-PI (see .2.2.1a)
G_u8_ms01_SMSDllMessageBuffer[2] = 0x00;
G_u8_ms01_SMSDllMessageBuffer[3] = 0x00;
/* calculate checksum of */
u8_CheckSum = 0;
/* now generate the checksum and set the length*/
for (i=0;i&4;i++)
u8_CheckSum = u8_CheckSum + (0xFF -
G_u8_ms01_SMSDllMessageBuffer[i] + 0x01);
/* write checksum */
G_u8_ms01_SMSDllMessageBuffer[4] = u8_CheckS
/* write length of message including checksum */
G_u8_ms01_UserDataLen = 0x05;
/*activate transmission flag for CallBack*/
G_u8_ms01_SendingActive = 1;
/* set the transmit pointer to the correct buffer:*/
pu8_Transmit = (u8*)&G_u8_ms01_SMSDllMessageBuffer[0];
printf(&send DLL_SMS_ACK: \n&);
/*----------------------------------------------------------------*/
case DLL_SMS_NACK:
/*write message type in the header: */
G_u8_ms01_SMSDllMessageBuffer[0] = 0x96;
/*write payload length */
G_u8_ms01_SMSDllMessageBuffer[1] = 0x03;
/*Nacknowledge consists of TP-MTI,TP-FCS TP-PI (see .2.2.1a)
G_u8_ms01_SMSDllMessageBuffer[2] = 0x00;
G_u8_ms01_SMSDllMessageBuffer[3] = G_u8_ms01_TP_FailureC
G_u8_ms01_SMSDllMessageBuffer[4] = 0x00;
/* calculate checksum of */
u8_CheckSum = 0;
/* now generate the checksum and set the length*/
for (i=0;i&4;i++)
u8_CheckSum = u8_CheckSum + (0xFF -
G_u8_ms01_SMSDllMessageBuffer[i] + 0x01);
/* write checksum */
G_u8_ms01_SMSDllMessageBuffer[5] = u8_CheckS
/* write length of message including checksum */
G_u8_ms01_UserDataLen = 0x06;
/*activate transmission flag for CallBack*/
G_u8_ms01_SendingActive = 1;
/* set the transmit pointer to the correct buffer:*/
pu8_Transmit = (u8*)&G_u8_ms01_SMSDllMessageBuffer[0];
printf(&send DLL_SMS_NACK: \n&);
/*----------------------------------------------------------------------*/
/*-- MUTE CID --------------------------------------------------------------*/
/* mute CID path while transmitting CIT*/
#if defined(VegaXS) || defined(VegaLite)
p_da_SetDSPValue(DSP_ADDR_SU2_VOL2(DSP_SUM2), 0);
p_da_SetDSPValue(DSP_ADDR_V4_VOL(DSP_TXV2),0);
#if defined(VegaXS) || defined(VegaLite) */
/*--------------------------------------------------------------------------*/
/*now start the transmission */
/* The following sequence of DSP API calls starts CIT transmission*/
/* of 10 mark bits. The DAEV_CIT_IND event, which occurs every*/
/* time a data set has been transmitted, is not shown here.*/
if ((s32_Status= p_da_SetCITData(0x3FF)) != 0)
/*Data could not be transmitted */
/* inform the MMI (or MMS)*/
p_os10_PutMsgInfo(FTMMS_ID,0,MMI_FSK_SENT,MS01_TRANS_ERR);
/****************************************************************************/
/****************************************************************************/
/* FUNCTIONAL DESCRIPTION:
* The Settings for the modem for sending CIT data are done within a separate
* function call.
* There is a short time until the settings will have effect
* This function is called from the state machine
* Input values:
* Return Value:
void p_ms11_SetModem(void)
/*s32 s32_S*/
/* Instance switch
DSP_DFL_STARTUP_bit*/
/*p_da_SwitchInstance(DSP_CIT1,DSP_DFL_RUN_bit|DSP_DFL_STARTUP_bit);*/
p_da_SwitchInstance(DSP_RXV1, 0); /* switch off RXV1 */
p_da_SwitchInstance(DSP_RHP1, 0); /* switch off RHP1 */
/* this is done by speechmode16 and therefore commented here */
/* if ((s32_Status = p_da_SwitchInstance(DSP_CIT1,
DSP_DFL_RUN_bit|DSP_DFL_RUN_now_bit))!=0)
printf(&Error in SwitchInstance\r\n&);
/* The modem settings and the CIT volume are set within p_dr12_AudioInit()
/* and should not be set here again
/* if (p_da_SetCIT(0xA, 0x1300) != 0) *//* V23 mode, */
printf(&Error in SetCIT\r\n&);
/****************************************************************************/
/* FUNCTIONAL DESCRIPTION:
* Within CLIP detection ( p_mi13_CDSInd() ) the CLIP information was written
* into different variables.
* Input values: pointer to the buffer holding the clip data
full length of CLIP string (number)
* Return Value:
0xff if no number matched
n (0,1 or 2) if there was a match
u8 p_ms11_CheckSmscNum (u8 *pu8_Buffer, u8 u8_NrOfBytes)
u8 u8_Idx1, u8_Idx2;
/* the CLIP data can be read from the buffer HL00_CDS_DATA */
for ( u8_Idx1 = 0;u8_Idx1&3;u8_Idx1++)
/* the incoming clip info has to be the same length as the stored CLIP
* string of the SM-SC number
/* the clip information comes with a subaddress digit and a
/* delivery mode digit. Therefore it can be two digits longer. */
if (G_u8_ms00_SMSCNumberLength[u8_Idx1] &= u8_NrOfBytes)
for ( u8_Idx2 = 0;
u8_Idx2&G_u8_ms00_SMSCNumberLength[u8_Idx1];
u8_Idx2++)
if (!(G_u8_ms00_SMSCNumberBuffer[u8_Idx1][u8_Idx2] ==
pu8_Buffer[u8_Idx2]))
/* exit this for loop*/
else if (u8_Idx2 == G_u8_ms00_SMSCNumberLength[u8_Idx1]-1)
/* there is a match !*/
/* set the mark mode:*/
p_cl11_SetCIDMode(CL00_CID_MARK_MODE);
p_cl11_ResetCIDDetect();
return (u8_Idx1);
/* no match */
return (0xff);
} /*p_ms11_CheckSmscNum*/
/****************************************************************************/
/****************************************************************************/
/*******************************************************************************
FUNCTIONAL DESCRITION
Read the CID message received from the line
This funtion is used in function the p_ms11_ScanDllMsg
* Input values: Current DSPAdress
Length to read
* Output values: G_u8_ms00_SMSDataReceiveBuffer
G_u8_ms01_SMSDllMessageBuffer
* Return Value:
void p_ms11_GetPDUData(
u32 u32_DSPAddr ,
u8_PDUDataLength ,
*u8_MessageBuffer)
/* local index value */
u16 u16_DSPR
/* p_da_GetDSPValue returns a u16 value*/
/* in order to put this into two u8 variables
* define a pointer to the upper word
*u8_DSPRet = ((u8*)&u16_DSPReturn)+1;
#if defined(VegaXS) || defined(VegaLite)
if (u32_DSPAddr & 1)
/* odd byte - read first byte to get even address start for 'for' loop */
u16_DSPReturn= (u16) p_da_GetDSPValue(DSP_CID1,
DSP_ADDR_OFFS_CID_message_buffer+u32_DSPAddr-1);
*u8_MessageBuffer++ = *u8_DSPR
u32_DSPAddr++;
#endif /* VegaXS */
for (u8_Idx=0; u8_Idx & MS00_DATA_BUFFER_SIZE
&& u8_Idx & u8_PDUDataLength+2; u8_Idx+=2)
#ifndef UNIX
# if defined(VegaXS) || defined(VegaLite)
u16_DSPReturn= (u16) p_da_GetDSPValue(DSP_CID1,
DSP_ADDR_OFFS_CID_message_buffer+u32_DSPAddr);
u32_DSPAddr+=2;
u16_DSPReturn= (u16) p_da_GetDSPValue(u32_DSPAddr++);
# endif /* VegaXS */
*u8_MessageBuffer++ = (u8)u16_DSPR
*u8_MessageBuffer++ = *u8_DSPR
} /* for*/
/******************************************************************************/
/****************************************************************************/
/* FUNCTIONAL DESCRIPTION:
* The CID module within DSP detected incoming data.
* The callback function p_da_DSPCallBack() sent a message to the MMS.
* In case of a DLL_SMS_DATA message the data has to be scanned here
* and written into buffers
* Input values: G_u16_cl00_LastCidPar array containing address
and beginning of incoming FSK string
* Output values:
* Return Value:
void p_ms11_ScanDllMsg
u8 u8_MsgT
/* used to detect message type */
u8 u8_MsgL
/* Message Length from within message */
/*u8 u8_ClipDataO*/
u16 u16_DSPR
#if defined(VegaXS)
|| defined(VegaLite)
// u32 u32_DSPAddr= DSP_ADDR_CID_message_buffer(DSP_CID1)+2;
u32 u32_DSPAddr=2;
u32 u32_DSPAddr= G_u16_cl00_LastCidPar[2];
# endif /* VegaXS */
/* reset Failure cause */
/* inizalize TP-Failure to unspecified error cause */
G_u8_ms01_TP_FailureCause = 0xFF ;
/* inizalize TP-Failure to unspecified error cause */
G_u8_ms01_Dll_ErrorCause = 0xFF ;
/* reset More Messages */
G_u8_ms01_MoreMessages = 1 ;
/* scan in CLI buffer from DSP */
/*if (G_u16_cl00_LastCidPar[3] !=0x0)*/ /*read message and restart CID*/
/* Check sum error detection
* Check sum is computed in the dsp. Result is placed in MSG_DSP_DS_CID
* For details see See: User Manual Vega Pro DSP Release 3.0 Chap 28.4.2
if (G_u16_cl00_LastCidPar[1] & 0x01)
printf(&ScanDLL: DSP reports checksum ERROR\r\n&);
G_u8_ms01_Dll_ErrorCause = DLL_ERROR_CHKSUM ;
p_os10_PutMsgInfo(FTMMS_ID,0,MS_DLL_SMS_IND,DLL_PROT_ERROR);
p_cl11_ResetCIDDetect();
/*p_cl11_ResetCIDDetect();*/
/* set back 'cid data available' */
/*G_u16_cl00_LastCidPar[3] = 0;*/
#ifndef UNIX
# if defined(VegaXS) || defined(VegaLite)
u16_DSPReturn= (u16) p_da_GetDSPValue(DSP_CID1,
DSP_ADDR_OFFS_CID_message_buffer+u32_DSPAddr);
u32_DSPAddr+=2;
u16_DSPReturn= (u16) p_da_GetDSPValue(u32_DSPAddr++);
# endif /* VegaXS */
/* in element [0] is the return value of the function call
* to the DSP
* in element 1 is the the value of the first byte
/* read the message type and decide whether it is an expected message */
u8_MsgType = (u8)u16_DSPR
u8_MsgLength = (u8)(u16_DSPReturn&&8);
/*printf(&scan\r\n&);*/
switch (u8_MsgType)
case DLL_SMS_EST:
/* DLL message length check */
printf(&DLL_SMS_EST\r\n&);
if (u8_MsgLength == 0)
p_os10_PutMsgInfo(FTMMS_ID,0,MS_DLL_SMS_IND,DLL_SMS_EST);
printf(&DLL_SMS_EST error\r\n&);
G_u8_ms01_Dll_ErrorCause = DLL_ERROR_MSGLEN ;
p_os10_PutMsgInfo(FTMMS_ID,0,MS_DLL_SMS_IND,DLL_PROT_ERROR);
case DLL_SMS_REL:
/* DLL message length check */
if (u8_MsgLength == 0)
printf(&received DLL_SMS_REL: \n&);
p_os10_PutMsgInfo(FTMMS_ID,0,MS_DLL_SMS_IND,DLL_SMS_REL);
printf(&DLL_SMS_REL error\r\n&);
G_u8_ms01_Dll_ErrorCause = DLL_ERROR_MSGLEN ;
p_os10_PutMsgInfo(FTMMS_ID,0,MS_DLL_SMS_IND,DLL_PROT_ERROR);
case DLL_SMS_ACK:
/* DLL message length check
* contains RP_ACK as described in ETSI TS 100 901
* chap. 9.2.2.1 ii
* where the 1st byte is TP_MTI,TP_UDHI
* and the 2nd byte is TP-PI -& for DT TP_PI=0x00
* followed by the time stamp 7o
if (u8_MsgLength == 9)
p_ms11_GetPDUData(u32_DSPAddr , u8_MsgLength,
&G_u8_ms01_SMSDllMessageBuffer[0]);
/* check for sms submit report type*/
if ( G_u8_ms01_SMSDllMessageBuffer[0] != 0x01 )
/* unspecified TP Error */
G_u8_ms01_TP_FailureCause =
p_os10_PutMsgInfo(FTMMS_ID,0,MS_DLL_SMS_IND,TP_FAILURE);
p_os10_PutMsgInfo(FTMMS_ID,0,MS_DLL_SMS_IND,DLL_SMS_ACK);
printf(&received DLL_SMS_ACK: \n&);
printf(&DLL_SMS_ack error: %X\r\n&,u8_MsgLength);
G_u8_ms01_Dll_ErrorCause = DLL_ERROR_MSGLEN ;
p_os10_PutMsgInfo(FTMMS_ID,0,MS_DLL_SMS_IND,DLL_PROT_ERROR);
case DLL_SMS_NACK:
/* DLL message length check
* contains RP_ACK as described in ETSI TS 100 901
* chap. 9.2.2.1 i
* where the 1st byte is TP_MTI,TP_UDHI
* and the 2nd byte is TP_FCS
* and the 3rd byte is TP-PI -& for DT TP_PI=0x00
if (u8_MsgLength &= 10)
/* read message data */
p_ms11_GetPDUData(u32_DSPAddr , u8_MsgLength,
&G_u8_ms01_SMSDllMessageBuffer[0]);
/* check for sms submit report type*/
if ( G_u8_ms01_SMSDllMessageBuffer[0] != 0x01 )
/* unspecified TP Error */
G_u8_ms01_TP_FailureCause =
p_os10_PutMsgInfo(FTMMS_ID,0,MS_DLL_SMS_IND,TP_FAILURE);
p_os10_PutMsgInfo(FTMMS_ID,0,MS_DLL_SMS_IND,DLL_SMS_NACK);
printf(&DLL_SMS_NACK error\r\n&);
G_u8_ms01_Dll_ErrorCause = DLL_ERROR_MSGLEN ;
p_os10_PutMsgInfo(FTMMS_ID,0,MS_DLL_SMS_IND,DLL_PROT_ERROR);
case DLL_SMS_ERROR:
/* check DLL data length
* the Data byte transmitted is described in ETSI ES
* chap. 5.3.2.2
if ((u8_MsgLength == 1) || (u8_MsgLength == 0))
/* write Error Cause into buffer*/
p_ms11_GetPDUData (u32_DSPAddr , u8_MsgLength,
&G_u8_ms01_SMSDllMessageBuffer[0]);
p_os10_PutMsgInfo(FTMMS_ID,0,MS_DLL_SMS_IND,DLL_SMS_ERROR);
printf(&DLL_SMS_ERROR error: %X\r\n&,u8_MsgLength);
G_u8_ms01_Dll_ErrorCause = DLL_ERROR_MSGLEN ;
p_os10_PutMsgInfo(FTMMS_ID,0,MS_DLL_SMS_IND,DLL_PROT_ERROR);
case DLL_SMS_DATA:
printf(&data\r\n&);
/* store the length of the data:*/
G_u8_ms00_SMSDataReceiveLength[G_u8_ms00_MsgCount] = u8_MsgL
/* write the sms into the correct buffer
/* The counter G_u8_ms00_MsgCount is handled by the statemachine*/
/* scan the buffer for data elements*/
if (G_u8_ms00_MsgCount & 2)
p_ms11_GetPDUData(u32_DSPAddr , u8_MsgLength,
&G_u8_ms00_SMSDataReceiveBuffer[G_u8_ms00_MsgCount][0]);
/* data length check can be done now. According to
* the spec the SMS DELIVER TYPE has the follwoing length
* see ETSI TS 100 901 chap. 9.2.2.1
* MTI (and more) 1octet,OA 2-12o,PID 1o,DCS 1o, SCTS 7o,
UDL 1o, UD
/* OA is in digits = semioctets */
u8_ms11_OAInBytes =
(G_u8_ms00_SMSDataReceiveBuffer[G_u8_ms00_MsgCount][1] && 1)
+(G_u8_ms00_SMSDataReceiveBuffer[G_u8_ms00_MsgCount][1]
/* UDL is at position 6th entry in the SMS_DELIVER TYPE where
* OA is 2 octets + u8_ms11_OAInBytes
* SCTS is 7 octets
pu8_ms11_UDInBytes =
&G_u8_ms00_SMSDataReceiveBuffer[G_u8_ms00_MsgCount][0]
+ (u8_ms11_OAInBytes+12);
/* The length of UDL is in # of 7 bit ascii chars */
u8_ms11_UDInBytes = *pu8_ms11_UDInBytes -
(*pu8_ms11_UDInBytes / 8) ;
/* Now we are ready to check the length */
if (u8_MsgLength == u8_ms11_UDInBytes + u8_ms11_OAInBytes +13)
/* lets check the TP protocol */
G_u8_ms01_MoreMessages =
(G_u8_ms00_SMSDataReceiveBuffer[G_u8_ms00_MsgCount][0]
& 0x04 )&& MS11_TP_MMS_BIT;
/** check UHDI not supported by DT*/
if ((G_u8_ms00_SMSDataReceiveBuffer[G_u8_ms00_MsgCount][0]
&& MS11_TP_UDHI_BIT) & 0x01 == 0x01)
G_u8_ms01_TP_FailureCause = 0xE1 ;
p_os10_PutMsgInfo(FTMMS_ID,0,
MS_DLL_SMS_IND,TP_FAILURE);
printf(&TP_ERROR UDHI error\r\n&);
if(((G_u8_ms00_SMSDataReceiveBuffer[G_u8_ms00_MsgCount][0]
& MS11_TP_MTI_MASK) == 0 ) ||
(((G_u8_ms00_SMSDataReceiveBuffer[G_u8_ms00_MsgCount][0]
& MS11_TP_MTI_MASK) == 3 )))
/*check PID */
printf(&PID: %x\n&,
*(&G_u8_ms00_SMSDataReceiveBuffer[G_u8_ms00_MsgCount][0]
+ u8_ms11_OAInBytes + 3));
printf(&TP Data received\n&);
p_os10_PutMsgInfo(FTMMS_ID,0,MS_DLL_SMS_IND,DLL_SMS_DATA);
/* unspecified TP Error */
G_u8_ms01_TP_FailureCause = 0xFF ;
printf(&TP_ERROR unspecified TP error\r\n&);
p_os10_PutMsgInfo(FTMMS_ID,0,MS_DLL_SMS_IND,TP_FAILURE);
printf(&DLL_SMS_DATA error\r\n&);
G_u8_ms01_TP_FailureCause = 0xFF ;
p_os10_PutMsgInfo(FTMMS_ID,0,MS_DLL_SMS_IND,TP_FAILURE);
} /* end if G_u8_ms11_MsgCount & 2 */
/* we could not store the data, but the statemachine will */
/* handle this problem and send a NACK to the SMSC */
printf(&not stored\r\n&);
p_os10_PutMsgInfo(FTMMS_ID,0,MS_DLL_SMS_IND,DLL_SMS_DATA);
/* it was something else!!*/
/* send error code 0x11 meaning unknown dll message type */
printf(&UNKNOWN message TYPE \r\n&);
G_u8_ms01_Dll_ErrorCause = DLL_ERROR_MSGTYP ;
p_os10_PutMsgInfo(FTMMS_ID,0,MS_DLL_SMS_IND,DLL_PROT_ERROR);
} /* end switch*/
/* set back 'cid data available' */
/*G_u16_cl00_LastCidPar[3] = 0;*/
} /* endif
(G_u16_cl00_LastCidPar[3] !=0x0)*/
p_cl11_ResetCIDDetect();
/*p_cl11_ResetCIDDetect();*/
/* set back 'cid data available' */
/*G_u16_cl00_LastCidPar[3] = 0;*/
} /*void p_ms11_ScanDllMsg
/******************************************************************************/
# endif /*
VDSW_SMS_MMS */
/******************************************************************************/
/* FUNCTIONAL DESCRIPTION:
* There was an incoming SMS. This function checks the subscribed handsets.
* Then it generates the protocol header for the transfer to the PT.
* For each successful connection there will be an event MMS_INSTANCE_CFM
* Postcondition:
* Create a link to the handset and send the IWU info message that new SMS
# ifndef NO_NEW_SMS_IND
void p_ms11_HandleInstance(void)
u8 u8_Found = 0;
/* delete instance indications in table */
/* memset(u8_ms11_IncSMSInst, SD09_MAX_NUM_SUB, 0xFF); currently
* not used */
/* Task 780 - PR 110: save first the LRMS support, don't access it directly
* in 'for' loop */
/* u8_ms11_LRMS = EEPROM(SD02_LRMS_SUPPORT); ASA 9.8.02: This doesn't
* always work. about 5% failure rate for not known reason. Task 803 */
u8_ms11_LRMS = p_dr13_EEPROMReadByte(SD02_LRMS_SUPPORT);
for( u8_Handset=1;(u8_Handset&=SD09_MAX_NUM_SUB) && !u8_F u8_Handset++)
/* Is the handset subscribed? */
if ((p_ms11_ReadSubscState(u8_Handset) == HL00_SUBSCRIBED) &&
(u8_ms11_LRMS & (0x01 && (u8_Handset - 1))))
u8_Found = 1;
/*printf(&first HS found: %d \n&,u8_Handset);*/
u8_ms11_InstanceHandsetNr = u8_H
/* u8_ms11_InstanceHandsetNr is global*/
p_hl00_GetIncomingMMSInstance(u8_Handset);
/* as an answer to this function call the following event will
/* be sent to the MMS:
/* p_os10_PutMsgInfo(FTMMS_ID, 0, MMS_INSTANCE_CFM,
/* G_u8_hl00_PTInstTable[u8_PTNumber] + 2*SD09_MAX_NUM_INST); */
if (u8_Found)
/* clean buffers (set length to 0) */
/* G_st_ms00_UserDataTransmit.u8_UserDataLen = 0; */
G_st_hl00_IWUTransmit[1].u8_SMSDataLen = 0;
/* the buffer number has to be transmitted by the userdata in
/* an IWU info */
p_ms11_PutGenObjHdr(MMS_NEW_SMS, MS00_NEW_SMS_IND);
} /* p_ms11_HandleInstance */
# endif /* NO_NEW_SMS_IND */
/******************************************************************************/
# if (VDSW_FEATURES & VDSW_SMS_MMS)
/******************************************************************************/
/* FUNCTIONAL DESCRIPTION:
* This function is used for starting an outgoing SMS call which was
* requested by the PT
* Input values:
* Output values:
* Return Value:
void p_ms11_StartSMSCall(void)
/*send an event to FT MMI to request the external line*/
/*p_os10_PutMsg(FTMI_ID,0,PS_CALL_IND);*/
p_os10_PutMsg(FTMI_ID,0,FTMI_SMS_IND);
/* start a timer in case the line was not free:*/
/* after 4s there should be an event from the line MMI that it was*/
/* available*/
p_os10_StartTimer(FTMS_004_TMR,FTMS_LINEREQ_EXP);
/******************************************************************************/
/******************************************************************************/
/* FUNCTIONAL DESCRIPTION:
* The request for the line by p_ms11_StartSMSCall() was not successful
Therefore release the link to the handset and clean up
* Input values:
* Output values:
* Return Value:
void p_ms11_NoLine(void)
p_cl11_ResetCIDDetect();
/******************************************************************************/
/******************************************************************************/
/* FUNCTIONAL DESCRIPTION:
* The line was free, but either the service center did not answer in time
or there was something wrong before
Hang up the line, inform the connected PT (and release the link ??)
* Input values:
* Output values:
* Return Value:
p_ms11_CleanUpOutSMS(void)
/*reset flag that it is a SMS call:*/
/**** G_u8_mi01_ClipSMS = 0; */
p_os10_StopTimer(FTMS_SMS_EXP);
/* we only release the line if it was not done by another handset before
if(G_u8_mi01_ClipSMS == 1)
/*send release event to FT MMI line:*/
p_os10_PutMsg(FTMI_ID,0,PS_RELEASE_IND);
p_cl11_ResetCIDDetect();
/* initialize a value of the CID array used in p_da_callback*/
/*G_u16_cl00_LastCidPar[3]= 0;*/
/*-- UNMUTE CID --------------------------------------------*/
#if defined(VegaXS) || defined(VegaLite)
p_da_SetDSPValue(DSP_ADDR_SU2_VOL2(DSP_SUM2),0x0800);
p_da_SetDSPValue(DSP_ADDR_V4_VOL(DSP_TXV2),0x0800);
/*set back the gain for onhook*/
/* sys2_DAIF.rvbc2g = 0x12; */
/* inform FTMMI whether Message was sent successfully: */
if (G_u8_ms01_SMSFail == 0)
/*inform MMI th:*/
p_os10_PutMsg(FTMI_ID,0,MMI_SMS_SEND_DONE_IND);
/*the data are stored in the transmit buffer*/
else if (G_u8_ms01_SMSFail == 1)
/*inform MMI:*/
p_os10_PutMsg(FTMI_ID,0,MMI_SMS_SEND_FAIL_IND);
/*the data are stored in the transmit buffer*/
/* only change speechmode if there is no active speech call which
/* interupted the SMS call
if(G_u8_mi01_ClipSMS == 1)
/*change settings in speechmode*/
p_dr12_SpeechModef(DR02_AM_IDLE);
G_u8_ms01_DllErrCount = 0;
G_u8_ms01_SentCount = 0;
/* D53 / PR111 thc */
/*set mode back to seizure mode*/
p_cl11_SetCIDMode(CL00_CID_SEIZURE_MODE);
/******************************************************************************/
/* FUNCTIONAL DESCRIPTION:
* PT requests a connect for an outgoing message or to request a message or to
* change service center number etc.
* immediately answer with a event
MNCC_CONNECT_REQ
void p_ms11_SetupInd(void)
p_os10_PutMsg(FTCC_ID, G_st_os00_Act.u8_SInst,MNCC_CONNECT_REQ);
/* u8_OutgCCInst = G_st_os00_Act.u8_SI ASA 13-May-02:
* use G_u8_ms01_LastCCInstance */
/* store the number of the handset which requested the link for not
/* reacting to a release indication from an other handset
G_u8_ms01_ActiveLinkNr = G_st_os00_Act.u16_SInstI
/* used for MMS_ESC_CMD messages: */
G_st_hl00_IWUReceive[0].pu8_ESCData
= G_st_ms00_UserDataReceive.pu8_UserD
G_st_hl00_IWUTransmit[0].pu8_SMSData =G_st_ms00_UserDataTransmit.pu8_UserD
/* send indication to FTMMI for new link SETUP */
p_os10_PutMsg(FTMI_ID, 0, MMI_SMS_SETUP_IND);
/******************************************************************************/
/******************************************************************************/
/* FUNCTIONAL DESCRIPTION:
* This function handles the connections to the handsets in case of a new
* incoming SMS. The indication itself is handled in p_ms11_SendSMSIndication()
void p_ms11_InformHandsets(void)
p_os10_PutMsgInfo(FTMMS_ID, 0, MMS_PAGE_SMS_REQ,0);
/*inform MMI that data is available */
p_os10_PutMsgInfo(FTMI_ID,0,MMI_SMS_RECV_IND,G_u8_ms00_MsgCount);
/******************************************************************************/
# endif /*
VDSW_SMS_MMS */
# ifndef NO_NEW_SMS_IND
/******************************************************************************/
/* FUNCTIONAL DESCRIPTION:
* Send indication to PT that a message arrived. Before this function is used
* the link is created by p_ms11_InformHandsets()
* This function is called by MNCC_CONNECT_IND after the connections to the
* subscribed handsets is created.
void p_ms11_SendSMSIndication(void)
p_os10_PutMsg(FTCC_ID, G_st_os00_Act.u8_SInst, MNCC_IWU_INFO_REQ);
/* used for MMS_ESC_CMD messages: */
/* incoming SMS call, instance 1 is used by the Higher Layers*/
if (VDSW_FEATURES & VDSW_SMS_MMS)
G_st_hl00_IWUReceive[1].pu8_ESCData = G_st_ms00_UserDataReceive.pu8_UserD
/* FT initiated link doesn't used data (only SMS_RECV_IND)
* G_st_hl00_IWUTransmit[1].pu8_SMSData =
G_st_ms00_UserDataTransmit.pu8_UserD*/
VDSW_SMS_MMS */
# endif /* NO_NEW_SMS_IND */
/******************************************************************************/
# if (VDSW_FEATURES & VDSW_SMS_MMS)
/******************************************************************************/
/* FUNCTIONAL DESCRIPTION:
* An event MMS_ESC_CMD_IND was sent by the PT
* now read the info element and react according to it
void p_ms11_DecodeEscCmdEvent(void)
u8 u8_IWUReceiveI
u8_IWUReceiveInst = (G_u8_ms01_LastCCInstance/SD09_MAX_NUM_INST)-1;
/* read additional information if available and store it for the FTMMI */
if (G_st_hl00_IWUReceive[u8_IWUReceiveInst].u8_SMSDataLen != 0)
/* copy data really - MMI is responsible for setting pu8_UserData */
/* now copied by the protocol stack - see Task 588
memcpy(G_st_ms00_UserDataReceive.pu8_UserData,
G_st_hl00_IWUReceive[u8_IWUReceiveInst].pu8_SMSData,
G_st_hl00_IWUReceive[u8_IWUReceiveInst].u8_SMSDataLen); */
G_st_ms00_UserDataReceive.u8_UserDataLen =
G_st_hl00_IWUReceive[u8_IWUReceiveInst].u8_SMSDataL
/* in the XInfo element of the message the command is written:*/
switch (G_st_os00_Act.u16_XInfo)
/* currently no additional action */
/* pass the MMS_ESC_CMD to the FTMMI */
p_os10_PutMsgInfo(FTMI_ID, 0, MMI_MMS_ESC_CMD_IND, G_st_os00_Act.u16_XInfo);
}/*void p_ms11_DecodeEscCmdEvent(void)*/
/******************************************************************************/
/******************************************************************************/
/* FUNCTIONAL DESCRIPTION:
* Line is available, now dial to the service center:
* Feed the dial buffer within the FTL with the number of the service center
* and send the event PS_DIAL_IND to the FTMMI
void p_ms11_DialServiceCenter(void)
u8 u8_NumK
u8_LineID = 0; /*set fix to 0 -& improve it*/
u8_DialFull= 0;
u8_CountryID = EEPROM(SD02_COUNTRY_IDENTIFICATION);
u8_NumKeys = G_u8_ms00_SMSCNumberLength[0];
switch (u8_CountryID)
case 0x01: /* Deutsche Telekom
/*in case of Deutsche Telekom an additional 0 has to be dialled:
/*------------------------------------------------------------------*/
/* we add one additional '0' for delivery mode ID (variant ID)
u8_NumKeys += 1;
/* write the number to the dialbuffer
for (u32_Index=0x00;
((u32_Index & u8_NumKeys) && (u8_DialFull == 0));
u32_Index++)
/* Check that the array isn't full */
if (((u8)(G_u8_hl00_DialWIndex[u8_LineID]+0x01)%G_u8_hl00_DialSize)
== G_u8_hl00_DialRIndex[u8_LineID])
u8_DialFull = 1;
else if (u32_Index & (u8_NumKeys - 1))
/* Read in the next key.
G_u8_hl00_DialDigits[u8_LineID][G_u8_hl00_DialWIndex[u8_LineID]] =
G_u8_ms00_SMSCNumberBuffer[0][u32_Index];
/* increment the write pointer to the next position*/
G_u8_hl00_DialWIndex[u8_LineID] =
(u8)(G_u8_hl00_DialWIndex[u8_LineID]+0x01)%G_u8_hl00_DialS
/* There is an additional digit at the end
G_u8_hl00_DialDigits[u8_LineID][G_u8_hl00_DialWIndex[u8_LineID]] =
/* increment the write pointer to the next position*/
G_u8_hl00_DialWIndex[u8_LineID] =
(u8)(G_u8_hl00_DialWIndex[u8_LineID]+0x01)%G_u8_hl00_DialS
default: /*unknown but
Deutsche Telekom*/
/* write the number to the dialbuffer
/*------------------------------------------------------------------*/
/* we add two additional '0' for subaddress and delivery mode ID
u8_NumKeys += 2;
/*------------------------------------------------------------------*/
for (u32_Index=0x00;
(u32_Index & u8_NumKeys) && (u8_DialFull == 0);
u32_Index++)
/* Check that the array isn't full */
if (((u8)(G_u8_hl00_DialWIndex[u8_LineID]+0x01)%G_u8_hl00_DialSize)
== G_u8_hl00_DialRIndex[u8_LineID])
u8_DialFull = 1;
else if (u32_Index & (u8_NumKeys - 2))
/* Read in the next key.
G_u8_hl00_DialDigits[u8_LineID][G_u8_hl00_DialWIndex[u8_LineID]] =
G_u8_ms00_SMSCNumberBuffer[0][u32_Index];
/* increment the write pointer to the next position*/
G_u8_hl00_DialWIndex[u8_LineID] =
(u8)(G_u8_hl00_DialWIndex[u8_LineID]+0x01)%G_u8_hl00_DialS
/* There is an additional digit at the end
G_u8_hl00_DialDigits[u8_LineID][G_u8_hl00_DialWIndex[u8_LineID]] =
/* increment the write pointer to the next position*/
G_u8_hl00_DialWIndex[u8_LineID] =
(u8)(G_u8_hl00_DialWIndex[u8_LineID]+0x01)%G_u8_hl00_DialS
/* dial the number:*/
printf(&SMS dialwith in dsmsc\r\n&);
/* don't dial in case there was a break inbetween */
if (G_u8_mi01_ClipSMS == 1)
p_mi13_DialWith();
} /*p_ms11_DialServiceCenter*/
/******************************************************************************/
/******************************************************************************/
/* FUNCTIONAL DESCRIPTION:
* This function is called from within the incoming statemachine,
* whenever the incoming SMS call ends.
* That can be at the end of a successful reception of a SMS, or when there
* was an error or even when the transfer was interrupted by a speech call from
* a handset.
* The sense of this function is to bring back the base into normal state and
* to initialize the used variables.
* In case a message was received, the subscribed handsets are informed.
void p_ms11_CleanIncErr(void)
/* make sure that the SMS timer is stopped: */
p_os10_StopTimer(FTMS_SMS_EXP);
/* send event to MMI (ftl) to release the line an go onhook. Also the SMS
/* flag G_u8_mi01_ClipSMS will be deleted this way later
p_os10_PutMsg(FTMI_ID,0,PS_RELEASE_IND);
/* if we got a message, we inform the handset
if(G_u8_ms00_MsgCount & 0)
/*inform PT that message arrived*/
p_ms11_InformHandsets();
/* restart CID (make sure CID is ready to receive CLIP information)
p_cl11_ResetCIDDetect();
/*--------------- initialize variables -------------------------------------*/
/* initialize a value of the CID array used in p_da_callback
/* this value is used to make sure no CID event is sent to MMI before the
/* buffer was read
/*G_u16_cl00_LastCidPar[3]= 0;*/
/* set back variables used in SMS statemachine
G_u8_ms01_DllErrCount = 0;
G_u8_ms01_SentCount = 0;
/*-- UNMUTE CID --------------------------------------------*/
#if defined(VegaXS) || defined(VegaLite)
p_da_SetDSPValue(DSP_ADDR_SU2_VOL2(DSP_SUM2), 0);
p_da_SetDSPValue(DSP_ADDR_V4_VOL(DSP_TXV2),0x0800);
/*reset the buffer number*/
G_u8_ms00_MsgCount = 0;
/* just in case we were not interrupted by a speechcall we set back the
/* speechmode to a default value
/* (in case there was an interruption by a speechcall, this happend already */
/* setting it again would result in losing the speech connection to PT )
if(G_u8_mi01_ClipSMS == 1)
/*change settings in speechmode*/
p_dr12_SpeechModef(DR02_AM_IDLE);
/* D53 / PR111 thc */
/*set mode back to seizure mode*/
p_cl11_SetCIDMode(CL00_CID_SEIZURE_MODE);
} /* p_ms11_CleanIncErr*/
/******************************************************************************/
/******************************************************************************/
/* FUNCTIONAL DESCRIPTION:
* This function is called from the link thread of the statemachine
* It handles the variable with the SMS links and returns 1 if the value of this
* variable is 0
* This function checks whether the MNCC_RELEASE_IND originates from the handset
* that has an active SMS link to the FT (G_u8_ms01_ActiveLinkNr)
u8 p_ms11_CheckSMSLink(void)
if ((G_st_os00_Act.u8_Event == MNCC_RELEASE_IND) /*&&
(G_u8_ms01_ActiveLinkNr == G_st_os00_Act.u16_SInstInfo)*/)
/* it was a release event, inform FTMMI */
p_os10_PutMsgInfo(FTMI_ID,0,MMI_SMS_RELEASE_IND,
G_st_os00_Act.u16_SInstInfo);
/* update link table and test whether the statemachine can switch to
idle state */
G_u8_ms01_IncSMSType &=
~(0x01 &&(G_st_os00_Act.u8_SInst%SD09_MAX_NUM_INST));
/*printf(&inc sms type: %X\nSinst: %d\n&,
G_u8_ms01_IncSMSType,G_st_os00_Act.u8_SInst);
printf(&SInst shift: %X\n&,
(0x01 &&(G_st_os00_Act.u8_SInst%SD09_MAX_NUM_INST)));*/
/* DEBUG IT */
/* In case some a handset can't be reached this will not be 0 */
if(G_u8_ms01_IncSMSType == 0)
/* no more active links, change to idle state */
printf(&no act link\n&);*/
printf(&act link\n&);
/* no change to idle state is needed: */
} /* p_ms11_CheckSMSLink*/
/******************************************************************************/
VDSW_SMS_MMS */
#endif /* (VDSW_FEATURES & VDSW_SMS) */
/* == END =================================================================== */
源码下载: &
源码文件列表
温馨提示: 点击源码文件名可预览文件内容哦 ^_^
名称大小日期
&adsLiteonTBDemo.map6.83 kB 13:42
&adsmemLite.map6.88 kB 13:42
&adssum2.96 kB 13:42
&adssum.prl5.60 kB 13:42
&22.68 kB 13:42
&3.50 kB 13:42
&2.29 kB 13:42
&3.57 kB 13:42
&49.71 kB 13:42
&4.14 kB 13:42
&29.90 kB 13:42
&11.92 kB 13:42
&2.92 kB 13:42
&11.36 kB 13:42
&5.29 kB 13:42
&93.34 kB 14:31
&43.07 kB 13:42
&3.66 kB 13:42
&477.00 B 13:42
&27.24 kB 13:42
&14.87 kB 13:42
&5.94 kB 13:42
&4.60 kB 13:42
&3.53 kB 13:42
&1.77 kB 13:42
&5.11 kB 13:42
&1.63 kB 13:42
&2.41 kB 13:42
&10.97 kB 13:42
&141.87 kB 13:42
&137.22 kB 13:42
&82.27 kB 13:42
&14.77 kB 13:42
&156.69 kB 13:42
&11.41 kB 13:42
&15.78 kB 13:42
&34.43 kB 13:42
&bhl22mls.sdl25.37 kB 13:42
&111.29 kB 13:42
&bhl23ccs.sdl87.90 kB 13:42
&25.78 kB 13:42
&bhl24mms.sdl20.58 kB 13:42
&7.44 kB 13:42
&bhl25sss.sdl6.09 kB 13:42
&31.98 kB 13:42
&bhl26cms.sdl27.18 kB 13:42
&52.63 kB 13:42
&9.50 kB 13:42
&4.47 kB 13:42
&2.70 kB 13:42
&2.77 kB 13:42
&16.08 kB 13:42
&2.34 kB 13:42
&7.65 kB 13:42
&bhm12rms.sdl6.08 kB 13:42
&33.63 kB 13:42
&96.24 kB 13:42
&152.69 kB 14:31
&2.57 kB 13:42
&26.34 kB 13:42
&6.19 kB 13:42
&2.52 kB 13:42
&2.79 kB 13:42
&7.71 kB 13:42
&4.66 kB 13:42
&34.16 kB 13:42
&25.07 kB 13:42
&25.07 kB 13:42
&19.21 kB 13:42
&10.55 kB 13:42
&223.31 kB 13:42
&bmi15ftd.bzp14.83 kB 13:42
&13.47 kB 13:42
&bmi16ftl.bzp14.76 kB 13:42
&19.22 kB 13:42
&3.55 kB 13:42
&21.39 kB 13:42
&bmi19dam.bzp43.27 kB 13:42
&100.53 kB 13:42
&2.25 kB 13:42
&bmi29pll.bin48.72 kB 13:42
&12.94 kB 13:42
&8.49 kB 13:42
&6.85 kB 13:42
&2.09 kB 13:42
&68.07 kB 13:42
&8.73 kB 13:42
&bms13bsm.bzp20.86 kB 13:42
&52.20 kB 13:42
&18.85 kB 13:42
&7.91 kB 13:42
&bsd09ddl.ddl24.62 kB 13:42
&89.10 kB 13:42
&2.48 kB 13:42
&5.70 kB 13:42
&3.67 kB 13:42
&92.79 kB 13:42
&23.19 kB 13:42
&2.57 kB 13:42
&2.37 kB 13:42
&2.37 kB 13:42
&9.53 kB 13:42
&6.10 kB 13:42
&4.27 kB 13:42
&4.25 kB 13:42
&3.98 kB 13:42
&56.29 kB 13:42
&22.55 kB 13:42
&24.52 kB 13:42
&86.59 kB 13:42
&587.00 B 13:42
&5.18 kB 13:42
&34.16 kB 13:42
&21.88 kB 13:42
&12.22 kB 13:42
&25.70 kB 13:42
&2.31 kB 13:42
&33.94 kB 13:42
&54.98 kB 13:42
&17.50 kB 13:42
&2.05 kB 13:42
&6.35 kB 13:42
&19.47 kB 13:42
&21.13 kB 13:42
&41.53 kB 13:42
&2.54 kB 13:42
&3.17 kB 13:42
&4.28 kB 13:42
&5.16 kB 13:42
&8.02 kB 13:42
&5.20 kB 13:42
&2.10 kB 13:42
&29.57 kB 13:42
&16.42 kB 13:42
&22.19 kB 13:42
&22.60 kB 13:42
&28.86 kB 13:42
&21.99 kB 13:42
&16.47 kB 13:42
&9.84 kB 13:42
&39.85 kB 13:42
&5.80 kB 13:42
&27.52 kB 13:42
&cdr21stp.s3.13 kB 13:42
&62.76 kB 13:42
&4.47 kB 13:42
&3.36 kB 13:42
&3.52 kB 13:42
&1.53 kB 13:42
&7.93 kB 13:42
&2.95 kB 13:42
&1.61 kB 13:42
&2.08 kB 13:42
&60.24 kB 13:42
&1.29 kB 13:42
&3.96 kB 13:42
&2.48 kB 13:42
&6.88 kB 13:42
&1.08 kB 13:42
&9.16 kB 13:42
&cds78dsp.a120.21 kB 13:42
&cds79dsp.a43.89 kB 13:42
&3.08 kB 13:42
&5.63 kB 13:42
&17.14 kB 13:42
&14.37 kB 13:42
&4.33 kB 13:42
&26.24 kB 13:42
&11.60 kB 13:42
&2.91 kB 13:42
&2.05 kB 13:42
&2.45 kB 13:42
&3.15 kB 13:42
&1.91 kB 13:42
&10.54 kB 13:42
&4.69 kB 13:42
&12.60 kB 13:42
&10.98 kB 13:42
&2.07 kB 13:42
&16.16 kB 13:42
&20.85 kB 13:42
&22.60 kB 13:42
&7.12 kB 13:42
&7.35 kB 13:42
&140.38 kB 13:42
&8.52 kB 13:42
&37.44 kB 13:42
&12.96 kB 13:42
&2.79 kB 13:42
&3.74 kB 13:42
&25.18 kB 13:42
&3.70 kB 13:42
&10.18 kB 13:42
&33.71 kB 13:42
&3.45 kB 13:42
&22.68 kB 13:42
&3.94 kB 13:42
&67.42 kB 13:42
&2.41 kB 13:42
&2.69 kB 13:42
&7.23 kB 13:42
&3.44 kB 13:42
&25.57 kB 13:42
&8.89 kB 13:42
&cygwin1.dll749.30 kB 13:42
&ddl2c41.99 kB 13:42
&ddl2c.exe72.00 kB 13:42
&ddl2ddl25.18 kB 13:42
&ddl2ddl.exe56.00 kB 13:42
&DECTBMPV15.sym5.78 kB 13:42
&639.00 B 13:42
&1.98 kB 13:42
&gmake.exe153.00 kB 13:42
&22.55 kB 13:42
&libfpbmplitemask.lib898.59 kB 13:42
&libfpbmpliteontb.lib632.22 kB 13:42
&libfpdsplifla.lib3.38 MB 13:42
&libfpdsplite.lib1.63 MB 13:42
&libfplmaclite.lib475.81 kB 13:42
&libfpsmsprotlite.lib1.42 MB 13:42
&macrodef.mak28.22 kB 13:42
&19.84 kB 13:42
&pc0.exe10.87 kB 13:42
&3.47 kB 13:42
&pccdef.hec3.50 kB 13:42
&pccdef.hem9.89 kB 13:42
&pccdef.het5.74 kB 13:42
&perl.exe63.50 kB 13:42
&perl100.dll515.00 kB 13:42
&7.10 kB 13:42
&prost14.71 kB 13:42
&sdl2c34.88 kB 13:42
&sdl2c.exe60.00 kB 13:42
&ssw01fiq.s21.85 kB 13:42
&ssw01irq.s27.96 kB 13:42
&startup.s13.60 kB 13:42
&3.24 kB 13:42
&tclibi.lib219.22 kB 13:42
&175.00 B 13:42
Sponsored links
23 篇源代码 21 篇源代码 18 篇源代码 13 篇源代码 9 篇源代码
285 篇源代码 173 篇源代码 48 篇源代码 42 篇源代码 36 篇源代码
登录 CodeForge
还没有CodeForge账号?
Switch to the English version?
CF仔没有找到您要的代码,请去留下您的问题吧,可能会有大神帮助你哦!
该用户暂时未开通博客
请按 Ctrl+D 键添加到收藏夹。

我要回帖

更多关于 error是什么意思 的文章

 

随机推荐