#ifndef _q765_5E_H_
#define _q765_5E_H_
#include "define.h"

#define AP_ACTION				0x01
#define AP_BNCID				0x02
#define AP_IWFADDR				0x03
#define AP_CODECLIST			0x04
#define AP_SINGLECODEC			0x05
#define AP_BATCR				0x06
#define AP_BNCCHR				0x07
#define AP_BCINFO				0x08
#define AP_BCTUNNEL				0x09
#define AP_BCUI					0x0a
#define AP_SIGNAL				0x0b
#define AP_BRC					0x0c
#define AP_BRI					0x0d
#define AP_SIGNALTYPE			0x0e
#define AP_DURATION				0x0f

/************************************************/
/***** Encapsulated application information *****/
/************************************************/
typedef struct ActionInd_struct {
	u8			pres;
	u8			comp_info;
	u8			val;
} ActionInd_struct;

typedef struct BncId_struct {
	u8			pres;
	u8			comp_info;
	u8			len;
	u8			val[4];
} BncId_struct;

typedef struct IwfAddr_struct {
	u8			pres;
	//...
} IwfAddr_struct;

typedef struct BncChr_struct {
	u8			pres;
	u8			comp_info;
	u8			val;
} BncChr_struct;

typedef struct BCTP_struct {
	// BTCP (Q.1990) //
	u8					:1;
	u8					bvei:1;				//BCTP Version Error Indicator
	u8					:1;
	u8					btcp_version:5;		//BCTP Version Indicator
	u8					:1;
	u8					tpei:1;				//Tunnelled Protocol Error Indicator
	u8					tunnel_protocol:6;	//Tunnelled Protocol Indicator
	// IPBCP (Q.1970) //
	u8					ipbcp_len;
	u8					ipbcp_content[200];
} BCTP_struct;

typedef struct BcInfo_struct {
	u8				pres;
	u8				comp_info;
	BCTP_struct		bctp;
} BcInfo_struct;

typedef struct BcTunnel_struct {
	u8			pres;
	u8			comp_info;
	u8			val;
} BcTunnel_struct;

typedef struct SignalType_struct {
	u8			pres;
	u8			comp_info;
	u8			val;
} SignalType_struct;

typedef struct Duration_struct {
	u8			pres;
	u8			comp_info;
	u16			val;
} Duration_struct;

typedef struct ApmUser_struct {
	u8						:6;
	u8						sni:1;			//Send notification indicator
	u8						rci:1;			//Release call indicator
	ActionInd_struct		action;
	BncId_struct			bnc_id;
	BncChr_struct			bnc_chr;
	BcInfo_struct			bc_info;
	BcTunnel_struct			bc_tunnel;
	SignalType_struct		signal_type;
	Duration_struct			duration;
} ApmUser_struct;

#endif

