forked from T38Modem/t38modem
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhdlc.h
91 lines (82 loc) · 2.19 KB
/
hdlc.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*
* hdlc.h
*
* T38FAX Pseudo Modem
*
* Copyright (c) 2003-2008 Vyacheslav Frolov
*
* Open H323 Project
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Open H323 Library.
*
* The Initial Developer of the Original Code is Vyacheslav Frolov
*
* Contributor(s): Equivalence Pty ltd
*
* $Log: hdlc.h,v $
* Revision 1.2 2008-09-10 11:15:00 frolov
* Ported to OPAL SVN trunk
*
* Revision 1.2 2008/09/10 11:15:00 frolov
* Ported to OPAL SVN trunk
*
* Revision 1.1 2003/12/04 13:38:39 vfrolov
* Initial revision
*
*/
#ifndef _HDLC_H
#define _HDLC_H
#include "fcs.h"
///////////////////////////////////////////////////////////////
class HDLC
{
public:
HDLC();
void PutRawData(DataStream *_inData);
void PutHdlcData(DataStream *_inData);
void GetRawStart(PINDEX flags = 0);
void GetHdlcStart(PBoolean sync);
int GetData(void *pBuf, PINDEX count);
PBoolean isFcsOK();
int getLastChar() { return lastChar; }
PINDEX getRawCount() { return rawCount; }
void resetRawCount() { rawCount = 0; }
private:
void pack(const void *pBuf, PINDEX count, PBoolean flag = FALSE);
PBoolean sync(BYTE b);
PBoolean skipFlag(BYTE b);
PBoolean unpack(BYTE b);
int GetInData(void *pBuf, PINDEX count);
int GetRawData(void *pBuf, PINDEX count);
int GetHdlcData(void *pBuf, PINDEX count);
int inDataType;
int outDataType;
DataStream *inData;
DataStream outData;
FCS fcs;
int lastChar;
PINDEX rawCount;
BYTE rawByte;
int rawByteLen;
int rawOnes;
DWORD hdlcChunk;
int hdlcChunkLen;
enum {
stEof,
stSync,
stSkipFlags,
stData,
} hdlcState;
};
///////////////////////////////////////////////////////////////
#endif // _HDLC_H