gri_lfsr_32k.h
Go to the documentation of this file.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
00036 class gri_lfsr_32k {
00037 gri_lfsr_15_1_0 d_lfsr;
00038 unsigned int d_count;
00039
00040 public:
00041 gri_lfsr_32k () { reset (); }
00042
00043 void reset (){
00044 d_lfsr.reset ();
00045 d_count = 0;
00046 }
00047
00048 int next_bit (){
00049 if (d_count == 32767){
00050 d_count = 0;
00051 return 0;
00052 }
00053 d_count++;
00054 return d_lfsr.next_bit ();
00055 }
00056
00057 int next_byte (){
00058 int v = 0;
00059 for (int i = 0; i < 8; i++){
00060 v >>= 1;
00061 if (next_bit ())
00062 v |= 0x80;
00063 }
00064 return v;
00065 }
00066
00067 int next_short (){
00068 int v = 0;
00069 for (int i = 0; i < 16; i++){
00070 v >>= 1;
00071 if (next_bit ())
00072 v |= 0x8000;
00073 }
00074 return v;
00075 }
00076
00077 };
00078
00079 #endif