blob: 9c6611c81e2a643e3e6a934f0f418af23d392a8b [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2016
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35/*************************************************************
36*
37* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
38*
39* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
40*
41* Copyright (c) 1998-2010 VIA Telecom, Inc. All rights reserved.
42*
43*************************************************************/
44#ifndef _LMDAPI_H_
45#define _LMDAPI_H_
46/*****************************************************************************
47*
48* FILE NAME : lmdapi.h
49*
50* DESCRIPTION :
51*
52* This is the interface include file for LMD.
53* It is organized by first defining the EXE mailboxes and signals used.
54* After this, the enumerated message IDs are defined. Basic typedefs follow
55* this and Following that is the message structure for each message.
56*
57* NOTE: At the end of the file are typedefs that the PS had expected to find in
58* this file during CBP3 development. These are included here as a temporary
59* workaround until these issues can be resolved.
60*
61* HISTORY :
62* See Log at end of file
63*
64*****************************************************************************/
65
66
67/*----------------------------------------------------------------------------
68 Include Files
69----------------------------------------------------------------------------*/
70
71#include "sysdefs.h"
72#include "sysapi.h"
73#include "rlpwapi.h"
74#include "lmd_msgid.h"
75#include "lmd_audio.h"
76
77/*----------------------------------------------------------------------------
78* EXE Interfaces - Definition of Signals and Mailboxes
79*----------------------------------------------------------------------------*/
80/* array size for long code mask */
81#define LMD_LONG_CODE_MASK_SIZE 6
82#define MOD_DUMMY 0
83
84/* Voice Memo prefetch buffer size = (max size frame + the rate word) X 4.
85 *
86 * LMD defines a static buffer SpchData[] where it prefetches the speech
87 * data during voice memo or answering machine playback. There are
88 * conditions where FSM is late in doing the block reads and LMD would
89 * be starving of data. By making the buffer size 4 times bigger than
90 * the maximun speech packet size we guarantee that LMD will always have
91 * at least one packet in prefetch buffer.
92 */
93
94/*---------------------------------------------------------------
95* Message IDs for signals and commands sent to LMD
96*---------------------------------------------------------------*/
97/* Maximum number of SCH */
98
99#ifdef SYS_OPTION_SCH_RAM_INUSE
100#define MAX_PDU_NUM 8 /* now 8 for one SCH */
101#else
102#define MAX_PDU_NUM 1 /* now 8 for one SCH */
103#endif
104
105#define MAX_ACCESS_MSG_LEN 111
106#define MAX_MSG_LEN 255
107#define PCH_FRAME_LEN 24
108#define MAX_FCH_FRAME_BYTE_LEN 34
109
110/*
111** Messages of LmdCmdMsgIdT type
112** should be sent to the LMD_CMD_MAILBOX.
113*/
114#include "lmd_msgid.h"
115
116
117/*Move some structures form dspmapi.h to here*/
118/* Forward channel modem channel buffer sizes in kal_uint16 */
119#define IPC_DTA_MBOX_M2C_CH0_SIZE 17
120#define IPC_DTA_MBOX_M2C_CH1_SIZE 30
121#define IPC_DTA_MBOX_M2C_CH2_SIZE 47
122
123/* Reverse channel modem channel buffer sizes in kal_uint16 */
124#define IPC_DTA_MBOX_C2M_CH0_SIZE 17
125#define IPC_DTA_MBOX_C2M_CH1_SIZE 17
126#define IPC_DTA_MBOX_C2M_CH2_SIZE 390
127/* Reverse channel signaling buffer size in kal_uint16 */
128#define IPC_DTA_MBOX_C2M_SIGBUF_SIZE 5
129
130/* define for varais in lmddbuf.c*/
131#define IPC_DTA_MBOX_C2M_CH0_SIZE_IN_DB_WORDS 9
132#define IPC_DTA_MBOX_C2M_CH2_SIZE_IN_DB_WORDS 195
133
134typedef enum
135{
136 LMD_REV_NULL_CHNL = 0,
137 LMD_REV_ACCESS_CHNL,
138 LMD_REV_EACH_CHNL,
139 LMD_REV_TRAFFIC_CHNL
140} LmdRevChanTypeT;
141
142typedef enum /* Rev fch rate */
143{
144 R_FULL = 0,
145 R_HALF,
146 R_QUARTER,
147 R_EIGHTH,
148 R_ZERO
149} LmdRevFundRateTypeT;
150
151typedef enum
152{
153 IPC_FWD_FRAME_BLANK = 0x0,
154 IPC_FWD_FRAME_EIGHTH = 0x1,
155 IPC_FWD_FRAME_QUARTER = 0x2, /* not used for SSO 3 */
156 IPC_FWD_FRAME_HALF = 0x3,
157 IPC_FWD_FRAME_FULL = 0x4,
158 IPC_FWD_FRAME_ERASURE = 0xE,
159 IPC_FWD_FRAME_FULL_LIKELY = 0xF /* used only for SSO's 1&3 */
160} LmdFwdFrameRateT;
161
162typedef enum
163{
164 FER_FCH = 0,
165 FER_SCH,
166 FER_MAX_CHANNELS
167} LmdFerStatsChannelsT;
168
169typedef enum
170{
171 FSYNC,
172 FPAGE,
173 FBCCH,
174 FQPCH,
175 FCPCCH,
176 FCACH,
177 FCCCH,
178 FDCCH,
179 FFCH, /* also for traffic channel in IS95 FTCH */
180 FSCH,
181 F_MON_CHNL,
182 FPDCH,
183 FWD_MAX_CHNL_TYPS
184} LmdFwdChnlTypeT;
185
186/*---------------------------------------------------------------
187* Basic Types
188*---------------------------------------------------------------*/
189
190/*
191** The Logic To Physical Mapping (LPM) table is used in
192** the service configuration messages.
193*/
194#define MAX_LPM_ENTRIES 15
195
196typedef struct
197{
198 kal_uint8 SrId;
199 kal_uint8 LogicalResource;
200 kal_uint8 PhysicalResource;
201 kal_bool ForwardFlag;
202 kal_bool ReverseFlag;
203 kal_uint8 Priority;
204} LmdLpmT;
205
206
207/*---------------------------------------------------------------
208* Message Definitions
209* There is a section for each defined message type. If
210* there is no MsgT shown, there is no data associated with
211* the message.
212*---------------------------------------------------------------*/
213
214/*LMD_L1D_FWD_DATA_IND_MSG*/
215typedef struct
216{
217 kal_bool FchChnlQuality;
218 kal_bool SchChnlReady;
219 kal_bool SchChnlQuality;
220 kal_uint16 FchEbNt;
221 kal_uint16 DecodeSucPcgIndex;
222 kal_uint16 AckReceivePcgIndex;
223 LmdFwdFrameRateT FchRate;
224 kal_uint16 FchDataLength;
225 kal_uint16 SchEbNt;
226 kal_uint16 SchDataLength;
227 kal_uint32 *FchDataAddress;
228 kal_uint32 *SchDataAddress;
229} LmdL1dFwdDataIndMsgT;
230
231
232
233
234
235
236
237
238/*
239** LMD_REVERSE_ACCESS_SIG_MSG
240*/
241typedef struct
242{
243 kal_uint8 MsgLength; /* Length of the message in bytes */
244 kal_uint8 MsgData[MAX_ACCESS_MSG_LEN]; /* Starting address of the message */
245} LmdReverseAccessSigMsgT;
246
247/* The follwoing is for EACH frame durations*/
248typedef enum
249{
250 LMD_FRAME_DURATION_5MS,
251 LMD_FRAME_DURATION_10MS,
252 LMD_FRAME_DURATION_20MS
253}LmdFrameDurationT;
254
255/*
256** LMD_EACH_SIG_MSG
257*/
258typedef struct
259{
260 kal_uint16 FrameNumBits; /* number of bits per frame */
261 LmdFrameDurationT FrameDuration; /* Frame duration of EACH:5ms,10ms,20ms*/
262 kal_uint16 MsgLength; /* Message length in bytes */
263 kal_uint8 MsgData[1]; /* Starting address of the message */
264} LmdReverseEACHSigMsgT;
265
266/*
267** LMD_REVERSE_TRAFFIC_SIG_MSG
268*/
269typedef struct
270{
271 kal_uint8 PrevInUse; /* minimum of mob_p_rev and p_rev */
272 kal_uint8 retryCount;
273 kal_uint16 MsgLength; /* Length of message in bytes */
274 kal_uint8 MsgData[MAX_MSG_LEN];
275} LmdReverseTrafficSigMsgT;
276
277/*
278** LMD_ACCESS_PROBE_ABORT_MSG
279*/
280
281/*
282** LMD_TRAFFIC_CHAN_START_MSG
283*/
284typedef struct
285{
286 kal_uint8 LcMask[LMD_LONG_CODE_MASK_SIZE]; /* Long code Mask */
287 kal_uint8 ChInd; /* Channel Indicator: 1=FCH, 2=DCCH, 3=BOTH */
288 /* Note that the ch_ind has additional new entries
289 corresponding to the ExtChInd for PDCH channel
290 configurations, as follows:
291 4 = FPDCH_FCPCCH_RFCH,
292 5 = FPDCH_FCPCCH_RDCCH,
293 6 = FPDCH_FFCH_RFCH,
294 7 = FPDCH_FDCCH_RDCCH,
295 8 = FPDCH_RFCH_FFCH_RDCCH,
296 9 = FPDCH_RFCH_FFCH_RDCCH_FDCCH */
297
298 kal_uint16 ForMuxOption;
299 kal_uint16 RevMuxOption;
300 kal_uint8 ForRc; /* RC for FCH and DCCH, see Table 3.7.2.3.2.21-3 */
301 kal_uint8 RevRc; /* RC for FCH and DCCH, see Table 3.7.2.3.2.21-3 */
302 kal_uint8 NumLpmEntries;
303 LmdLpmT LpmEntries[MAX_LPM_ENTRIES];
304 kal_uint8 FrameOffset;
305} LmdTrafficChanStartMsgT;
306
307/*
308** LMD_SERVICE_CONFIGURATION_MSG
309*/
310#define LMD_MAX_CON_REC 5
311#define LMD_MAX_SCH_NUM 2
312
313typedef enum
314{
315 LMD_NO_TRAFFIC,
316 LMD_PRIMARY_TRAFFIC,
317 LMD_SECONDARY_TRAFFIC
318} LmdTrafficTypeT;
319
320typedef struct
321{
322 kal_uint8 ConRef; /* service option connection reference */
323 kal_uint16 ServiceOption; /* associated service option */
324 LmdTrafficTypeT ForTraffic; /* forward traffic type */
325 LmdTrafficTypeT RevTraffic; /* reverse traffic type */
326 kal_uint8 SrId;
327} LmdConnectionRecordT;
328
329typedef struct
330{
331 kal_uint8 SchId;
332 kal_bool Coding; /* True-- Turbo is On */
333 kal_uint16 SchMux; /* MuxOption of */
334 kal_uint8 SchRc;
335} LmdSchChanConfigT;
336
337typedef struct
338{
339 kal_uint16 ForMuxOption;
340 kal_uint16 RevMuxOption;
341 kal_uint8 ForNumBits;
342 kal_uint8 RevNumBits;
343 kal_uint8 NumConRec;
344 LmdConnectionRecordT ConRec[LMD_MAX_CON_REC];
345 kal_bool FchCcIncl;
346 SysFchFrameSizeT FchFrameSize; /* valid only if FchCcIncl = 1 */
347 kal_uint8 FchForRc;
348 kal_uint8 FchRevRc;
349 kal_bool DcchCcIncl;
350 SysDcchFrameSizeT DcchFrameSize; /* valid only if dcch_cc_incl = 1 */
351 kal_uint8 DcchForRc;
352 kal_uint8 DcchRevRc;
353 kal_bool ForSchCcIncl;
354 kal_uint8 NumForSch; /* Number of Fwd SCH*/
355 LmdSchChanConfigT ForSchConfig[LMD_MAX_SCH_NUM];
356 kal_bool RevSchCcIncl;
357 kal_uint8 NumRevSch; /* number of Rev SCH*/
358 LmdSchChanConfigT RevSchConfig[LMD_MAX_SCH_NUM];
359
360 kal_bool ForPdchCcIncl; /* If T, the following F-PDCH fields apply */
361 kal_uint16 ForPdchMuxOption;
362 kal_uint8 ForPdchRc;
363} LmdServiceConfigurationT;
364
365/*used for lmdsrvcfg.c*/
366typedef struct
367{
368 kal_uint8 FwdLogicalRes;
369 kal_uint8 FwdPhysicalResCount;
370 kal_uint8 FwdPhysicalRes;/* bit map */
371 kal_uint8 FwdPhysicalResOn;
372 LmdTrafficTypeT FwdTraffic;
373}ForwardConfigT;
374
375typedef struct
376{
377 kal_uint8 RevLogicalRes;
378 kal_uint8 RevPhysicalResCount;
379 kal_uint8 RevPhysicalRes;/* bit map*/
380 kal_uint8 RevPhysicalResOn;
381 LmdTrafficTypeT RevTraffic;
382}ReverseConfigT;
383
384typedef struct
385{
386 LmdServiceOptionT ServiceOpt;
387 kal_uint16 SvcTaskId;
388}ServiceConfigT;
389
390typedef struct
391{
392 kal_uint8 priority;
393 ForwardConfigT forward;
394 ReverseConfigT reverse;
395 ServiceConfigT service;
396}LmdSridDataT;
397
398typedef struct
399{
400 LmdServiceConfigurationT SrvcConfig; /* traffic channel service configuration */
401 SysActionTimeT ActTime; /* Time this message takes effect */
402 kal_bool SrvcConfigNonNegInc;
403} LmdServiceConfigurationMsgT;
404
405
406/*
407** LMD_SERVICE_CONFIG_NN_MSG
408*/
409typedef struct
410{
411 kal_uint8 NumLpmEntries;
412 LmdLpmT LpmEntries[MAX_LPM_ENTRIES];
413 SysActionTimeT ActTime; /* Time this message takes effect */
414} LmdServiceConfigurationNnMsgT;
415
416typedef struct
417{
418 SysActionTimeT ActTime; /* system time (uint=20 ms) to */
419 /* send message */
420 LmdServiceOptionT ServiceOption; /* service option number */
421 kal_uint8 ConRef; /* connection reference being controled */
422 kal_uint8 DataSize; /* control data size in bytes */
423 kal_uint8 Data[MAX_MSG_LEN]; /* control data */
424} LmdServiceOptionControlMsgT;
425
426/*
427** LMD_CONVERSATION_SUBSTATE_CONN_MSG
428*/
429
430/*
431** LMD_CONVERSATION_SUBSTATE_DISC_MSG
432*/
433
434/*
435** LMD_PWR_CTL_PARMS_MSG
436*/
437typedef struct
438{
439 kal_uint8 ChanMonitor; /* 0 = FCH, 1 = DCCH */
440 kal_bool PwrThreshEnable;
441 kal_uint8 PwrRepThresh;
442 kal_bool PwrPeriodEnable;
443 kal_uint8 PwrRepFrames;
444 kal_uint8 PwrRepDelay;
445 kal_bool ResetFPC;
446} LmdPwrCtlParmsMsgT;
447
448
449typedef struct
450{
451 kal_uint16 ParmId;
452 kal_uint32 Value;
453} LmdRevStatT;
454
455typedef struct
456{
457 kal_uint16 NumRecs;
458 LmdRevStatT Rec[1];
459} LmdRevStatSetMsgT;
460
461typedef enum
462{
463 LMD_FULL_RATE = 0x80,
464 LMD_HALF_RATE = 0x40,
465 LMD_QUARTER_RATE = 0x20,
466 LMD_EIGHTH_RATE = 0x10,
467 LMD_NULL_RATE = 0x00
468} LmdRatesT;
469
470
471 /*
472 ** LMD_RLP_REV_FUNDICATED_DATA_REQ_MSG
473 */
474
475#define MAX_FUNDICATED_FRAME_SIZE 34 /* Max. size per RLP frame in byte. */
476 typedef struct
477 {
478 kal_uint8 priSrId; /* SR_ID for Primary Traffic */
479 SysRlpFrameRateE priRate; /* frame rate for primary */
480 kal_uint8 priData[MAX_FUNDICATED_FRAME_SIZE]; /* data buffer for primary */
481
482 kal_uint8 secSrId; /* SR_ID for Secondary Traffic */
483 SysRlpFrameRateE secRate; /* frame rate for secondary */
484 kal_uint8 secData[MAX_FUNDICATED_FRAME_SIZE]; /* data buffer for secondary */
485 } LmdRevFundicatedDataReqMsgT;
486
487#if 0
488/* under construction !*/
489/* under construction !*/
490/* under construction !*/
491/* under construction !*/
492/* under construction !*/
493/* under construction !*/
494/* under construction !*/
495/* under construction !*/
496/* under construction !*/
497/* under construction !*/
498#endif
499/*
500** LMD_RLP_REV_SCH_DATA_REQ_MSG
501*/
502#define NUM_RSCH_FRAMES 8
503#define REV_SCH_NON_RLP_IND 0xFF
504#define REV_SCH_RLP_IND 0
505
506 typedef struct
507 {
508 kal_uint8 srId;
509 kal_uint8 frameFormat; /* The first 2 bits of RLP frame at SCH goes to the lower
510 2 bits of frameType */
511 SysRlpFrameRateE frameRate; /* The number of byte */
512 kal_uint8 pduType; /* MuxPdu Type used for TDSO */
513 kal_uint16 frameLen;
514 kal_uint8* dataPtr;
515 } LmdPduT;
516
517 typedef struct
518 {
519 kal_uint8 schUser; /* Used to indicate if RLP or TDSO uses R-SCH */
520 kal_uint8 numSchFrames; /* Number of PDU data packets */
521 LmdPduT schFrames[NUM_RSCH_FRAMES]; /* data type defined in PDUOctet */
522 } LmdRevSchDataReqMsgT;
523
524/*
525** LMD_SCCH_REV_DATA_MSG
526*/
527typedef struct
528{
529 kal_bool IsSecondary; /* False=Primary, True=Secondary */
530 kal_uint8 NumberOfSCCH; /* Number of SCCH included */
531 kal_uint8* Data[7]; /* data pointed by Data */
532} LmdScchRevDataMsgT;
533
534/*
535** LMD_SEC_HIGH_MSG,
536*/
537typedef struct
538{
539 kal_bool SecPriorityHigh;
540} LmdSecHighMsgT;
541
542typedef enum
543{
544 LMD_TRANSMITTER_STATUS_ON, /* Transmitter is off */
545 LMD_TRANSMITTER_STATUS_OFF /* Transmitter is on */
546} LmdTransmitterStatusT;
547
548/*
549** LMD_TRANSMITTER_STATUS_MSG,
550*/
551typedef struct
552{
553 LmdTransmitterStatusT Status;
554} LmdTransmitterStatusMsgT;
555
556/*
557** LMD_SET_STAT_CNT_MSG,
558*/
559
560typedef struct {
561 kal_uint8 Offset; /* Offset from first element */
562 kal_uint32 Value; /* Value received from BS */
563} SetValueT;
564
565/*
566** LMD_SET_STAT_CNT_MSG,
567*/
568typedef struct {
569 StatCounterT StatCounter; /* Statistics counter */
570 kal_uint8 NumSetValue; /* Number of set value included */
571 SetValueT SetValue[MAX_STAT_ELEMENT];
572} LmdSetStatCntMsgT;
573
574/*
575** LMD_GET_STAT_CNT_MSG,
576*/
577typedef struct {
578 StatCounterT StatCounter; /* Statistics counter */
579} LmdGetStatCntMsgT;
580
581/*
582** LMD_SET_FER_STATS_NUM_FRAMES_MSG,
583*/
584typedef struct {
585 kal_uint16 NumFrames; /* Number of frames for running average */
586} LmdSetFerStatsNumFramesMsgT;
587
588/*
589**LMD_GET_DEBUG_SCRN_INFO_MSG,
590*/
591typedef struct {
592 ExeRspMsgT RspInfo; /* Response routing information */
593} LmdGetDebugScrnInfoRequestT;
594
595typedef struct {
596 kal_uint16 badframes;
597 kal_uint16 totframes;
598} LmdGetDebugScrnInfoResponseT;
599
600/*
601** LMD_SPEECH_DISABLE_MSG,
602*/
603typedef struct
604{
605 kal_bool Disable;
606 kal_bool Restart; /* KAL_TRUE if speech connection to be restarted,
607 KAL_FALSE if just disabling routing of speech but remain connected */
608} LmdSpeechDisableMsgT;
609
610/****************FSCH muxHwPdu********************/
611/* MuxPDU Type Definitions */
612typedef enum
613{
614 LMD_MP_MUXTYPE_1 = 0,
615 LMD_MP_MUXTYPE_2,
616 LMD_MP_MUXTYPE_3,
617 LMD_MP_MUXTYPE_5,
618 LMD_MP_MUXTYPE_MAX
619} LmdMpMuxTypeT;
620
621/* MuxPDU Header */
622typedef struct
623{
624 kal_uint16 sr_id;
625 kal_uint16 Len;
626 kal_uint16 ExtHeader;
627 kal_uint16 Padding[1];
628 CpBufferT *MpBufPtr; /* MuxPDU RAM buffer pointer */
629} LmdSchHeaderT; /* 12 bytes */
630
631/* MuxPDU Configuration */
632typedef struct
633{
634 kal_uint8 MuxType; /* 1/2/3/5 */
635 kal_uint16 FrameLength; /* Frame length in bits - used in BYPASS mode */
636} LmdMpConfigT;
637
638//extern kal_bool LmdMpRawSpyEnabled;
639#define LMD_MP_MAX_PDUS 100
640
641typedef enum
642{
643 MUX1_REV_FCH_1 = 1,
644 MUX1_REV_FCH_2,
645 MUX1_REV_FCH_3,
646 MUX1_REV_FCH_4,
647 MUX1_REV_FCH_5,
648 MUX1_REV_FCH_6,
649 MUX1_REV_FCH_7,
650 MUX1_REV_FCH_8,
651 MUX1_REV_FCH_9, /* Reserved */
652 MUX1_REV_FCH_10, /* Reserved */
653 MUX1_REV_FCH_11,
654 MUX1_REV_FCH_12,
655 MUX1_REV_FCH_13,
656 MUX1_REV_FCH_14,
657 MUX1_FOR_FCH_1 = 15,
658 MUX1_FOR_FCH_2,
659 MUX1_FOR_FCH_3,
660 MUX1_FOR_FCH_4,
661 MUX1_FOR_FCH_5,
662 MUX1_FOR_FCH_6,
663 MUX1_FOR_FCH_7,
664 MUX1_FOR_FCH_8,
665 MUX1_FOR_FCH_9,
666 MUX1_FOR_FCH_10,
667 MUX1_FOR_FCH_11,
668 MUX1_FOR_FCH_12,
669 MUX1_FOR_FCH_13,
670 MUX1_FOR_FCH_14,
671 PAG_1 = 29, /* number of paging ch messages received */
672 PAG_2, /* number of paging ch messages with bad crc */
673 PAG_3, /* number of paging ch msgs addressed to mobile */
674 PAG_4, /* number of paging ch half frames received */
675 PAG_5, /* # pag half frames rec. part of a valid message*/
676 PAG_6, /* number of times loss of paging ch declared */
677 PAG_7, /* number of idle handoffs */
678 ACC_1 = 36, /* number of layer 3 requests messages generated */
679 ACC_2, /* number of layer 3 response messages generated */
680 ACC_3, /* number of times access probe was gen. 2 times */
681 ACC_4, /* number of times access probe was gen. 3 times */
682 ACC_5, /* number of times access probe was gen. 4 times */
683 ACC_6, /* number of times access probe was gen. 5 times */
684 ACC_7, /* number of times access probe was gen. 6 times */
685 ACC_8, /* number of unsuccessful access attempts */
686 LAYER2_RTC1 = 44,
687 LAYER2_RTC2,
688 LAYER2_RTC3,
689 LAYER2_RTC4,
690 LAYER2_RTC5,
691 OTHER_SYS_TIME = 49,
692 MUX2_REV_FCH_1 = 50,
693 MUX2_REV_FCH_2,
694 MUX2_REV_FCH_3,
695 MUX2_REV_FCH_4,
696 MUX2_REV_FCH_5,
697 MUX2_REV_FCH_6,
698 MUX2_REV_FCH_7,
699 MUX2_REV_FCH_8,
700 MUX2_REV_FCH_9,
701 MUX2_REV_FCH_10,
702 MUX2_REV_FCH_11,
703 MUX2_REV_FCH_12,
704 MUX2_REV_FCH_13,
705 MUX2_REV_FCH_14,
706 MUX2_REV_FCH_15,
707 MUX2_REV_FCH_16,
708 MUX2_REV_FCH_17,
709 MUX2_REV_FCH_18,
710 MUX2_REV_FCH_19,
711 MUX2_REV_FCH_20,
712 MUX2_REV_FCH_21,
713 MUX2_REV_FCH_22,
714 MUX2_REV_FCH_23,
715 MUX2_REV_FCH_24,
716 MUX2_REV_FCH_25,
717 MUX2_REV_FCH_26,
718 MUX2_FOR_FCH_1 = 76,
719 MUX2_FOR_FCH_2,
720 MUX2_FOR_FCH_3,
721 MUX2_FOR_FCH_4,
722 MUX2_FOR_FCH_5,
723 MUX2_FOR_FCH_6,
724 MUX2_FOR_FCH_7,
725 MUX2_FOR_FCH_8,
726 MUX2_FOR_FCH_9,
727 MUX2_FOR_FCH_10,
728 MUX2_FOR_FCH_11,
729 MUX2_FOR_FCH_12,
730 MUX2_FOR_FCH_13,
731 MUX2_FOR_FCH_14,
732 MUX2_FOR_FCH_15,
733 MUX2_FOR_FCH_16,
734 MUX2_FOR_FCH_17,
735 MUX2_FOR_FCH_18,
736 MUX2_FOR_FCH_19,
737 MUX2_FOR_FCH_20,
738 MUX2_FOR_FCH_21,
739 MUX2_FOR_FCH_22,
740 MUX2_FOR_FCH_23,
741 MUX2_FOR_FCH_24,
742 MUX2_FOR_FCH_25,
743 MUX2_FOR_FCH_26,
744 /* reverse SCCH not supported in CBP4 */
745 SCCH1_REV_S = 102,
746 SCCH1_REV_P,
747 SCCH2_REV_S,
748 SCCH2_REV_P,
749 SCCH3_REV_S,
750 SCCH3_REV_P,
751 SCCH4_REV_S,
752 SCCH4_REV_P,
753 SCCH5_REV_S,
754 SCCH5_REV_P,
755 SCCH6_REV_S,
756 SCCH6_REV_P,
757 SCCH7_REV_S,
758 SCCH7_REV_P,
759 /* forward SCCH not supported in CBP4 */
760 SCCH1_FOR_S = 116,
761 SCCH1_FOR_P,
762 SCCH2_FOR_S,
763 SCCH2_FOR_P,
764 SCCH3_FOR_S,
765 SCCH3_FOR_P,
766 SCCH4_FOR_S,
767 SCCH4_FOR_P,
768 SCCH5_FOR_S,
769 SCCH5_FOR_P,
770 SCCH6_FOR_S,
771 SCCH6_FOR_P,
772 SCCH7_FOR_S,
773 SCCH7_FOR_P,
774 /* MM RTC not supported in CBP4 */
775 MM_RTC1 = 130,
776 MM_RTC2,
777 MM_RTC3,
778 MM_RTC4,
779 MM_RTC5,
780
781 MUX1_REV_FCH_15 = 135, /* Reserved */
782 MUX1_REV_FCH_5_ms, /* not supported in CBP4 */
783 MUX1_FOR_FCH_15, /* Reserved */
784 MUX1_FOR_FCH_5_ms, /* not supported in CBP4 */
785 MUX2_REV_FCH_27, /* Reserved */
786 MUX2_REV_FCH_5_ms, /* not supported in CBP4 */
787 MUX2_FOR_FCH_27, /* Reserved */
788 MUX2_FOR_FCH_5_ms, /* not supported in CBP4 */
789
790 MUX1_REV_DCCH_1 = 143,
791 MUX1_REV_DCCH_2,
792 MUX1_REV_DCCH_3,
793 MUX1_REV_DCCH_4,
794 MUX1_REV_DCCH_5,
795 MUX1_REV_DCCH_6,
796 MUX1_REV_DCCH_7,
797 MUX1_REV_DCCH_8,
798 MUX1_REV_DCCH_9,
799 MUX1_REV_DCCH_10,
800 MUX1_REV_DCCH_11,
801 MUX1_REV_DCCH_12,
802 MUX1_REV_DCCH_13,
803 MUX1_REV_DCCH_14,
804 MUX1_REV_DCCH_15,
805 MUX1_REV_DCCH_5_ms, /* not supported in CBP4 */
806
807 MUX1_FOR_DCCH_1 = 159,
808 MUX1_FOR_DCCH_2,
809 MUX1_FOR_DCCH_3,
810 MUX1_FOR_DCCH_4,
811 MUX1_FOR_DCCH_5,
812 MUX1_FOR_DCCH_6,
813 MUX1_FOR_DCCH_7,
814 MUX1_FOR_DCCH_8,
815 MUX1_FOR_DCCH_9,
816 MUX1_FOR_DCCH_10,
817 MUX1_FOR_DCCH_11,
818 MUX1_FOR_DCCH_12,
819 MUX1_FOR_DCCH_13,
820 MUX1_FOR_DCCH_14,
821 MUX1_FOR_DCCH_15,
822 MUX1_FOR_DCCH_5_ms, /* not supported in CBP4 */
823
824 MUX2_REV_DCCH_1 = 175,
825 MUX2_REV_DCCH_2,
826 MUX2_REV_DCCH_3,
827 MUX2_REV_DCCH_4,
828 MUX2_REV_DCCH_5,
829 MUX2_REV_DCCH_6,
830 MUX2_REV_DCCH_7,
831 MUX2_REV_DCCH_8,
832 MUX2_REV_DCCH_9,
833 MUX2_REV_DCCH_10,
834 MUX2_REV_DCCH_11,
835 MUX2_REV_DCCH_12,
836 MUX2_REV_DCCH_13,
837 MUX2_REV_DCCH_14,
838 MUX2_REV_DCCH_15,
839 MUX2_REV_DCCH_16,
840 MUX2_REV_DCCH_17,
841 MUX2_REV_DCCH_18,
842 MUX2_REV_DCCH_19,
843 MUX2_REV_DCCH_20,
844 MUX2_REV_DCCH_21,
845 MUX2_REV_DCCH_22,
846 MUX2_REV_DCCH_23,
847 MUX2_REV_DCCH_24,
848 MUX2_REV_DCCH_25,
849 MUX2_REV_DCCH_26,
850 MUX2_REV_DCCH_27,
851 MUX2_REV_DCCH_5_ms, /* not supported in CBP4 */
852
853 MUX2_FOR_DCCH_1 = 203,
854 MUX2_FOR_DCCH_2,
855 MUX2_FOR_DCCH_3,
856 MUX2_FOR_DCCH_4,
857 MUX2_FOR_DCCH_5,
858 MUX2_FOR_DCCH_6,
859 MUX2_FOR_DCCH_7,
860 MUX2_FOR_DCCH_8,
861 MUX2_FOR_DCCH_9,
862 MUX2_FOR_DCCH_10,
863 MUX2_FOR_DCCH_11,
864 MUX2_FOR_DCCH_12,
865 MUX2_FOR_DCCH_13,
866 MUX2_FOR_DCCH_14,
867 MUX2_FOR_DCCH_15,
868 MUX2_FOR_DCCH_16,
869 MUX2_FOR_DCCH_17,
870 MUX2_FOR_DCCH_18,
871 MUX2_FOR_DCCH_19,
872 MUX2_FOR_DCCH_20,
873 MUX2_FOR_DCCH_21,
874 MUX2_FOR_DCCH_22,
875 MUX2_FOR_DCCH_23,
876 MUX2_FOR_DCCH_24,
877 MUX2_FOR_DCCH_25,
878 MUX2_FOR_DCCH_26,
879 MUX2_FOR_DCCH_27,
880 MUX2_FOR_DCCH_5_ms, /* not supported in CBP4 */
881
882 SCH0_REV_1X = 231,
883 SCH0_REV_2X,
884 SCH0_REV_4X,
885 SCH0_REV_8X,
886 SCH0_REV_16X,
887 SCH0_REV_LTU,
888 SCH0_REV_LTUOK, /* not supported in CBP4 */
889
890 /* reverse SCH1 not supported in CBP4 */
891 SCH1_REV_1X = 238,
892 SCH1_REV_2X,
893 SCH1_REV_4X,
894 SCH1_REV_8X,
895 SCH1_REV_16X,
896 SCH1_REV_LTU,
897 SCH1_REV_LTUOK, /* not supported in CBP4 */
898
899 SCH0_FOR_1X = 245,
900 SCH0_FOR_2X,
901 SCH0_FOR_4X,
902 SCH0_FOR_8X,
903 SCH0_FOR_16X,
904 SCH0_FOR_LTU,
905 SCH0_FOR_LTUOK, /* not supported in CBP4 */
906
907 /* forward SCH1 not supported in CBP4 */
908 SCH1_FOR_1X = 252,
909 SCH1_FOR_2X,
910 SCH1_FOR_4X,
911 SCH1_FOR_8X,
912 SCH1_FOR_16X,
913 SCH1_FOR_LTU,
914 SCH1_FOR_LTUOK, /* not supported in CBP4 */
915 BCCH_1,/* = 259 */
916 BCCH_2,
917 BCCH_3,
918 BCCH_4,
919 BCCH_5,
920 FCCCH_1,
921 FCCCH_2,
922 FCCCH_3,
923 FCCCH_4,
924/* EACH */
925 #ifdef LMD_EACH_ON
926 EACH_BA_1 = 470,
927 EACH_BA_2,
928 EACH_BA_3,
929 EACH_BA_4,
930 EACH_BA_5,
931 EACH_BA_6,
932 EACH_BA_7,
933 EACH_BA_8,
934 #endif
935 PCG_0_FOR_FCH_1 = 661,
936 PCG_0_FOR_FCH_2,
937 PCG_0_FOR_FCH_3,
938 PCG_0_FOR_FCH_4,
939 PCG_1_FOR_FCH_1,
940 PCG_1_FOR_FCH_2,
941 PCG_1_FOR_FCH_3,
942 PCG_1_FOR_FCH_4,
943 PCG_2_FOR_FCH_1,
944 PCG_2_FOR_FCH_2,
945 PCG_2_FOR_FCH_3,
946 PCG_2_FOR_FCH_4,
947 PCG_3_FOR_FCH_1,
948 PCG_3_FOR_FCH_2,
949 PCG_3_FOR_FCH_3,
950 PCG_3_FOR_FCH_4,
951 PCG_4_FOR_FCH_1,
952 PCG_4_FOR_FCH_2,
953 PCG_4_FOR_FCH_3,
954 PCG_4_FOR_FCH_4,
955 PCG_5_FOR_FCH_1,
956 PCG_5_FOR_FCH_2,
957 PCG_5_FOR_FCH_3,
958 PCG_5_FOR_FCH_4,
959 PCG_6_FOR_FCH_1,
960 PCG_6_FOR_FCH_2,
961 PCG_6_FOR_FCH_3,
962 PCG_6_FOR_FCH_4,
963 PCG_7_FOR_FCH_1,
964 PCG_7_FOR_FCH_2,
965 PCG_7_FOR_FCH_3,
966 PCG_7_FOR_FCH_4,
967 PCG_8_FOR_FCH_1,
968 PCG_8_FOR_FCH_2,
969 PCG_8_FOR_FCH_3,
970 PCG_8_FOR_FCH_4,
971 PCG_9_FOR_FCH_1,
972 PCG_9_FOR_FCH_2,
973 PCG_9_FOR_FCH_3,
974 PCG_9_FOR_FCH_4,
975 PCG_10_FOR_FCH_1,
976 PCG_10_FOR_FCH_2,
977 PCG_10_FOR_FCH_3,
978 PCG_10_FOR_FCH_4,
979 PCG_11_FOR_FCH_1,
980 PCG_11_FOR_FCH_2,
981 PCG_11_FOR_FCH_3,
982 PCG_11_FOR_FCH_4,
983 PCG_12_FOR_FCH_1,
984 PCG_12_FOR_FCH_2,
985 PCG_12_FOR_FCH_3,
986 PCG_12_FOR_FCH_4,
987 PCG_13_FOR_FCH_1,
988 PCG_13_FOR_FCH_2,
989 PCG_13_FOR_FCH_3,
990 PCG_13_FOR_FCH_4,
991 PCG_14_FOR_FCH_1,
992 PCG_14_FOR_FCH_2,
993 PCG_14_FOR_FCH_3,
994 PCG_14_FOR_FCH_4,
995 PCG_15_FOR_FCH_1,
996 PCG_15_FOR_FCH_2,
997 PCG_15_FOR_FCH_3,
998 PCG_15_FOR_FCH_4,
999 PCG_0_FOR_SCH_1 = 725,
1000 ACK_TX_PCG_0_FCH = 805,
1001 ACK_TX_PCG_1_FCH,
1002 ACK_TX_PCG_2_FCH,
1003 ACK_TX_PCG_3_FCH,
1004 ACK_TX_PCG_4_FCH,
1005 ACK_TX_PCG_5_FCH,
1006 ACK_TX_PCG_6_FCH,
1007 ACK_TX_PCG_7_FCH,
1008 ACK_TX_PCG_8_FCH,
1009 ACK_TX_PCG_9_FCH,
1010 ACK_TX_PCG_10_FCH,
1011 ACK_TX_PCG_11_FCH,
1012 ACK_TX_PCG_12_FCH,
1013 ACK_TX_PCG_13_FCH,
1014 ACK_TX_PCG_14_FCH,
1015 ACK_TX_PCG_15_FCH,
1016 ACK_TX_PCG_0_SCH = 821,
1017 ACK_RX_PCG_1_FCH = 837,
1018 ACK_RX_PCG_2_FCH,
1019 ACK_RX_PCG_3_FCH,
1020 ACK_RX_PCG_4_FCH,
1021 ACK_RX_PCG_5_FCH,
1022 ACK_RX_PCG_6_FCH,
1023 ACK_RX_PCG_7_FCH,
1024 ACK_RX_PCG_8_FCH,
1025 ACK_RX_PCG_9_FCH,
1026 ACK_RX_PCG_10_FCH,
1027 ACK_RX_PCG_11_FCH,
1028 ACK_RX_PCG_12_FCH,
1029 ACK_RX_PCG_13_FCH,
1030 ACK_RX_PCG_14_FCH,
1031 ACK_RX_PCG_15_FCH,
1032 ACK_RX_PCG_1_SCH = 852,
1033 END_OF_LIST
1034 } RetrievableAndSettableParametersT;
1035
1036typedef enum
1037{
1038 R_NULL = 0,
1039 R_ACCESS,
1040 R_EACH,
1041 R_TRAFFIC
1042
1043}RevChnlTypeT;
1044
1045typedef struct
1046{
1047 kal_bool CounterSuspend;
1048} LmdCounterSuspendMsgT;
1049
1050typedef struct
1051{
1052 SysActionTimeT ActTime;
1053 kal_uint8 ch_ind; /* Channel Indicator: 1=FCH, 2=DCCH, 3=BOTH */
1054 /* Note that the ch_ind has additional new entries
1055 corresponding to the ExtChInd for PDCH channel
1056 configurations, as follows:
1057 4 = FPDCH_FCPCCH_RFCH,
1058 5 = FPDCH_FCPCCH_RDCCH,
1059 6 = FPDCH_FFCH_RFCH,
1060 7 = FPDCH_FDCCH_RDCCH,
1061 8 = FPDCH_RFCH_FFCH_RDCCH,
1062 9 = FPDCH_RFCH_FFCH_RDCCH_FDCCH */
1063 kal_bool SrvConfigNonNegInc;
1064} LmdResourceUpdateT;
1065
1066/*-----------------------------------------
1067* The Forward SCH Msg.
1068*------------------------------------------*/
1069
1070typedef struct
1071{
1072 kal_uint8 ForSchId;
1073 kal_uint8 ForSchDuration;
1074 kal_uint8 ForSchRate;
1075
1076} LmdFschRecT;
1077
1078typedef struct
1079{
1080 kal_bool PilotGatingUseRate;
1081 kal_bool ForSchFerRep;
1082 kal_uint8 NumForSch; /* number of SCH assigned.*/
1083 LmdFschRecT FschRec[2];
1084
1085} LmdFschMsgT;
1086
1087typedef struct
1088{
1089 kal_uint8 sch_id;
1090 kal_bool FinalBurst;
1091
1092} LmdFschBurstEndMsgT;
1093/*-----------------------------------------
1094* The Reverse SCH Msg.
1095*------------------------------------------*/
1096typedef struct
1097{
1098 kal_uint8 RevSchId;
1099 kal_uint8 RevSchDuration;
1100 kal_uint8 RevSchRate;
1101
1102} LmdRschRecT;
1103
1104typedef struct
1105{
1106 kal_uint8 RevSchDtxDuration;
1107 kal_uint8 NumRevSch; /* number of SCH assigned.*/
1108 LmdRschRecT RschRec[LMD_MAX_SCH_NUM];
1109
1110} LmdRschMsgT;
1111
1112
1113/* The Fwd RLP Data Reading Order revert Msg */
1114typedef struct
1115{
1116
1117 kal_bool ReadSwap;
1118
1119} LmdFschPduOrderCtrlMsgT;
1120
1121/*========================================================================================
1122==========================================================================================
1123===================== The following sections need to be resolved. ========================
1124==========================================================================================
1125========================================================================================*/
1126
1127
1128typedef enum
1129{
1130 LMD_PRIORITY_NO_MSG,
1131 LMD_PRIORITY_HIGH, /* send in < 200 msec */
1132 LMD_PRIORITY_MEDIUM, /* send in < 300 msec */
1133 LMD_PRIORITY_LOW /* send in < 500 msec */
1134} LmdMsgPriorityT;
1135
1136/*---------------------------------------------------------------
1137* Miscellaneous Typedefs
1138* These typedefs are not used in any of the messages defined
1139* so far. They are here in case other units need these definitions
1140* to compile. If they do not eventually move to message definitions,
1141* they should be removed from this file.
1142*---------------------------------------------------------------*/
1143
1144typedef enum
1145{
1146 LMD_FRAME_RATE_FULL,
1147 LMD_FRAME_RATE_HALF,
1148 LMD_FRAME_RATE_QUARTER,
1149 LMD_FRAME_RATE_EIGHTH,
1150 LMD_FRAME_ERASURE,
1151 LMD_FRAME_RATE_FULL_LIKELY,
1152 LMD_FRAME_RATE = 0x7FFFFFFF
1153} LmdFrameRateFwdT;
1154
1155typedef struct
1156{
1157 kal_uint8 Frames;
1158} LmdPowerReportFramesT;
1159
1160typedef enum
1161{
1162 LMD_RTC_PREAMBLE = 0,
1163 LMD_RTC_SIGNALING_ONLY,
1164 LMD_RTC_TRAFFIC
1165} LmdRTCTrafficT;
1166/* Tx signal Control data type */
1167typedef enum
1168{
1169 LMD_REV_TX_DISABLE =0,
1170 LMD_REV_TX_ENABLE=1
1171
1172}LmdTxSignalControlT;
1173
1174/* PT DATA */
1175typedef struct
1176{
1177 kal_uint16 MsgId;
1178 IpcCpSpchDataRevChPacketMsgT* PtDataMsgP;
1179} LmdRevPtDataT;
1180/* DS FCH DATA */
1181typedef struct
1182{
1183 kal_uint16 MsgId;
1184 LmdRevFundicatedDataReqMsgT* fchDataMsgP;
1185} LmdRevDsFchDataT;
1186/* DS SCH DATA */
1187typedef struct
1188{
1189 kal_uint16 MsgId;
1190 LmdRevSchDataReqMsgT* schDataMsgP;
1191}LmdRevDsSchDataT;
1192
1193/*---------------------------------------------------------------
1194** Global function prototypes for use outside LMD
1195**---------------------------------------------------------------*/
1196/*--forward channel functions--*/
1197extern void LmdIpcUpdateFwdStats(LmdFwdChnlTypeT ChnlType, kal_uint16 TotalFrames, kal_uint16 BadFrames);
1198
1199#if 0
1200/* under construction !*/
1201/* under construction !*/
1202#endif
1203
1204/*--- Reverse Tx Signal Control handler----------*/
1205extern void LmdRevTxSignalControl(LmdTxSignalControlT TxSigControl, RevChnlTypeT Channel, kal_uint8 PcgIdx);
1206
1207
1208/*--- Rev Sch Transmission Status --- */
1209extern void LmdRevSchTxStatusSet(kal_bool RschTxAllowed);
1210void LmdGetFrameInfo(kal_uint16 *badframes, kal_uint16 *totframes);
1211
1212/*--- Interrupt handlers --- */
1213//extern void LmdMpLisr (void);
1214//extern void LmdMpFIQIsr (void);
1215
1216extern void LmdFwdSetFrameOffset (kal_uint8 FrameOffset);
1217extern void LmdFwdSetFwdBlankingDutyCycles (kal_uint8 FwdBlankingDutyCycle);
1218extern void LmdFwdSetRevBlankingDutyCycles (kal_uint8 RevBlankingDutyCycle);
1219
1220/*---------------------------------------------------------------
1221** Global variable prototypes for use outside LMD
1222**---------------------------------------------------------------*/
1223
1224//extern kal_uint16 LmdFerConsecutiveBadFrames[FER_MAX_CHANNELS]; /* 0: FCH, 1: SCH */
1225//extern kal_uint16 LmdFerStats[FER_MAX_CHANNELS]; /* 0: FCH, 1: SCH */
1226
1227/*****************************************************************************
1228* End of File
1229*****************************************************************************/
1230#endif
1231/**Log information: \main\Trophy_SO73\1 2013-07-10 07:00:01 GMT yanliu
1232** HREF#0000: 1x advance SD 20130708_1xAdvanced version merge**/
1233/**Log information: \main\2 2013-07-17 08:16:12 GMT yanliu
1234** HREF#0000: 1x advance SD 20130708_1xAdvanced version merge**/
1235