00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef INCLUDED_GRI_LFSR_32k_H
00024 #define INCLUDED_GRI_LFSR_32k_H
00025
00026 #include <gri_lfsr_15_1_0.h>
00027
00035 class gri_lfsr_32k {
00036 gri_lfsr_15_1_0 d_lfsr;
00037 unsigned int d_count;
00038
00039 public:
00040 gri_lfsr_32k () { reset (); }
00041
00042 void reset (){
00043 d_lfsr.reset ();
00044 d_count = 0;
00045 }
00046
00047 int next_bit (){
00048 if (d_count == 32767){
00049 d_count = 0;
00050 return 0;
00051 }
00052 d_count++;
00053 return d_lfsr.next_bit ();
00054 }
00055
00056 int next_byte (){
00057 int v = 0;
00058 for (int i = 0; i < 8; i++){
00059 v >>= 1;
00060 if (next_bit ())
00061 v |= 0x80;
00062 }
00063 return v;
00064 }
00065
00066 int next_short (){
00067 int v = 0;
00068 for (int i = 0; i < 16; i++){
00069 v >>= 1;
00070 if (next_bit ())
00071 v |= 0x8000;
00072 }
00073 return v;
00074 }
00075
00076 };
00077
00078 #endif