xref: /utopia/UTPA2-700.0.x/mxlib/include/apiHSL.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi //<MStar Software>
2*53ee8cc1Swenshuai.xi //******************************************************************************
3*53ee8cc1Swenshuai.xi // MStar Software
4*53ee8cc1Swenshuai.xi // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5*53ee8cc1Swenshuai.xi // All software, firmware and related documentation herein ("MStar Software") are
6*53ee8cc1Swenshuai.xi // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7*53ee8cc1Swenshuai.xi // law, including, but not limited to, copyright law and international treaties.
8*53ee8cc1Swenshuai.xi // Any use, modification, reproduction, retransmission, or republication of all
9*53ee8cc1Swenshuai.xi // or part of MStar Software is expressly prohibited, unless prior written
10*53ee8cc1Swenshuai.xi // permission has been granted by MStar.
11*53ee8cc1Swenshuai.xi //
12*53ee8cc1Swenshuai.xi // By accessing, browsing and/or using MStar Software, you acknowledge that you
13*53ee8cc1Swenshuai.xi // have read, understood, and agree, to be bound by below terms ("Terms") and to
14*53ee8cc1Swenshuai.xi // comply with all applicable laws and regulations:
15*53ee8cc1Swenshuai.xi //
16*53ee8cc1Swenshuai.xi // 1. MStar shall retain any and all right, ownership and interest to MStar
17*53ee8cc1Swenshuai.xi //    Software and any modification/derivatives thereof.
18*53ee8cc1Swenshuai.xi //    No right, ownership, or interest to MStar Software and any
19*53ee8cc1Swenshuai.xi //    modification/derivatives thereof is transferred to you under Terms.
20*53ee8cc1Swenshuai.xi //
21*53ee8cc1Swenshuai.xi // 2. You understand that MStar Software might include, incorporate or be
22*53ee8cc1Swenshuai.xi //    supplied together with third party`s software and the use of MStar
23*53ee8cc1Swenshuai.xi //    Software may require additional licenses from third parties.
24*53ee8cc1Swenshuai.xi //    Therefore, you hereby agree it is your sole responsibility to separately
25*53ee8cc1Swenshuai.xi //    obtain any and all third party right and license necessary for your use of
26*53ee8cc1Swenshuai.xi //    such third party`s software.
27*53ee8cc1Swenshuai.xi //
28*53ee8cc1Swenshuai.xi // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29*53ee8cc1Swenshuai.xi //    MStar`s confidential information and you agree to keep MStar`s
30*53ee8cc1Swenshuai.xi //    confidential information in strictest confidence and not disclose to any
31*53ee8cc1Swenshuai.xi //    third party.
32*53ee8cc1Swenshuai.xi //
33*53ee8cc1Swenshuai.xi // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34*53ee8cc1Swenshuai.xi //    kind. Any warranties are hereby expressly disclaimed by MStar, including
35*53ee8cc1Swenshuai.xi //    without limitation, any warranties of merchantability, non-infringement of
36*53ee8cc1Swenshuai.xi //    intellectual property rights, fitness for a particular purpose, error free
37*53ee8cc1Swenshuai.xi //    and in conformity with any international standard.  You agree to waive any
38*53ee8cc1Swenshuai.xi //    claim against MStar for any loss, damage, cost or expense that you may
39*53ee8cc1Swenshuai.xi //    incur related to your use of MStar Software.
40*53ee8cc1Swenshuai.xi //    In no event shall MStar be liable for any direct, indirect, incidental or
41*53ee8cc1Swenshuai.xi //    consequential damages, including without limitation, lost of profit or
42*53ee8cc1Swenshuai.xi //    revenues, lost or damage of data, and unauthorized system use.
43*53ee8cc1Swenshuai.xi //    You agree that this Section 4 shall still apply without being affected
44*53ee8cc1Swenshuai.xi //    even if MStar Software has been modified by MStar in accordance with your
45*53ee8cc1Swenshuai.xi //    request or instruction for your use, except otherwise agreed by both
46*53ee8cc1Swenshuai.xi //    parties in writing.
47*53ee8cc1Swenshuai.xi //
48*53ee8cc1Swenshuai.xi // 5. If requested, MStar may from time to time provide technical supports or
49*53ee8cc1Swenshuai.xi //    services in relation with MStar Software to you for your use of
50*53ee8cc1Swenshuai.xi //    MStar Software in conjunction with your or your customer`s product
51*53ee8cc1Swenshuai.xi //    ("Services").
52*53ee8cc1Swenshuai.xi //    You understand and agree that, except otherwise agreed by both parties in
53*53ee8cc1Swenshuai.xi //    writing, Services are provided on an "AS IS" basis and the warranty
54*53ee8cc1Swenshuai.xi //    disclaimer set forth in Section 4 above shall apply.
55*53ee8cc1Swenshuai.xi //
56*53ee8cc1Swenshuai.xi // 6. Nothing contained herein shall be construed as by implication, estoppels
57*53ee8cc1Swenshuai.xi //    or otherwise:
58*53ee8cc1Swenshuai.xi //    (a) conferring any license or right to use MStar name, trademark, service
59*53ee8cc1Swenshuai.xi //        mark, symbol or any other identification;
60*53ee8cc1Swenshuai.xi //    (b) obligating MStar or any of its affiliates to furnish any person,
61*53ee8cc1Swenshuai.xi //        including without limitation, you and your customers, any assistance
62*53ee8cc1Swenshuai.xi //        of any kind whatsoever, or any information; or
63*53ee8cc1Swenshuai.xi //    (c) conferring any license or right under any intellectual property right.
64*53ee8cc1Swenshuai.xi //
65*53ee8cc1Swenshuai.xi // 7. These terms shall be governed by and construed in accordance with the laws
66*53ee8cc1Swenshuai.xi //    of Taiwan, R.O.C., excluding its conflict of law rules.
67*53ee8cc1Swenshuai.xi //    Any and all dispute arising out hereof or related hereto shall be finally
68*53ee8cc1Swenshuai.xi //    settled by arbitration referred to the Chinese Arbitration Association,
69*53ee8cc1Swenshuai.xi //    Taipei in accordance with the ROC Arbitration Law and the Arbitration
70*53ee8cc1Swenshuai.xi //    Rules of the Association by three (3) arbitrators appointed in accordance
71*53ee8cc1Swenshuai.xi //    with the said Rules.
72*53ee8cc1Swenshuai.xi //    The place of arbitration shall be in Taipei, Taiwan and the language shall
73*53ee8cc1Swenshuai.xi //    be English.
74*53ee8cc1Swenshuai.xi //    The arbitration award shall be final and binding to both parties.
75*53ee8cc1Swenshuai.xi //
76*53ee8cc1Swenshuai.xi //******************************************************************************
77*53ee8cc1Swenshuai.xi //<MStar Software>
78*53ee8cc1Swenshuai.xi /**************************************************************************
79*53ee8cc1Swenshuai.xi  * Copyright (c) 2008 MStar Semiconductor, Inc. All Rights Reserved.
80*53ee8cc1Swenshuai.xi  **************************************************************************/
81*53ee8cc1Swenshuai.xi /** \file
82*53ee8cc1Swenshuai.xi  * \brief This is the low-level drivers header file for the FrHsl module.
83*53ee8cc1Swenshuai.xi  *
84*53ee8cc1Swenshuai.xi  */
85*53ee8cc1Swenshuai.xi 
86*53ee8cc1Swenshuai.xi 
87*53ee8cc1Swenshuai.xi /*!!!!!!!!!!!: MUST include this file after stdio.h because we use our own "printf" definition*/
88*53ee8cc1Swenshuai.xi #if defined (MSOS_TYPE_LINUX)
89*53ee8cc1Swenshuai.xi #ifndef FRHSL_H
90*53ee8cc1Swenshuai.xi #define FRHSL_H
91*53ee8cc1Swenshuai.xi 
92*53ee8cc1Swenshuai.xi /*******************************************************************************
93*53ee8cc1Swenshuai.xi ** Includes
94*53ee8cc1Swenshuai.xi *******************************************************************************/
95*53ee8cc1Swenshuai.xi 
96*53ee8cc1Swenshuai.xi #include "MsTypes.h"
97*53ee8cc1Swenshuai.xi 
98*53ee8cc1Swenshuai.xi #ifdef  __cplusplus
99*53ee8cc1Swenshuai.xi extern "C" {
100*53ee8cc1Swenshuai.xi #endif
101*53ee8cc1Swenshuai.xi 
102*53ee8cc1Swenshuai.xi #define HSL_TCPIP                   true
103*53ee8cc1Swenshuai.xi 
104*53ee8cc1Swenshuai.xi 
105*53ee8cc1Swenshuai.xi // max. number of ID
106*53ee8cc1Swenshuai.xi #define HSL_GROUP_MAX               1024    // group id
107*53ee8cc1Swenshuai.xi #define HSL_LOG_ID_MAX              1024    // log id
108*53ee8cc1Swenshuai.xi #define DEFAULT_GROUP               HSL_DBG_SN_ALL_DEBUG  // To support default group filtering inserted by silox.exe when none are specified.
109*53ee8cc1Swenshuai.xi 
110*53ee8cc1Swenshuai.xi // Group ID for all modules
111*53ee8cc1Swenshuai.xi // utopia
112*53ee8cc1Swenshuai.xi #define HSL_DBG_UTOPIA_ALL_DEBUG    (GROUP_MODULE_UTOPIA_ALL<<2 | GROUP_LEVEL_DEBUG)
113*53ee8cc1Swenshuai.xi #define HSL_DBG_UTOPIA_ALL_INFO     (GROUP_MODULE_UTOPIA_ALL<<2 | GROUP_LEVEL_INFO)
114*53ee8cc1Swenshuai.xi #define HSL_DBG_UTOPIA_GOP_DEBUG    (GROUP_MODULE_UTOPIA_GOP<<2 | GROUP_LEVEL_DEBUG)
115*53ee8cc1Swenshuai.xi #define HSL_DBG_UTOPIA_GOP_INFO     (GROUP_MODULE_UTOPIA_GOP<<2 | GROUP_LEVEL_INFO)
116*53ee8cc1Swenshuai.xi #define HSL_DBG_UTOPIA_GE_DEBUG     (GROUP_MODULE_UTOPIA_GE<<2 | GROUP_LEVEL_DEBUG)
117*53ee8cc1Swenshuai.xi #define HSL_DBG_UTOPIA_GE_INFO      (GROUP_MODULE_UTOPIA_GE<<2 | GROUP_LEVEL_INFO)
118*53ee8cc1Swenshuai.xi #define HSL_DBG_UTOPIA_HSL_DEBUG     (GROUP_MODULE_UTOPIA_HSL<<2 | GROUP_LEVEL_DEBUG)
119*53ee8cc1Swenshuai.xi //�K
120*53ee8cc1Swenshuai.xi 
121*53ee8cc1Swenshuai.xi // middleware
122*53ee8cc1Swenshuai.xi #define HSL_DBG_MW_ALL_DEBUG        (GROUP_MODULE_MW_ALL<<2 | GROUP_LEVEL_DEBUG)
123*53ee8cc1Swenshuai.xi #define HSL_DBG_MW_ALL_INFO         (GROUP_MODULE_MW_ALL<<2 | GROUP_LEVEL_INFO)
124*53ee8cc1Swenshuai.xi #define HSL_DBG_MW_PGS_DEBUG        (GROUP_MODULE_MW_PGS<<2 | GROUP_LEVEL_DEBUG)
125*53ee8cc1Swenshuai.xi #define HSL_DBG_MW_PGS_INFO         (GROUP_MODULE_MW_PGS<<2 | GROUP_LEVEL_INFO)
126*53ee8cc1Swenshuai.xi #define HSL_DBG_MW_MHEG5_DEBUG      (GROUP_MODULE_MW_MHEG5<<2 | GROUP_LEVEL_DEBUG)
127*53ee8cc1Swenshuai.xi #define HSL_DBG_MW_MHEG5_INFO       (GROUP_MODULE_MW_MHEG5<<2 | GROUP_LEVEL_INFO)
128*53ee8cc1Swenshuai.xi //�K
129*53ee8cc1Swenshuai.xi 
130*53ee8cc1Swenshuai.xi // supernova
131*53ee8cc1Swenshuai.xi #define HSL_DBG_SN_ALL_DEBUG        (GROUP_MODULE_SN_ALL<<2 | GROUP_LEVEL_DEBUG)
132*53ee8cc1Swenshuai.xi #define HSL_DBG_SN_ALL_INFO         (GROUP_MODULE_SN_ALL<<2 | GROUP_LEVEL_INFO)
133*53ee8cc1Swenshuai.xi #define HSL_DBG_SN_MUF_DEBUG        (GROUP_MODULE_SN_MUF<<2 | GROUP_LEVEL_DEBUG)
134*53ee8cc1Swenshuai.xi #define HSL_DBG_SN_MUF_INFO         (GROUP_MODULE_SN_MUF<<2 | GROUP_LEVEL_INFO)
135*53ee8cc1Swenshuai.xi #define HSL_DBG_SN_AUTO_TEST_DEBUG  (GROUP_MODULE_SN_AUTO_TEST<<2 | GROUP_LEVEL_DEBUG)
136*53ee8cc1Swenshuai.xi #define HSL_DBG_SN_AUTO_TEST_INFO   (GROUP_MODULE_SN_AUTO_TEST<<2 | GROUP_LEVEL_INFO)
137*53ee8cc1Swenshuai.xi 
138*53ee8cc1Swenshuai.xi #define HSL_DBG_SN_PROFILING        (GROUP_MODULE_SN_ALL<<2 | GROUP_LEVEL_DEBUG)
139*53ee8cc1Swenshuai.xi //�K
140*53ee8cc1Swenshuai.xi 
141*53ee8cc1Swenshuai.xi #define HSL_GROUP_ID_MAX            (HSL_DBG_SN_AUTO_TEST_INFO + 1)
142*53ee8cc1Swenshuai.xi 
143*53ee8cc1Swenshuai.xi #define HSL_PROFILING_ADD_MODULE_CONSTRUCTOR(_mODULEnAME) \
144*53ee8cc1Swenshuai.xi         void __attribute__ ((constructor)) onLoad_ ## _mODULEnAME (void); \
145*53ee8cc1Swenshuai.xi         \
146*53ee8cc1Swenshuai.xi         void onLoad_ ## _mODULEnAME (void) \
147*53ee8cc1Swenshuai.xi         { \
148*53ee8cc1Swenshuai.xi             Dl_info info; \
149*53ee8cc1Swenshuai.xi             dladdr((const void*)(&onLoad_ ## _mODULEnAME), &info); \
150*53ee8cc1Swenshuai.xi             FrHslAddDynamicLibInfo(info.dli_fbase, info.dli_saddr, info.dli_fname); \
151*53ee8cc1Swenshuai.xi         }
152*53ee8cc1Swenshuai.xi 
153*53ee8cc1Swenshuai.xi // group module ID
154*53ee8cc1Swenshuai.xi typedef enum
155*53ee8cc1Swenshuai.xi {
156*53ee8cc1Swenshuai.xi     // utopia scheme                �V 0 ~ 127
157*53ee8cc1Swenshuai.xi     GROUP_MODULE_UTOPIA_ALL         = 0x00,
158*53ee8cc1Swenshuai.xi     GROUP_MODULE_UTOPIA_GOP         = 0x01,
159*53ee8cc1Swenshuai.xi     GROUP_MODULE_UTOPIA_GE          = 0x02,
160*53ee8cc1Swenshuai.xi     GROUP_MODULE_UTOPIA_HSL         = 0x03,
161*53ee8cc1Swenshuai.xi 
162*53ee8cc1Swenshuai.xi     // �K
163*53ee8cc1Swenshuai.xi 
164*53ee8cc1Swenshuai.xi     // middleware scheme            �V 128 ~ 191
165*53ee8cc1Swenshuai.xi     GROUP_MODULE_MW_ALL             = 0x80, // BD subtitle
166*53ee8cc1Swenshuai.xi     GROUP_MODULE_MW_PGS             = 0x81, // BD subtitle
167*53ee8cc1Swenshuai.xi     GROUP_MODULE_MW_MHEG5           = 0x82,
168*53ee8cc1Swenshuai.xi     // �K
169*53ee8cc1Swenshuai.xi 
170*53ee8cc1Swenshuai.xi     // SN scheme                    �V 192 ~ 255
171*53ee8cc1Swenshuai.xi     GROUP_MODULE_SN_ALL             = 0xC0,
172*53ee8cc1Swenshuai.xi     GROUP_MODULE_SN_MUF             = 0xC1,
173*53ee8cc1Swenshuai.xi     GROUP_MODULE_SN_AUTO_TEST       = 0xC2,
174*53ee8cc1Swenshuai.xi     GROUP_MODULE_SN_PROFILE         = 0xC3
175*53ee8cc1Swenshuai.xi     // �K
176*53ee8cc1Swenshuai.xi 
177*53ee8cc1Swenshuai.xi } EN_HSL_GROUP_MODULE;
178*53ee8cc1Swenshuai.xi 
179*53ee8cc1Swenshuai.xi // group level ID, 2 bits to display the 4 conditions
180*53ee8cc1Swenshuai.xi typedef enum
181*53ee8cc1Swenshuai.xi {
182*53ee8cc1Swenshuai.xi     GROUP_LEVEL_DEBUG               = 0x00,
183*53ee8cc1Swenshuai.xi     GROUP_LEVEL_INFO                = 0x01,
184*53ee8cc1Swenshuai.xi     GROUP_LEVEL_XXX1                = 0x02,
185*53ee8cc1Swenshuai.xi     GROUP_LEVEL_XXX2                = 0x03,
186*53ee8cc1Swenshuai.xi 
187*53ee8cc1Swenshuai.xi } EN_HSL_GROUP_LEVEL;
188*53ee8cc1Swenshuai.xi 
189*53ee8cc1Swenshuai.xi // -- communication flow --------------------------->
190*53ee8cc1Swenshuai.xi 
191*53ee8cc1Swenshuai.xi typedef enum
192*53ee8cc1Swenshuai.xi {
193*53ee8cc1Swenshuai.xi     // cmd type
194*53ee8cc1Swenshuai.xi     HSL_CMD_TYPE                    = 0x10,
195*53ee8cc1Swenshuai.xi 
196*53ee8cc1Swenshuai.xi     // cmd group
197*53ee8cc1Swenshuai.xi     HSL_CMD_CARD_STATUS             = 0x20,
198*53ee8cc1Swenshuai.xi     HSL_CMD_SEND_DATA               = 0x21,
199*53ee8cc1Swenshuai.xi     HSL_CMD_RESET                   = 0x22,
200*53ee8cc1Swenshuai.xi     HSL_CMD_GROUP_ID_FILTER         = 0x23,
201*53ee8cc1Swenshuai.xi     HSL_CMD_LOG_ID_FILTER           = 0x24,
202*53ee8cc1Swenshuai.xi     HSL_CMD_ACK_TARGET              = 0x25,
203*53ee8cc1Swenshuai.xi     HSL_CMD_RB_TOTAL_SIZE           = 0x26,
204*53ee8cc1Swenshuai.xi     HSL_CMD_RB_EXIST_DATA_SIZE      = 0x27,
205*53ee8cc1Swenshuai.xi     HSL_CMD_GET_HSL_DATA            = 0x28,
206*53ee8cc1Swenshuai.xi 
207*53ee8cc1Swenshuai.xi     // end
208*53ee8cc1Swenshuai.xi     HSL_CMD_END
209*53ee8cc1Swenshuai.xi 
210*53ee8cc1Swenshuai.xi } EN_HSL_CMD_TYPE;
211*53ee8cc1Swenshuai.xi 
212*53ee8cc1Swenshuai.xi // cmd queue header.
213*53ee8cc1Swenshuai.xi typedef struct
214*53ee8cc1Swenshuai.xi {
215*53ee8cc1Swenshuai.xi     MS_U32  u32Pid;     // PC process id
216*53ee8cc1Swenshuai.xi     MS_U32  u32Len;     // buffer length
217*53ee8cc1Swenshuai.xi     MS_U16  u16Cmd;     // command
218*53ee8cc1Swenshuai.xi     MS_U8 *   pu8Buf;    // data buffer
219*53ee8cc1Swenshuai.xi }CmdInfo;
220*53ee8cc1Swenshuai.xi 
221*53ee8cc1Swenshuai.xi /** Sets Filter Matrix.
222*53ee8cc1Swenshuai.xi  * The KiSetsFilterMatrix signal is used to send the signal logging filter
223*53ee8cc1Swenshuai.xi  * into the system.
224*53ee8cc1Swenshuai.xi  *
225*53ee8cc1Swenshuai.xi  * This type of filter is needed when signal sets are
226*53ee8cc1Swenshuai.xi  * being used. The actual size of this signal when sent may be different
227*53ee8cc1Swenshuai.xi  * from the compile time structure as the matrix array will change size
228*53ee8cc1Swenshuai.xi  * depending on the number of signal sets, bases and id's defined in the
229*53ee8cc1Swenshuai.xi  * system.
230*53ee8cc1Swenshuai.xi  *
231*53ee8cc1Swenshuai.xi  * The Sets filter is like an array of 2 dimensional arrays, one for
232*53ee8cc1Swenshuai.xi  * each signal set. This results in the Sets filter being a 3 dimensional
233*53ee8cc1Swenshuai.xi  * array (but with variable sized dimensions).
234*53ee8cc1Swenshuai.xi  *
235*53ee8cc1Swenshuai.xi  * DO NOT CHANGE THIS STRUCTURE'S NAME OR MEMBERS AS PC TEST TOOLS
236*53ee8cc1Swenshuai.xi  * MAY REFERENCE THESE. */
237*53ee8cc1Swenshuai.xi 
238*53ee8cc1Swenshuai.xi typedef struct KiSetsFilterMatrixTag
239*53ee8cc1Swenshuai.xi {
240*53ee8cc1Swenshuai.xi     /** The number of signal sets in the matrix array. */
241*53ee8cc1Swenshuai.xi     MS_U16 numSets;
242*53ee8cc1Swenshuai.xi 
243*53ee8cc1Swenshuai.xi     /** The number of signal bases in the matrix array. */
244*53ee8cc1Swenshuai.xi     MS_U32 numBases;
245*53ee8cc1Swenshuai.xi 
246*53ee8cc1Swenshuai.xi     /** The size in bytes of the matrix array. */
247*53ee8cc1Swenshuai.xi     MS_U32 matrixSize;
248*53ee8cc1Swenshuai.xi 
249*53ee8cc1Swenshuai.xi     /** The filter matrix.
250*53ee8cc1Swenshuai.xi      * The size of this array is given by the matrixSize array rather than
251*53ee8cc1Swenshuai.xi      * the statically defined dimension. This array has information on what
252*53ee8cc1Swenshuai.xi      * signals within each set and base should be logged.
253*53ee8cc1Swenshuai.xi      * The matrix array is split into 3 parts. The first part is an array
254*53ee8cc1Swenshuai.xi      * from 0 to (numSets - 1) of 4 byte indexes into the base offsets (the
255*53ee8cc1Swenshuai.xi      * 2nd part), each index represents the first base in the associated set.
256*53ee8cc1Swenshuai.xi      * The second part is an array from numSets to (numSets + numBases - 1)
257*53ee8cc1Swenshuai.xi      * of 4 byte indexes into the signal bitmap (the 3rd part), each index
258*53ee8cc1Swenshuai.xi      * represents the first signal in the associated base. The third part
259*53ee8cc1Swenshuai.xi      * is the signal bitmap, each bit represents the logging state of a
260*53ee8cc1Swenshuai.xi      * signal, the signals within a base always start on an MS_U8 boundary
261*53ee8cc1Swenshuai.xi      * (i.e. there is padding at the end of bases to get to an MS_U8 boundary).*/
262*53ee8cc1Swenshuai.xi     MS_U8 matrix[10];
263*53ee8cc1Swenshuai.xi 
264*53ee8cc1Swenshuai.xi } KiSetsFilterMatrix;
265*53ee8cc1Swenshuai.xi 
266*53ee8cc1Swenshuai.xi 
267*53ee8cc1Swenshuai.xi // <-------------------------------------------------
268*53ee8cc1Swenshuai.xi 
269*53ee8cc1Swenshuai.xi 
270*53ee8cc1Swenshuai.xi /**
271*53ee8cc1Swenshuai.xi  *  This function is called to initialise the HSL controller.
272*53ee8cc1Swenshuai.xi  *  This function is called to initialise the HSL controller.
273*53ee8cc1Swenshuai.xi  */
274*53ee8cc1Swenshuai.xi MS_BOOL FrHslInitialise(const MS_PHYADDR PhyAddr, const MS_U32 u32BufByteLen);
275*53ee8cc1Swenshuai.xi MS_BOOL FrHslInitialiseMulti(MS_U8 _ICount, MS_U32 *_params);
276*53ee8cc1Swenshuai.xi MS_BOOL FrHslDynamicLogPointEnable(const MS_U16 lgHdr);
277*53ee8cc1Swenshuai.xi MS_BOOL FrHslDynamicLogPointDisable(const MS_U16 lgHdr);
278*53ee8cc1Swenshuai.xi MS_BOOL FrHslDynamicLogPointEnableAll(void);
279*53ee8cc1Swenshuai.xi MS_BOOL FrHslDynamicLogPointDisableAll(void);
280*53ee8cc1Swenshuai.xi MS_BOOL FrHslDynamicLogGroupEnable(const MS_U16 groupId);
281*53ee8cc1Swenshuai.xi MS_BOOL FrHslDynamicLogGroupDisable(const MS_U16 groupId);
282*53ee8cc1Swenshuai.xi MS_BOOL FrHslDynamicLogGroupEnableAll(void);
283*53ee8cc1Swenshuai.xi MS_BOOL FrHslDynamicLogGroupDisableAll(void);
284*53ee8cc1Swenshuai.xi MS_BOOL FrHslV2ApplySingleLogPointFiltering(const MS_U16 lgHdr, const MS_BOOL enableState);
285*53ee8cc1Swenshuai.xi MS_BOOL FrHslV2ApplyMultipleLogPointsFilter(const MS_U16* lgHdr_p, const MS_BOOL* enableState_p, const MS_U16 sizeArray);
286*53ee8cc1Swenshuai.xi MS_BOOL FrHslV2InitialiseLogPointFiltering(void);
287*53ee8cc1Swenshuai.xi MS_BOOL FrHslV2InitialiseGroupIdFiltering(void);
288*53ee8cc1Swenshuai.xi MS_BOOL FrHslFinalize(void);
289*53ee8cc1Swenshuai.xi void KiTtiProcessSetsFilter(const KiSetsFilterMatrix * signalData);
290*53ee8cc1Swenshuai.xi 
291*53ee8cc1Swenshuai.xi MS_BOOL FrHslAddDynamicLibInfo(void* baseAddress, void* onLoadAddress, const char *libFileName);
292*53ee8cc1Swenshuai.xi MS_BOOL FrHslAddThreadInfo(const MS_U32 threadId, const char * threadName);
293*53ee8cc1Swenshuai.xi 
294*53ee8cc1Swenshuai.xi #if 1 // remove these test functions later
295*53ee8cc1Swenshuai.xi MS_BOOL FrHslDynamicLogPointTest(const MS_U16 lgHdr);
296*53ee8cc1Swenshuai.xi #endif
297*53ee8cc1Swenshuai.xi 
298*53ee8cc1Swenshuai.xi #define M_FrHslWriteSPMsgHeader(value, pu8Buffer, u32Time)  FrHslWriteHeader(HSL_RAWLOB_SP, (MS_U16)value, pu8Buffer, u32Time)
299*53ee8cc1Swenshuai.xi 
300*53ee8cc1Swenshuai.xi #define M_FrHslWriteVLMsgHeader(value, pu8Buffer, u32Time)  FrHslWriteHeader(HSL_RAWLOB_VL, (MS_U16)value, pu8Buffer, u32Time)
301*53ee8cc1Swenshuai.xi 
302*53ee8cc1Swenshuai.xi #define M_FrHslWritePacketCounts(value, pu8Buffer) FrHslWritePayload(FALSE, value, pu8Buffer)
303*53ee8cc1Swenshuai.xi 
304*53ee8cc1Swenshuai.xi #define M_FrHslWritePayload(value, pu8Buffer) FrHslWritePayload(FALSE, value, pu8Buffer)
305*53ee8cc1Swenshuai.xi 
306*53ee8cc1Swenshuai.xi #define M_FrHslWriteLastPayload(value, pu8Buffer) FrHslWritePayload(TRUE, value, pu8Buffer)
307*53ee8cc1Swenshuai.xi 
308*53ee8cc1Swenshuai.xi 
309*53ee8cc1Swenshuai.xi #define HSL_SPLIT_INT32(a) (a>>16),(a)
310*53ee8cc1Swenshuai.xi 
311*53ee8cc1Swenshuai.xi /*******************************************************************************
312*53ee8cc1Swenshuai.xi ** Global Function Prototypes
313*53ee8cc1Swenshuai.xi *******************************************************************************/
314*53ee8cc1Swenshuai.xi 
315*53ee8cc1Swenshuai.xi /** Write a 0 argument message to HSL (just a message header, no data).
316*53ee8cc1Swenshuai.xi   * Write a 0 argument message to HSL (just a message header, no data). Equivalent
317*53ee8cc1Swenshuai.xi   * Equivalent to former LG_MES_0 macro.
318*53ee8cc1Swenshuai.xi   * \param MS_U16 hDR = Autogenerated Log point ID.
319*53ee8cc1Swenshuai.xi   * \param String fORMATsPECIFER = Format specifier string which resolves to nothing at compile time.
320*53ee8cc1Swenshuai.xi   */
321*53ee8cc1Swenshuai.xi void M_FrHslPrintf0(const MS_U32 u32Id, const MS_U16 u16GId, const char* u8Fmt);
322*53ee8cc1Swenshuai.xi 
323*53ee8cc1Swenshuai.xi /** Write a 1 argument message to HSL (just a message header, no data).
324*53ee8cc1Swenshuai.xi   * Write a 1 argument message to HSL (just a message header, no data).
325*53ee8cc1Swenshuai.xi   * Equivalent to former LG_MES_1 macro.
326*53ee8cc1Swenshuai.xi   * \param MS_U16 hDR = Autogenerated Log point ID.
327*53ee8cc1Swenshuai.xi   * \param String fORMATsPECIFER = Format specifier string which resolves to nothing at compile time.
328*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG1 = argument value to log
329*53ee8cc1Swenshuai.xi   */
330*53ee8cc1Swenshuai.xi void M_FrHslPrintf1(const MS_U32 u32Id, const MS_U16 u16GId, const char* u8Fmt, const MS_U16 u16Arg1);
331*53ee8cc1Swenshuai.xi 
332*53ee8cc1Swenshuai.xi 
333*53ee8cc1Swenshuai.xi /** Write a 2 argument message to HSL (just a message header, no data).
334*53ee8cc1Swenshuai.xi   * Write a 2 argument message to HSL (just a message header, no data).
335*53ee8cc1Swenshuai.xi   * Equivalent to former LG_MES_2 macro.
336*53ee8cc1Swenshuai.xi   * \param MS_U16 hDR = Autogenerated Log point ID.
337*53ee8cc1Swenshuai.xi   * \param String fORMATsPECIFER = Format specifier string which resolves to nothing at compile time.
338*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG1 = first argument value to log
339*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG2 = second argument value to log
340*53ee8cc1Swenshuai.xi   */
341*53ee8cc1Swenshuai.xi void M_FrHslPrintf2(const MS_U32 u32Id, const MS_U16 u16GId, const char* u8Fmt, const MS_U16 u16Arg1, const MS_U16 u16Arg2);
342*53ee8cc1Swenshuai.xi 
343*53ee8cc1Swenshuai.xi 
344*53ee8cc1Swenshuai.xi /** Write a 3 argument message to HSL (just a message header, no data).
345*53ee8cc1Swenshuai.xi   * Write a 3 argument message to HSL (just a message header, no data).
346*53ee8cc1Swenshuai.xi   * Equivalent to former LG_MES_3 macro.
347*53ee8cc1Swenshuai.xi   * \param MS_U16 hDR = Autogenerated Log point ID.
348*53ee8cc1Swenshuai.xi   * \param String fORMATsPECIFER = Format specifier string which resolves to nothing at compile time.
349*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG1 = first argument value to log
350*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG2 = second argument value to log
351*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG3 = third argument value to log
352*53ee8cc1Swenshuai.xi   */
353*53ee8cc1Swenshuai.xi void M_FrHslPrintf3(const MS_U32 u32Id, const MS_U16 u16GId, const char* u8Fmt, const MS_U16 u16Arg1, const MS_U16 u16Arg2,const MS_U16 u16Arg3);
354*53ee8cc1Swenshuai.xi 
355*53ee8cc1Swenshuai.xi 
356*53ee8cc1Swenshuai.xi /** Write a 4 argument message to HSL (just a message header, no data).
357*53ee8cc1Swenshuai.xi   * Write a 4 argument message to HSL (just a message header, no data).
358*53ee8cc1Swenshuai.xi   * Equivalent to former LG_MES_4 macro.
359*53ee8cc1Swenshuai.xi   * \param MS_U16 hDR = Autogenerated Log point ID.
360*53ee8cc1Swenshuai.xi   * \param String fORMATsPECIFER = Format specifier string which resolves to nothing at compile time.
361*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG1 = first argument value to log
362*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG2 = second argument value to log
363*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG3 = third argument value to log
364*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG4 = fourth argument value to log
365*53ee8cc1Swenshuai.xi   */
366*53ee8cc1Swenshuai.xi void M_FrHslPrintf4(const MS_U32 u32Id, const MS_U16 u16GId, const char* u8Fmt, const MS_U16 u16Arg1, const MS_U16 u16Arg2, const MS_U16 u16Arg3, const MS_U16 u16Arg4);
367*53ee8cc1Swenshuai.xi 
368*53ee8cc1Swenshuai.xi /** Write a 5 argument message to HSL (just a message header, no data).
369*53ee8cc1Swenshuai.xi   * Write a 5 argument message to HSL (just a message header, no data).
370*53ee8cc1Swenshuai.xi   * \param MS_U16 hDR = Autogenerated Log point ID.
371*53ee8cc1Swenshuai.xi   * Equivalent to former LG_MES_5 macro.
372*53ee8cc1Swenshuai.xi   * \param String fORMATsPECIFER = Format specifier string which resolves to nothing at compile time.
373*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG1 = first argument value to log
374*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG2 = second argument value to log
375*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG3 = third argument value to log
376*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG4 = fourth argument value to log
377*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG5 = fifth argument value to log
378*53ee8cc1Swenshuai.xi   */
379*53ee8cc1Swenshuai.xi void M_FrHslPrintf5(const MS_U32 u32Id, const MS_U16 u16GId, const char* u8Fmt, const MS_U16 u16Arg1, const MS_U16 u16Arg2, const MS_U16 u16Arg3, const MS_U16 u16Arg4, const MS_U16 u16Arg5);
380*53ee8cc1Swenshuai.xi 
381*53ee8cc1Swenshuai.xi /** Write a 6 argument message to HSL (just a message header, no data).
382*53ee8cc1Swenshuai.xi   * Write a 6 argument message to HSL (just a message header, no data).
383*53ee8cc1Swenshuai.xi   * \param MS_U16 hDR = Autogenerated Log point ID.
384*53ee8cc1Swenshuai.xi   * Equivalent to former LG_MES_6 macro.
385*53ee8cc1Swenshuai.xi   * \param String fORMATsPECIFER = Format specifier string which resolves to nothing at compile time.
386*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG1 = first argument value to log
387*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG2 = second argument value to log
388*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG3 = third argument value to log
389*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG4 = fourth argument value to log
390*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG5 = fifth argument value to log
391*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG6 = sixth argument value to log
392*53ee8cc1Swenshuai.xi   */
393*53ee8cc1Swenshuai.xi void M_FrHslPrintf6(MS_U32 u32Id, MS_U16 u16GId, const char* u8Fmt, const MS_U16 u16Arg1 , const MS_U16 u16Arg2, const MS_U16 u16Arg3, const MS_U16 u16Arg4, const MS_U16 u16Arg5, const MS_U16 u16Arg6);
394*53ee8cc1Swenshuai.xi 
395*53ee8cc1Swenshuai.xi 
396*53ee8cc1Swenshuai.xi /** Write a 7 argument message to HSL (just a message header, no data).
397*53ee8cc1Swenshuai.xi   * Write a 7 argument message to HSL (just a message header, no data).
398*53ee8cc1Swenshuai.xi   * \param MS_U16 hDR = Autogenerated Log point ID.
399*53ee8cc1Swenshuai.xi   * Equivalent to former LG_MES_6 macro.
400*53ee8cc1Swenshuai.xi   * \param String fORMATsPECIFER = Format specifier string which resolves to nothing at compile time.
401*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG1 = first argument value to log
402*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG2 = second argument value to log
403*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG3 = third argument value to log
404*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG4 = fourth argument value to log
405*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG5 = fifth argument value to log
406*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG6 = sixth argument value to log
407*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG7 = seventh argument value to log
408*53ee8cc1Swenshuai.xi   */
409*53ee8cc1Swenshuai.xi void M_FrHslPrintf7(MS_U32 u32Id, MS_U16 u16GId, const char* u8Fmt, const MS_U16 u16Arg1, const MS_U16 u16Arg2, const MS_U16 u16Arg3, const MS_U16 u16Arg4, const MS_U16 u16Arg5,
410*53ee8cc1Swenshuai.xi                                     const MS_U16 u16Arg6, const MS_U16 u16Arg7);
411*53ee8cc1Swenshuai.xi 
412*53ee8cc1Swenshuai.xi 
413*53ee8cc1Swenshuai.xi /** Write a 8 argument message to HSL (just a message header, no data).
414*53ee8cc1Swenshuai.xi   * Write a 8 argument message to HSL (just a message header, no data).
415*53ee8cc1Swenshuai.xi   * \param MS_U16 hDR = Autogenerated Log point ID.
416*53ee8cc1Swenshuai.xi   * Equivalent to former LG_MES_6 macro.
417*53ee8cc1Swenshuai.xi   * \param String fORMATsPECIFER = Format specifier string which resolves to nothing at compile time.
418*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG1 = first argument value to log
419*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG2 = second argument value to log
420*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG3 = third argument value to log
421*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG4 = fourth argument value to log
422*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG5 = fifth argument value to log
423*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG6 = sixth argument value to log
424*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG7 = seventh argument value to log
425*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG8 = eighth argument value to log
426*53ee8cc1Swenshuai.xi   */
427*53ee8cc1Swenshuai.xi void M_FrHslPrintf8(MS_U32 u32Id, MS_U16 u16GId, const char* u8Fmt, const MS_U16 u16Arg1, const MS_U16 u16Arg2, const MS_U16 u16Arg3, const MS_U16 u16Arg4, const MS_U16 u16Arg5,
428*53ee8cc1Swenshuai.xi                                     const MS_U16 u16Arg6, const MS_U16 u16Arg7 , const MS_U16 u16Arg8);
429*53ee8cc1Swenshuai.xi 
430*53ee8cc1Swenshuai.xi 
431*53ee8cc1Swenshuai.xi /** Write a 9 argument message to HSL (just a message header, no data).
432*53ee8cc1Swenshuai.xi   * Write a 9 argument message to HSL (just a message header, no data).
433*53ee8cc1Swenshuai.xi   * \param MS_U16 hDR = Autogenerated Log point ID.
434*53ee8cc1Swenshuai.xi   * Equivalent to former LG_MES_6 macro.
435*53ee8cc1Swenshuai.xi   * \param String fORMATsPECIFER = Format specifier string which resolves to nothing at compile time.
436*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG1 = first argument value to log
437*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG2 = second argument value to log
438*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG3 = third argument value to log
439*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG4 = fourth argument value to log
440*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG5 = fifth argument value to log
441*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG6 = sixth argument value to log
442*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG7 = seventh argument value to log
443*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG8 = eighth argument value to log
444*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG9 = nineth argument value to log
445*53ee8cc1Swenshuai.xi   */
446*53ee8cc1Swenshuai.xi void M_FrHslPrintf9(MS_U32 u32Id, MS_U16 u16GId, const char* u8Fmt, const MS_U16 u16Arg1, const MS_U16 u16Arg2, const MS_U16 u16Arg3, const MS_U16 u16Arg4, const MS_U16 u16Arg5,
447*53ee8cc1Swenshuai.xi                                     const MS_U16 u16Arg6, const MS_U16 u16Arg7 , const MS_U16 u16Arg8, const MS_U16 u16Arg9);
448*53ee8cc1Swenshuai.xi 
449*53ee8cc1Swenshuai.xi 
450*53ee8cc1Swenshuai.xi /** Write a 10 argument message to HSL (just a message header, no data).
451*53ee8cc1Swenshuai.xi   * Write a 10 argument message to HSL (just a message header, no data).
452*53ee8cc1Swenshuai.xi   * \param MS_U16 hDR = Autogenerated Log point ID.
453*53ee8cc1Swenshuai.xi   * Equivalent to former LG_MES_6 macro.
454*53ee8cc1Swenshuai.xi   * \param String fORMATsPECIFER = Format specifier string which resolves to nothing at compile time.
455*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG1 = first argument value to log
456*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG2 = second argument value to log
457*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG3 = third argument value to log
458*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG4 = fourth argument value to log
459*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG5 = fifth argument value to log
460*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG6 = sixth argument value to log
461*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG7 = seventh argument value to log
462*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG8 = eighth argument value to log
463*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG9 = nineth argument value to log
464*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG10 = tenth argument value to log
465*53ee8cc1Swenshuai.xi   */
466*53ee8cc1Swenshuai.xi void M_FrHslPrintf10(MS_U32 u32Id, MS_U16 u16GId, const char* u8Fmt, const MS_U16 u16Arg1, const MS_U16 u16Arg2, const MS_U16 u16Arg3, const MS_U16 u16Arg4, const MS_U16 u16Arg5,
467*53ee8cc1Swenshuai.xi                                     const MS_U16 u16Arg6, const MS_U16 u16Arg7 , const MS_U16 u16Arg8, const MS_U16 u16Arg9, const MS_U16 u16Arg10);
468*53ee8cc1Swenshuai.xi 
469*53ee8cc1Swenshuai.xi 
470*53ee8cc1Swenshuai.xi /** Write a 11 argument message to HSL (just a message header, no data).
471*53ee8cc1Swenshuai.xi   * Write a 11 argument message to HSL (just a message header, no data).
472*53ee8cc1Swenshuai.xi   * \param MS_U16 hDR = Autogenerated Log point ID.
473*53ee8cc1Swenshuai.xi   * Equivalent to former LG_MES_6 macro.
474*53ee8cc1Swenshuai.xi   * \param String fORMATsPECIFER = Format specifier string which resolves to nothing at compile time.
475*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG1 = first argument value to log
476*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG2 = second argument value to log
477*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG3 = third argument value to log
478*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG4 = fourth argument value to log
479*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG5 = fifth argument value to log
480*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG6 = sixth argument value to log
481*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG7 = seventh argument value to log
482*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG8 = eighth argument value to log
483*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG9 = nineth argument value to log
484*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG10 = tenth argument value to log
485*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG11 = eleventh argument value to log
486*53ee8cc1Swenshuai.xi   */
487*53ee8cc1Swenshuai.xi void M_FrHslPrintf11(MS_U32 u32Id, MS_U16 u16GId, const char* u8Fmt, const MS_U16 u16Arg1, const MS_U16 u16Arg2, const MS_U16 u16Arg3, const MS_U16 u16Arg4, const MS_U16 u16Arg5,
488*53ee8cc1Swenshuai.xi                                     const MS_U16 u16Arg6, const MS_U16 u16Arg7 , const MS_U16 u16Arg8, const MS_U16 u16Arg9, const MS_U16 u16Arg10,
489*53ee8cc1Swenshuai.xi                                     const MS_U16 u16Arg11);
490*53ee8cc1Swenshuai.xi 
491*53ee8cc1Swenshuai.xi 
492*53ee8cc1Swenshuai.xi /** Write a 12 argument message to HSL (just a message header, no data).
493*53ee8cc1Swenshuai.xi   * Write a 12 argument message to HSL (just a message header, no data).
494*53ee8cc1Swenshuai.xi   * \param MS_U16 hDR = Autogenerated Log point ID.
495*53ee8cc1Swenshuai.xi   * Equivalent to former LG_MES_6 macro.
496*53ee8cc1Swenshuai.xi   * \param String fORMATsPECIFER = Format specifier string which resolves to nothing at compile time.
497*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG1 = first argument value to log
498*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG2 = second argument value to log
499*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG3 = third argument value to log
500*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG4 = fourth argument value to log
501*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG5 = fifth argument value to log
502*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG6 = sixth argument value to log
503*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG7 = seventh argument value to log
504*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG8 = eighth argument value to log
505*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG9 = nineth argument value to log
506*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG10 = tenth argument value to log
507*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG11 = eleventh argument value to log
508*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG12 = twelveth argument value to log
509*53ee8cc1Swenshuai.xi   */
510*53ee8cc1Swenshuai.xi void M_FrHslPrintf12(MS_U32 u32Id, MS_U16 u16GId, const char* u8Fmt, const MS_U16 u16Arg1, const MS_U16 u16Arg2, const MS_U16 u16Arg3, const MS_U16 u16Arg4, const MS_U16 u16Arg5,
511*53ee8cc1Swenshuai.xi                                     const MS_U16 u16Arg6, const MS_U16 u16Arg7 , const MS_U16 u16Arg8, const MS_U16 u16Arg9, const MS_U16 u16Arg10,
512*53ee8cc1Swenshuai.xi                                     const MS_U16 u16Arg11 , const MS_U16 u16Arg12);
513*53ee8cc1Swenshuai.xi 
514*53ee8cc1Swenshuai.xi 
515*53ee8cc1Swenshuai.xi /** Write a 13 argument message to HSL (just a message header, no data).
516*53ee8cc1Swenshuai.xi   * Write a 13 argument message to HSL (just a message header, no data).
517*53ee8cc1Swenshuai.xi   * \param MS_U16 hDR = Autogenerated Log point ID.
518*53ee8cc1Swenshuai.xi   * Equivalent to former LG_MES_6 macro.
519*53ee8cc1Swenshuai.xi   * \param String fORMATsPECIFER = Format specifier string which resolves to nothing at compile time.
520*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG1 = first argument value to log
521*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG2 = second argument value to log
522*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG3 = third argument value to log
523*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG4 = fourth argument value to log
524*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG5 = fifth argument value to log
525*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG6 = sixth argument value to log
526*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG7 = seventh argument value to log
527*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG8 = eighth argument value to log
528*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG9 = nineth argument value to log
529*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG10 = tenth argument value to log
530*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG11 = eleventh argument value to log
531*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG12 = twelveth argument value to log
532*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG13 = thirteenth argument value to log
533*53ee8cc1Swenshuai.xi   */
534*53ee8cc1Swenshuai.xi void M_FrHslPrintf13(MS_U32 u32Id, MS_U16 u16GId, const char* u8Fmt, const MS_U16 u16Arg1, const MS_U16 u16Arg2, const MS_U16 u16Arg3, const MS_U16 u16Arg4, const MS_U16 u16Arg5,
535*53ee8cc1Swenshuai.xi                                     const MS_U16 u16Arg6, const MS_U16 u16Arg7 , const MS_U16 u16Arg8, const MS_U16 u16Arg9, const MS_U16 u16Arg10,
536*53ee8cc1Swenshuai.xi                                     const MS_U16 u16Arg11 , const MS_U16 u16Arg12, const MS_U16 u16Arg13);
537*53ee8cc1Swenshuai.xi 
538*53ee8cc1Swenshuai.xi 
539*53ee8cc1Swenshuai.xi /** Write a 14 argument message to HSL (just a message header, no data).
540*53ee8cc1Swenshuai.xi   * Write a 14 argument message to HSL (just a message header, no data).
541*53ee8cc1Swenshuai.xi   * \param MS_U16 hDR = Autogenerated Log point ID.
542*53ee8cc1Swenshuai.xi   * Equivalent to former LG_MES_6 macro.
543*53ee8cc1Swenshuai.xi   * \param String fORMATsPECIFER = Format specifier string which resolves to nothing at compile time.
544*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG1 = first argument value to log
545*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG2 = second argument value to log
546*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG3 = third argument value to log
547*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG4 = fourth argument value to log
548*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG5 = fifth argument value to log
549*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG6 = sixth argument value to log
550*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG7 = seventh argument value to log
551*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG8 = eighth argument value to log
552*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG9 = nineth argument value to log
553*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG10 = tenth argument value to log
554*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG11 = eleventh argument value to log
555*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG12 = twelveth argument value to log
556*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG13 = thirteenth argument value to log
557*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG14 = fourteenth argument value to log
558*53ee8cc1Swenshuai.xi   */
559*53ee8cc1Swenshuai.xi void M_FrHslPrintf14(MS_U32 u32Id, MS_U16 u16GId, const char* u8Fmt, const MS_U16 u16Arg1, const MS_U16 u16Arg2, const MS_U16 u16Arg3, const MS_U16 u16Arg4, const MS_U16 u16Arg5,
560*53ee8cc1Swenshuai.xi                                     const MS_U16 u16Arg6, const MS_U16 u16Arg7 , const MS_U16 u16Arg8, const MS_U16 u16Arg9, const MS_U16 u16Arg10,
561*53ee8cc1Swenshuai.xi                                     const MS_U16 u16Arg11 , const MS_U16 u16Arg12, const MS_U16 u16Arg13, const MS_U16 u16Arg14);
562*53ee8cc1Swenshuai.xi 
563*53ee8cc1Swenshuai.xi 
564*53ee8cc1Swenshuai.xi /** Write a 15 argument message to HSL (just a message header, no data).
565*53ee8cc1Swenshuai.xi   * Write a 15 argument message to HSL (just a message header, no data).
566*53ee8cc1Swenshuai.xi   * \param MS_U16 hDR = Autogenerated Log point ID.
567*53ee8cc1Swenshuai.xi   * Equivalent to former LG_MES_6 macro.
568*53ee8cc1Swenshuai.xi   * \param String fORMATsPECIFER = Format specifier string which resolves to nothing at compile time.
569*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG1 = first argument value to log
570*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG2 = second argument value to log
571*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG3 = third argument value to log
572*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG4 = fourth argument value to log
573*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG5 = fifth argument value to log
574*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG6 = sixth argument value to log
575*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG7 = seventh argument value to log
576*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG8 = eighth argument value to log
577*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG9 = nineth argument value to log
578*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG10 = tenth argument value to log
579*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG11 = eleventh argument value to log
580*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG12 = twelveth argument value to log
581*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG13 = thirteenth argument value to log
582*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG14 = fourteenth argument value to log
583*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG15 = fifteenth argument value to log
584*53ee8cc1Swenshuai.xi   */
585*53ee8cc1Swenshuai.xi void M_FrHslPrintf15(MS_U32 u32Id, MS_U16 u16GId, const char* u8Fmt, const MS_U16 u16Arg1, const MS_U16 u16Arg2, const MS_U16 u16Arg3, const MS_U16 u16Arg4, const MS_U16 u16Arg5,
586*53ee8cc1Swenshuai.xi                                     const MS_U16 u16Arg6, const MS_U16 u16Arg7 , const MS_U16 u16Arg8, const MS_U16 u16Arg9, const MS_U16 u16Arg10,
587*53ee8cc1Swenshuai.xi                                     const MS_U16 u16Arg11 , const MS_U16 u16Arg12, const MS_U16 u16Arg13, const MS_U16 u16Arg14, const MS_U16 u16Arg15);
588*53ee8cc1Swenshuai.xi 
589*53ee8cc1Swenshuai.xi 
590*53ee8cc1Swenshuai.xi /** Write a 16 argument message to HSL (just a message header, no data).
591*53ee8cc1Swenshuai.xi   * Write a 16 argument message to HSL (just a message header, no data).
592*53ee8cc1Swenshuai.xi   * \param MS_U16 hDR = Autogenerated Log point ID.
593*53ee8cc1Swenshuai.xi   * Equivalent to former LG_MES_6 macro.
594*53ee8cc1Swenshuai.xi   * \param String fORMATsPECIFER = Format specifier string which resolves to nothing at compile time.
595*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG1 = first argument value to log
596*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG2 = second argument value to log
597*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG3 = third argument value to log
598*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG4 = fourth argument value to log
599*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG5 = fifth argument value to log
600*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG6 = sixth argument value to log
601*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG7 = seventh argument value to log
602*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG8 = eighth argument value to log
603*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG9 = nineth argument value to log
604*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG10 = tenth argument value to log
605*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG11 = eleventh argument value to log
606*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG12 = twelveth argument value to log
607*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG13 = thirteenth argument value to log
608*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG14 = fourteenth argument value to log
609*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG15 = fifteenth argument value to log
610*53ee8cc1Swenshuai.xi   * \param MS_U16 aRG16 = sixteenth argument value to log
611*53ee8cc1Swenshuai.xi   */
612*53ee8cc1Swenshuai.xi void M_FrHslPrintf16(MS_U32 u32Id, MS_U16 u16GId, const char* u8Fmt, const MS_U16 u16Arg1, const MS_U16 u16Arg2, const MS_U16 u16Arg3, const MS_U16 u16Arg4, const MS_U16 u16Arg5,
613*53ee8cc1Swenshuai.xi                                     const MS_U16 u16Arg6, const MS_U16 u16Arg7 , const MS_U16 u16Arg8, const MS_U16 u16Arg9, const MS_U16 u16Arg10,
614*53ee8cc1Swenshuai.xi                                     const MS_U16 u16Arg11 , const MS_U16 u16Arg12, const MS_U16 u16Arg13, const MS_U16 u16Arg14, const MS_U16 u16Arg15, const MS_U16 u16Arg16);
615*53ee8cc1Swenshuai.xi 
616*53ee8cc1Swenshuai.xi 
617*53ee8cc1Swenshuai.xi /** Write a string message
618*53ee8cc1Swenshuai.xi  *  Write a string message
619*53ee8cc1Swenshuai.xi  *  \param MS_U16 hDR = Message header word.
620*53ee8cc1Swenshuai.xi  *  \param String fORMATsPECIFER = Format specifier string which resolves to nothing at compile time.
621*53ee8cc1Swenshuai.xi  *  \param MS_U16 *pDATA = Array of lENGTH MS_U16s.
622*53ee8cc1Swenshuai.xi  */
623*53ee8cc1Swenshuai.xi void M_FrHslString(const MS_U16 u16Id, const MS_U16 u16GId, const char* u8fmt, const void* pArray);
624*53ee8cc1Swenshuai.xi 
625*53ee8cc1Swenshuai.xi 
626*53ee8cc1Swenshuai.xi /** Write a message that is an array of MS_U16s.
627*53ee8cc1Swenshuai.xi  *  Write a message that is an array of MS_U16s. Equivalent to former LG_MS_U16_DATA macro.
628*53ee8cc1Swenshuai.xi  *  \param MS_U16 hDR = Message header word.
629*53ee8cc1Swenshuai.xi  *  \param String fORMATsPECIFER = Format specifier string which resolves to nothing at compile time.
630*53ee8cc1Swenshuai.xi  *  \param MS_U16 lENGTH = Number of MS_U16s in the array.
631*53ee8cc1Swenshuai.xi  *  \param MS_U16 *pDATA = Array of lENGTH MS_U16s.
632*53ee8cc1Swenshuai.xi  */
633*53ee8cc1Swenshuai.xi void M_FrHslArray16(const MS_U16 u16Id, const MS_U16 u16GId, const char* u8Fmt, const MS_U16 u16Length, const void* pArray);
634*53ee8cc1Swenshuai.xi 
635*53ee8cc1Swenshuai.xi 
636*53ee8cc1Swenshuai.xi /**  Write a message that is an array of MS_U32s. Filter applied at run time.
637*53ee8cc1Swenshuai.xi  *   Write a message that is an array of MS_U32s. Filter applied at run time.
638*53ee8cc1Swenshuai.xi  *  \param MS_U16 hDR = Message header word.
639*53ee8cc1Swenshuai.xi  *  \param String fORMATsPECIFER = Format specifier string which resolves to nothing at compile time.
640*53ee8cc1Swenshuai.xi  *  \param MS_U16 lENGTH = Number of MS_U32s in the array.
641*53ee8cc1Swenshuai.xi  *  \param MS_U32 *pDATA = Array of lENGTH MS_U32s.
642*53ee8cc1Swenshuai.xi  *  \param MS_U16 lASTwORDeMPTY = Logging indicator for the last 16 bit word - if set to 1 the last 16 bit word is not logged.
643*53ee8cc1Swenshuai.xi  */
644*53ee8cc1Swenshuai.xi void M_FrHslArray32(const MS_U16 u16Id, const MS_U16 u16GId, const char* u8Fmt, const MS_U16 u16Length, const void* pArray, const MS_BOOL bLastWordEmpty);
645*53ee8cc1Swenshuai.xi 
646*53ee8cc1Swenshuai.xi 
647*53ee8cc1Swenshuai.xi /** Write a message that captures an instance of a structure.
648*53ee8cc1Swenshuai.xi  *  \param MS_U16 hDR = Message header word.
649*53ee8cc1Swenshuai.xi  *  \param String fORMATsPECIFER = Format specifier string which resolves to nothing at compile time.
650*53ee8cc1Swenshuai.xi  *  \param MS_U16 lENGTH = Number of MS_U16s in the array.
651*53ee8cc1Swenshuai.xi  *  \param MS_U16 *pDATA = Array of lENGTH MS_U16s.
652*53ee8cc1Swenshuai.xi  */
653*53ee8cc1Swenshuai.xi 
654*53ee8cc1Swenshuai.xi void FrHslTypedefCall(const MS_U16 u16Id, const MS_U16 u16GId, const MS_U16 u16Length, const void* pArray, const MS_BOOL bOddBytePresent);
655*53ee8cc1Swenshuai.xi 
656*53ee8cc1Swenshuai.xi #define M_FrHslTypedef(u16Id, u16GId, u8Fmt, type, pArray)                                                        \
657*53ee8cc1Swenshuai.xi {                                                                                                                 \
658*53ee8cc1Swenshuai.xi    FrHslTypedefCall(u16Id, u16GId, sizeof(type)/sizeof(MS_U16) + sizeof(type)%sizeof(MS_U16), pArray, (MS_BOOL)(sizeof(type)%sizeof(MS_U16)));  \
659*53ee8cc1Swenshuai.xi }
660*53ee8cc1Swenshuai.xi 
661*53ee8cc1Swenshuai.xi 
662*53ee8cc1Swenshuai.xi 
663*53ee8cc1Swenshuai.xi #ifdef  __cplusplus
664*53ee8cc1Swenshuai.xi }
665*53ee8cc1Swenshuai.xi #endif
666*53ee8cc1Swenshuai.xi 
667*53ee8cc1Swenshuai.xi #endif
668*53ee8cc1Swenshuai.xi #endif
669*53ee8cc1Swenshuai.xi /* END OF FILE */
670