From 1299c691991a63dd69c1425bf7e7a13a328b522d Mon Sep 17 00:00:00 2001 From: Haylz Date: Tue, 11 Jun 2019 16:47:24 -0500 Subject: [PATCH 01/37] RX State Machine HEADER_PROCESSING to BIT_FRAME_SYNC The header processing stage always switched to the VOICE_FRAME stage. This caused garbage to be loaded into decode buffers. This fix changes the logic to only switche from HEADER_PROCESS stage to VOICE_FRAME stage if there is a P_FCS match, otherwise goes back to the BIT_FRAME_SYNC stage. --- DSP_API/ThumbDV/dstar.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/DSP_API/ThumbDV/dstar.c b/DSP_API/ThumbDV/dstar.c index b2a2ff7..12bef54 100644 --- a/DSP_API/ThumbDV/dstar.c +++ b/DSP_API/ThumbDV/dstar.c @@ -951,15 +951,20 @@ BOOL dstar_rxStateMachine( DSTAR_MACHINE machine, BOOL in_bit, unsigned char * a dstar_updateStatus( machine, machine->slice, STATUS_RX ); + machine->rx_state = VOICE_FRAME; + machine->bit_count = 0; + machine->frame_count = 0; + } else { output( ANSI_RED "P_FCS Does Not Match!\n" ANSI_WHITE ); + + machine->rx_state = BIT_FRAME_SYNC; + machine->bit_count = 0; } /* STATE CHANGE */ - machine->rx_state = VOICE_FRAME; - machine->bit_count = 0; - machine->frame_count = 0; + } break; From 6880b87d01d2b7d1eb6b9c6d13a5b72da9c27f91 Mon Sep 17 00:00:00 2001 From: Hayley Date: Wed, 19 Jun 2019 15:54:47 -0500 Subject: [PATCH 02/37] msSince() function added to utils --- DSP_API/SmartSDR_Interface/utils.c | 9 +++++++++ DSP_API/SmartSDR_Interface/utils.h | 1 + 2 files changed, 10 insertions(+) diff --git a/DSP_API/SmartSDR_Interface/utils.c b/DSP_API/SmartSDR_Interface/utils.c index 2dd9860..f35c62b 100644 --- a/DSP_API/SmartSDR_Interface/utils.c +++ b/DSP_API/SmartSDR_Interface/utils.c @@ -86,6 +86,7 @@ float tsfSubtract(struct timespec time1, struct timespec time2) return result; } + //! get time since a certain time in microseconds uint32 usSince(struct timespec time) { @@ -95,6 +96,14 @@ uint32 usSince(struct timespec time) return diff_us; } +uint32 msSince(struct timespec time) +{ + struct timespec delay; + clock_gettime(CLOCK_MONOTONIC, &delay); + uint32 diff_ms = (uint32)(tsSubtract(delay, time)); + return diff_ms; +} + uint32 getIP(char* text) { uint32 ip; diff --git a/DSP_API/SmartSDR_Interface/utils.h b/DSP_API/SmartSDR_Interface/utils.h index 8f6fe52..22d6371 100644 --- a/DSP_API/SmartSDR_Interface/utils.h +++ b/DSP_API/SmartSDR_Interface/utils.h @@ -40,6 +40,7 @@ void output(const char *fmt,...); void tsAdd(struct timespec* time1, struct timespec time2); float tsfSubtract(struct timespec time1, struct timespec time2); uint32 usSince(struct timespec time); +uint32 msSince(struct timespec time); uint32 getIP(char* text); void lock_malloc_init(void); void* safe_malloc(size_t size); From d1409d5e49b39a6de5f0d46c982d4f7a8d7fc9da Mon Sep 17 00:00:00 2001 From: Hayley Date: Thu, 20 Jun 2019 12:57:28 -0500 Subject: [PATCH 03/37] Set Latency UART Latency Timer --- DSP_API/ThumbDV/thumbDV.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DSP_API/ThumbDV/thumbDV.c b/DSP_API/ThumbDV/thumbDV.c index 4602544..9879f23 100644 --- a/DSP_API/ThumbDV/thumbDV.c +++ b/DSP_API/ThumbDV/thumbDV.c @@ -332,6 +332,7 @@ FT_HANDLE thumbDV_openSerial( FT_DEVICE_LIST_INFO_NODE device ) //struct termios tty; FT_HANDLE handle = NULL; FT_STATUS status = FT_OK; + UCHAR latency = 5; output("Trying to open serial port %s", device.SerialNumber); @@ -406,6 +407,7 @@ FT_HANDLE thumbDV_openSerial( FT_DEVICE_LIST_INFO_NODE device ) FT_SetDataCharacteristics(handle, FT_BITS_8, FT_STOP_BITS_1, FT_PARITY_NONE); FT_SetFlowControl(handle, FT_FLOW_NONE, 0, 0); + FT_SetLatencyTimer(handle, latency); if ( _check_serial( handle ) != 0 ) { From dabc0b05d1435a01dd9f360c6de2baa2d7031957 Mon Sep 17 00:00:00 2001 From: Ed Gonzalez Date: Thu, 20 Jun 2019 13:41:50 -0500 Subject: [PATCH 04/37] Move thumbDV_Release configuration to new compiler. We no longer use the agnstrom compiler we use arm-linux-gnueabi-gcc --- DSP_API/.cproject | 967 +++++++++++++++++++++++++++++++--------------- 1 file changed, 647 insertions(+), 320 deletions(-) diff --git a/DSP_API/.cproject b/DSP_API/.cproject index 0e2ef20..f2b4bd7 100644 --- a/DSP_API/.cproject +++ b/DSP_API/.cproject @@ -1,323 +1,650 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 5ffd66487b5529b500d999ed7e2fd6b31c426f5b Mon Sep 17 00:00:00 2001 From: Ed Gonzalez Date: Thu, 20 Jun 2019 13:42:25 -0500 Subject: [PATCH 05/37] Comment out the read thread for testing inline read/writes --- DSP_API/ThumbDV/thumbDV.c | 126 +++++++++++++++++++------------------- 1 file changed, 63 insertions(+), 63 deletions(-) diff --git a/DSP_API/ThumbDV/thumbDV.c b/DSP_API/ThumbDV/thumbDV.c index 9879f23..9260fa3 100644 --- a/DSP_API/ThumbDV/thumbDV.c +++ b/DSP_API/ThumbDV/thumbDV.c @@ -72,7 +72,7 @@ #define BUFFER_LENGTH 400U #define THUMBDV_MAX_PACKET_LEN 2048U -static pthread_t _read_thread; +//static pthread_t _read_thread; BOOL _readThreadAbort = FALSE; static uint32 _buffering_target = 1; @@ -87,7 +87,7 @@ static BufferDescriptor _decoded_root; static BOOL _decoded_buffering = TRUE; static uint32 _decoded_count = 0; -static void * _thumbDV_readThread( void * param ); +//static void * _thumbDV_readThread( void * param ); static BufferDescriptor _thumbDVEncodedList_UnlinkHead( void ) { BufferDescriptor buf_desc = NULL; @@ -739,63 +739,63 @@ static void _connectSerial( FT_HANDLE * ftHandle ) } -static void * _thumbDV_readThread( void * param ) -{ - int ret; - DWORD rx_bytes; - DWORD tx_bytes; - DWORD event_dword; - - FT_STATUS status = FT_OK; - FT_HANDLE handle = *( FT_HANDLE * )param; - EVENT_HANDLE event_handle; - - prctl(PR_SET_NAME, "DV-Read"); - - pthread_mutex_init(&event_handle.eMutex, NULL); - pthread_cond_init(&event_handle.eCondVar, NULL); - - while ( !_readThreadAbort ) - { - // Setup RX or Status change event notification - status = FT_SetEventNotification(handle, FT_EVENT_RXCHAR , (PVOID)&event_handle); - - struct timespec timeout; - clock_gettime(CLOCK_REALTIME, &timeout); - - timeout.tv_sec += 2; // 2 second timeout - - // Will block until - pthread_mutex_lock(&event_handle.eMutex); - pthread_cond_timedwait(&event_handle.eCondVar, &event_handle.eMutex, &timeout); - pthread_mutex_unlock(&event_handle.eMutex); - - rx_bytes = 0; - status = FT_GetStatus(handle, &rx_bytes, &tx_bytes, &event_dword); - - if ( status != FT_OK ) - { - fprintf( stderr, "ThumbDV: error from status, status=%d\n", status ); - - /* Set invalid FD in sched_waveform so we don't call write functions */ - handle = NULL; - sched_waveform_setHandle(&handle); - /* This function hangs until a new connection is made */ - _connectSerial( &handle ); - /* Update the sched_waveform to new valid serial */ - sched_waveform_setHandle( &handle ); - } - else if ( rx_bytes >= AMBE3000_HEADER_LEN ) - { - ret = thumbDV_processSerial( handle ); - } - - - } - - output( ANSI_YELLOW "thumbDV_readThread has exited\n" ANSI_WHITE ); - return 0; -} +//static void * _thumbDV_readThread( void * param ) +//{ +// int ret; +// DWORD rx_bytes; +// DWORD tx_bytes; +// DWORD event_dword; +// +// FT_STATUS status = FT_OK; +// FT_HANDLE handle = *( FT_HANDLE * )param; +// EVENT_HANDLE event_handle; +// +// prctl(PR_SET_NAME, "DV-Read"); +// +// pthread_mutex_init(&event_handle.eMutex, NULL); +// pthread_cond_init(&event_handle.eCondVar, NULL); +// +// while ( !_readThreadAbort ) +// { +// // Setup RX or Status change event notification +// status = FT_SetEventNotification(handle, FT_EVENT_RXCHAR , (PVOID)&event_handle); +// +// struct timespec timeout; +// clock_gettime(CLOCK_REALTIME, &timeout); +// +// timeout.tv_sec += 2; // 2 second timeout +// +// // Will block until +// pthread_mutex_lock(&event_handle.eMutex); +// pthread_cond_timedwait(&event_handle.eCondVar, &event_handle.eMutex, &timeout); +// pthread_mutex_unlock(&event_handle.eMutex); +// +// rx_bytes = 0; +// status = FT_GetStatus(handle, &rx_bytes, &tx_bytes, &event_dword); +// +// if ( status != FT_OK ) +// { +// fprintf( stderr, "ThumbDV: error from status, status=%d\n", status ); +// +// /* Set invalid FD in sched_waveform so we don't call write functions */ +// handle = NULL; +// sched_waveform_setHandle(&handle); +// /* This function hangs until a new connection is made */ +// _connectSerial( &handle ); +// /* Update the sched_waveform to new valid serial */ +// sched_waveform_setHandle( &handle ); +// } +// else if ( rx_bytes >= AMBE3000_HEADER_LEN ) +// { +// ret = thumbDV_processSerial( handle ); +// } +// +// +// } +// +// output( ANSI_YELLOW "thumbDV_readThread has exited\n" ANSI_WHITE ); +// return 0; +//} void thumbDV_init( FT_HANDLE * handle ) { pthread_rwlock_init( &_encoded_list_lock, NULL ); @@ -817,10 +817,10 @@ void thumbDV_init( FT_HANDLE * handle ) { _connectSerial( handle ); - pthread_create( &_read_thread, NULL, &_thumbDV_readThread, handle ); + //pthread_create( &_read_thread, NULL, &_thumbDV_readThread, handle ); - struct sched_param fifo_param; - fifo_param.sched_priority = 30; - pthread_setschedparam( _read_thread, SCHED_FIFO, &fifo_param ); + //struct sched_param fifo_param; + //fifo_param.sched_priority = 30; + //pthread_setschedparam( _read_thread, SCHED_FIFO, &fifo_param ); } From 0a4be8cb8bc48890ca77973add3851c9d86eb1b3 Mon Sep 17 00:00:00 2001 From: Ed Gonzalez Date: Thu, 20 Jun 2019 13:44:58 -0500 Subject: [PATCH 06/37] Remove redundat reset and productID calls --- DSP_API/ThumbDV/thumbDV.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/DSP_API/ThumbDV/thumbDV.c b/DSP_API/ThumbDV/thumbDV.c index 9260fa3..f9c9af0 100644 --- a/DSP_API/ThumbDV/thumbDV.c +++ b/DSP_API/ThumbDV/thumbDV.c @@ -694,25 +694,16 @@ static void _connectSerial( FT_HANDLE * ftHandle ) } } while ( *ftHandle == NULL ) ; - unsigned char reset[5] = { 0x61, 0x00, 0x01, 0x00, 0x33 }; - thumbDV_writeSerial( *ftHandle, reset, 5 ); - /* Block until we get data from serial port after reset */ - thumbDV_processSerial( *ftHandle ); -// -// unsigned char reset_softcfg[11] = {0x61, 0x00, 0x07, 0x00, 0x34, 0x05, 0x03, 0xEB, 0xFF, 0xFF, 0xFF}; -// thumbDV_writeSerial(*ftHandle, reset_softcfg, 11); -// thumbDV_processSerial(*ftHandle); + // Reset and Product ID printout are done in thumbDV_openSerial() which calls _check_serial() unsigned char disable_parity[6] = {0x61, 0x00, 0x02, 0x00, 0x3F, 0x00}; thumbDV_writeSerial( *ftHandle, disable_parity, 6 ); thumbDV_processSerial( *ftHandle ); - unsigned char get_prodID[5] = {0x61, 0x00, 0x01, 0x00, 0x30 }; unsigned char get_version[5] = {0x61, 0x00, 0x01, 0x00, 0x31}; unsigned char read_cfg[5] = {0x61, 0x00, 0x01, 0x00, 0x37}; unsigned char dstar_mode[17] = {0x61, 0x00, 0x0D, 0x00, 0x0A, 0x01, 0x30, 0x07, 0x63, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48}; - thumbDV_writeSerial( *ftHandle, get_prodID, 5 ); thumbDV_writeSerial( *ftHandle, get_version, 5 ); thumbDV_writeSerial( *ftHandle, read_cfg, 5 ); thumbDV_writeSerial( *ftHandle, dstar_mode, 17 ); From a10cb40a9f634dedd088f2bfb047391c36bc5e17 Mon Sep 17 00:00:00 2001 From: Ed Gonzalez Date: Thu, 20 Jun 2019 13:48:40 -0500 Subject: [PATCH 07/37] processSerial() with every serial write. We now do processSerial() inline with the writeSerial() to not be dependent on a separate read thread --- DSP_API/ThumbDV/thumbDV.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/DSP_API/ThumbDV/thumbDV.c b/DSP_API/ThumbDV/thumbDV.c index f9c9af0..4159f45 100644 --- a/DSP_API/ThumbDV/thumbDV.c +++ b/DSP_API/ThumbDV/thumbDV.c @@ -277,7 +277,7 @@ void thumbDV_dump( char * text, unsigned char * data, unsigned int length ) { } } -static void thumbDV_writeSerial( FT_HANDLE handle , unsigned char * buffer, uint32 bytes ) +static int thumbDV_writeSerial( FT_HANDLE handle , unsigned char * buffer, uint32 bytes ) { FT_STATUS status = FT_OK; DWORD written = 0; @@ -288,23 +288,26 @@ static void thumbDV_writeSerial( FT_HANDLE handle , unsigned char * buffer, uint if ( status != FT_OK || written != bytes ) { output( ANSI_RED "Could not write to serial port. status = %d\n", status ); - return; + return status; } + + status = thumbDV_processSerial(handle); } else { output( ANSI_RED "Could not write to serial port. Timeout\n" ANSI_WHITE ); } + + return status; } static int _check_serial( FT_HANDLE handle ) { unsigned char reset[5] = { 0x61, 0x00, 0x01, 0x00, 0x33 }; - thumbDV_writeSerial( handle, reset, 5 ); - int ret = thumbDV_processSerial(handle); + int ret = thumbDV_writeSerial( handle, reset, 5 ); if ( ret != 0 ) { @@ -313,9 +316,7 @@ static int _check_serial( FT_HANDLE handle ) } unsigned char get_prodID[5] = {0x61, 0x00, 0x01, 0x00, 0x30 }; - thumbDV_writeSerial( handle, get_prodID, 5 ); - - ret = thumbDV_processSerial(handle); + ret = thumbDV_writeSerial( handle, get_prodID, 5 ); if ( ret != 0 ) { @@ -323,7 +324,6 @@ static int _check_serial( FT_HANDLE handle ) return -1; } - return 0 ; } @@ -698,7 +698,6 @@ static void _connectSerial( FT_HANDLE * ftHandle ) unsigned char disable_parity[6] = {0x61, 0x00, 0x02, 0x00, 0x3F, 0x00}; thumbDV_writeSerial( *ftHandle, disable_parity, 6 ); - thumbDV_processSerial( *ftHandle ); unsigned char get_version[5] = {0x61, 0x00, 0x01, 0x00, 0x31}; unsigned char read_cfg[5] = {0x61, 0x00, 0x01, 0x00, 0x37}; From 95d5a53c63a80635f035e71d83c681dfecbea8e6 Mon Sep 17 00:00:00 2001 From: Ed Gonzalez Date: Thu, 20 Jun 2019 13:56:38 -0500 Subject: [PATCH 08/37] Add timing debug to write/read from serial --- DSP_API/ThumbDV/thumbDV.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/DSP_API/ThumbDV/thumbDV.c b/DSP_API/ThumbDV/thumbDV.c index 4159f45..591ea08 100644 --- a/DSP_API/ThumbDV/thumbDV.c +++ b/DSP_API/ThumbDV/thumbDV.c @@ -282,8 +282,19 @@ static int thumbDV_writeSerial( FT_HANDLE handle , unsigned char * buffer, uint3 FT_STATUS status = FT_OK; DWORD written = 0; + static uint32 min, max; + static float avg; + static uint32 count = 0; + min = 0xFFFFFFFF; + max = 0; + avg = 0; + + struct timespec time; + + if ( handle != NULL ) { + clock_gettime(CLOCK_MONOTONIC, &time); status = FT_Write(handle, buffer, bytes, &written); if ( status != FT_OK || written != bytes ) { @@ -292,12 +303,23 @@ static int thumbDV_writeSerial( FT_HANDLE handle , unsigned char * buffer, uint3 } status = thumbDV_processSerial(handle); + uint32 ms_elapsed = msSince(time); + + if ( ms_elapsed > max ) + max = ms_elapsed; + + if ( ms_elapsed < min ) + min = ms_elapsed; + + avg = avg * .9 + ms_elapsed * .1; } else { output( ANSI_RED "Could not write to serial port. Timeout\n" ANSI_WHITE ); } + if ( count++ % 100 == 0) + output("Min: %d Max: %d Avg: %.1f", min, max, avg); return status; } From 2efb60ecb0f26525b7280e83605f3466149dd0dd Mon Sep 17 00:00:00 2001 From: Ed Gonzalez Date: Thu, 20 Jun 2019 13:58:29 -0500 Subject: [PATCH 09/37] Timing debug newline and dashes --- DSP_API/ThumbDV/thumbDV.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/DSP_API/ThumbDV/thumbDV.c b/DSP_API/ThumbDV/thumbDV.c index 591ea08..52df991 100644 --- a/DSP_API/ThumbDV/thumbDV.c +++ b/DSP_API/ThumbDV/thumbDV.c @@ -291,7 +291,6 @@ static int thumbDV_writeSerial( FT_HANDLE handle , unsigned char * buffer, uint3 struct timespec time; - if ( handle != NULL ) { clock_gettime(CLOCK_MONOTONIC, &time); @@ -319,7 +318,7 @@ static int thumbDV_writeSerial( FT_HANDLE handle , unsigned char * buffer, uint3 } if ( count++ % 100 == 0) - output("Min: %d Max: %d Avg: %.1f", min, max, avg); + output("------------------------------------------- Min: %d Max: %d Avg: %.1f\n", min, max, avg); return status; } From 480ae99925986469246bc0c361cee7d25e7ab61f Mon Sep 17 00:00:00 2001 From: Hayley Date: Thu, 20 Jun 2019 15:33:58 -0500 Subject: [PATCH 10/37] Working Debung timer for write function --- DSP_API/ThumbDV/thumbDV.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/DSP_API/ThumbDV/thumbDV.c b/DSP_API/ThumbDV/thumbDV.c index 52df991..7439dab 100644 --- a/DSP_API/ThumbDV/thumbDV.c +++ b/DSP_API/ThumbDV/thumbDV.c @@ -282,18 +282,16 @@ static int thumbDV_writeSerial( FT_HANDLE handle , unsigned char * buffer, uint3 FT_STATUS status = FT_OK; DWORD written = 0; - static uint32 min, max; - static float avg; + static float min = 50000, max = 0; + static float avg = 0; static uint32 count = 0; - min = 0xFFFFFFFF; - max = 0; - avg = 0; + struct timespec time; if ( handle != NULL ) { - clock_gettime(CLOCK_MONOTONIC, &time); + status = FT_Write(handle, buffer, bytes, &written); if ( status != FT_OK || written != bytes ) { @@ -301,8 +299,10 @@ static int thumbDV_writeSerial( FT_HANDLE handle , unsigned char * buffer, uint3 return status; } + clock_gettime(CLOCK_MONOTONIC, &time); status = thumbDV_processSerial(handle); - uint32 ms_elapsed = msSince(time); + float ms_elapsed = msSince(time); + if ( ms_elapsed > max ) max = ms_elapsed; @@ -310,7 +310,7 @@ static int thumbDV_writeSerial( FT_HANDLE handle , unsigned char * buffer, uint3 if ( ms_elapsed < min ) min = ms_elapsed; - avg = avg * .9 + ms_elapsed * .1; + avg = (avg * .9 )+ (ms_elapsed * .1); } else { @@ -318,7 +318,12 @@ static int thumbDV_writeSerial( FT_HANDLE handle , unsigned char * buffer, uint3 } if ( count++ % 100 == 0) - output("------------------------------------------- Min: %d Max: %d Avg: %.1f\n", min, max, avg); + { + output("------------------------------------------- Min: %.1f Max: %.1f Avg: %.1f\n", min, max, avg); + min = 50000; + max = 0; + avg = 0; + } return status; } From c6d6b9ec0efd13766d1f9a0d347df7db30edc1e6 Mon Sep 17 00:00:00 2001 From: Ed Gonzalez Date: Thu, 20 Jun 2019 16:19:29 -0500 Subject: [PATCH 11/37] Switch back to read-thread architecture with semaphore instead of event wait --- DSP_API/ThumbDV/thumbDV.c | 104 +++++++++++++++++++++----------------- 1 file changed, 58 insertions(+), 46 deletions(-) diff --git a/DSP_API/ThumbDV/thumbDV.c b/DSP_API/ThumbDV/thumbDV.c index 7439dab..0c55352 100644 --- a/DSP_API/ThumbDV/thumbDV.c +++ b/DSP_API/ThumbDV/thumbDV.c @@ -72,7 +72,7 @@ #define BUFFER_LENGTH 400U #define THUMBDV_MAX_PACKET_LEN 2048U -//static pthread_t _read_thread; +static pthread_t _read_thread; BOOL _readThreadAbort = FALSE; static uint32 _buffering_target = 1; @@ -87,6 +87,8 @@ static BufferDescriptor _decoded_root; static BOOL _decoded_buffering = TRUE; static uint32 _decoded_count = 0; +static sem_t _read_sem; + //static void * _thumbDV_readThread( void * param ); static BufferDescriptor _thumbDVEncodedList_UnlinkHead( void ) { @@ -291,7 +293,7 @@ static int thumbDV_writeSerial( FT_HANDLE handle , unsigned char * buffer, uint3 if ( handle != NULL ) { - + clock_gettime(CLOCK_MONOTONIC, &time); status = FT_Write(handle, buffer, bytes, &written); if ( status != FT_OK || written != bytes ) { @@ -299,11 +301,9 @@ static int thumbDV_writeSerial( FT_HANDLE handle , unsigned char * buffer, uint3 return status; } - clock_gettime(CLOCK_MONOTONIC, &time); - status = thumbDV_processSerial(handle); + sem_post(&_read_sem); + float ms_elapsed = msSince(time); - - if ( ms_elapsed > max ) max = ms_elapsed; @@ -450,7 +450,6 @@ int thumbDV_processSerial( FT_HANDLE handle ) { unsigned char buffer[BUFFER_LENGTH]; unsigned int respLen; - uint32 offset = 0; unsigned char packet_type; FT_STATUS status = FT_OK; @@ -473,7 +472,7 @@ int thumbDV_processSerial( FT_HANDLE handle ) if ( us_slept > max_us_sleep ) { output("TimeOut\n"); - return 1; + return FT_OTHER_ERROR; } } while (rx_bytes < AMBE3000_HEADER_LEN && status == FT_OK ); @@ -488,11 +487,9 @@ int thumbDV_processSerial( FT_HANDLE handle ) if ( buffer[0U] != AMBE3000_START_BYTE ) { output( ANSI_RED "ThumbDV: unknown byte from the DV3000, 0x%02X\n" ANSI_WHITE, buffer[0U] ); - return 1; + return FT_OTHER_ERROR; } - offset = 0U; - respLen = buffer[1U] * 256U + buffer[2U]; us_slept = 0; @@ -503,14 +500,14 @@ int thumbDV_processSerial( FT_HANDLE handle ) if ( rx_bytes >= respLen ) break; - usleep(1000); + usleep(100); - us_slept += 1000 ; + us_slept += 100 ; if ( us_slept > max_us_sleep ) { output("TimeOut\n"); - return 1; + return FT_OTHER_ERROR; } } while (rx_bytes < respLen && status == FT_OK); @@ -545,12 +542,12 @@ int thumbDV_processSerial( FT_HANDLE handle ) } else { output( ANSI_RED "Unrecognized packet type 0x%02X ", packet_type ); - return 1; + return FT_OTHER_ERROR; } - return 0; + return FT_OK; } int thumbDV_decode( FT_HANDLE handle, unsigned char * packet_in, short * speech_out, uint8 bytes_in_packet ) { @@ -754,25 +751,24 @@ static void _connectSerial( FT_HANDLE * ftHandle ) } +static void * _thumbDV_readThread( void * param ) +{ + int ret; + DWORD rx_bytes; + DWORD tx_bytes; + DWORD event_dword; -//static void * _thumbDV_readThread( void * param ) -//{ -// int ret; -// DWORD rx_bytes; -// DWORD tx_bytes; -// DWORD event_dword; -// -// FT_STATUS status = FT_OK; -// FT_HANDLE handle = *( FT_HANDLE * )param; -// EVENT_HANDLE event_handle; -// -// prctl(PR_SET_NAME, "DV-Read"); -// -// pthread_mutex_init(&event_handle.eMutex, NULL); -// pthread_cond_init(&event_handle.eCondVar, NULL); -// -// while ( !_readThreadAbort ) -// { + FT_STATUS status = FT_OK; + FT_HANDLE handle = *( FT_HANDLE * )param; + EVENT_HANDLE event_handle; + + prctl(PR_SET_NAME, "DV-Read"); + + pthread_mutex_init(&event_handle.eMutex, NULL); + pthread_cond_init(&event_handle.eCondVar, NULL); + + while ( !_readThreadAbort ) + { // // Setup RX or Status change event notification // status = FT_SetEventNotification(handle, FT_EVENT_RXCHAR , (PVOID)&event_handle); // @@ -785,7 +781,7 @@ static void _connectSerial( FT_HANDLE * ftHandle ) // pthread_mutex_lock(&event_handle.eMutex); // pthread_cond_timedwait(&event_handle.eCondVar, &event_handle.eMutex, &timeout); // pthread_mutex_unlock(&event_handle.eMutex); -// + // rx_bytes = 0; // status = FT_GetStatus(handle, &rx_bytes, &tx_bytes, &event_dword); // @@ -805,18 +801,34 @@ static void _connectSerial( FT_HANDLE * ftHandle ) // { // ret = thumbDV_processSerial( handle ); // } -// -// -// } -// -// output( ANSI_YELLOW "thumbDV_readThread has exited\n" ANSI_WHITE ); -// return 0; -//} + + sem_wait(&_read_sem); + + ret = thumbDV_processSerial(handle); + if ( ret != FT_OK ) + { + fprintf( stderr, "ThumbDV: error from status, status=%d\n", ret ); + + /* Set invalid FD in sched_waveform so we don't call write functions */ + handle = NULL; + sched_waveform_setHandle(&handle); + /* This function hangs until a new connection is made */ + _connectSerial( &handle ); + /* Update the sched_waveform to new valid serial */ + sched_waveform_setHandle( &handle ); + } + } + + output( ANSI_YELLOW "thumbDV_readThread has exited\n" ANSI_WHITE ); + return 0; +} void thumbDV_init( FT_HANDLE * handle ) { pthread_rwlock_init( &_encoded_list_lock, NULL ); pthread_rwlock_init( &_decoded_list_lock, NULL ); + sem_init(&_read_sem, 0, 0); + pthread_rwlock_wrlock( &_encoded_list_lock ); _encoded_root = ( BufferDescriptor )safe_malloc( sizeof( buffer_descriptor ) ); memset( _encoded_root, 0, sizeof( buffer_descriptor ) ); @@ -833,10 +845,10 @@ void thumbDV_init( FT_HANDLE * handle ) { _connectSerial( handle ); - //pthread_create( &_read_thread, NULL, &_thumbDV_readThread, handle ); + pthread_create( &_read_thread, NULL, &_thumbDV_readThread, handle ); - //struct sched_param fifo_param; - //fifo_param.sched_priority = 30; - //pthread_setschedparam( _read_thread, SCHED_FIFO, &fifo_param ); + struct sched_param fifo_param; + fifo_param.sched_priority = 30; + pthread_setschedparam( _read_thread, SCHED_FIFO, &fifo_param ); } From 6b4ff002fbd0618584987b947c930f5a4d48a166 Mon Sep 17 00:00:00 2001 From: Ed Gonzalez Date: Thu, 20 Jun 2019 16:35:55 -0500 Subject: [PATCH 12/37] Attempt to fix seg faults in managing the FT_HANDLE for ThumbDV --- DSP_API/ThumbDV/thumbDV.c | 45 ++++----------------------------------- 1 file changed, 4 insertions(+), 41 deletions(-) diff --git a/DSP_API/ThumbDV/thumbDV.c b/DSP_API/ThumbDV/thumbDV.c index 0c55352..14a445a 100644 --- a/DSP_API/ThumbDV/thumbDV.c +++ b/DSP_API/ThumbDV/thumbDV.c @@ -288,7 +288,6 @@ static int thumbDV_writeSerial( FT_HANDLE handle , unsigned char * buffer, uint3 static float avg = 0; static uint32 count = 0; - struct timespec time; if ( handle != NULL ) @@ -759,49 +758,15 @@ static void * _thumbDV_readThread( void * param ) DWORD event_dword; FT_STATUS status = FT_OK; - FT_HANDLE handle = *( FT_HANDLE * )param; - EVENT_HANDLE event_handle; + FT_HANDLE handle; prctl(PR_SET_NAME, "DV-Read"); - pthread_mutex_init(&event_handle.eMutex, NULL); - pthread_cond_init(&event_handle.eCondVar, NULL); + _connectSerial(&handle); + sched_waveform_setHandle(&handle); while ( !_readThreadAbort ) { -// // Setup RX or Status change event notification -// status = FT_SetEventNotification(handle, FT_EVENT_RXCHAR , (PVOID)&event_handle); -// -// struct timespec timeout; -// clock_gettime(CLOCK_REALTIME, &timeout); -// -// timeout.tv_sec += 2; // 2 second timeout -// -// // Will block until -// pthread_mutex_lock(&event_handle.eMutex); -// pthread_cond_timedwait(&event_handle.eCondVar, &event_handle.eMutex, &timeout); -// pthread_mutex_unlock(&event_handle.eMutex); - -// rx_bytes = 0; -// status = FT_GetStatus(handle, &rx_bytes, &tx_bytes, &event_dword); -// -// if ( status != FT_OK ) -// { -// fprintf( stderr, "ThumbDV: error from status, status=%d\n", status ); -// -// /* Set invalid FD in sched_waveform so we don't call write functions */ -// handle = NULL; -// sched_waveform_setHandle(&handle); -// /* This function hangs until a new connection is made */ -// _connectSerial( &handle ); -// /* Update the sched_waveform to new valid serial */ -// sched_waveform_setHandle( &handle ); -// } -// else if ( rx_bytes >= AMBE3000_HEADER_LEN ) -// { -// ret = thumbDV_processSerial( handle ); -// } - sem_wait(&_read_sem); ret = thumbDV_processSerial(handle); @@ -843,9 +808,7 @@ void thumbDV_init( FT_HANDLE * handle ) { _decoded_root->prev = _decoded_root; pthread_rwlock_unlock( &_decoded_list_lock ); - _connectSerial( handle ); - - pthread_create( &_read_thread, NULL, &_thumbDV_readThread, handle ); + pthread_create( &_read_thread, NULL, &_thumbDV_readThread, NULL ); struct sched_param fifo_param; fifo_param.sched_priority = 30; From 96e8851932cee7041fde2864c27b94f275179e77 Mon Sep 17 00:00:00 2001 From: Ed Gonzalez Date: Thu, 20 Jun 2019 17:22:42 -0500 Subject: [PATCH 13/37] Trying to fix read thread --- DSP_API/ThumbDV/thumbDV.c | 48 +++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/DSP_API/ThumbDV/thumbDV.c b/DSP_API/ThumbDV/thumbDV.c index 14a445a..85adb39 100644 --- a/DSP_API/ThumbDV/thumbDV.c +++ b/DSP_API/ThumbDV/thumbDV.c @@ -299,9 +299,6 @@ static int thumbDV_writeSerial( FT_HANDLE handle , unsigned char * buffer, uint3 output( ANSI_RED "Could not write to serial port. status = %d\n", status ); return status; } - - sem_post(&_read_sem); - float ms_elapsed = msSince(time); if ( ms_elapsed > max ) max = ms_elapsed; @@ -333,6 +330,7 @@ static int _check_serial( FT_HANDLE handle ) unsigned char reset[5] = { 0x61, 0x00, 0x01, 0x00, 0x33 }; int ret = thumbDV_writeSerial( handle, reset, 5 ); + thumbDV_processSerial(handle); if ( ret != 0 ) { @@ -342,6 +340,7 @@ static int _check_serial( FT_HANDLE handle ) unsigned char get_prodID[5] = {0x61, 0x00, 0x01, 0x00, 0x30 }; ret = thumbDV_writeSerial( handle, get_prodID, 5 ); + thumbDV_processSerial(handle); if ( ret != 0 ) { @@ -570,6 +569,7 @@ int thumbDV_decode( FT_HANDLE handle, unsigned char * packet_in, short * speech_ // thumbDV_dump("Just AMBE", packet_in, 9); // thumbDV_dump("Encoded packet:", full_packet, 15); thumbDV_writeSerial( handle, full_packet, 15 ); + sem_post(&_read_sem); } int32 samples_returned = 0; @@ -720,33 +720,42 @@ static void _connectSerial( FT_HANDLE * ftHandle ) unsigned char disable_parity[6] = {0x61, 0x00, 0x02, 0x00, 0x3F, 0x00}; thumbDV_writeSerial( *ftHandle, disable_parity, 6 ); + thumbDV_processSerial(*ftHandle); unsigned char get_version[5] = {0x61, 0x00, 0x01, 0x00, 0x31}; unsigned char read_cfg[5] = {0x61, 0x00, 0x01, 0x00, 0x37}; unsigned char dstar_mode[17] = {0x61, 0x00, 0x0D, 0x00, 0x0A, 0x01, 0x30, 0x07, 0x63, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48}; thumbDV_writeSerial( *ftHandle, get_version, 5 ); + thumbDV_processSerial(*ftHandle); thumbDV_writeSerial( *ftHandle, read_cfg, 5 ); + thumbDV_processSerial(*ftHandle); thumbDV_writeSerial( *ftHandle, dstar_mode, 17 ); + thumbDV_processSerial(*ftHandle); //// /* Init */ unsigned char pkt_init[6] = { 0x61, 0x00, 0x02, 0x00, 0x0B, 0x07 }; thumbDV_writeSerial( *ftHandle, pkt_init, 6 ); + thumbDV_processSerial(*ftHandle); /* PKT GAIN - set to 0dB */ unsigned char pkt_gain[7] = { 0x61, 0x00, 0x03, 0x00, 0x4B, 0x00, 0x00 }; thumbDV_writeSerial( *ftHandle, pkt_gain, 7 ); + thumbDV_processSerial(*ftHandle); /* Companding off so it uses 16bit linear */ unsigned char pkt_compand[6] = { 0x61, 0x00, 0x02, 0x00, 0x32, 0x00 }; thumbDV_writeSerial( *ftHandle, pkt_compand, 6 ); + thumbDV_processSerial(*ftHandle); unsigned char test_coded[15] = {0x61, 0x00 , 0x0B , 0x01 , 0x01 , 0x48 , 0x5E , 0x83 , 0x12 , 0x3B , 0x98 , 0x79 , 0xDE , 0x13 , 0x90}; thumbDV_writeSerial( *ftHandle, test_coded, 15 ); + thumbDV_processSerial(*ftHandle); unsigned char pkt_fmt[7] = {0x61, 0x00, 0x3, 0x00, 0x15, 0x00, 0x00}; thumbDV_writeSerial( *ftHandle, pkt_fmt, 7 ); + thumbDV_processSerial(*ftHandle); } @@ -758,30 +767,27 @@ static void * _thumbDV_readThread( void * param ) DWORD event_dword; FT_STATUS status = FT_OK; - FT_HANDLE handle; + FT_HANDLE handle = *(FT_HANDLE *) param; prctl(PR_SET_NAME, "DV-Read"); - _connectSerial(&handle); - sched_waveform_setHandle(&handle); - while ( !_readThreadAbort ) { sem_wait(&_read_sem); ret = thumbDV_processSerial(handle); - if ( ret != FT_OK ) - { - fprintf( stderr, "ThumbDV: error from status, status=%d\n", ret ); - - /* Set invalid FD in sched_waveform so we don't call write functions */ - handle = NULL; - sched_waveform_setHandle(&handle); - /* This function hangs until a new connection is made */ - _connectSerial( &handle ); - /* Update the sched_waveform to new valid serial */ - sched_waveform_setHandle( &handle ); - } +// if ( ret != FT_OK ) +// { +// fprintf( stderr, "ThumbDV: error from status, status=%d\n", ret ); +// +// /* Set invalid FD in sched_waveform so we don't call write functions */ +// handle = NULL; +// sched_waveform_setHandle(&handle); +// /* This function hangs until a new connection is made */ +// _connectSerial( &handle ); +// /* Update the sched_waveform to new valid serial */ +// sched_waveform_setHandle( &handle ); +// } } output( ANSI_YELLOW "thumbDV_readThread has exited\n" ANSI_WHITE ); @@ -808,7 +814,9 @@ void thumbDV_init( FT_HANDLE * handle ) { _decoded_root->prev = _decoded_root; pthread_rwlock_unlock( &_decoded_list_lock ); - pthread_create( &_read_thread, NULL, &_thumbDV_readThread, NULL ); + _connectSerial(handle); + + pthread_create( &_read_thread, NULL, &_thumbDV_readThread, handle ); struct sched_param fifo_param; fifo_param.sched_priority = 30; From 7e645fdf4c9e01b0e631587d6a42435bc3f47092 Mon Sep 17 00:00:00 2001 From: Hayley Date: Fri, 21 Jun 2019 09:41:47 -0500 Subject: [PATCH 14/37] We changes the return of the write serial from our debugging attempts back to the original void return --- DSP_API/ThumbDV/thumbDV.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/DSP_API/ThumbDV/thumbDV.c b/DSP_API/ThumbDV/thumbDV.c index 85adb39..8ce1dcc 100644 --- a/DSP_API/ThumbDV/thumbDV.c +++ b/DSP_API/ThumbDV/thumbDV.c @@ -326,11 +326,11 @@ static int thumbDV_writeSerial( FT_HANDLE handle , unsigned char * buffer, uint3 static int _check_serial( FT_HANDLE handle ) { - + int ret = 0; unsigned char reset[5] = { 0x61, 0x00, 0x01, 0x00, 0x33 }; - int ret = thumbDV_writeSerial( handle, reset, 5 ); - thumbDV_processSerial(handle); + thumbDV_writeSerial( handle, reset, 5 ); + ret = thumbDV_processSerial(handle); if ( ret != 0 ) { @@ -339,8 +339,8 @@ static int _check_serial( FT_HANDLE handle ) } unsigned char get_prodID[5] = {0x61, 0x00, 0x01, 0x00, 0x30 }; - ret = thumbDV_writeSerial( handle, get_prodID, 5 ); - thumbDV_processSerial(handle); + thumbDV_writeSerial( handle, get_prodID, 5 ); + ret = thumbDV_processSerial(handle); if ( ret != 0 ) { From d9b13d69dc1f92a4778591c6e5d4d0ae7a4b805b Mon Sep 17 00:00:00 2001 From: Ed Gonzalez Date: Fri, 21 Jun 2019 09:50:18 -0500 Subject: [PATCH 15/37] Always unlink from decoded list if there is data --- DSP_API/SmartSDR_Interface/sched_waveform.c | 10 +++- DSP_API/ThumbDV/thumbDV.c | 57 ++++++++++++--------- DSP_API/ThumbDV/thumbDV.h | 5 +- 3 files changed, 46 insertions(+), 26 deletions(-) diff --git a/DSP_API/SmartSDR_Interface/sched_waveform.c b/DSP_API/SmartSDR_Interface/sched_waveform.c index b211081..7e483aa 100644 --- a/DSP_API/SmartSDR_Interface/sched_waveform.c +++ b/DSP_API/SmartSDR_Interface/sched_waveform.c @@ -519,12 +519,20 @@ static void * _sched_waveform_thread( void * param ) { } if ( ambe_packet_out == TRUE ) { + thumbDV_decode( _dv_serial_handle, ambe_out, DV_PACKET_SAMPLES ); + } + + if ( thumbDV_getDecodeListBuffering() == FALSE) + { + // There is something in the decoded list - fetch audio nout = 0; - nout = thumbDV_decode( _dv_serial_handle, ambe_out, speech_out, DV_PACKET_SAMPLES ); + nout = thumbDV_unlinkAudio(speech_out); uint32 j = 0; for ( j = 0 ; j < nout ; j++ ) + { cbWriteShort( RX3_cb, speech_out[j] ); + } } } diff --git a/DSP_API/ThumbDV/thumbDV.c b/DSP_API/ThumbDV/thumbDV.c index 8ce1dcc..cffc060 100644 --- a/DSP_API/ThumbDV/thumbDV.c +++ b/DSP_API/ThumbDV/thumbDV.c @@ -212,6 +212,11 @@ static void _thumbDVDecodedList_LinkTail( BufferDescriptor buf_desc ) { pthread_rwlock_unlock( &_decoded_list_lock ); } +BOOL thumbDV_getDecodeListBuffering(void) +{ + return _decoded_buffering; +} + static void delay( unsigned int delay ) { struct timespec tim, tim2; tim.tv_sec = 0; @@ -548,30 +553,8 @@ int thumbDV_processSerial( FT_HANDLE handle ) return FT_OK; } -int thumbDV_decode( FT_HANDLE handle, unsigned char * packet_in, short * speech_out, uint8 bytes_in_packet ) { - uint32 i = 0; - - unsigned char full_packet[15] = {0}; - - if ( packet_in != NULL && handle != NULL ) { - full_packet[0] = 0x61; - full_packet[1] = 0x00; - full_packet[2] = 0x0B; - full_packet[3] = 0x01; - full_packet[4] = 0x01; - full_packet[5] = 0x48; - uint32 j = 0; - - for ( i = 0, j = 8 ; i < 9 ; i++ , j-- ) { - full_packet[i + 6] = packet_in[i]; - } - -// thumbDV_dump("Just AMBE", packet_in, 9); -// thumbDV_dump("Encoded packet:", full_packet, 15); - thumbDV_writeSerial( handle, full_packet, 15 ); - sem_post(&_read_sem); - } - +int thumbDV_unlinkAudio(short * speech_out) +{ int32 samples_returned = 0; BufferDescriptor desc = _thumbDVDecodedList_UnlinkHead(); uint32 samples_in_speech_packet = 0; @@ -607,6 +590,31 @@ int thumbDV_decode( FT_HANDLE handle, unsigned char * packet_in, short * speech_ return samples_returned; } +void thumbDV_decode( FT_HANDLE handle, unsigned char * packet_in, uint8 bytes_in_packet ) { + uint32 i = 0; + + unsigned char full_packet[15] = {0}; + + if ( packet_in != NULL && handle != NULL ) { + full_packet[0] = 0x61; + full_packet[1] = 0x00; + full_packet[2] = 0x0B; + full_packet[3] = 0x01; + full_packet[4] = 0x01; + full_packet[5] = 0x48; + uint32 j = 0; + + for ( i = 0, j = 8 ; i < 9 ; i++ , j-- ) { + full_packet[i + 6] = packet_in[i]; + } + +// thumbDV_dump("Just AMBE", packet_in, 9); +// thumbDV_dump("Encoded packet:", full_packet, 15); + thumbDV_writeSerial( handle, full_packet, 15 ); + sem_post(&_read_sem); + } +} + int thumbDV_encode( FT_HANDLE handle, short * speech_in, unsigned char * packet_out, uint8 num_of_samples ) { unsigned char packet[THUMBDV_MAX_PACKET_LEN]; @@ -776,6 +784,7 @@ static void * _thumbDV_readThread( void * param ) sem_wait(&_read_sem); ret = thumbDV_processSerial(handle); + //TODO Handle reconnection // if ( ret != FT_OK ) // { // fprintf( stderr, "ThumbDV: error from status, status=%d\n", ret ); diff --git a/DSP_API/ThumbDV/thumbDV.h b/DSP_API/ThumbDV/thumbDV.h index 53b68cd..763cfe6 100644 --- a/DSP_API/ThumbDV/thumbDV.h +++ b/DSP_API/ThumbDV/thumbDV.h @@ -43,8 +43,11 @@ FT_HANDLE thumbDV_openSerial( FT_DEVICE_LIST_INFO_NODE device ); int thumbDV_processSerial( FT_HANDLE handle ); int thumbDV_encode( FT_HANDLE handle, short * speech_in, unsigned char * packet_out, uint8 num_of_samples ); -int thumbDV_decode( FT_HANDLE handle, unsigned char * packet_in, short * speech_out, uint8 bytes_in_packet ); +void thumbDV_decode( FT_HANDLE handle, unsigned char * packet_in, uint8 bytes_in_packet ); void thumbDV_dump( char * text, unsigned char * data, unsigned int length ); void thumbDV_flushLists(void); + +BOOL thumbDV_getDecodeListBuffering(void); +int thumbDV_unlinkAudio(short * speech_out); #endif /* THUMBDV_THUMBDV_ */ From f750b5ce06ca33e0b64b222b147e3bc32a840661 Mon Sep 17 00:00:00 2001 From: Hayley Date: Fri, 21 Jun 2019 10:27:13 -0500 Subject: [PATCH 16/37] Working RX with acceptable delay on radio speakers. The RX is working now but the TX is not working at all --- DSP_API/ThumbDV/thumbDV.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/DSP_API/ThumbDV/thumbDV.c b/DSP_API/ThumbDV/thumbDV.c index cffc060..df32339 100644 --- a/DSP_API/ThumbDV/thumbDV.c +++ b/DSP_API/ThumbDV/thumbDV.c @@ -75,7 +75,7 @@ static pthread_t _read_thread; BOOL _readThreadAbort = FALSE; -static uint32 _buffering_target = 1; +static uint32 _buffering_target = 0; static pthread_rwlock_t _encoded_list_lock; static BufferDescriptor _encoded_root; @@ -185,7 +185,7 @@ static BufferDescriptor _thumbDVDecodedList_UnlinkHead( void ) { } } else { if ( !_decoded_buffering ) - output( "DecodedList now Buffering \n" ); + //output( "DecodedList now Buffering \n" ); _decoded_buffering = TRUE; } @@ -204,7 +204,7 @@ static void _thumbDVDecodedList_LinkTail( BufferDescriptor buf_desc ) { _decoded_count++; if ( _decoded_count > _buffering_target ) { - if ( _decoded_buffering ) output( "Decoded Buffering is now FALSE\n" ); + // if ( _decoded_buffering ) output( "Decoded Buffering is now FALSE\n" ); _decoded_buffering = FALSE; } @@ -667,7 +667,10 @@ int thumbDV_encode( FT_HANDLE handle, short * speech_in, unsigned char * packet_ } if ( handle != NULL ) + { thumbDV_writeSerial( handle, packet, length + AMBE3000_HEADER_LEN ); + sem_post(&_read_sem); + } int32 samples_returned = 0; BufferDescriptor desc = _thumbDVEncodedList_UnlinkHead(); From 342120e9f5613f0ac7c8a5eb8d9b0b33452015a8 Mon Sep 17 00:00:00 2001 From: Hayley Date: Fri, 21 Jun 2019 10:51:34 -0500 Subject: [PATCH 17/37] Working RX with somewhat acceptable TX We were able to fix the delay issue, there is still a bug in the TX where someof the data gets off sync and will cut out --- DSP_API/ThumbDV/thumbDV.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/DSP_API/ThumbDV/thumbDV.c b/DSP_API/ThumbDV/thumbDV.c index df32339..711d2d1 100644 --- a/DSP_API/ThumbDV/thumbDV.c +++ b/DSP_API/ThumbDV/thumbDV.c @@ -76,6 +76,7 @@ static pthread_t _read_thread; BOOL _readThreadAbort = FALSE; static uint32 _buffering_target = 0; +static uint32 _encode_buffering_target = 4; static pthread_rwlock_t _encoded_list_lock; static BufferDescriptor _encoded_root; @@ -141,7 +142,7 @@ static void _thumbDVEncodedList_LinkTail( BufferDescriptor buf_desc ) { _encoded_root->prev = buf_desc; _encoded_count++; - if ( _encoded_count > _buffering_target ) { + if ( _encoded_count > _encode_buffering_target ) { if ( _encoded_buffering ) output( "Encoded Buffering is now FALSE\n" ); _encoded_buffering = FALSE; From 98e721839d43a2833a063b3572b52be5ac2cf4fc Mon Sep 17 00:00:00 2001 From: Hayley Date: Fri, 21 Jun 2019 14:42:18 -0500 Subject: [PATCH 18/37] Took out read/write debug timing since it is done asynchronous now --- DSP_API/ThumbDV/thumbDV.c | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/DSP_API/ThumbDV/thumbDV.c b/DSP_API/ThumbDV/thumbDV.c index 711d2d1..f9e1e6e 100644 --- a/DSP_API/ThumbDV/thumbDV.c +++ b/DSP_API/ThumbDV/thumbDV.c @@ -290,43 +290,20 @@ static int thumbDV_writeSerial( FT_HANDLE handle , unsigned char * buffer, uint3 FT_STATUS status = FT_OK; DWORD written = 0; - static float min = 50000, max = 0; - static float avg = 0; - static uint32 count = 0; - - struct timespec time; - if ( handle != NULL ) { - clock_gettime(CLOCK_MONOTONIC, &time); status = FT_Write(handle, buffer, bytes, &written); if ( status != FT_OK || written != bytes ) { output( ANSI_RED "Could not write to serial port. status = %d\n", status ); return status; } - float ms_elapsed = msSince(time); - if ( ms_elapsed > max ) - max = ms_elapsed; - - if ( ms_elapsed < min ) - min = ms_elapsed; - - avg = (avg * .9 )+ (ms_elapsed * .1); } else { output( ANSI_RED "Could not write to serial port. Timeout\n" ANSI_WHITE ); } - if ( count++ % 100 == 0) - { - output("------------------------------------------- Min: %.1f Max: %.1f Avg: %.1f\n", min, max, avg); - min = 50000; - max = 0; - avg = 0; - } - return status; } From 6ca60bec26bcd86c964adb3b10a680647714e4e2 Mon Sep 17 00:00:00 2001 From: Hayley Date: Fri, 21 Jun 2019 15:49:04 -0500 Subject: [PATCH 19/37] Commented out the test audio pkt --- DSP_API/ThumbDV/thumbDV.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/DSP_API/ThumbDV/thumbDV.c b/DSP_API/ThumbDV/thumbDV.c index f9e1e6e..931841f 100644 --- a/DSP_API/ThumbDV/thumbDV.c +++ b/DSP_API/ThumbDV/thumbDV.c @@ -737,11 +737,6 @@ static void _connectSerial( FT_HANDLE * ftHandle ) thumbDV_writeSerial( *ftHandle, pkt_compand, 6 ); thumbDV_processSerial(*ftHandle); - unsigned char test_coded[15] = {0x61, 0x00 , 0x0B , 0x01 , 0x01 , 0x48 , 0x5E , 0x83 , 0x12 , 0x3B , 0x98 , 0x79 , 0xDE , 0x13 , 0x90}; - - thumbDV_writeSerial( *ftHandle, test_coded, 15 ); - thumbDV_processSerial(*ftHandle); - unsigned char pkt_fmt[7] = {0x61, 0x00, 0x3, 0x00, 0x15, 0x00, 0x00}; thumbDV_writeSerial( *ftHandle, pkt_fmt, 7 ); thumbDV_processSerial(*ftHandle); From c3dd1eafb7a2c5247c89896bb3a506f47ec6b3b6 Mon Sep 17 00:00:00 2001 From: Hayley Date: Mon, 24 Jun 2019 14:36:58 -0500 Subject: [PATCH 20/37] Set flow control for higher baud rate per FTDI reccommendation, set the flow control to XON-XOFF, with 0x11 = Xon and 0x13 Xoff, per example by FTDI --- DSP_API/ThumbDV/thumbDV.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DSP_API/ThumbDV/thumbDV.c b/DSP_API/ThumbDV/thumbDV.c index 931841f..d5cc148 100644 --- a/DSP_API/ThumbDV/thumbDV.c +++ b/DSP_API/ThumbDV/thumbDV.c @@ -362,7 +362,7 @@ FT_HANDLE thumbDV_openSerial( FT_DEVICE_LIST_INFO_NODE device ) FT_SetDataCharacteristics(handle, FT_BITS_8, FT_STOP_BITS_1, FT_PARITY_NONE); - FT_SetFlowControl(handle, FT_FLOW_NONE, 0, 0); + FT_SetFlowControl(handle, FT_FLOW_XON_XOFF, 0x11, 0x13); /* tty.c_cflag = ( tty.c_cflag & ~CSIZE ) | CS8; From ec35b5e3f1d588b5453e23330e43311d504b658b Mon Sep 17 00:00:00 2001 From: Hayley Date: Thu, 27 Jun 2019 14:11:31 -0500 Subject: [PATCH 21/37] Added some debugging tools for timeouts --- DSP_API/ThumbDV/thumbDV.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/DSP_API/ThumbDV/thumbDV.c b/DSP_API/ThumbDV/thumbDV.c index d5cc148..5e70220 100644 --- a/DSP_API/ThumbDV/thumbDV.c +++ b/DSP_API/ThumbDV/thumbDV.c @@ -341,7 +341,7 @@ FT_HANDLE thumbDV_openSerial( FT_DEVICE_LIST_INFO_NODE device ) FT_STATUS status = FT_OK; UCHAR latency = 5; - output("Trying to open serial port %s", device.SerialNumber); + output("Trying to open serial port %s /n", device.SerialNumber); status = FT_OpenEx(device.SerialNumber, FT_OPEN_BY_SERIAL_NUMBER, &handle); @@ -452,7 +452,7 @@ int thumbDV_processSerial( FT_HANDLE handle ) if ( us_slept > max_us_sleep ) { - output("TimeOut\n"); + output("TimeOut #1\n"); return FT_OTHER_ERROR; } @@ -487,7 +487,7 @@ int thumbDV_processSerial( FT_HANDLE handle ) if ( us_slept > max_us_sleep ) { - output("TimeOut\n"); + output("TimeOut #2 \n"); return FT_OTHER_ERROR; } From f5c08a0035d6e6207d00196a25468f2b947a4bdc Mon Sep 17 00:00:00 2001 From: Hayley Date: Fri, 28 Jun 2019 09:40:24 -0500 Subject: [PATCH 22/37] Added RTS/CTS flow control per FTDI representative reccommendation This does not fix the issue yet, however, the FTDI guy said we have to have this typw of flow control at this speed --- DSP_API/ThumbDV/thumbDV.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/DSP_API/ThumbDV/thumbDV.c b/DSP_API/ThumbDV/thumbDV.c index 5e70220..d66cf94 100644 --- a/DSP_API/ThumbDV/thumbDV.c +++ b/DSP_API/ThumbDV/thumbDV.c @@ -292,12 +292,14 @@ static int thumbDV_writeSerial( FT_HANDLE handle , unsigned char * buffer, uint3 if ( handle != NULL ) { + FT_SetRts(handle); status = FT_Write(handle, buffer, bytes, &written); if ( status != FT_OK || written != bytes ) { output( ANSI_RED "Could not write to serial port. status = %d\n", status ); return status; } + FT_ClrRts(handle); } else { @@ -341,7 +343,7 @@ FT_HANDLE thumbDV_openSerial( FT_DEVICE_LIST_INFO_NODE device ) FT_STATUS status = FT_OK; UCHAR latency = 5; - output("Trying to open serial port %s /n", device.SerialNumber); + output("Trying to open serial port %s \n", device.SerialNumber); status = FT_OpenEx(device.SerialNumber, FT_OPEN_BY_SERIAL_NUMBER, &handle); @@ -360,9 +362,8 @@ FT_HANDLE thumbDV_openSerial( FT_DEVICE_LIST_INFO_NODE device ) // Set read and write timeout to 2seconds */ FT_SetTimeouts(handle, 0, 0); - FT_SetDataCharacteristics(handle, FT_BITS_8, FT_STOP_BITS_1, FT_PARITY_NONE); - FT_SetFlowControl(handle, FT_FLOW_XON_XOFF, 0x11, 0x13); + FT_SetFlowControl(handle, FT_FLOW_RTS_CTS, 0, 0); /* tty.c_cflag = ( tty.c_cflag & ~CSIZE ) | CS8; From 03108e8a4c8282c617054051d5761db12b897eca Mon Sep 17 00:00:00 2001 From: Hayley Date: Mon, 1 Jul 2019 14:53:15 -0500 Subject: [PATCH 23/37] Commented out manualy trigger of RTS flow control pins --- DSP_API/ThumbDV/thumbDV.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DSP_API/ThumbDV/thumbDV.c b/DSP_API/ThumbDV/thumbDV.c index d66cf94..23e0594 100644 --- a/DSP_API/ThumbDV/thumbDV.c +++ b/DSP_API/ThumbDV/thumbDV.c @@ -292,14 +292,14 @@ static int thumbDV_writeSerial( FT_HANDLE handle , unsigned char * buffer, uint3 if ( handle != NULL ) { - FT_SetRts(handle); + //FT_SetRts(handle); status = FT_Write(handle, buffer, bytes, &written); if ( status != FT_OK || written != bytes ) { output( ANSI_RED "Could not write to serial port. status = %d\n", status ); return status; } - FT_ClrRts(handle); + //FT_ClrRts(handle); } else { From b3bb649501ff3b9f4868387e593a0209e93bcb24 Mon Sep 17 00:00:00 2001 From: Hayley Date: Tue, 9 Jul 2019 17:22:31 -0500 Subject: [PATCH 24/37] Initial Cmake file added --- DSP_API/CMakeLists.txt | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 DSP_API/CMakeLists.txt diff --git a/DSP_API/CMakeLists.txt b/DSP_API/CMakeLists.txt new file mode 100644 index 0000000..6c2dd46 --- /dev/null +++ b/DSP_API/CMakeLists.txt @@ -0,0 +1,41 @@ +cmake_minimum_required(VERSION 3.14) +project(thumbdv) + +set(CMAKE_C_STANDARD 11) +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_VERSION gnu) + +## Setting up the four types of builds we have +set(CMAKE_CONFIGURATION_TYPES "ThumbDV_Debug;ThumbDV_Release" CACHE STRING "" FORCE) + +include_directories(.) +include_directories(include) +include_directories(lib) +include_directories(SmartSDR_Interface) +include_directories(ThumbDV) + +add_executable(thumbdv + SmartSDR_Interface/cmd_basics.c + SmartSDR_Interface/cmd_engine.c + SmartSDR_Interface/discovery_client.c + SmartSDR_Interface/hal_buffer.c + SmartSDR_Interface/hal_listener.c + SmartSDR_Interface/hal_vita.c + SmartSDR_Interface/io_utils.c + SmartSDR_Interface/sched_waveform.c + SmartSDR_Interface/smartsdr_dsp_api.c + SmartSDR_Interface/status_processor.c + SmartSDR_Interface/traffic_cop.c + SmartSDR_Interface/utils.c + SmartSDR_Interface/vita_output.c + ThumbDV/bit_pattern_matcher.c + ThumbDV/dstar.c + ThumbDV/gmsk_modem.c + ThumbDV/slow_data.c + ThumbDV/thumbDV.c + circular_buffer.c + main.c + resampler.c) + +add_custom_command(TARGET thumbdv POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy $ /nfsroots/microburst/home/root) \ No newline at end of file From e7049021f188712f01a2679501bf237e5bad5a21 Mon Sep 17 00:00:00 2001 From: Hayley Date: Wed, 10 Jul 2019 12:29:16 -0500 Subject: [PATCH 25/37] Cmake file complete for build on ThumbDV_Release Next will be working on the other two builds --- DSP_API/CMakeLists.txt | 46 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/DSP_API/CMakeLists.txt b/DSP_API/CMakeLists.txt index 6c2dd46..57244a3 100644 --- a/DSP_API/CMakeLists.txt +++ b/DSP_API/CMakeLists.txt @@ -4,15 +4,18 @@ project(thumbdv) set(CMAKE_C_STANDARD 11) set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_VERSION gnu) +set(CMAKE_VERBOSE_MAKEFILE ON) ## Setting up the four types of builds we have set(CMAKE_CONFIGURATION_TYPES "ThumbDV_Debug;ThumbDV_Release" CACHE STRING "" FORCE) include_directories(.) include_directories(include) -include_directories(lib) -include_directories(SmartSDR_Interface) include_directories(ThumbDV) +include_directories(SmartSDR_Interface) + +link_directories(/src/flex/smoothlake/firmware/src/Firmware/lib + /src/flex/smartsdr-dsp/DSP_API/lib) add_executable(thumbdv SmartSDR_Interface/cmd_basics.c @@ -34,8 +37,43 @@ add_executable(thumbdv ThumbDV/slow_data.c ThumbDV/thumbDV.c circular_buffer.c - main.c - resampler.c) + resampler.c + main.c) + +if (CMAKE_BUILD_TYPE MATCHES ThumbDV_Release) + target_compile_options(thumbdv PRIVATE + -U_FORTIFY_SOURCE + -c + -fmessage-length=0 + -lpthread + -MMD + -MP) +endif() + +TARGET_LINK_LIBRARIES(thumbdv PRIVATE + ftd2xx + rt + pthread + dl + m) + +if (CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES ThumbDV_Debug) + target_compile_definitions(thumbdv PRIVATE + DEBUG) +endif() + +target_link_options(thumbdv INTERFACE + -Map=Firmware.map) + + +target_compile_options(thumbdv PRIVATE + -O3 + -mcpu=cortex-a8 + -mfpu=neon + -mfloat-abi=softfp + -ftree-vectorize + -Wall + ) add_custom_command(TARGET thumbdv POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $ /nfsroots/microburst/home/root) \ No newline at end of file From aa353e98173bc381c96a6224ed6193e3f9622870 Mon Sep 17 00:00:00 2001 From: Hayley Date: Wed, 10 Jul 2019 12:55:11 -0500 Subject: [PATCH 26/37] Added the ThumbDV_Debug configuration This configuration causes a stack smash error; however, this configuration does not build in Eclipse --- DSP_API/CMakeLists.txt | 42 +++++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/DSP_API/CMakeLists.txt b/DSP_API/CMakeLists.txt index 57244a3..80c2919 100644 --- a/DSP_API/CMakeLists.txt +++ b/DSP_API/CMakeLists.txt @@ -40,14 +40,45 @@ add_executable(thumbdv resampler.c main.c) + + if (CMAKE_BUILD_TYPE MATCHES ThumbDV_Release) + target_compile_options(thumbdv PRIVATE + -O3 + -mcpu=cortex-a8 + -mfpu=neon + -mfloat-abi=softfp + -ftree-vectorize + -Wall + ) target_compile_options(thumbdv PRIVATE -U_FORTIFY_SOURCE -c -fmessage-length=0 -lpthread -MMD - -MP) + -MP + -MF) +elseif(CMAKE_BUILD_TYPE MATCHES ThumbDV_Debug) + target_compile_options(thumbdv PRIVATE + -O0 + -mcpu=cortex-a8 + -mfpu=neon + -mfloat-abi=softfp + -ftree-vectorize + -Wall + -ggdb + -g3 + -fstack-protector-all + -funwind-tables + -c + -fmessage-length=0 + -lpthread + -MMD + -MP + -MF + ) + endif() TARGET_LINK_LIBRARIES(thumbdv PRIVATE @@ -66,14 +97,7 @@ target_link_options(thumbdv INTERFACE -Map=Firmware.map) -target_compile_options(thumbdv PRIVATE - -O3 - -mcpu=cortex-a8 - -mfpu=neon - -mfloat-abi=softfp - -ftree-vectorize - -Wall - ) + add_custom_command(TARGET thumbdv POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $ /nfsroots/microburst/home/root) \ No newline at end of file From 8fd933905ac3a6cc2f4ebebb732c1b62a6406b71 Mon Sep 17 00:00:00 2001 From: Hayley Date: Wed, 10 Jul 2019 13:01:56 -0500 Subject: [PATCH 27/37] Added the Debug configuration This configuration causes a stack smash error; however, this configuration does not build in Eclipse --- DSP_API/CMakeLists.txt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/DSP_API/CMakeLists.txt b/DSP_API/CMakeLists.txt index 80c2919..7a12ac7 100644 --- a/DSP_API/CMakeLists.txt +++ b/DSP_API/CMakeLists.txt @@ -78,6 +78,23 @@ elseif(CMAKE_BUILD_TYPE MATCHES ThumbDV_Debug) -MP -MF ) +elseif(CMAKE_BUILD_TYPE MATCHES Debug) + target_compile_options(thumbdv PRIVATE + -O0 + -ftree-vectorize + -g3 + -ggdb + -g3 + -fstack-protector-all + -funwind-tables + -Wall + -c + -fmessage-length=0 + -lpthread + -MMD + -MP + -MF + ) endif() From 1652d3002b0da6c98c397377a1b5fe2c3dbb0842 Mon Sep 17 00:00:00 2001 From: Hayley Date: Wed, 10 Jul 2019 13:07:21 -0500 Subject: [PATCH 28/37] Cleaned up the compile definitions if statements --- DSP_API/CMakeLists.txt | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/DSP_API/CMakeLists.txt b/DSP_API/CMakeLists.txt index 7a12ac7..6f71681 100644 --- a/DSP_API/CMakeLists.txt +++ b/DSP_API/CMakeLists.txt @@ -41,24 +41,23 @@ add_executable(thumbdv main.c) - if (CMAKE_BUILD_TYPE MATCHES ThumbDV_Release) target_compile_options(thumbdv PRIVATE + -U_FORTIFY_SOURCE -O3 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -ftree-vectorize -Wall - ) - target_compile_options(thumbdv PRIVATE - -U_FORTIFY_SOURCE -c -fmessage-length=0 -lpthread -MMD -MP - -MF) + -MF + ) + elseif(CMAKE_BUILD_TYPE MATCHES ThumbDV_Debug) target_compile_options(thumbdv PRIVATE -O0 @@ -78,6 +77,9 @@ elseif(CMAKE_BUILD_TYPE MATCHES ThumbDV_Debug) -MP -MF ) + target_compile_definitions(thumbdv PRIVATE + DEBUG) + elseif(CMAKE_BUILD_TYPE MATCHES Debug) target_compile_options(thumbdv PRIVATE -O0 @@ -95,7 +97,9 @@ elseif(CMAKE_BUILD_TYPE MATCHES Debug) -MP -MF ) - + target_compile_definitions(thumbdv PRIVATE + DEBUG) + endif() TARGET_LINK_LIBRARIES(thumbdv PRIVATE @@ -105,16 +109,10 @@ TARGET_LINK_LIBRARIES(thumbdv PRIVATE dl m) -if (CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES ThumbDV_Debug) - target_compile_definitions(thumbdv PRIVATE - DEBUG) -endif() target_link_options(thumbdv INTERFACE -Map=Firmware.map) - - add_custom_command(TARGET thumbdv POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $ /nfsroots/microburst/home/root) \ No newline at end of file From 3034d9ad2ab4f1ca7274fa77d38a89db8480484a Mon Sep 17 00:00:00 2001 From: Hayley Date: Wed, 10 Jul 2019 15:04:01 -0500 Subject: [PATCH 29/37] modifying gitignore for cmake --- .gitignore | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/.gitignore b/.gitignore index f0f4d72..5234d66 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,37 @@ bin Debug Release .settings + +# Clion files # +###################### +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# CMake +cmake-build-*/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# File-based project format +*.iws From cba41ca67a2c0d7178ee14b8be4f5492df80d9a3 Mon Sep 17 00:00:00 2001 From: Hayley Date: Wed, 10 Jul 2019 15:19:05 -0500 Subject: [PATCH 30/37] Adding .idea/ folder --- DSP_API/.idea/.name | 1 + DSP_API/.idea/DSP_API.iml | 2 + DSP_API/.idea/misc.xml | 7 ++ DSP_API/.idea/modules.xml | 8 ++ DSP_API/.idea/vcs.xml | 6 + DSP_API/.idea/workspace.xml | 239 ++++++++++++++++++++++++++++++++++++ 6 files changed, 263 insertions(+) create mode 100644 DSP_API/.idea/.name create mode 100644 DSP_API/.idea/DSP_API.iml create mode 100644 DSP_API/.idea/misc.xml create mode 100644 DSP_API/.idea/modules.xml create mode 100644 DSP_API/.idea/vcs.xml create mode 100644 DSP_API/.idea/workspace.xml diff --git a/DSP_API/.idea/.name b/DSP_API/.idea/.name new file mode 100644 index 0000000..39227f3 --- /dev/null +++ b/DSP_API/.idea/.name @@ -0,0 +1 @@ +thumbdv \ No newline at end of file diff --git a/DSP_API/.idea/DSP_API.iml b/DSP_API/.idea/DSP_API.iml new file mode 100644 index 0000000..f08604b --- /dev/null +++ b/DSP_API/.idea/DSP_API.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/DSP_API/.idea/misc.xml b/DSP_API/.idea/misc.xml new file mode 100644 index 0000000..8822db8 --- /dev/null +++ b/DSP_API/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/DSP_API/.idea/modules.xml b/DSP_API/.idea/modules.xml new file mode 100644 index 0000000..ed3c9ca --- /dev/null +++ b/DSP_API/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/DSP_API/.idea/vcs.xml b/DSP_API/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/DSP_API/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/DSP_API/.idea/workspace.xml b/DSP_API/.idea/workspace.xml new file mode 100644 index 0000000..f745567 --- /dev/null +++ b/DSP_API/.idea/workspace.xml @@ -0,0 +1,239 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + stac + terminated + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +