int main() { // allocate memory for arrays unsigned char header[8]; // data header unsigned char payload[64]; // data payload float complex y[1340]; // frame samples // create frame generator framegen64 fg = framegen64_create(); framegen64_print(fg); // create frame synchronizer using default properties framesync64 fs = framesync64_create(mycallback, NULL); framesync64_print(fs); // initialize header, payload unsigned int i; for (i=0; i<8; i++) header[i] = i; for (i=0; i<64; i++) payload[i] = rand() & 0xff; // EXECUTE generator and assemble the frame framegen64_execute(fg, header, payload, y); // EXECUTE synchronizer and receive the entire frame at once framesync64_execute(fs, y, 1340); // DESTROY objects framegen64_destroy(fg); framesync64_destroy(fs); printf("done.\n"); return 0; }
// Helper function to keep code base small void benchmark_framesync64( struct rusage *_start, struct rusage *_finish, unsigned long int *_num_iterations) { *_num_iterations /= 128; unsigned long int i; framegen64 fg = framegen64_create(); framegen64_print(fg); // frame data unsigned char header[8] = {0, 1, 2, 3, 4, 5, 6, 7}; unsigned char payload[64]; // initialize payload for (i=0; i<64; i++) payload[i] = rand() & 0xff; framedata fd = {0, 0, 0}; // create framesync64 object framesync64 fs = framesync64_create(callback,(void*)&fd); framesync64_print(fs); // generate the frame //unsigned int frame_len = framegen64_getframelen(fg); unsigned int frame_len = LIQUID_FRAME64_LEN; float complex frame[frame_len]; framegen64_execute(fg, header, payload, frame); // add some noise for (i=0; i<frame_len; i++) frame[i] += 0.01f*(randnf() + _Complex_I*randnf()) * M_SQRT1_2; // // start trials // getrusage(RUSAGE_SELF, _start); for (i=0; i<(*_num_iterations); i++) { framesync64_execute(fs, frame, frame_len); } getrusage(RUSAGE_SELF, _finish); fd.num_frames_tx = *_num_iterations; printf(" frames detected/valid/transmitted : %6u / %6u / %6u\n", fd.num_frames_detected, fd.num_frames_valid, fd.num_frames_tx); framegen64_destroy(fg); framesync64_destroy(fs); }