line source
/*
+-----------------------------------------------------------------------------
| Project : GSM-F&D (8411)
| Modul : T30
+-----------------------------------------------------------------------------
| Copyright 2002 Texas Instruments Berlin, AG
| All rights reserved.
|
| This file is confidential and a trade secret of Texas
| Instruments Berlin, AG
| The receipt of or possession of this file does not convey
| any rights to reproduce or disclose its contents or to
| manufacture, use, or sell anything it may describe, in
| whole, or in part, without the specific written consent of
| Texas Instruments Berlin, AG.
+-----------------------------------------------------------------------------
| Purpose : Definitions for the Protocol Stack Entity T30
+-----------------------------------------------------------------------------
*/
#ifndef T30_H
#define T30_H
#define SHARED_FAX_DATA_RAM
#define KER_DEBUG_BCS
#undef KER_DEBUG_MSG
#undef SW_FLOW_CTRL
/*
* instance management
*/
#define GET_INSTANCE(p) &t30_data_base[0]
#define T30_INSTANCES 1
/*
* Constants
*/
#define HDLC_FLAG 0x7E
/*
* number of HDLC_FLAGs between HDLC fields
*/
#ifdef _SIMULATION_
#define HDLC_FLAGS 1
#else
#define HDLC_FLAGS 3
#endif
#define HDLC_ADDR 0xFF
/****** Transparent Data Commands T.32 ******/
/* DLE transparency */
#define TDC_DLE 0x10 /* substitute one 0x10 pattern */
#define TDC_SUB 0x1a /* substitute two 0x10 patterns */
/* transmitter commands */
#define TDC_ETX 0x03 /* acknowledge <CAN> */
#define TDC_PRI 0x21 /* request Procedure Interrupt */
#define TDC_MPS 0x2c /* end of page, more to follow */
#define TDC_EOP 0x2e /* end of document and session */
#define TDC_EOM 0x3b /* end of document */
#define TDC_BCR 0x3f /* check Buffer Credit */
/* receiver commands */
#define TDC_SOH 0x41 /* <SOH> in packet data */
#define TDC_ETB 0x57 /* <ETB> in packet data */
#define TDC_OVR 0x4f /* overrun error marker */
#ifdef SW_FLOW_CTRL
#define TDC_DC1 0x11 /* XON */
#endif
#define TDC_DC2 0x12 /* receive buffer status: buffer is empty */
#ifdef SW_FLOW_CTRL
#define TDC_DC3 0x13 /* XOFF */
#endif
#define TDC_CAN 0x18 /* Requests DCE/DTE to stop delivering Phase C data */
#define MSG_SIZE_BITS 2880 /* value taken from former psa_t30.h */
/*
* information for dti library
*/
#define T30_DTI_UP_INTERFACE 0
#define T30_DTI_UP_CHANNEL 0
#define T30_DTI_UP_DEF_INSTANCE 0
#define T30_DTI_UPLINK_QUEUE_SIZE 0
#define READY_UPLI_PAGE 1
#define READY_UPLI_SDU 2
#define BCS_FRM_FILLED 0
#define BCS_FRM_FILLING 1
#define BCS_FRM_FULL 2
#define BCS_FRM_SIZE 300
#define BCS_FRM_SIZE_BITS (BCS_FRM_SIZE << 3)
#define CCD_OK 0
#define CCD_ERR 1
#define CHK_OK 0
#define CHK_FCS_ERR 1
#define CHK_FIN_ERR 2
#define CTL_C0 0xC0
#define CTL_C8 0xC8
#define ERR_BUF_FULL 1
#define ERR_CCD_DEC 2
/*
#define ERR_CCD_ENC 3
*/
#define ERR_FCS 4
#define ERR_FINAL 5
#define ERR_FRAME_NO_FLAG 6
#define ERR_FRAME_TOO_MANY_FRAMES 7
#define FINAL_NO 0
#define FINAL_YES 1
#define FMOD_IDLE 0
#define FMOD_SND 1
#define FMOD_RCV 2
#define FMOD_POLL 3
#define FRAMES_MAX 10
#define FRM_OK 0
#define FRM_ERR_NO_FLAG 1
#define FRM_ERR_TOO_MANY_FRAMES 2
#define REPORT_SIZE 128
#define REPORT_SIZE_BITS (REPORT_SIZE << 3)
#define RTC_NO 0
#define RTC_YES 1
/*
* Bitoffset for encoding/decoding
*/
#define ENCODE_OFFSET 0
#define T30_HEADER_LEN_BYT 2 /* Address byte and control byte */
#define T30_TRAILER_LEN_BYT 2 /* FCS */
#define BIT_STREAM_LEN_BYT ((MAX_BITSTREAM_LEN_T30 + 7) / 8)
/* No. of bytes, rounded to byte boundary */
#define HDLC_BUF_SIZE (2 * sizeof(USHORT) + T30_HEADER_LEN_BYT + BIT_STREAM_LEN_BYT + T30_TRAILER_LEN_BYT)
/* SDU header + T30 Header + HDLC Info + Trailer*/
#define HDLC_BUF_SIZE_LNG ((HDLC_BUF_SIZE + sizeof (ULONG) - 1) / sizeof (ULONG))
/* No. of ULONGs, rounded to long boundary */
/*
* Timer
*/
#define T1 0 /* Timer T1 */
#define T2 1 /* Timer T2 */
#define T4 2 /* Timer T4 */
/*
* Dynamic Configuration Numbers
*/
#define TIMER_SET 1
#define TIMER_RESET 2
#define TIMER_SPEED_UP 3
#define TIMER_SLOW_DOWN 4
#define TIMER_SUPPRESS 5
/*
* State index for the entity processes
*/
#define KER ker.
#define MUX mux.
/*
* States of the entity processes
*
* Process KER
*/
enum
{
T30_NULL,
T30_DCN,
T30_IDLE,
T30_RCV_CFR,
T30_RCV_DAT,
T30_RCV_DATW,
T30_RCV_DCN,
T30_RCV_DCS,
T30_RCV_DIS,
T30_RCV_MCF,
T30_RCV_MSG,
T30_RCV_MSGW,
T30_RCV_PI,
T30_RCV_PST,
T30_RCV_PSTW,
T30_RCV_RDY,
T30_RCV_RDYF,
T30_RCV_RDYW,
T30_RCV_RT,
T30_RCV_RT2,
T30_RCV_T2,
T30_RCV_TCF,
T30_SND_CAP,
T30_SND_CFR,
T30_SND_DAT,
T30_SND_DATF,
T30_SND_DCN,
T30_SND_DCN1,
T30_SND_DCS,
T30_SND_DTC,
T30_SND_MCF,
T30_SND_MSG,
T30_SND_PI,
T30_SND_PRI,
T30_SND_PST,
T30_SND_PSTW,
T30_SND_RDY,
T30_SND_RDYW,
T30_SND_SGN,
T30_SND_TCF,
T30_ACTIVATE,
T30_DEACTIVATE
};
/*
* Process MUX
*/
#define T30_MUX_OFF 0
#define T30_MUX_BCS 1
#define T30_MUX_MSG 2
/*==== TYPES ======================================================*/
/*
* entity global data
*/
typedef struct
{
UBYTE state;
#ifndef NTRACE
char *state_name;
#endif
} T_STATE;
typedef struct
{
UBYTE state;
#ifndef NTRACE
char *state_name;
#endif
UBYTE mode;
} T_MUX;
typedef struct
{
USHORT beg, end, len;
} T_T30_FRAME;
typedef struct
{
T_STATE ker;
T_MUX mux;
UBYTE dti_state; /* state variable for DTI library */
UBYTE threshold;
BOOL rate_modified;
UBYTE repeat;
UBYTE sgn_ind;
UBYTE sgn_req;
UBYTE res;
UBYTE prev;
UBYTE fmod;
UBYTE hdlc_report;
UBYTE dir;
UBYTE data_cnf;
UBYTE preamble_ind;
UBYTE bitorder;
UBYTE stuff_bits;
UBYTE stuff_ones;
BOOL TDC_doli_pending;
BOOL TDC_upli_pending;
BOOL dti_data_ind_final;
USHORT rtc_zero;
USHORT rtc_eol;
USHORT eol;
USHORT trans_rate;
USHORT frames_per_prim;
T_T30_FRAME frm[FRAMES_MAX];
ULONG bcs_frm[(BCS_FRM_SIZE / sizeof (ULONG)) + 1];
ULONG BCI_stream[HDLC_BUF_SIZE_LNG];
ULONG link_id;
T_hdlc_info hdlc_rcv;
T_hdlc_info hdlc_snd;
T_FAD_DATA_REQ *fad_data_req;
T_DTI2_DATA_IND *dti_data_ind;
T_DTI2_DATA_IND *dti_data_ind_empty;
UBYTE *dti_data_req_ptr;
T_desc2 *dti_data_req_desc;
#ifdef _SIMULATION_ /* test_mode */
USHORT test_mode;
#endif
} T_T30_DATA;
/*==== EXPORT =====================================================*/
#define T1_INDEX 0
#define T2_INDEX 1
#define T4_INDEX 2
/*
* instance data base
*/
#ifdef T30_PEI_C
GLOBAL T_T30_DATA *t30_data;
#else
EXTERN T_T30_DATA *t30_data;
#endif
#ifdef SHARED_FAX_DATA_RAM
/*lint -e526 : not defined */
EXTERN UBYTE rlp_data_base[];
#define t30_data_base ((T_T30_DATA*)rlp_data_base)
EXTERN ULONG rlp_data_magic_num;
#define t30_data_magic_num rlp_data_magic_num
#else
#ifdef T30_PEI_C
GLOBAL T_T30_DATA t30_data_base[T30_INSTANCES];
GLOBAL ULONG t30_data_magic_num;
#else
EXTERN T_T30_DATA t30_data_base[];
EXTERN ULONG t30_data_magic_num;
#endif
#endif /* !SHARED_FAX_DATA_RAM */
#define T30_DATA_MAGIC_NUM (('T'<<24) + ('3'<<16) + ('0'<<8)) /* "T30",NUL */
#define ENTITY_DATA t30_data
/*---------------------------------------------------------------------
* Prototypes
*
* T30 KERNEL
*
* KERNEL primitive processing
*/
EXTERN void ker_fad_activate_cnf (T_FAD_ACTIVATE_CNF *fad_activate_cnf );
EXTERN void ker_fad_data_cnf (T_FAD_DATA_CNF *fad_data_cnf );
EXTERN void ker_fad_deactivate_cnf (T_FAD_DEACTIVATE_CNF *fad_deactivate_cnf);
EXTERN void ker_fad_error_ind (T_FAD_ERROR_IND *fad_error_ind );
EXTERN void ker_fad_rcv_tcf_cnf (T_FAD_RCV_TCF_CNF *fad_rcv_tcf_cnf );
EXTERN void ker_fad_ready_ind (T_FAD_READY_IND *fad_ready_ind );
EXTERN void ker_fad_snd_tcf_cnf (T_FAD_SND_TCF_CNF *fad_snd_tcf_cnf );
EXTERN void ker_t30_activate_req (T_T30_ACTIVATE_REQ *t30_activate_req );
EXTERN void ker_t30_cap_req (T_T30_CAP_REQ *t30_cap_req );
EXTERN void ker_t30_config_req (T_T30_CONFIG_REQ *t30_config_req );
EXTERN void ker_t30_deactivate_req (T_T30_DEACTIVATE_REQ *t30_deactivate_req);
EXTERN void ker_t30_modify_req (T_T30_MODIFY_REQ *t30_modify_req );
EXTERN void ker_t30_sgn_req (T_T30_SGN_REQ *t30_sgn_req );
EXTERN void ker_t30_dti_req (T_T30_DTI_REQ *t30_dti_req );
#ifdef OPTION_MULTITHREAD
#define act_on_sgn_req _ENTITY_PREFIXED(act_on_sgn_req)
#define sig_bcs_ker_bdat_ind _ENTITY_PREFIXED(sig_bcs_ker_bdat_ind)
#define sig_bcs_ker_err_ind _ENTITY_PREFIXED(sig_bcs_ker_err_ind )
#define sig_msg_ker_mdat_ind _ENTITY_PREFIXED(sig_msg_ker_mdat_ind)
#endif /* OPTION_MULTITHREAD */
EXTERN void act_on_sgn_req(void);
EXTERN void sig_bcs_ker_bdat_ind(void);
EXTERN void sig_bcs_ker_err_ind (UBYTE cause);
EXTERN void sig_msg_ker_mdat_ind(T_FAD_DATA_IND *fad_data_ind);
#define sig_dti_ker_connection_opened_ind \
_ENTITY_PREFIXED(sig_dti_ker_connection_opened_ind)
#define sig_dti_ker_connection_closed_ind \
_ENTITY_PREFIXED(sig_dti_ker_connection_closed_ind)
#define sig_dti_ker_tx_buffer_full_ind \
_ENTITY_PREFIXED(sig_dti_ker_tx_buffer_full_ind )
#define sig_dti_ker_tx_buffer_ready_ind \
_ENTITY_PREFIXED(sig_dti_ker_tx_buffer_ready_ind )
#define sig_dti_ker_data_received_ind \
_ENTITY_PREFIXED(sig_dti_ker_data_received_ind )
/*
* wrapping functions for dtilib primitives
*/
/*
* these functions are called by pei_dti_callback
*/
EXTERN void sig_dti_ker_connection_opened_ind(void);
EXTERN void sig_dti_ker_connection_closed_ind(void);
EXTERN void sig_dti_ker_tx_buffer_full_ind(void);
EXTERN void sig_dti_ker_tx_buffer_ready_ind(void);
EXTERN void sig_dti_ker_data_received_ind(T_DTI2_DATA_REQ *dti_data_req);
/*
* KERNEL procedures
*/
#ifdef OPTION_MULTITHREAD
#define ker_check_rtc _ENTITY_PREFIXED(ker_check_rtc )
#define ker_check_rtc _ENTITY_PREFIXED(ker_check_rtc )
#define ker_fill_dcs_info _ENTITY_PREFIXED(ker_fill_dcs_info)
#define ker_fill_dis_info _ENTITY_PREFIXED(ker_fill_dis_info)
#define ker_fill_dtc_info _ENTITY_PREFIXED(ker_fill_dtc_info)
#define ker_init _ENTITY_PREFIXED(ker_init )
#define ker_res_sub _ENTITY_PREFIXED(ker_res_sub )
#define ker_send_dcs _ENTITY_PREFIXED(ker_send_dcs )
#define ker_send_dis _ENTITY_PREFIXED(ker_send_dis )
#define ker_send_dtc _ENTITY_PREFIXED(ker_send_dtc )
#define ker_send_err _ENTITY_PREFIXED(ker_send_err )
#define snd_error_ind _ENTITY_PREFIXED(snd_error_ind )
#define snd_t30_sgn_ind _ENTITY_PREFIXED(snd_t30_sgn_ind )
#define snd_t30_sgn_ind _ENTITY_PREFIXED(snd_t30_sgn_ind )
#if defined _SIMULATION_ || defined KER_DEBUG_BCS || defined KER_DEBUG_MSG
#define ker_debug _ENTITY_PREFIXED(ker_debug)
#endif
#define TDCcompress _ENTITY_PREFIXED(TDCcompress)
#define prepare_dti_data_ind _ENTITY_PREFIXED(prepare_dti_data_ind)
#define snd_dti_data_ind _ENTITY_PREFIXED(snd_dti_data_ind)
#define snd_t30_phase_ind _ENTITY_PREFIXED(snd_t30_phase_ind)
#define dti_connect_open _ENTITY_PREFIXED(dti_connect_open)
#define dti_connect_setup _ENTITY_PREFIXED(dti_connect_setup)
#define dti_connect_close _ENTITY_PREFIXED(dti_connect_close)
#define dti_disconnect _ENTITY_PREFIXED(dti_disconnect)
#define snd_t30_dti_cnf _ENTITY_PREFIXED(snd_t30_dti_cnf)
#define snd_dti_ready_ind _ENTITY_PREFIXED(snd_dti_ready_ind)
#endif
EXTERN UBYTE ker_check_rtc (T_FAD_DATA_IND *fad_data_ind);
EXTERN void ker_fill_dcs_info (T_BCS_DCS *bcs_dcs);
EXTERN void ker_fill_dis_info (T_BCS_DIS *bcs_dis);
EXTERN void ker_fill_dtc_info (T_BCS_DTC *bcs_dtc);
EXTERN void ker_init (T_T30_DATA *t30_data);
EXTERN void ker_send_dcs (T_T30_CAP_REQ *t30_cap_req);
EXTERN void ker_send_dis (void);
EXTERN void ker_send_dtc (T_T30_CAP_REQ *t30_cap_req);
EXTERN void ker_send_err (USHORT cause);
EXTERN void snd_complete_ind (UBYTE cmpl);
EXTERN void snd_error_ind (USHORT cause);
EXTERN void snd_t30_sgn_ind (UBYTE sgn);
#if defined _SIMULATION_ || defined KER_DEBUG_BCS || defined KER_DEBUG_MSG
EXTERN void ker_debug(CHAR *header, UBYTE *buf, USHORT len);
#endif
EXTERN UBYTE TDCcompress(T_desc2 *desc, T_sdu *sdu);
EXTERN void prepare_dti_data_ind(T_FAD_DATA_IND *fad_data_ind);
EXTERN void snd_dti_data_ind(T_DTI2_DATA_IND **dti_data_ind);
EXTERN void snd_t30_phase_ind(UBYTE phase);
EXTERN void dti_connect_setup(T_T30_DTI_REQ *t30_dti_req);
EXTERN void dti_connect_open();
EXTERN void dti_connect_close();
EXTERN void dti_disconnect();
EXTERN void snd_t30_dti_cnf(UBYTE dti_conn);
EXTERN void snd_dti_ready_ind();
/*---------------------------------------------------------------------
* T30 BCS FORMATTER
*
* BCS primitive processing
*/
/*
* BCS signal processing
*/
#ifdef OPTION_MULTITHREAD
#define sig_ker_bcs_bdat_req _ENTITY_PREFIXED(sig_ker_bcs_bdat_req)
#define sig_mux_bcs_bcs_ind _ENTITY_PREFIXED(sig_mux_bcs_bcs_ind )
#endif
EXTERN void sig_ker_bcs_bdat_req (UBYTE final);
EXTERN void sig_mux_bcs_bcs_ind (T_FAD_DATA_IND *fad_data_ind);
/*
* BCS procedures
*/
#ifdef OPTION_MULTITHREAD
#define bcs_bcs_decode _ENTITY_PREFIXED(bcs_bcs_decode )
#define bcs_bcs_encode _ENTITY_PREFIXED(bcs_bcs_encode )
#define bcs_fill_bcs_frm _ENTITY_PREFIXED(bcs_fill_bcs_frm)
#define bcs_init _ENTITY_PREFIXED(bcs_init )
#endif
EXTERN void bcs_bcs_decode (void);
EXTERN void bcs_bcs_encode (UBYTE ctl, UBYTE final);
EXTERN UBYTE bcs_fill_bcs_frm (T_FAD_DATA_IND *fad_data_ind);
EXTERN void bcs_init (T_T30_DATA *);
/*---------------------------------------------------------------------
* T30 MSG FORMATTER
*
* MSG primitive processing
*/
/*
* MSG signal processing
*/
#ifdef OPTION_MULTITHREAD
#define sig_ker_msg_mdat_req _ENTITY_PREFIXED(sig_ker_msg_mdat_req)
#define sig_mux_msg_msg_ind _ENTITY_PREFIXED(sig_mux_msg_msg_ind)
#endif
EXTERN void sig_ker_msg_mdat_req (T_FAD_DATA_REQ *fad_data_req);
EXTERN void sig_mux_msg_msg_ind (T_FAD_DATA_IND *fad_data_ind);
/*---------------------------------------------------------------------
* T30 MULTIPLEXER
*
* MUX primitive processing
*/
EXTERN void mux_fad_data_ind (T_FAD_DATA_IND *fad_data_ind);
EXTERN void mux_fad_mux_ind (T_FAD_MUX_IND *fad_mux_ind);
/*
* MUX signal processing
*/
#ifdef OPTION_MULTITHREAD
#define sig_bcs_mux_bcs_req _ENTITY_PREFIXED(sig_bcs_mux_bcs_req)
#define sig_ker_mux_mux_req _ENTITY_PREFIXED(sig_ker_mux_mux_req)
#define sig_msg_mux_msg_req _ENTITY_PREFIXED(sig_msg_mux_msg_req)
#endif
EXTERN void sig_bcs_mux_bcs_req (T_FAD_DATA_REQ *fad_data_req);
EXTERN void sig_ker_mux_mux_req (void);
EXTERN void sig_msg_mux_msg_req (T_FAD_DATA_REQ *fad_data_req);
#define MEMCOPSIZ(d,s) memcpy(d, s, sizeof(s))
/*---------------------------------------------------------------------
* timer
*/
#define TIMERSTART(i,v) vsi_t_start (VSI_CALLER i,v);
#define TIMERSTATUS(i,v) vsi_t_status (VSI_CALLER i,v);
#define TIMERSTOP(i) {vsi_t_stop (VSI_CALLER i); \
t30_data->data_cnf = FALSE;};
/*
* Communication handles
*/
#ifdef OPTION_MULTITHREAD
#define hCommFAD _ENTITY_PREFIXED(hCommFAD)
#define hCommMMI _ENTITY_PREFIXED(hCommMMI)
#endif
EXTERN DTI_HANDLE t30_hDTI; /* DTI connection handle for DTI library */
#ifdef T30_PEI_C
GLOBAL T_HANDLE t30_handle;
GLOBAL T_HANDLE hCommFAD = VSI_ERROR; /* FAD Communication */
GLOBAL T_HANDLE hCommMMI = VSI_ERROR; /* MMI Communication */
#else
EXTERN T_HANDLE t30_handle;
EXTERN T_HANDLE hCommFAD;
EXTERN T_HANDLE hCommMMI;
#endif
GLOBAL void t30_timeout (USHORT index);
/*
* entity common buffer for the decoded air interface message
*/
#ifdef OPTION_MULTITHREAD
#define _decodedMsg _ENTITY_PREFIXED(_decodedMsg)
#endif
#ifdef T30_PEI_C
GLOBAL const UBYTE BIT_MIRROR[] =
{
0x00,0x80,0x40,0xc0,0x20,0xa0,0x60,0xe0,
0x10,0x90,0x50,0xd0,0x30,0xb0,0x70,0xf0,
0x08,0x88,0x48,0xc8,0x28,0xa8,0x68,0xe8,
0x18,0x98,0x58,0xd8,0x38,0xb8,0x78,0xf8,
0x04,0x84,0x44,0xc4,0x24,0xa4,0x64,0xe4,
0x14,0x94,0x54,0xd4,0x34,0xb4,0x74,0xf4,
0x0c,0x8c,0x4c,0xcc,0x2c,0xac,0x6c,0xec,
0x1c,0x9c,0x5c,0xdc,0x3c,0xbc,0x7c,0xfc,
0x02,0x82,0x42,0xc2,0x22,0xa2,0x62,0xe2,
0x12,0x92,0x52,0xd2,0x32,0xb2,0x72,0xf2,
0x0a,0x8a,0x4a,0xca,0x2a,0xaa,0x6a,0xea,
0x1a,0x9a,0x5a,0xda,0x3a,0xba,0x7a,0xfa,
0x06,0x86,0x46,0xc6,0x26,0xa6,0x66,0xe6,
0x16,0x96,0x56,0xd6,0x36,0xb6,0x76,0xf6,
0x0e,0x8e,0x4e,0xce,0x2e,0xae,0x6e,0xee,
0x1e,0x9e,0x5e,0xde,0x3e,0xbe,0x7e,0xfe,
0x01,0x81,0x41,0xc1,0x21,0xa1,0x61,0xe1,
0x11,0x91,0x51,0xd1,0x31,0xb1,0x71,0xf1,
0x09,0x89,0x49,0xc9,0x29,0xa9,0x69,0xe9,
0x19,0x99,0x59,0xd9,0x39,0xb9,0x79,0xf9,
0x05,0x85,0x45,0xc5,0x25,0xa5,0x65,0xe5,
0x15,0x95,0x55,0xd5,0x35,0xb5,0x75,0xf5,
0x0d,0x8d,0x4d,0xcd,0x2d,0xad,0x6d,0xed,
0x1d,0x9d,0x5d,0xdd,0x3d,0xbd,0x7d,0xfd,
0x03,0x83,0x43,0xc3,0x23,0xa3,0x63,0xe3,
0x13,0x93,0x53,0xd3,0x33,0xb3,0x73,0xf3,
0x0b,0x8b,0x4b,0xcb,0x2b,0xab,0x6b,0xeb,
0x1b,0x9b,0x5b,0xdb,0x3b,0xbb,0x7b,0xfb,
0x07,0x87,0x47,0xc7,0x27,0xa7,0x67,0xe7,
0x17,0x97,0x57,0xd7,0x37,0xb7,0x77,0xf7,
0x0f,0x8f,0x4f,0xcf,0x2f,0xaf,0x6f,0xef,
0x1f,0x9f,0x5f,0xdf,0x3f,0xbf,0x7f,0xff
};
GLOBAL UBYTE _decodedMsg [MAX_MSTRUCT_LEN_T30];
#else
EXTERN const UBYTE BIT_MIRROR[];
EXTERN UBYTE _decodedMsg[];
#endif
#endif /* T30_H */