Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* |
2 | * isdnhdlc.h -- General purpose ISDN HDLC decoder. | |
3 | * | |
4 | * Implementation of a HDLC decoder/encoder in software. | |
5 | * Neccessary because some ISDN devices don't have HDLC | |
6 | * controllers. Also included: a bit reversal table. | |
7 | * | |
96de0e25 | 8 | *Copyright (C) 2002 Wolfgang Mües <wolfgang@iksw-muees.de> |
1da177e4 LT |
9 | * 2001 Frode Isaksen <fisaksen@bewan.com> |
10 | * 2001 Kai Germaschewski <kai.germaschewski@gmx.de> | |
11 | * | |
12 | * This program is free software; you can redistribute it and/or modify | |
13 | * it under the terms of the GNU General Public License as published by | |
14 | * the Free Software Foundation; either version 2 of the License, or | |
15 | * (at your option) any later version. | |
16 | * | |
17 | * This program is distributed in the hope that it will be useful, | |
18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 | * GNU General Public License for more details. | |
21 | * | |
22 | * You should have received a copy of the GNU General Public License | |
23 | * along with this program; if not, write to the Free Software | |
24 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
25 | */ | |
26 | ||
27 | #ifndef __ISDNHDLC_H__ | |
28 | #define __ISDNHDLC_H__ | |
29 | ||
30 | struct isdnhdlc_vars { | |
31 | int bit_shift; | |
32 | int hdlc_bits1; | |
33 | int data_bits; | |
34 | int ffbit_shift; // encoding only | |
35 | int state; | |
36 | int dstpos; | |
37 | ||
38 | unsigned short crc; | |
39 | ||
40 | unsigned char cbin; | |
41 | unsigned char shift_reg; | |
42 | unsigned char ffvalue; | |
43 | ||
940cc2df MK |
44 | unsigned int data_received:1; // set if transferring data |
45 | unsigned int dchannel:1; // set if D channel (send idle instead of flags) | |
46 | unsigned int do_adapt56:1; // set if 56K adaptation | |
47 | unsigned int do_closing:1; // set if in closing phase (need to send CRC + flag | |
1da177e4 LT |
48 | }; |
49 | ||
50 | ||
51 | /* | |
52 | The return value from isdnhdlc_decode is | |
53 | the frame length, 0 if no complete frame was decoded, | |
54 | or a negative error number | |
55 | */ | |
56 | #define HDLC_FRAMING_ERROR 1 | |
57 | #define HDLC_CRC_ERROR 2 | |
58 | #define HDLC_LENGTH_ERROR 3 | |
59 | ||
1da177e4 LT |
60 | extern void isdnhdlc_rcv_init (struct isdnhdlc_vars *hdlc, int do_adapt56); |
61 | ||
62 | extern int isdnhdlc_decode (struct isdnhdlc_vars *hdlc, const unsigned char *src, int slen,int *count, | |
63 | unsigned char *dst, int dsize); | |
64 | ||
65 | extern void isdnhdlc_out_init (struct isdnhdlc_vars *hdlc,int is_d_channel,int do_adapt56); | |
66 | ||
67 | extern int isdnhdlc_encode (struct isdnhdlc_vars *hdlc,const unsigned char *src,unsigned short slen,int *count, | |
68 | unsigned char *dst,int dsize); | |
69 | ||
70 | #endif /* __ISDNHDLC_H__ */ |