Callbacks are invoked from ftdm_span_start/_stop().
I/O is started before SIG and shut down in reverse order.
This is needed for ftmod_misdn, to move the mISDN message handling
into a separate thread (solving the mISDN socket vs. FreeTDM API issues).
With these callbacks, the I/O thread can be started after the span I/O configuration
has been (successfully) completed and stopped before destroying the span.
NOTE: Both SIG and I/O callbacks are called with the span mutex locked,
so threads created or destroyed synchronously in either of the custom
start/stop functions, can not use ftdm_span_*() functions that lock
the span mutex (e.g. ftdm_span_get_channel_count()).
Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
The len variable can, in certain situations (large burst of incoming non-SLIN audio),
exceed the size of the on-stack frame buffer, which causes ftdm_buffer_read_loop() to
overwrite the dt_buffer pointer.
Use ftdm_min() to make sure len (after conversion to SLIN units) isn't larger
than the frame buffer size.
Also adds are couple more code comments.
Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
Resolves OPENZAP-189
Fixes:
src/ftmod/ftmod_isdn/ftmod_isdn.c: In function 'ftdm_isdn_931_34':
src/ftmod/ftmod_isdn/ftmod_isdn.c:902:21: error: variable 'status' set but not used [-Werror=unused-but-set-variable]
Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
. added called party number INN variable
ie. <action application="export" data="freetdm_ss7_cld_inn=0"/>
. added multiple variables to set User Service Information IE
variables are :
ss7_iam_usi_trans_cap
ss7_iam_usi_code_standard
ss7_iam_usi_trans_mode
ss7_iam_usi_trans_rate_0
ss7_iam_usi_trans_rate_1
ss7_iam_usi_layer1_ident
ss7_iam_usi_layer1_prot
ss7_iam_usi_layer2_ident
ss7_iam_usi_layer2_prot
ss7_iam_usi_layer3_ident
ss7_iam_usi_layer3_prot
ss7_iam_usi_chan_struct
ss7_iam_usi_config
ss7_iam_usi_establish
ss7_iam_usi_symmetry
ss7_iam_usi_rate_multiplier
. ss7_iam_usi_trans_cap is a string variable, the others are all integers
. ss7_iam_usi_trans_cap has options of :
- SPEECH
- UNRESTRICTED
- RESTRICTED
- 31KHZ
- 7KHZ
- 15KHZ
- VIDEO
default value is SPEECH, if the parameter is wrong, set to SPEECH. If not
set, this field is not present
Fixes:
src/ftmod/ftmod_misdn/ftmod_misdn.c: In function 'misdn_handle_mph_information_ind':
src/ftmod/ftmod_misdn/ftmod_misdn.c:871:3: error: format '%lx' expects argument of type 'long unsigned int', but argument 13 has type 'uint64_t' [-Werror=format]
Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
Do a "soft" wraparound with modulo, removes the ~0.5s tone glitch.
(Multiply ts.rate (samples) by two to match the offset unit (bytes, 2 per sample).)
Signed-off-by: Stefan Knoblich <stkn@openisdn.net>