diff --git a/include/dsd.h b/include/dsd.h index 6eb84f1..ea21a6d 100644 --- a/include/dsd.h +++ b/include/dsd.h @@ -1040,6 +1040,7 @@ void CNXDNConvolution_start(void); void CNXDNConvolution_decode(uint8_t s0, uint8_t s1); void CNXDNConvolution_chainback(unsigned char* out, unsigned int nBits); void CNXDNConvolution_encode(const unsigned char* in, unsigned char* out, unsigned int nBits); +void CNXDNConvolution_init(); //keeping these void NXDN_SACCH_Full_decode(dsd_opts * opts, dsd_state * state); diff --git a/src/dsd_main.c b/src/dsd_main.c index 85e7ccc..d57aaf6 100644 --- a/src/dsd_main.c +++ b/src/dsd_main.c @@ -1559,6 +1559,7 @@ main (int argc, char **argv) initState (&state); InitAllFecFunction(); + // CNXDNConvolution_init(); //seems to function better without initting it exitflag = 0; diff --git a/src/nxdn_convolution.c b/src/nxdn_convolution.c index 5a74413..89269d7 100644 --- a/src/nxdn_convolution.c +++ b/src/nxdn_convolution.c @@ -45,17 +45,16 @@ static const uint8_t CNXDNConvolution_BRANCH_TABLE1[8] = {0U, 0U, 0U, 0U, 2U, 2U static const uint8_t CNXDNConvolution_BRANCH_TABLE2[8] = {0U, 2U, 2U, 0U, 0U, 2U, 2U, 0U}; static const unsigned int CNXDNConvolution_NUM_OF_STATES_D2 = 8U; -//static const unsigned int CNXDNConvolution_NUM_OF_STATES = 16U; static const uint32_t CNXDNConvolution_M = 4U; static const unsigned int CNXDNConvolution_K = 5U; //NOTE: -static uint16_t m_metrics1[16U]; -static uint16_t m_metrics2[16U]; -static uint64_t m_decisions[300U]; //300 -static uint16_t * m_oldMetrics = NULL; -static uint16_t * m_newMetrics = NULL; -static uint64_t * m_dp = NULL; +uint16_t m_metrics1[16]; +uint16_t m_metrics2[16]; +uint64_t m_decisions[8*300]; +uint16_t * m_oldMetrics = NULL; +uint16_t * m_newMetrics = NULL; +uint64_t * m_dp = NULL; /* Functions ----------------------------------------------------------------*/ @@ -163,10 +162,12 @@ void CNXDNConvolution_start(void) m_newMetrics = m_metrics2; m_dp = m_decisions; - memset(m_metrics1, 0x00U, sizeof(m_metrics1)); - memset(m_metrics2, 0x00U, sizeof(m_metrics2)); - memset(m_decisions, 0x00U, sizeof(m_decisions)); - - for (int x = 0; x < 4; x++) CNXDNConvolution_decode(0U, 0U); +} + +void CNXDNConvolution_init() +{ + memset(m_metrics1, 0xFF, 16*sizeof(uint16_t)); + memset(m_metrics2, 0xFF, 16*sizeof(uint16_t)); + // memset(m_decisions,0xFF, 8*300*sizeof(uint64_t)); }