Coding style, formatting.
This commit is contained in:
parent
e7da2a3aed
commit
2c636c7484
269
chan_capi.c
269
chan_capi.c
|
@ -588,10 +588,12 @@ static void capi_echo_canceller(struct capi_pvt *i, int function)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((i->channeltype == CAPI_CHANNELTYPE_NULL) && (capi_controllers[i->controller]->ecPath & EC_ECHOCANCEL_PATH_IP) == 0) {
|
if ((i->channeltype == CAPI_CHANNELTYPE_NULL) &&
|
||||||
|
(capi_controllers[i->controller]->ecPath & EC_ECHOCANCEL_PATH_IP) == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((i->channeltype != CAPI_CHANNELTYPE_NULL) && (capi_controllers[i->controller]->ecPath & EC_ECHOCANCEL_PATH_IFC) == 0) {
|
if ((i->channeltype != CAPI_CHANNELTYPE_NULL) &&
|
||||||
|
(capi_controllers[i->controller]->ecPath & EC_ECHOCANCEL_PATH_IFC) == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -704,8 +706,10 @@ static void capi_diva_tone_processing_function(struct capi_pvt *i, unsigned char
|
||||||
if (capi_check_diva_tone_function_allowed(i) != 0)
|
if (capi_check_diva_tone_function_allowed(i) != 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
cc_verbose(3, 0, VERBOSE_PREFIX_2 "%s: Apply tone processing function %u (PLCI=%#x)\n", i->vname, function, i->PLCI);
|
cc_verbose(3, 0, VERBOSE_PREFIX_2 "%s: Apply tone processing function %u (PLCI=%#x)\n",
|
||||||
capi_sendf (i, 0, CAPI_FACILITY_REQ, i->PLCI, get_capi_MessageNumber(), "w(www())", 1, function, 0, 0);
|
i->vname, function, i->PLCI);
|
||||||
|
capi_sendf(i, 0, CAPI_FACILITY_REQ, i->PLCI, get_capi_MessageNumber(),
|
||||||
|
"w(www())", 1, function, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void capi_diva_send_tone_function(struct capi_pvt *i, unsigned char tone)
|
static void capi_diva_send_tone_function(struct capi_pvt *i, unsigned char tone)
|
||||||
|
@ -717,7 +721,11 @@ static void capi_diva_send_tone_function(struct capi_pvt *i, unsigned char tone)
|
||||||
FACILITYSELECTOR_DTMF, 252, /* send tone */ 0, 0, tone);
|
FACILITYSELECTOR_DTMF, 252, /* send tone */ 0, 0, tone);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void capi_diva_pitch_control_command(struct capi_pvt *i, int enable, unsigned short rxpitch, unsigned short txpitch)
|
static void capi_diva_pitch_control_command(
|
||||||
|
struct capi_pvt *i,
|
||||||
|
int enable,
|
||||||
|
unsigned short rxpitch,
|
||||||
|
unsigned short txpitch)
|
||||||
{
|
{
|
||||||
if (capi_check_diva_tone_function_allowed(i) != 0)
|
if (capi_check_diva_tone_function_allowed(i) != 0)
|
||||||
return;
|
return;
|
||||||
|
@ -744,7 +752,8 @@ static int capi_detect_dtmf(struct capi_pvt *i, int flag)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if ((i->channeltype == CAPI_CHANNELTYPE_NULL) &&
|
if ((i->channeltype == CAPI_CHANNELTYPE_NULL) &&
|
||||||
(((i->line_plci == NULL) && (null_plci_dtmf_support == 0)) || (i->resource_plci_type == CAPI_RESOURCE_PLCI_LINE))) {
|
(((i->line_plci == NULL) && (null_plci_dtmf_support == 0)) ||
|
||||||
|
(i->resource_plci_type == CAPI_RESOURCE_PLCI_LINE))) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1334,11 +1343,12 @@ static int pbx_capi_hangup(struct ast_channel *c)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pbx_capi_call_build_calling_party_number (struct ast_channel *c,
|
static void pbx_capi_call_build_calling_party_number(
|
||||||
char* calling,
|
struct ast_channel *c,
|
||||||
int max_calling,
|
char* calling,
|
||||||
int use_defaultcid,
|
int max_calling,
|
||||||
const char* ocid)
|
int use_defaultcid,
|
||||||
|
const char* ocid)
|
||||||
{
|
{
|
||||||
struct capi_pvt *i = CC_CHANNEL_PVT(c);
|
struct capi_pvt *i = CC_CHANNEL_PVT(c);
|
||||||
const char *ton;
|
const char *ton;
|
||||||
|
@ -1595,7 +1605,7 @@ static int pbx_capi_call(struct ast_channel *c, char *idest, int timeout)
|
||||||
}
|
}
|
||||||
strncpy(&called[2], dest, sizeof(called) - 3);
|
strncpy(&called[2], dest, sizeof(called) - 3);
|
||||||
|
|
||||||
pbx_capi_call_build_calling_party_number (c, calling, sizeof(calling), use_defaultcid, ocid);
|
pbx_capi_call_build_calling_party_number(c, calling, sizeof(calling), use_defaultcid, ocid);
|
||||||
|
|
||||||
if (doqsig != 0) {
|
if (doqsig != 0) {
|
||||||
facilityarray = alloca(CAPI_MAX_FACILITYDATAARRAY_SIZE);
|
facilityarray = alloca(CAPI_MAX_FACILITYDATAARRAY_SIZE);
|
||||||
|
@ -1606,10 +1616,10 @@ static int pbx_capi_call(struct ast_channel *c, char *idest, int timeout)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DIVA_STREAMING
|
#ifdef DIVA_STREAMING
|
||||||
i->diva_stream_entry = 0;
|
i->diva_stream_entry = 0;
|
||||||
if (pbx_capi_streaming_supported (i) != 0) {
|
if (pbx_capi_streaming_supported (i) != 0) {
|
||||||
capi_DivaStreamingOn(i, 1, i->MessageNumber);
|
capi_DivaStreamingOn(i, 1, i->MessageNumber);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
error = capi_sendf(NULL, 0, CAPI_CONNECT_REQ, i->controller, i->MessageNumber,
|
error = capi_sendf(NULL, 0, CAPI_CONNECT_REQ, i->controller, i->MessageNumber,
|
||||||
|
@ -1698,7 +1708,6 @@ _cstruct diva_get_b1_conf (struct capi_pvt *i) {
|
||||||
b1conf = (_cstruct)"\x06\x01\x04\x0f\x05\xa0\x00";
|
b1conf = (_cstruct)"\x06\x01\x04\x0f\x05\xa0\x00";
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
default:
|
default:
|
||||||
cc_log(LOG_ERROR, "%s: format %s(%d) invalid.\n",
|
cc_log(LOG_ERROR, "%s: format %s(%d) invalid.\n",
|
||||||
i->vname, ast_getformatname(i->codec), i->codec);
|
i->vname, ast_getformatname(i->codec), i->codec);
|
||||||
|
@ -1760,7 +1769,7 @@ static int capi_send_answer(struct ast_channel *c, _cstruct b3conf)
|
||||||
|
|
||||||
facilityarray = alloca(CAPI_MAX_FACILITYDATAARRAY_SIZE);
|
facilityarray = alloca(CAPI_MAX_FACILITYDATAARRAY_SIZE);
|
||||||
cc_qsig_add_call_answer_data(facilityarray, i, c);
|
cc_qsig_add_call_answer_data(facilityarray, i, c);
|
||||||
pbx_capi_add_diva_protocol_independent_extension (i, facilityarray, c, "CONNECTEDNAME");
|
pbx_capi_add_diva_protocol_independent_extension(i, facilityarray, c, "CONNECTEDNAME");
|
||||||
|
|
||||||
if (i->ntmode) {
|
if (i->ntmode) {
|
||||||
/* in NT-mode we send the current local time to device */
|
/* in NT-mode we send the current local time to device */
|
||||||
|
@ -1948,67 +1957,6 @@ static int line_interconnect(struct capi_pvt *i0, struct capi_pvt *i1, int start
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
/*
|
|
||||||
* disconnect b3 and bring it up with another protocol
|
|
||||||
*/
|
|
||||||
static void cc_switch_b_protocol(struct capi_pvt *i)
|
|
||||||
{
|
|
||||||
int waitcount = 200;
|
|
||||||
|
|
||||||
cc_disconnect_b3(i, 1);
|
|
||||||
|
|
||||||
i->isdnstate |= CAPI_ISDN_STATE_B3_CHANGE;
|
|
||||||
cc_select_b(i, NULL);
|
|
||||||
|
|
||||||
if (i->outgoing) {
|
|
||||||
/* on outgoing call we must do the connect-b3 request */
|
|
||||||
cc_start_b3(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* wait for the B3 layer to come up */
|
|
||||||
while ((waitcount > 0) &&
|
|
||||||
(!(i->isdnstate & CAPI_ISDN_STATE_B3_UP))) {
|
|
||||||
usleep(10000);
|
|
||||||
waitcount--;
|
|
||||||
}
|
|
||||||
if (!(i->isdnstate & CAPI_ISDN_STATE_B3_UP)) {
|
|
||||||
cc_log(LOG_ERROR, "capi switch b3: no b3 up\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* set the b3 protocol to transparent
|
|
||||||
*/
|
|
||||||
static int cc_set_transparent(struct capi_pvt *i)
|
|
||||||
{
|
|
||||||
if (i->bproto != CC_BPROTO_RTP) {
|
|
||||||
/* nothing to do */
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
i->bproto = CC_BPROTO_TRANSPARENT;
|
|
||||||
cc_switch_b_protocol(i);
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* set the b3 protocol to RTP (if wanted)
|
|
||||||
*/
|
|
||||||
static void cc_unset_transparent(struct capi_pvt *i, int rtpwanted)
|
|
||||||
{
|
|
||||||
if ((!rtpwanted) ||
|
|
||||||
(i->isdnstate & CAPI_ISDN_STATE_DISCONNECT))
|
|
||||||
return;
|
|
||||||
|
|
||||||
i->bproto = CC_BPROTO_RTP;
|
|
||||||
cc_switch_b_protocol(i);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* try call transfer instead of bridge
|
* try call transfer instead of bridge
|
||||||
*/
|
*/
|
||||||
|
@ -4424,22 +4372,23 @@ static void capidev_handle_facility_indication(_cmsg *CMSG, unsigned int PLCI, u
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pbx_capi_get_samples (struct capi_pvt *i, int length) {
|
static int pbx_capi_get_samples(struct capi_pvt *i, int length)
|
||||||
|
{
|
||||||
switch (i->codec) {
|
switch (i->codec) {
|
||||||
case AST_FORMAT_SLINEAR:
|
case AST_FORMAT_SLINEAR:
|
||||||
#if defined(AST_FORMAT_SLINEAR16)
|
#if defined(AST_FORMAT_SLINEAR16)
|
||||||
case AST_FORMAT_SLINEAR16:
|
case AST_FORMAT_SLINEAR16:
|
||||||
#endif
|
#endif
|
||||||
return (length/2);
|
return (length/2);
|
||||||
case AST_FORMAT_G722:
|
case AST_FORMAT_G722:
|
||||||
return (length*2);
|
return (length*2);
|
||||||
#if defined(AST_FORMAT_SIREN7)
|
#if defined(AST_FORMAT_SIREN7)
|
||||||
case AST_FORMAT_SIREN7:
|
case AST_FORMAT_SIREN7:
|
||||||
return (length * (320 / 80));
|
return (length * (320 / 80));
|
||||||
#endif
|
#endif
|
||||||
#if defined(AST_FORMAT_SIREN14)
|
#if defined(AST_FORMAT_SIREN14)
|
||||||
case AST_FORMAT_SIREN14:
|
case AST_FORMAT_SIREN14:
|
||||||
return ((typeof(length)) length * ((float) 640 / 120));
|
return ((typeof(length)) length * ((float) 640 / 120));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4449,12 +4398,13 @@ static int pbx_capi_get_samples (struct capi_pvt *i, int length) {
|
||||||
/*
|
/*
|
||||||
* CAPI DATA_B3_IND
|
* CAPI DATA_B3_IND
|
||||||
*/
|
*/
|
||||||
static void capidev_handle_data_b3_indication(_cmsg *CMSG,
|
static void capidev_handle_data_b3_indication(
|
||||||
unsigned int PLCI,
|
_cmsg *CMSG,
|
||||||
unsigned int NCCI,
|
unsigned int PLCI,
|
||||||
struct capi_pvt *i,
|
unsigned int NCCI,
|
||||||
struct _diva_streaming_vector* vind,
|
struct capi_pvt *i,
|
||||||
int vind_nr)
|
struct _diva_streaming_vector* vind,
|
||||||
|
int vind_nr)
|
||||||
{
|
{
|
||||||
struct ast_frame fr = { AST_FRAME_NULL, };
|
struct ast_frame fr = { AST_FRAME_NULL, };
|
||||||
unsigned char *b3buf = NULL;
|
unsigned char *b3buf = NULL;
|
||||||
|
@ -4473,7 +4423,8 @@ static void capidev_handle_data_b3_indication(_cmsg *CMSG,
|
||||||
} else {
|
} else {
|
||||||
#ifdef DIVA_STREAMING
|
#ifdef DIVA_STREAMING
|
||||||
dword i = 0, k = 0;
|
dword i = 0, k = 0;
|
||||||
b3len = (int)diva_streaming_read_vector_data (vind, vind_nr, &i, &k, b3buf, CAPI_MAX_B3_BLOCK_SIZE);
|
b3len = (int)diva_streaming_read_vector_data(vind,
|
||||||
|
vind_nr, &i, &k, b3buf, CAPI_MAX_B3_BLOCK_SIZE);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4578,9 +4529,10 @@ static void capidev_handle_data_b3_indication(_cmsg *CMSG,
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(DIVA_STREAMING)
|
#if defined(DIVA_STREAMING)
|
||||||
void capidev_handle_data_b3_indication_vector (struct capi_pvt *i,
|
void capidev_handle_data_b3_indication_vector(
|
||||||
struct _diva_streaming_vector* vind,
|
struct capi_pvt *i,
|
||||||
int vind_nr)
|
struct _diva_streaming_vector* vind,
|
||||||
|
int vind_nr)
|
||||||
{
|
{
|
||||||
capidev_handle_data_b3_indication(0, 0, 0, i, vind, vind_nr);
|
capidev_handle_data_b3_indication(0, 0, 0, i, vind, vind_nr);
|
||||||
}
|
}
|
||||||
|
@ -4644,13 +4596,15 @@ static void capidev_send_faxdata(struct capi_pvt *i)
|
||||||
"()");
|
"()");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void capidev_read_name_from_diva_manufacturer_infications (const unsigned char* src,
|
static void capidev_read_name_from_diva_manufacturer_infications(
|
||||||
const unsigned char* end,
|
const unsigned char* src,
|
||||||
char* dst,
|
const unsigned char* end,
|
||||||
int max_length,
|
char* dst,
|
||||||
unsigned char* octet3a,
|
int max_length,
|
||||||
const char *channelname,
|
unsigned char* octet3a,
|
||||||
const char *nametype) {
|
const char *channelname,
|
||||||
|
const char *nametype)
|
||||||
|
{
|
||||||
int length;
|
int length;
|
||||||
|
|
||||||
*dst = 0;
|
*dst = 0;
|
||||||
|
@ -4661,10 +4615,12 @@ static void capidev_read_name_from_diva_manufacturer_infications (const unsigned
|
||||||
dst[length] = 0;
|
dst[length] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
cc_verbose(3, 0, VERBOSE_PREFIX_3 "%s: received %s Name %02x '%s'\n", channelname, nametype, *octet3a, dst);
|
cc_verbose(3, 0, VERBOSE_PREFIX_3 "%s: received %s Name %02x '%s'\n",
|
||||||
|
channelname, nametype, *octet3a, dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void capidev_handle_diva_signaling_manufacturer_infications (struct capi_pvt *i, const unsigned char* data) {
|
static void capidev_handle_diva_signaling_manufacturer_infications(struct capi_pvt *i, const unsigned char* data)
|
||||||
|
{
|
||||||
int length = *data++;
|
int length = *data++;
|
||||||
char buffer[CAPI_MAX_STRING];
|
char buffer[CAPI_MAX_STRING];
|
||||||
unsigned char octet3a;
|
unsigned char octet3a;
|
||||||
|
@ -4675,43 +4631,42 @@ static void capidev_handle_diva_signaling_manufacturer_infications (struct capi_
|
||||||
1-0 : Screening indicator, 00 - User provided not screened, 01 - User provided, verified and passed, 10 - User provided verified and failed, 11 - Nnetwork provided
|
1-0 : Screening indicator, 00 - User provided not screened, 01 - User provided, verified and passed, 10 - User provided verified and failed, 11 - Nnetwork provided
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
if (length >= 2) {
|
if (length >= 2) {
|
||||||
unsigned short command = read_capi_word(data);
|
unsigned short command = read_capi_word(data);
|
||||||
data += 2;
|
data += 2;
|
||||||
length -= 2;
|
length -= 2;
|
||||||
|
|
||||||
switch (command) {
|
switch (command) {
|
||||||
case 0x0005: /* Display */
|
case 0x0005: /* Display */
|
||||||
break;
|
break;
|
||||||
case 0x0006: /* CalledPartyName */
|
case 0x0006: /* CalledPartyName */
|
||||||
if (length != 0) {
|
if (length != 0) {
|
||||||
capidev_read_name_from_diva_manufacturer_infications (data, &data[length], buffer, sizeof(buffer), &octet3a, i->vname, "Called Party");
|
capidev_read_name_from_diva_manufacturer_infications (data, &data[length], buffer, sizeof(buffer), &octet3a, i->vname, "Called Party");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0x0007: /* CallingPartyName */
|
case 0x0007: /* CallingPartyName */
|
||||||
if (length != 0) {
|
if (length != 0) {
|
||||||
capidev_read_name_from_diva_manufacturer_infications (data, &data[length], buffer, sizeof(buffer), &octet3a, i->vname, "Calling Party");
|
capidev_read_name_from_diva_manufacturer_infications (data, &data[length], buffer, sizeof(buffer), &octet3a, i->vname, "Calling Party");
|
||||||
#ifdef CC_AST_HAS_VERSION_1_8
|
#ifdef CC_AST_HAS_VERSION_1_8
|
||||||
ast_set_callerid(i->owner, NULL, buffer, NULL);
|
ast_set_callerid(i->owner, NULL, buffer, NULL);
|
||||||
#else
|
#else
|
||||||
ast_free (i->owner->cid.cid_name);
|
ast_free (i->owner->cid.cid_name);
|
||||||
i->owner->cid.cid_name = ast_strdup(buffer); /* Save name to callerid */
|
i->owner->cid.cid_name = ast_strdup(buffer); /* Save name to callerid */
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0x0008: /* ConnectedPartyName */
|
case 0x0008: /* ConnectedPartyName */
|
||||||
if (length != 0) {
|
if (length != 0) {
|
||||||
capidev_read_name_from_diva_manufacturer_infications (data, &data[length], buffer, sizeof(buffer), &octet3a, i->vname, "Connected Party");
|
capidev_read_name_from_diva_manufacturer_infications (data, &data[length], buffer, sizeof(buffer), &octet3a, i->vname, "Connected Party");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0x000a: /* BusyPartyName */
|
case 0x000a: /* BusyPartyName */
|
||||||
if (length != 0) {
|
if (length != 0) {
|
||||||
capidev_read_name_from_diva_manufacturer_infications (data, &data[length], buffer, sizeof(buffer), &octet3a, i->vname, "Busy Party");
|
capidev_read_name_from_diva_manufacturer_infications (data, &data[length], buffer, sizeof(buffer), &octet3a, i->vname, "Busy Party");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0x0009: /* CQ_Events */
|
case 0x0009: /* CQ_Events */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4728,9 +4683,10 @@ static void capidev_handle_manufacturer_indication(_cmsg *CMSG, unsigned int PLC
|
||||||
|
|
||||||
if (MANUFACTURER_IND_MANUID(CMSG) == _DI_MANU_ID) {
|
if (MANUFACTURER_IND_MANUID(CMSG) == _DI_MANU_ID) {
|
||||||
if (CMSG->Info == 0x000a && i->owner != 0) {
|
if (CMSG->Info == 0x000a && i->owner != 0) {
|
||||||
capidev_handle_diva_signaling_manufacturer_infications (i, MANUFACTURER_IND_MANUDATA(CMSG));
|
capidev_handle_diva_signaling_manufacturer_infications(i, MANUFACTURER_IND_MANUDATA(CMSG));
|
||||||
} else {
|
} else {
|
||||||
cc_verbose(3, 0, VERBOSE_PREFIX_3 "%s: Ignored Diva MANUFACTURER_IND Id=0x%04x \n", i->vname, CMSG->Info);
|
cc_verbose(3, 0, VERBOSE_PREFIX_3 "%s: Ignored Diva MANUFACTURER_IND Id=0x%04x \n",
|
||||||
|
i->vname, CMSG->Info);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
cc_verbose(3, 1, VERBOSE_PREFIX_3 "%s: Ignored MANUFACTURER_IND Id=0x%x \n",
|
cc_verbose(3, 1, VERBOSE_PREFIX_3 "%s: Ignored MANUFACTURER_IND Id=0x%x \n",
|
||||||
|
@ -5038,11 +4994,12 @@ static void capidev_handle_disconnect_indication(_cmsg *CMSG, unsigned int PLCI,
|
||||||
/*
|
/*
|
||||||
* CAPI CONNECT_IND
|
* CAPI CONNECT_IND
|
||||||
*/
|
*/
|
||||||
static void capidev_handle_connect_indication(_cmsg *CMSG,
|
static void capidev_handle_connect_indication(
|
||||||
unsigned int PLCI,
|
_cmsg *CMSG,
|
||||||
unsigned int NCCI,
|
unsigned int PLCI,
|
||||||
struct capi_pvt **interface,
|
unsigned int NCCI,
|
||||||
struct ast_channel** interface_owner)
|
struct capi_pvt **interface,
|
||||||
|
struct ast_channel** interface_owner)
|
||||||
{
|
{
|
||||||
struct capi_pvt *i;
|
struct capi_pvt *i;
|
||||||
char *DNID;
|
char *DNID;
|
||||||
|
@ -5260,8 +5217,12 @@ static void capidev_handle_connect_indication(_cmsg *CMSG,
|
||||||
/*
|
/*
|
||||||
* CAPI FACILITY_CONF
|
* CAPI FACILITY_CONF
|
||||||
*/
|
*/
|
||||||
static void capidev_handle_facility_confirmation(_cmsg *CMSG, unsigned int PLCI, unsigned int NCCI, struct capi_pvt **i,
|
static void capidev_handle_facility_confirmation(
|
||||||
struct ast_channel** interface_owner)
|
_cmsg *CMSG,
|
||||||
|
unsigned int PLCI,
|
||||||
|
unsigned int NCCI,
|
||||||
|
struct capi_pvt **i,
|
||||||
|
struct ast_channel** interface_owner)
|
||||||
{
|
{
|
||||||
int selector;
|
int selector;
|
||||||
|
|
||||||
|
@ -5329,9 +5290,10 @@ static void capidev_handle_facility_confirmation(_cmsg *CMSG, unsigned int PLCI,
|
||||||
/*
|
/*
|
||||||
* show error in confirmation
|
* show error in confirmation
|
||||||
*/
|
*/
|
||||||
static void show_capi_conf_error(struct capi_pvt *i,
|
static void show_capi_conf_error(
|
||||||
unsigned int PLCI, u_int16_t wInfo,
|
struct capi_pvt *i,
|
||||||
u_int16_t wCmd)
|
unsigned int PLCI, u_int16_t wInfo,
|
||||||
|
u_int16_t wCmd)
|
||||||
{
|
{
|
||||||
const char *name = channeltype;
|
const char *name = channeltype;
|
||||||
|
|
||||||
|
@ -5714,8 +5676,8 @@ static void capidev_handle_msg(_cmsg *CMSG)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct capi_pvt* get_active_plci(struct ast_channel *c)
|
||||||
static struct capi_pvt* get_active_plci (struct ast_channel *c) {
|
{
|
||||||
struct capi_pvt* i;
|
struct capi_pvt* i;
|
||||||
|
|
||||||
if (c->tech == &capi_tech) {
|
if (c->tech == &capi_tech) {
|
||||||
|
@ -6656,7 +6618,7 @@ static int pbx_capi_stoptone(struct ast_channel *c, char *param)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char* pbx_capi_map_detected_tone (unsigned char tone)
|
static const char* pbx_capi_map_detected_tone(unsigned char tone)
|
||||||
{
|
{
|
||||||
static diva_supported_tones_t diva_detected_tones[] = {
|
static diva_supported_tones_t diva_detected_tones[] = {
|
||||||
/* { 0x80, "End of signal detected" }, */
|
/* { 0x80, "End of signal detected" }, */
|
||||||
|
@ -9070,9 +9032,8 @@ static void pbx_capi_add_diva_protocol_independent_extension (struct capi_pvt *i
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
cc_format_t pbx_capi_get_controller_codecs (int controller) {
|
cc_format_t pbx_capi_get_controller_codecs(int controller)
|
||||||
|
{
|
||||||
return (capi_controllers[controller]->rtpcodec);
|
return (capi_controllers[controller]->rtpcodec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -60,11 +60,11 @@ typedef struct _pbx_capi_voice_command {
|
||||||
* LOCALS
|
* LOCALS
|
||||||
*/
|
*/
|
||||||
static const char* pbx_capi_voicecommand_digits = "1234567890ABCD*#";
|
static const char* pbx_capi_voicecommand_digits = "1234567890ABCD*#";
|
||||||
static int pbx_capi_command_nop (struct ast_channel *c, char *param);
|
static int pbx_capi_command_nop(struct ast_channel *c, char *param);
|
||||||
static pbx_capi_voice_command_t* pbx_capi_find_command (struct capi_pvt *i, const char* name);
|
static pbx_capi_voice_command_t* pbx_capi_find_command(struct capi_pvt *i, const char* name);
|
||||||
static pbx_capi_voice_command_t* pbx_capi_find_command_by_key (struct capi_pvt *i, const char* key);
|
static pbx_capi_voice_command_t* pbx_capi_find_command_by_key(struct capi_pvt *i, const char* key);
|
||||||
static pbx_capi_voice_command_t* pbx_capi_voicecommand_find_digit_command (diva_entity_queue_t* q, const char* digits, int length, int* info);
|
static pbx_capi_voice_command_t* pbx_capi_voicecommand_find_digit_command(diva_entity_queue_t* q, const char* digits, int length, int* info);
|
||||||
static void pbx_capi_voicecommand_insert_command (diva_entity_queue_t* q, pbx_capi_voice_command_t* cmd);
|
static void pbx_capi_voicecommand_insert_command(diva_entity_queue_t* q, pbx_capi_voice_command_t* cmd);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -101,16 +101,17 @@ int pbx_capi_voicecommand(struct ast_channel *c, char *param)
|
||||||
}
|
}
|
||||||
|
|
||||||
command[0] = param;
|
command[0] = param;
|
||||||
command[1] = strchr (command[0], '|');
|
command[1] = strchr(command[0], '|');
|
||||||
|
|
||||||
if (command[1] == 0) {
|
if (command[1] == 0) {
|
||||||
/*
|
/*
|
||||||
* Remove command
|
* Remove command
|
||||||
*/
|
*/
|
||||||
cc_mutex_lock(&i->lock);
|
cc_mutex_lock(&i->lock);
|
||||||
while ((cmd = pbx_capi_find_command (i, command[0])) != 0) {
|
while ((cmd = pbx_capi_find_command(i, command[0])) != 0) {
|
||||||
cc_verbose(2, 0, VERBOSE_PREFIX_4"%s: voicecommand:%s removed\n", i->vname, cmd->command_name);
|
cc_verbose(2, 0, VERBOSE_PREFIX_4"%s: voicecommand:%s removed\n",
|
||||||
diva_q_remove (&i->channel_command_q, &cmd->link);
|
i->vname, cmd->command_name);
|
||||||
|
diva_q_remove(&i->channel_command_q, &cmd->link);
|
||||||
ast_free (cmd);
|
ast_free (cmd);
|
||||||
}
|
}
|
||||||
cc_mutex_unlock(&i->lock);
|
cc_mutex_unlock(&i->lock);
|
||||||
|
@ -166,7 +167,7 @@ int pbx_capi_voicecommand(struct ast_channel *c, char *param)
|
||||||
cmd->channel_command_digits[length] = 0;
|
cmd->channel_command_digits[length] = 0;
|
||||||
cmd->length = length;
|
cmd->length = length;
|
||||||
|
|
||||||
cmd->pbx_capi_command = pbx_capi_lockup_command_by_name (cmd->command_name);
|
cmd->pbx_capi_command = pbx_capi_lockup_command_by_name(cmd->command_name);
|
||||||
if ( cmd->pbx_capi_command == 0) {
|
if ( cmd->pbx_capi_command == 0) {
|
||||||
cmd->pbx_capi_command = pbx_capi_command_nop; /* accept unknown commands for compatibility reason */
|
cmd->pbx_capi_command = pbx_capi_command_nop; /* accept unknown commands for compatibility reason */
|
||||||
}
|
}
|
||||||
|
@ -180,10 +181,10 @@ int pbx_capi_voicecommand(struct ast_channel *c, char *param)
|
||||||
pbx_capi_voice_command_t* present_cmd;
|
pbx_capi_voice_command_t* present_cmd;
|
||||||
|
|
||||||
cc_mutex_lock(&i->lock);
|
cc_mutex_lock(&i->lock);
|
||||||
if ((present_cmd = pbx_capi_find_command_by_key (i, cmd->command_name)) != 0) {
|
if ((present_cmd = pbx_capi_find_command_by_key(i, cmd->command_name)) != 0) {
|
||||||
diva_q_remove (&i->channel_command_q, &present_cmd->link);
|
diva_q_remove(&i->channel_command_q, &present_cmd->link);
|
||||||
}
|
}
|
||||||
pbx_capi_voicecommand_insert_command (&i->channel_command_q, cmd);
|
pbx_capi_voicecommand_insert_command(&i->channel_command_q, cmd);
|
||||||
cc_mutex_unlock(&i->lock);
|
cc_mutex_unlock(&i->lock);
|
||||||
|
|
||||||
if (present_cmd != 0) {
|
if (present_cmd != 0) {
|
||||||
|
|
|
@ -245,7 +245,13 @@ struct capi_pvt *capi_mknullif(struct ast_channel *c, unsigned long long control
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct capi_pvt *capi_mkresourceif(struct ast_channel *c, unsigned long long controllermask, struct capi_pvt *data_plci_ifc, cc_format_t codecs, int all) {
|
struct capi_pvt *capi_mkresourceif(
|
||||||
|
struct ast_channel *c,
|
||||||
|
unsigned long long controllermask,
|
||||||
|
struct capi_pvt *data_plci_ifc,
|
||||||
|
cc_format_t codecs,
|
||||||
|
int all)
|
||||||
|
{
|
||||||
struct capi_pvt *data_ifc /*, *line_ifc */;
|
struct capi_pvt *data_ifc /*, *line_ifc */;
|
||||||
unsigned int controller = 1;
|
unsigned int controller = 1;
|
||||||
int fmt = 0;
|
int fmt = 0;
|
||||||
|
@ -1571,7 +1577,7 @@ int capi_write_frame(struct capi_pvt *i, struct ast_frame *f)
|
||||||
ast_channel_lock(chan) to be held while
|
ast_channel_lock(chan) to be held while
|
||||||
while accessing returned pointer
|
while accessing returned pointer
|
||||||
*/
|
*/
|
||||||
const char* pbx_capi_get_cid (struct ast_channel* c)
|
const char* pbx_capi_get_cid(struct ast_channel* c)
|
||||||
{
|
{
|
||||||
const char* cid;
|
const char* cid;
|
||||||
|
|
||||||
|
@ -1588,7 +1594,7 @@ const char* pbx_capi_get_cid (struct ast_channel* c)
|
||||||
ast_channel_lock(chan) to be held while
|
ast_channel_lock(chan) to be held while
|
||||||
while accessing returned pointer
|
while accessing returned pointer
|
||||||
*/
|
*/
|
||||||
const char* pbx_capi_get_callername (struct ast_channel* c)
|
const char* pbx_capi_get_callername(struct ast_channel* c)
|
||||||
{
|
{
|
||||||
const char* name;
|
const char* name;
|
||||||
|
|
||||||
|
@ -1605,7 +1611,7 @@ const char* pbx_capi_get_callername (struct ast_channel* c)
|
||||||
ast_channel_lock(chan) to be held while
|
ast_channel_lock(chan) to be held while
|
||||||
while accessing returned pointer
|
while accessing returned pointer
|
||||||
*/
|
*/
|
||||||
const char* pbx_capi_get_connectedname (struct ast_channel* c)
|
const char* pbx_capi_get_connectedname(struct ast_channel* c)
|
||||||
{
|
{
|
||||||
const char* name;
|
const char* name;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue