From 81bb26dc1518c5afc82d9524e2ed4396255417bb Mon Sep 17 00:00:00 2001 From: Ed Gonzalez Date: Wed, 3 Jun 2015 12:59:32 -0500 Subject: [PATCH] Encapsulate encode/decode test into function. --- DSP_API/SmartSDR_Interface/sched_waveform.c | 41 +++---------------- DSP_API/ThumbDV/gmsk_modem.c | 44 +++++++++++++++++++++ DSP_API/ThumbDV/gmsk_modem.h | 3 ++ DSP_API/ThumbDV/thumbDV.c | 4 +- 4 files changed, 54 insertions(+), 38 deletions(-) diff --git a/DSP_API/SmartSDR_Interface/sched_waveform.c b/DSP_API/SmartSDR_Interface/sched_waveform.c index c11c4c6..c01dfec 100644 --- a/DSP_API/SmartSDR_Interface/sched_waveform.c +++ b/DSP_API/SmartSDR_Interface/sched_waveform.c @@ -592,6 +592,10 @@ static void* _sched_waveform_thread(void* param) void sched_waveform_Init(void) { + + _gmsk_demod = gmsk_createDemodulator(); + _gmsk_mod = gmsk_createModulator(); + pthread_rwlock_init(&_list_lock, NULL); pthread_rwlock_wrlock(&_list_lock); @@ -609,43 +613,8 @@ void sched_waveform_Init(void) fifo_param.sched_priority = 30; pthread_setschedparam(_waveform_thread, SCHED_FIFO, &fifo_param); - _gmsk_demod = gmsk_createDemodulator(); - _gmsk_mod = gmsk_createModulator(); + //gmsk_testBitsAndEncodeDecode(); - float test_buffer[160*2]; - unsigned char test_coded[8] = {0xAA,0xAA,0xFF,0x00,0xFF,0x00,0xFF,0x00}; - unsigned char output_bytes[8] = {0}; - uint32 i = 0; - -// -// BOOL bits[32] = {0}; -// gmsk_bytesToBits(test_coded, bits, 32); -// gmsk_byteToBits(0xF0, bits, 8); -// output("0xF0 = "); -// -// for ( i = 0 ; i < 8; i++ ){ -// output("%d ", bits[i]); -// } -// output("\n"); -// unsigned char test[4] = {0xAA, 0xAA, 0xAA, 0xAA}; -// gmsk_bytesToBits(test, bits, 32); -// -// for ( i = 0 ; i < 32/8 ; i++ ) { -// gmsk_bitsToByte(&bits[i*8], &output_bytes[i]); -// output("Byte = 0x%02X\n", output_bytes[i]); -// } -// - gmsk_encodeBuffer(_gmsk_mod, test_coded, 32*2, test_buffer, 160*2); -// FILE * dat = fopen("gmsk.dat", "w"); -// for ( i = 0 ; i < 160*2 ; i++ ) { -// fprintf(dat, "%d %.12f\n", i, test_buffer[i]); -// //output("%.12f,", test_buffer[i]); -// } -// fclose(dat); - - gmsk_decodeBuffer(_gmsk_demod, test_buffer, 160*2, output_bytes, 32*2); - - exit(0); } void sched_waveformThreadExit() diff --git a/DSP_API/ThumbDV/gmsk_modem.c b/DSP_API/ThumbDV/gmsk_modem.c index 606d610..e3a7326 100644 --- a/DSP_API/ThumbDV/gmsk_modem.c +++ b/DSP_API/ThumbDV/gmsk_modem.c @@ -400,3 +400,47 @@ void gmsk_destroyModulator(GMSK_MOD mod ) } +void gmsk_testBitsAndEncodeDecode(void) +{ + + GMSK_DEMOD _gmsk_demod = gmsk_createDemodulator(); + GMSK_MOD _gmsk_mod = gmsk_createModulator(); + + float test_buffer[160*2]; + unsigned char test_coded[8] = {0xAA,0xAA,0xFF,0x00,0xFF,0x00,0xFF,0x00}; + unsigned char output_bytes[8] = {0}; + uint32 i = 0; + + + BOOL bits[32] = {0}; + gmsk_bytesToBits(test_coded, bits, 32); + gmsk_byteToBits(0xF0, bits, 8); + output("0xF0 = "); + + for ( i = 0 ; i < 8; i++ ){ + output("%d ", bits[i]); + } + output("\n"); + unsigned char test[4] = {0xAA, 0xAA, 0xAA, 0xAA}; + gmsk_bytesToBits(test, bits, 32); + + for ( i = 0 ; i < 32/8 ; i++ ) { + gmsk_bitsToByte(&bits[i*8], &output_bytes[i]); + output("Byte = 0x%02X\n", output_bytes[i]); + } +// + gmsk_encodeBuffer(_gmsk_mod, test_coded, 32*2, test_buffer, 160*2); + FILE * dat = fopen("gmsk.dat", "w"); + for ( i = 0 ; i < 160*2 ; i++ ) { + fprintf(dat, "%d %.12f\n", i, test_buffer[i]); + //output("%.12f,", test_buffer[i]); + } + fclose(dat); + + gmsk_decodeBuffer(_gmsk_demod, test_buffer, 160*2, output_bytes, 32*2); + + gmsk_destroyDemodulator(_gmsk_demod); + gmsk_destroyModulator(_gmsk_mod); + +} + diff --git a/DSP_API/ThumbDV/gmsk_modem.h b/DSP_API/ThumbDV/gmsk_modem.h index 9158577..8819994 100644 --- a/DSP_API/ThumbDV/gmsk_modem.h +++ b/DSP_API/ThumbDV/gmsk_modem.h @@ -58,6 +58,9 @@ typedef struct _gmsk_mod FIR_FILTER filter; } gmsk_mod, * GMSK_MOD; + +void gmsk_testBitsAndEncodeDecode(void); + void gmsk_bitsToByte(BOOL * bits, unsigned char * byte); void gmsk_byteToBits(unsigned char byte, BOOL * bits, uint32 num_bits); void gmsk_bytesToBits(unsigned char * bytes, BOOL * bits, uint32 num_bits); diff --git a/DSP_API/ThumbDV/thumbDV.c b/DSP_API/ThumbDV/thumbDV.c index 272f1b8..2d885b0 100644 --- a/DSP_API/ThumbDV/thumbDV.c +++ b/DSP_API/ThumbDV/thumbDV.c @@ -326,7 +326,7 @@ int thumbDV_openSerial(const char * tty_name) return -1; } - //output("opened %s - fd = %d\n", tty_name, fd); + output("opened %s - fd = %d\n", tty_name, fd); return fd; } @@ -378,7 +378,7 @@ int thumbDV_processSerial(int serial_fd) packet_type = buffer[3]; //dump("Serial data", buffer, respLen); if ( packet_type == AMBE3000_CTRL_PKT_TYPE ) { - // dump("Serial data", buffer, respLen); + dump("Serial data", buffer, respLen); } else if ( packet_type == AMBE3000_CHAN_PKT_TYPE ) { desc = hal_BufferRequest(respLen, sizeof(unsigned char) ); memcpy(desc->buf_ptr, buffer, respLen);