From 538d9beacdd1518ea00b633e88d217b9565e13e9 Mon Sep 17 00:00:00 2001 From: Steve Underwood Date: Wed, 17 Apr 2013 09:07:54 +0800 Subject: [PATCH] Some spandsp tweaks after studying a klocwork report --- .../src/spandsp/private/t30_dis_dtc_dcs_bits.h | 9 ++++++++- libs/spandsp/src/v27ter_rx.c | 1 + libs/spandsp/src/v29rx.c | 1 + libs/spandsp/src/v42.c | 8 ++++---- libs/spandsp/src/v8.c | 16 ++++++++-------- 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/libs/spandsp/src/spandsp/private/t30_dis_dtc_dcs_bits.h b/libs/spandsp/src/spandsp/private/t30_dis_dtc_dcs_bits.h index 52e0ac8dd2..229fafab35 100644 --- a/libs/spandsp/src/spandsp/private/t30_dis_dtc_dcs_bits.h +++ b/libs/spandsp/src/spandsp/private/t30_dis_dtc_dcs_bits.h @@ -93,8 +93,15 @@ #define T30_DCS_BIT_UNLIMITED_LENGTH 20 /* Bits 21, 22, 23 - min scan line time */ - /* When ISDN mode is used, in DIS/DTC bits 21 to 23 shall be set to "1". */ +#define T30_DIS_BIT_MIN_SCAN_LINE_TIME_CAPABILITY_1 21 +#define T30_DCS_BIT_MIN_SCAN_LINE_TIME_1 21 +#define T30_DIS_BIT_MIN_SCAN_LINE_TIME_CAPABILITY_2 22 +#define T30_DCS_BIT_MIN_SCAN_LINE_TIME_2 22 +#define T30_DIS_BIT_MIN_SCAN_LINE_TIME_CAPABILITY_3 23 +#define T30_DCS_BIT_MIN_SCAN_LINE_TIME_3 23 +#define T30_DIS_BIT_MIN_SCAN_LINE_TIME_CAPABILITY_4 24 +#define T30_DCS_BIT_MIN_SCAN_LINE_TIME_4 24 /* Bit 24 is an extension bit */ diff --git a/libs/spandsp/src/v27ter_rx.c b/libs/spandsp/src/v27ter_rx.c index 459163a997..5dabe1c6f0 100644 --- a/libs/spandsp/src/v27ter_rx.c +++ b/libs/spandsp/src/v27ter_rx.c @@ -1033,6 +1033,7 @@ SPAN_DECLARE(int) v27ter_rx_restart(v27ter_rx_state_t *s, int bit_rate, int old_ s->low_samples = 0; s->carrier_drop_pending = FALSE; #endif + vec_zeroi32(s->diff_angles, 16); s->carrier_phase = 0; #if defined(SPANDSP_USE_FIXED_POINT) diff --git a/libs/spandsp/src/v29rx.c b/libs/spandsp/src/v29rx.c index f875966056..3bb476726d 100644 --- a/libs/spandsp/src/v29rx.c +++ b/libs/spandsp/src/v29rx.c @@ -1085,6 +1085,7 @@ SPAN_DECLARE(int) v29_rx_restart(v29_rx_state_t *s, int bit_rate, int old_train) s->carrier_drop_pending = FALSE; #endif s->old_train = old_train; + vec_zeroi32(s->diff_angles, 16); s->carrier_phase = 0; diff --git a/libs/spandsp/src/v42.c b/libs/spandsp/src/v42.c index 3830f5c53a..29255eea07 100644 --- a/libs/spandsp/src/v42.c +++ b/libs/spandsp/src/v42.c @@ -305,9 +305,9 @@ static int receive_xid(v42_state_t *ss, const uint8_t *frame, int len) param_id = buf[0]; param_len = buf[1]; buf += 2; - group_len -= (2 + param_len); - if (group_len < 0) + if (group_len < (2 + param_len)) break; + group_len -= (2 + param_len); switch (param_id) { case PI_HDLC_OPTIONAL_FUNCTIONS: @@ -347,9 +347,9 @@ static int receive_xid(v42_state_t *ss, const uint8_t *frame, int len) param_id = buf[0]; param_len = buf[1]; buf += 2; - group_len -= (2 + param_len); - if (group_len < 0) + if (group_len < 2 + param_len) break; + group_len -= (2 + param_len); switch (param_id) { case PI_PARAMETER_SET_ID: diff --git a/libs/spandsp/src/v8.c b/libs/spandsp/src/v8.c index e04a1eba9c..3cf63ceacb 100644 --- a/libs/spandsp/src/v8.c +++ b/libs/spandsp/src/v8.c @@ -190,15 +190,15 @@ SPAN_DECLARE(const char *) v8_pstn_access_to_str(int pstn_access) return "Calling modem on cellular"; case V8_PSTN_ACCESS_ANSWER_DCE_CELLULAR: return "Answering modem on cellular"; - case V8_PSTN_ACCESS_ANSWER_DCE_CELLULAR | V8_PSTN_ACCESS_CALL_DCE_CELLULAR: + case (V8_PSTN_ACCESS_ANSWER_DCE_CELLULAR | V8_PSTN_ACCESS_CALL_DCE_CELLULAR): return "Answering and calling modems on cellular"; case V8_PSTN_ACCESS_DCE_ON_DIGITAL: return "DCE on digital"; - case V8_PSTN_ACCESS_DCE_ON_DIGITAL | V8_PSTN_ACCESS_CALL_DCE_CELLULAR: + case (V8_PSTN_ACCESS_DCE_ON_DIGITAL | V8_PSTN_ACCESS_CALL_DCE_CELLULAR): return "DCE on digital, and calling modem on cellular"; - case V8_PSTN_ACCESS_DCE_ON_DIGITAL | V8_PSTN_ACCESS_ANSWER_DCE_CELLULAR: + case (V8_PSTN_ACCESS_DCE_ON_DIGITAL | V8_PSTN_ACCESS_ANSWER_DCE_CELLULAR): return "DCE on digital, answering modem on cellular"; - case V8_PSTN_ACCESS_DCE_ON_DIGITAL | V8_PSTN_ACCESS_ANSWER_DCE_CELLULAR | V8_PSTN_ACCESS_CALL_DCE_CELLULAR: + case (V8_PSTN_ACCESS_DCE_ON_DIGITAL | V8_PSTN_ACCESS_ANSWER_DCE_CELLULAR | V8_PSTN_ACCESS_CALL_DCE_CELLULAR): return "DCE on digital, and answering and calling modems on cellular"; } return "PSTN access unknown"; @@ -226,15 +226,15 @@ SPAN_DECLARE(const char *) v8_pcm_modem_availability_to_str(int pcm_modem_availa return "V.90/V.92 analogue available"; case V8_PSTN_PCM_MODEM_V90_V92_DIGITAL: return "V.90/V.92 digital available"; - case V8_PSTN_PCM_MODEM_V90_V92_DIGITAL | V8_PSTN_PCM_MODEM_V90_V92_ANALOGUE: + case (V8_PSTN_PCM_MODEM_V90_V92_DIGITAL | V8_PSTN_PCM_MODEM_V90_V92_ANALOGUE): return "V.90/V.92 digital/analogue available"; case V8_PSTN_PCM_MODEM_V91: return "V.91 available"; - case V8_PSTN_PCM_MODEM_V91 | V8_PSTN_PCM_MODEM_V90_V92_ANALOGUE: + case (V8_PSTN_PCM_MODEM_V91 | V8_PSTN_PCM_MODEM_V90_V92_ANALOGUE): return "V.91 and V.90/V.92 analogue available"; - case V8_PSTN_PCM_MODEM_V91 | V8_PSTN_PCM_MODEM_V90_V92_DIGITAL: + case (V8_PSTN_PCM_MODEM_V91 | V8_PSTN_PCM_MODEM_V90_V92_DIGITAL): return "V.91 and V.90/V.92 digital available"; - case V8_PSTN_PCM_MODEM_V91 | V8_PSTN_PCM_MODEM_V90_V92_DIGITAL | V8_PSTN_PCM_MODEM_V90_V92_ANALOGUE: + case (V8_PSTN_PCM_MODEM_V91 | V8_PSTN_PCM_MODEM_V90_V92_DIGITAL | V8_PSTN_PCM_MODEM_V90_V92_ANALOGUE): return "V.91 and V.90/V.92 digital/analogue available"; } return "PCM availability unknown";