mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.8 KiB
82 lines
1.8 KiB
#ifndef _CODER_HPP
|
|
#define _CODER_HPP
|
|
|
|
#define ObjectID_ ASN1objectidentifier_s
|
|
|
|
typedef struct
|
|
{
|
|
ASN1encoding_t pEncInfo;
|
|
ASN1decoding_t pDecInfo;
|
|
}ASN1_CODER_INFO;
|
|
|
|
typedef struct
|
|
{
|
|
ULONG length;
|
|
PBYTE value;
|
|
}ASN1_BUF;
|
|
|
|
#include "t126.h"
|
|
|
|
extern "C" {
|
|
int T126_InitModule(void);
|
|
int T126_TermModule(void);
|
|
int T126_InitCoder(ASN1_CODER_INFO *pCoder);
|
|
int T126_TermCoder(ASN1_CODER_INFO *pCoder);
|
|
int T126_Encode(ASN1_CODER_INFO *pCoder, void *pStruct, int nPDU, ASN1_BUF *pBuf);
|
|
int T126_Decode(ASN1_CODER_INFO *pCoder, void **ppStruct, int nPDU, ASN1_BUF *pBuf);
|
|
}
|
|
|
|
// DEBUG OPTIONS
|
|
#define CODER_DEBUG 0x00000001
|
|
#define CODER_SUPER_DEBUG 0x00000002
|
|
|
|
// Coder Error Messages
|
|
|
|
#define CODER_NOERROR 0
|
|
#define CODER_ERROR 1
|
|
|
|
// Protocol version information
|
|
#define ITU_T 0
|
|
#define RECOMMENDATION 0
|
|
#define SERIES 20 // H225.0
|
|
#define RECOMM_NUMBER 126
|
|
#define VERSION 0
|
|
#define ADDITIONAL 1
|
|
|
|
|
|
class Coder{
|
|
|
|
private:
|
|
ASN1_CODER_INFO p_Coder;
|
|
CRITICAL_SECTION m_critSec;
|
|
|
|
public:
|
|
struct ObjectID_ m_protocolIdentifier1,m_protocolIdentifier2,m_protocolIdentifier3,
|
|
m_protocolIdentifier4,m_protocolIdentifier5,m_protocolIdentifier6;
|
|
|
|
public:
|
|
Coder();
|
|
~Coder();
|
|
|
|
int InitCoder();
|
|
// Creates an OssBuf
|
|
int Encode(SIPDU *pInputData, ASN1_BUF *pOutputOssBuf);
|
|
// Create memory to hold decoded OssBuf
|
|
// For H323 this is a rasStruct
|
|
int Decode(ASN1_BUF *pInputOssBuf, SIPDU **pOutputData);
|
|
// Used to free buffer created by decode
|
|
int Free(SIPDU *pData);
|
|
// Used to free buffer created by encode
|
|
void Free(ASN1_BUF Asn1Buf);
|
|
// Returns TRUE if protocols match, FALSE - otherwise
|
|
|
|
__inline int freePDU(ASN1_CODER_INFO *pCoder, int nPDU, void *pDecoded,
|
|
ASN1module_t pModule)
|
|
{
|
|
ASN1_FreeDecoded(pCoder->pDecInfo, pDecoded, nPDU);
|
|
return ASN1_SUCCESS;
|
|
}
|
|
|
|
};
|
|
|
|
#endif
|