linux/drivers/isdn/hisax/isdnhdlc.h
<<
>>
Prefs
   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 *
   8 *Copyright (C) 2002    Wolfgang Mües      <wolfgang@iksw-muees.de>
   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
  30struct 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
  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
  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
  60extern void isdnhdlc_rcv_init (struct isdnhdlc_vars *hdlc, int do_adapt56);
  61
  62extern int isdnhdlc_decode (struct isdnhdlc_vars *hdlc, const unsigned char *src, int slen,int *count,
  63                            unsigned char *dst, int dsize);
  64
  65extern void isdnhdlc_out_init (struct isdnhdlc_vars *hdlc,int is_d_channel,int do_adapt56);
  66
  67extern 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__ */
  71
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.