Set the default Wanpipe TDM circuit idle code according to the default G.711 law.
Added ability to set the circuit number as idle code, helps in identifying problems. git-svn-id: http://yate.null.ro/svn/yate/trunk@3414 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
parent
ab98b4dc89
commit
2492d316de
|
@ -11,10 +11,11 @@
|
||||||
; This parameter can be overridden in group sections
|
; This parameter can be overridden in group sections
|
||||||
;bitswap=enable
|
;bitswap=enable
|
||||||
|
|
||||||
; idlevalue: integer: The value to send for unused voice data channel
|
; idlevalue: integer: The value to send for unused voice data channels
|
||||||
; Interval: 0..255. Default value: 255
|
; Interval: 0..255. Default value: 255 (0xFF) for T1, 213 (0xD5) for E1 and BRI
|
||||||
|
; A value of -1 sets the circuit code as idle value (for circuit identification)
|
||||||
; This parameter can be overridden in group sections
|
; This parameter can be overridden in group sections
|
||||||
;idlevalue=255
|
;idlevalue=
|
||||||
|
|
||||||
; buflen: integer: The length of the buffers used by the data sources and consumers
|
; buflen: integer: The length of the buffers used by the data sources and consumers
|
||||||
; Data consumers' buffers will be twice this value
|
; Data consumers' buffers will be twice this value
|
||||||
|
|
|
@ -396,7 +396,7 @@ private:
|
||||||
unsigned int m_count; // Circuit count
|
unsigned int m_count; // Circuit count
|
||||||
unsigned int m_first; // First circuit code
|
unsigned int m_first; // First circuit code
|
||||||
unsigned int m_samples; // Sample count
|
unsigned int m_samples; // Sample count
|
||||||
unsigned char m_noData; // Value to send when no data
|
unsigned int m_noData; // Value to send on idle channels
|
||||||
unsigned int m_buflen; // Buffer length for sources/consumers
|
unsigned int m_buflen; // Buffer length for sources/consumers
|
||||||
// Used for data processing
|
// Used for data processing
|
||||||
WpCircuit** m_circuits; // The circuits belonging to this span
|
WpCircuit** m_circuits; // The circuits belonging to this span
|
||||||
|
@ -1420,6 +1420,7 @@ bool WpSpan::init(const NamedList& config, const NamedList& defaults, NamedList&
|
||||||
String cics = params.getValue("voicechans",config.getValue("voicechans"));
|
String cics = params.getValue("voicechans",config.getValue("voicechans"));
|
||||||
unsigned int offs = params.getIntValue("offset",config.getIntValue("offset",0));
|
unsigned int offs = params.getIntValue("offset",config.getIntValue("offset",0));
|
||||||
m_samples = params.getIntValue("samples",config.getIntValue("samples"));
|
m_samples = params.getIntValue("samples",config.getIntValue("samples"));
|
||||||
|
int idleValue = 0xd5; // A-Law idle code
|
||||||
if (type.null())
|
if (type.null())
|
||||||
type = "E1";
|
type = "E1";
|
||||||
if (type == "E1") {
|
if (type == "E1") {
|
||||||
|
@ -1431,6 +1432,7 @@ bool WpSpan::init(const NamedList& config, const NamedList& defaults, NamedList&
|
||||||
m_samples = 50;
|
m_samples = 50;
|
||||||
}
|
}
|
||||||
else if (type == "T1") {
|
else if (type == "T1") {
|
||||||
|
idleValue = 0xff; // mu-Law idle code
|
||||||
m_chans = 24;
|
m_chans = 24;
|
||||||
m_increment = 24;
|
m_increment = 24;
|
||||||
if (cics.null())
|
if (cics.null())
|
||||||
|
@ -1455,7 +1457,7 @@ bool WpSpan::init(const NamedList& config, const NamedList& defaults, NamedList&
|
||||||
|
|
||||||
// Other data
|
// Other data
|
||||||
m_swap = defaults.getBoolValue("bitswap",true);
|
m_swap = defaults.getBoolValue("bitswap",true);
|
||||||
m_noData = defaults.getIntValue("idlevalue",0xff);
|
m_noData = defaults.getIntValue("idlevalue",idleValue);
|
||||||
m_buflen = defaults.getIntValue("buflen",160);
|
m_buflen = defaults.getIntValue("buflen",160);
|
||||||
m_swap = params.getBoolValue("bitswap",config.getBoolValue("bitswap",m_swap));
|
m_swap = params.getBoolValue("bitswap",config.getBoolValue("bitswap",m_swap));
|
||||||
m_noData = params.getIntValue("idlevalue",config.getIntValue("idlevalue",m_noData));
|
m_noData = params.getIntValue("idlevalue",config.getIntValue("idlevalue",m_noData));
|
||||||
|
@ -1491,7 +1493,10 @@ bool WpSpan::init(const NamedList& config, const NamedList& defaults, NamedList&
|
||||||
s << " device=" << m_socket.device();
|
s << " device=" << m_socket.device();
|
||||||
s << " samples=" << m_samples;
|
s << " samples=" << m_samples;
|
||||||
s << " bitswap=" << String::boolText(m_swap);
|
s << " bitswap=" << String::boolText(m_swap);
|
||||||
s << " idlevalue=" << (unsigned int)m_noData;
|
if (m_noData < 256)
|
||||||
|
s << " idlevalue=" << m_noData;
|
||||||
|
else
|
||||||
|
s << " idlevalue=(circuit)";
|
||||||
s << " buflen=" << (unsigned int)m_buflen;
|
s << " buflen=" << (unsigned int)m_buflen;
|
||||||
s << " echocancel=" << String::boolText(m_echoCancel);
|
s << " echocancel=" << String::boolText(m_echoCancel);
|
||||||
s << " dtmfdetect=" << String::boolText(m_dtmfDetect);
|
s << " dtmfdetect=" << String::boolText(m_dtmfDetect);
|
||||||
|
@ -1600,10 +1605,10 @@ void WpSpan::run()
|
||||||
"WpSpan('%s'). Received %u samples. Expected %u [%p]",
|
"WpSpan('%s'). Received %u samples. Expected %u [%p]",
|
||||||
id().safe(),samples,m_samples,this);
|
id().safe(),samples,m_samples,this);
|
||||||
if (m_canSend) {
|
if (m_canSend) {
|
||||||
unsigned char noData = swap(m_noData);
|
|
||||||
for (unsigned int i = 0; i < m_count; i++) {
|
for (unsigned int i = 0; i < m_count; i++) {
|
||||||
unsigned char* dat = m_buffer + WP_HEADER + i;
|
|
||||||
WpCircuit* circuit = m_circuits[i];
|
WpCircuit* circuit = m_circuits[i];
|
||||||
|
unsigned char noData = swap((m_noData < 256 || !circuit) ? m_noData : circuit->code() & 0xff);
|
||||||
|
unsigned char* dat = m_buffer + WP_HEADER + i;
|
||||||
WpSource* s = (circuit && circuit->validSource()) ? circuit->source() : 0;
|
WpSource* s = (circuit && circuit->validSource()) ? circuit->source() : 0;
|
||||||
WpConsumer* c = (circuit && circuit->validConsumer()) ? circuit->consumer() : 0;
|
WpConsumer* c = (circuit && circuit->validConsumer()) ? circuit->consumer() : 0;
|
||||||
Lock lock(c);
|
Lock lock(c);
|
||||||
|
|
Loading…
Reference in New Issue