st5481_hdlc.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:1k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * Driver for ST5481 USB ISDN modem
  3.  *
  4.  * Author       Frode Isaksen
  5.  * Copyright    2001 by Frode Isaksen      <fisaksen@bewan.com>
  6.  *              2001 by Kai Germaschewski  <kai.germaschewski@gmx.de>
  7.  * 
  8.  * This software may be used and distributed according to the terms
  9.  * of the GNU General Public License, incorporated herein by reference.
  10.  *
  11.  */
  12. #ifndef __ST5481_HDLC_H__
  13. #define __ST5481_HDLC_H__
  14. struct hdlc_vars {
  15.    int bit_shift; 
  16. int hdlc_bits1;
  17. int data_bits;
  18. int ffbit_shift; // encoding only
  19. int state;
  20. int dstpos;
  21. int data_received:1; // set if transferring data
  22. int dchannel:1; // set if D channel (send idle instead of flags)
  23. int do_adapt56:1; // set if 56K adaptation
  24.         int do_closing:1; // set if in closing phase (need to send CRC + flag
  25. unsigned short crc;
  26. unsigned char cbin; 
  27. unsigned char shift_reg;
  28. unsigned char ffvalue;
  29. };
  30. /*
  31.   The return value from hdlc_decode is
  32.   the frame length, 0 if no complete frame was decoded,
  33.   or a negative error number
  34. */
  35. #define HDLC_FRAMING_ERROR     1
  36. #define HDLC_CRC_ERROR         2
  37. #define HDLC_LENGTH_ERROR      3
  38. void 
  39. hdlc_rcv_init(struct hdlc_vars *hdlc, int do_adapt56);
  40. int
  41. hdlc_decode(struct hdlc_vars *hdlc, const unsigned char *src, int slen,int *count, 
  42.     unsigned char *dst, int dsize);
  43. void 
  44. hdlc_out_init(struct hdlc_vars *hdlc,int is_d_channel,int do_adapt56);
  45. int 
  46. hdlc_encode(struct hdlc_vars *hdlc,const unsigned char *src,unsigned short slen,int *count,
  47.     unsigned char *dst,int dsize);
  48. #endif