diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b990605..5643bda 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -84,7 +84,6 @@ list(APPEND direwolf_SOURCES serial_port.c pfilter.c ptt.c - rdq.c recv.c rrbb.c server.c diff --git a/src/atest.c b/src/atest.c index d68764b..9745418 100644 --- a/src/atest.c +++ b/src/atest.c @@ -697,27 +697,6 @@ int audio_get (int a) -/* - * Rather than queuing up frames with bad FCS, - * try to fix them immediately. - */ - -void rdq_append (rrbb_t rrbb) -{ - int chan, subchan, slice; - alevel_t alevel; - - - chan = rrbb_get_chan(rrbb); - subchan = rrbb_get_subchan(rrbb); - slice = rrbb_get_slice(rrbb); - alevel = rrbb_get_audio_level(rrbb); - - hdlc_rec2_try_to_fix_later (rrbb, chan, subchan, slice, alevel); - rrbb_delete (rrbb); -} - - /* * This is called when we have a good frame. */ diff --git a/src/hdlc_rec2.c b/src/hdlc_rec2.c index a4764f5..3c90eb2 100644 --- a/src/hdlc_rec2.c +++ b/src/hdlc_rec2.c @@ -98,7 +98,6 @@ #include "textcolor.h" #include "ax25_pad.h" #include "rrbb.h" -#include "rdq.h" #include "multi_modem.h" #include "dtime_now.h" #include "demod_9600.h" /* for descramble() */ diff --git a/src/rdq.c b/src/rdq.c deleted file mode 100644 index 6a47cb8..0000000 --- a/src/rdq.c +++ /dev/null @@ -1,372 +0,0 @@ -// -// This file is part of Dire Wolf, an amateur radio packet TNC. -// -// Copyright (C) 2011, 2012, 2015 John Langner, WB2OSZ -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . -// - - - -/*------------------------------------------------------------------ - * - * Module: rdq.c - * - * Purpose: Retry later decode queue for frames with bad FCS. - * - * Description: - * - *---------------------------------------------------------------*/ - -#include "direwolf.h" - -#include -#include -#include -#include -#include - -#include "ax25_pad.h" -#include "textcolor.h" -#include "audio.h" -#include "rdq.h" -#include "dedupe.h" - - - -static rrbb_t queue_head = NULL; /* Head of linked list for queue. */ -static int rdq_len = 0; -#define RDQ_UNDERRUN_THRESHOLD 30 /* A warning will be emitted if there are still this number of packets to decode in the queue and we try to add another one */ - - - -static dw_mutex_t rdq_mutex; /* Critical section for updating queues. */ - - -#if __WIN32__ - -static HANDLE wake_up_event; /* Notify try decode again thread when queue not empty. */ - -#else - -static pthread_cond_t wake_up_cond; /* Notify try decode again thread when queue not empty. */ - -static dw_mutex_t wake_up_mutex; /* Required by cond_wait. */ - -#endif - - -/*------------------------------------------------------------------- - * - * Name: rdq_init - * - * Purpose: Initialize the receive decode again queue. - * - * Inputs: None. Only single queue for all channels. - * - * Outputs: - * - * Description: Initialize the queue to be empty and set up other - * mechanisms for sharing it between different threads. - * - *--------------------------------------------------------------------*/ - - -void rdq_init (void) -{ - //int c, p; -#if __WIN32__ -#else - int err; -#endif - -#if DEBUG - text_color_set(DW_COLOR_DEBUG); - dw_printf ("rdq_init ( )\n"); - dw_printf ("rdq_init: pthread_mutex_init...\n"); -#endif - - dw_mutex_init (&rdq_mutex); - -#if __WIN32__ -#else - dw_mutex_init (&wake_up_mutex); -#endif - - - -#if DEBUG - text_color_set(DW_COLOR_DEBUG); - dw_printf ("rdq_init: pthread_cond_init...\n"); -#endif - -#if __WIN32__ - - wake_up_event = CreateEvent (NULL, 0, 0, NULL); - - if (wake_up_event == NULL) { - text_color_set(DW_COLOR_ERROR); - dw_printf ("rdq_init: pthread_cond_init: can't create decode wake up event"); - exit (1); - } - -#else - err = pthread_cond_init (&wake_up_cond, NULL); - - -#if DEBUG - text_color_set(DW_COLOR_DEBUG); - dw_printf ("rdq_init: pthread_cond_init returns %d\n", err); -#endif - - - if (err != 0) { - text_color_set(DW_COLOR_ERROR); - dw_printf ("rdq_init: pthread_cond_init err=%d", err); - perror (""); - exit (1); - } -#endif - - -} /* end rdq_init */ - - -/*------------------------------------------------------------------- - * - * Name: rdq_append - * - * Purpose: Add a packet to the end of the queue. - * - * Inputs: pp - Address of raw received bit buffer. - * Caller should NOT make any references to - * it after this point because it could - * be deleted at any time. - * - * Outputs: - * - * Description: Add buffer to end of linked list. - * Signal the decode thread if the queue was formerly empty. - * - *--------------------------------------------------------------------*/ - -void rdq_append (rrbb_t rrbb) -{ - //int was_empty; - rrbb_t plast; - rrbb_t pnext; -#ifndef __WIN32__ - int err; -#endif - - -#if DEBUG - text_color_set(DW_COLOR_DEBUG); - dw_printf ("rdq_append (rrbb=%p)\n", rrbb); - dw_printf ("rdq_append: enter critical section\n"); -#endif - - - dw_mutex_lock (&rdq_mutex); - - //was_empty = 1; - //if (queue_head != NULL) { - //was_empty = 0; - //} - if (queue_head == NULL) { - queue_head = rrbb; - } - else { - plast = queue_head; - while ((pnext = rrbb_get_nextp(plast)) != NULL) { - plast = pnext; - } - rrbb_set_nextp (plast, rrbb); - } - rdq_len++; - if (rdq_len > RDQ_UNDERRUN_THRESHOLD) { - text_color_set(DW_COLOR_ERROR); - dw_printf ("Too many packets to decode (%d) in the queue, decrease the FIX_BITS value\n", rdq_len); - } - - dw_mutex_unlock (&rdq_mutex); - -#if DEBUG - text_color_set(DW_COLOR_DEBUG); - dw_printf ("rdq_append: left critical section\n"); - dw_printf ("rdq_append (): about to wake up retry decode thread.\n"); -#endif - -#if __WIN32__ - SetEvent (wake_up_event); -#else - dw_mutex_lock (&wake_up_mutex); - - err = pthread_cond_signal (&wake_up_cond); - if (err != 0) { - text_color_set(DW_COLOR_ERROR); - dw_printf ("rdq_append: pthread_cond_signal err=%d", err); - perror (""); - exit (1); - } - - dw_mutex_unlock (&wake_up_mutex); -#endif - -} - - -/*------------------------------------------------------------------- - * - * Name: rdq_wait_while_empty - * - * Purpose: Sleep while the queue is empty rather than - * polling periodically. - * - * Inputs: None. - * - *--------------------------------------------------------------------*/ - - -void rdq_wait_while_empty (void) -{ - int is_empty; -#ifndef __WIN32__ - int err; -#endif - - -#if DEBUG - text_color_set(DW_COLOR_DEBUG); - dw_printf ("rdq_wait_while_empty () : enter critical section\n"); -#endif - - dw_mutex_lock (&rdq_mutex); - -#if DEBUG - //text_color_set(DW_COLOR_DEBUG); - //dw_printf ("rdq_wait_while_empty (): after pthread_mutex_lock\n"); -#endif - is_empty = 1; - if (queue_head != NULL) - is_empty = 0; - - dw_mutex_unlock (&rdq_mutex); - -#if DEBUG - text_color_set(DW_COLOR_DEBUG); - dw_printf ("rdq_wait_while_empty () : left critical section\n"); -#endif - -#if DEBUG - text_color_set(DW_COLOR_DEBUG); - dw_printf ("rdq_wait_while_empty (): is_empty = %d\n", is_empty); -#endif - - if (is_empty) { -#if DEBUG - text_color_set(DW_COLOR_DEBUG); - dw_printf ("rdq_wait_while_empty (): SLEEP - about to call cond wait\n"); -#endif - - -#if __WIN32__ - WaitForSingleObject (wake_up_event, INFINITE); - -#if DEBUG - text_color_set(DW_COLOR_DEBUG); - dw_printf ("rdq_wait_while_empty (): returned from wait\n"); -#endif - -#else - dw_mutex_lock (&wake_up_mutex); - - err = pthread_cond_wait (&wake_up_cond, &wake_up_mutex); - -#if DEBUG - text_color_set(DW_COLOR_DEBUG); - dw_printf ("rdq_wait_while_empty (): WOKE UP - returned from cond wait, err = %d\n", err); -#endif - - if (err != 0) { - text_color_set(DW_COLOR_ERROR); - dw_printf ("rdq_wait_while_empty: pthread_cond_wait err=%d", err); - perror (""); - exit (1); - } - - dw_mutex_unlock (&wake_up_mutex); - -#endif - } - - -#if DEBUG - text_color_set(DW_COLOR_DEBUG); - dw_printf ("rdq_wait_while_empty () returns (%d buffers remaining)\n", rdq_len); -#endif - -} - - -/*------------------------------------------------------------------- - * - * Name: rdq_remove - * - * Purpose: Remove raw bit buffer from the head of the queue. - * - * Inputs: none - * - * Returns: Pointer to rrbb object. - * Caller should destroy it with rrbb_delete when finished with it. - * - *--------------------------------------------------------------------*/ - -rrbb_t rdq_remove (void) -{ - - rrbb_t result_p; - - -#if DEBUG - text_color_set(DW_COLOR_DEBUG); - dw_printf ("rdq_remove() enter critical section\n"); -#endif - - dw_mutex_lock (&rdq_mutex); - - rdq_len--; -#if DEBUG - dw_printf ("-rdq_len: %d\n", rdq_len); -#endif - if (queue_head == NULL) { - result_p = NULL; - } - else { - - result_p = queue_head; - queue_head = rrbb_get_nextp(result_p); - rrbb_set_nextp (result_p, NULL); - } - - dw_mutex_unlock (&rdq_mutex); - -#if DEBUG - text_color_set(DW_COLOR_DEBUG); - dw_printf ("rdq_remove() leave critical section, returns %p\n", result_p); -#endif - return (result_p); -} - -/* end rdq.c */ diff --git a/src/rdq.h b/src/rdq.h deleted file mode 100644 index b0e430c..0000000 --- a/src/rdq.h +++ /dev/null @@ -1,28 +0,0 @@ - -/*------------------------------------------------------------------ - * - * Module: rdq.h - * - * Purpose: Retry decode queue - Hold raw received frames with errors - * for retrying the decoding later. - * - *---------------------------------------------------------------*/ - -#ifndef RDQ_H -#define RDQ_H 1 - -#include "rrbb.h" -//#include "audio.h" - -void rdq_init (void); - -void rdq_append (rrbb_t rrbb); - -void rdq_wait_while_empty (void); - -rrbb_t rdq_remove (void); - - -#endif - -/* end rdq.h */ diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 3562dd0..d3db28b 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -570,7 +570,6 @@ if(OPTIONAL_TEST) ${CUSTOM_SRC_DIR}/demod_afsk.c ${CUSTOM_SRC_DIR}/demod_psk.c ${CUSTOM_SRC_DIR}/demod_9600.c - ${CUSTOM_SRC_DIR}/rdq.c ${CUSTOM_SRC_DIR}/server.c ${CUSTOM_SRC_DIR}/morse.c ${CUSTOM_SRC_DIR}/dtmf.c