8 #include <gnuradio/expj.h> 9 #include <sys/resource.h> 10 #include <sys/syscall.h> 11 #include <volk/volk.h> 19 #define RESET "\033[0m" 20 #define RED "\033[31m" 37 inline long mod(
long a,
long b)
41 {
return fmod(fmod(a,b)+b,b);}
51 inline std::vector<bool>
int2bool(uint integer,uint8_t n_bits){
52 std::vector<bool> vec(n_bits,0);
54 for(
int i=0 ;i<n_bits;i++) {
55 vec[--j]=((integer>>i)& 1);
67 uint32_t integer = std::accumulate(b.begin(), b.end(), 0, [](
int x,
int y) {
return (x << 1) + y; });
82 inline void build_upchirp(gr_complex* chirp, uint32_t
id, uint8_t sf, uint8_t os_factor = 1){
83 double N = (1 << sf) ;
84 int n_fold = N* os_factor -
id*os_factor;
85 for(uint n = 0; n < N* os_factor; n++){
87 chirp[n] = gr_complex(1.0,0.0)*gr_expj(2.0*M_PI *(n*n/(2*N)/pow(os_factor,2)+(
id/N-0.5)*n/os_factor));
89 chirp[n] = gr_complex(1.0,0.0)*gr_expj(2.0*M_PI *(n*n/(2*N)/pow(os_factor,2)+(
id/N-1.5)*n/os_factor));
104 inline void build_ref_chirps(gr_complex* upchirp, gr_complex* downchirp, uint8_t sf, uint8_t os_factor = 1){
105 double N = (1 << sf);
107 volk_32fc_conjugate_32fc(&downchirp[0], &upchirp[0], N*os_factor);
117 const char* charmap =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
118 const size_t charmapLength = strlen(charmap);
119 auto generator = [&](){
return charmap[rand()%charmapLength]; };
121 result.reserve(Nbytes);
122 std::generate_n(std::back_inserter(result), Nbytes, generator);
Symbol_type
Definition: utilities.h:25
Definition: utilities.h:32
Definition: utilities.h:28
Definition: utilities.h:26
std::string random_string(int Nbytes)
Definition: utilities.h:116
double LLR
Log-Likelihood Ratio type.
Definition: utilities.h:22
uint32_t bool2int(std::vector< bool > b)
Convert a MSB first vector of bool to a integer.
Definition: utilities.h:66
Definition: utilities.h:30
double double_mod(double a, long b)
Definition: utilities.h:40
long mod(long a, long b)
return the modulus ab between 0 and (b-1)
Definition: utilities.h:37
Definition: utilities.h:29
void build_ref_chirps(gr_complex *upchirp, gr_complex *downchirp, uint8_t sf, uint8_t os_factor=1)
Return the reference chirps using s_f=bw.
Definition: utilities.h:104
Definition: utilities.h:31
std::vector< bool > int2bool(uint integer, uint8_t n_bits)
Convert an integer into a MSB first vector of bool.
Definition: utilities.h:51
Definition: utilities.h:27
void build_upchirp(gr_complex *chirp, uint32_t id, uint8_t sf, uint8_t os_factor=1)
Return an modulated upchirp using s_f=bw.
Definition: utilities.h:82