conv.h
上传用户:hepax88
上传日期:2007-01-03
资源大小:1101k
文件大小:2k
源码类别:

TCP/IP协议栈

开发平台:

Visual C++

  1. unsigned long decode(unsigned char *data,signed char *symbols,
  2.  unsigned int nbits,int mettab[2][3],int delta,unsigned long maxcycles);
  3. int encode(unsigned char *symbols,unsigned char *data,unsigned int nbytes);
  4. void expsym(signed char *,unsigned char *,unsigned int);
  5. double gen_met(int mettab[2][3],double ber,double nc);
  6. extern unsigned char Partab[];
  7. extern unsigned char Bitcnt[]; 
  8. extern unsigned char Revtab[];
  9. /* PN symbol scrambler definitions
  10.  * The 23-degree polynomial is the CCITT standard for V.29, V.32 and V.33
  11.  */
  12. #define PN_START 1
  13. #define PN_SCRAMBLE(X) Partab[((X) & 0x420000) >> 17]
  14. /*#define PN_SCRAMBLE(X) Partab[((X) & 0x60) >> 5] */
  15. #define ILEAVE 64
  16. /* Convolutional coding polynomials. All are rate 1/2, K=32 */
  17. #define LL 1
  18. #ifdef NASA_STANDARD
  19. /* "NASA standard" code by Massey & Costello
  20.  * Nonsystematic, quick look-in, dmin=11, dfree=23
  21.  * used on Pioneer 10-12, Helios A,B
  22.  */
  23. #define POLY1 0xbbef6bb7
  24. #define POLY2 0xbbef6bb5
  25. #endif
  26. #ifdef MJ
  27. /* Massey-Johannesson code
  28.  * Nonsystematic, quick look-in, dmin=13, dfree>=23
  29.  * Purported to be more computationally efficient than Massey-Costello
  30.  */
  31. #define POLY1 0xb840a20f
  32. #define POLY2 0xb840a20d
  33. #endif
  34. #ifdef LL
  35. /* Layland-Lushbaugh code
  36.  * Nonsystematic, non-quick look-in, dmin=?, dfree=?
  37.  */
  38. #define POLY1 0xf2d05351
  39. #define POLY2 0xe4613c47
  40. #endif
  41. #define ENCODE(sym,encstate){
  42. unsigned long _tmp;
  43. _tmp = (encstate) & POLY1;
  44. _tmp ^= _tmp >> 16;
  45. (sym) = Partab[(_tmp ^ (_tmp >> 8)) & 0xff];
  46. _tmp = (encstate) & POLY2;
  47. _tmp ^= _tmp >> 16;
  48. (sym) |= Partab[(_tmp ^ (_tmp >> 8)) & 0xff] << 1;
  49. }