aboutsummaryrefslogtreecommitdiffstats
path: root/channels/sig_analog.h
AgeCommit message (Collapse)AuthorFilesLines
2010-11-24Merged revisions 296167 via svnmerge from rmudgett1-10/+16
https://origsvn.digium.com/svn/asterisk/branches/1.8 ................ r296167 | rmudgett | 2010-11-24 16:49:48 -0600 (Wed, 24 Nov 2010) | 57 lines Merged revisions 296166 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r296166 | rmudgett | 2010-11-24 16:42:45 -0600 (Wed, 24 Nov 2010) | 50 lines Merged revisions 296165 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r296165 | rmudgett | 2010-11-24 16:41:07 -0600 (Wed, 24 Nov 2010) | 43 lines Oneway audio to SIP phone from FXS port after FXS port gets a CallWaiting pip. The FXS connected phone has to have CW/CID support to fail, as it will send back a DTMF 'A' or 'D' when it's ready to receive CallerID. A normal phone with no CID never fails. Also the SIP phone does not hear MOH when the CW call is answered. The DTMF end frame is suppressed when the phone acknowledges the CW signal for CID. The problem is the DTMF begin frame needs to be suppressed as well. The DTMF begin frame is causing SIP to start sending the DTMF RTP frames. Since the DTMF end frame is suppressed, SIP will not stop sending those DTMF RTP packets. * Suppress the DTMF begin and end frames when the channel driver is looking for DTMF digits. * Fixed a couple issues caused by not cleaning up the CID spill if you answer the CW call while it is sending the CID spill. * Fixed not sending CW/CID spill to the phone when the call is natively bridged. (Fixed by not using native bridge if CW/CID is possible.) * Suppress received audio when sending CW/CID spills. The other parties involved do not need to hear the CW/CID spills and may be confused if the CW call is for them. (closes issue #18129) Reported by: alecdavis Patches: issue_18129_v1.8_v3.patch uploaded by rmudgett (license 664) Tested by: alecdavis, rmudgett NOTE: * v1.4 does not have the main problem fixed by suppressing the DTMF start frames. The other three items fixed are relevant. * If you really must restore native bridging between analog ports, you need to disable CW/CID either by configuring chan_dahdi.conf callwaitingcallerid=no or dialing *70 before dialing the number to temporarily disable CW. ........ ................ ................ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@296168 f38db490-d61c-443f-a65b-d21fe96a405b
2010-11-20Merged revisions 295747 via svnmerge from rmudgett1-0/+1
https://origsvn.digium.com/svn/asterisk/branches/1.8 ........ r295747 | rmudgett | 2010-11-19 21:11:15 -0600 (Fri, 19 Nov 2010) | 13 lines One way audio before answering call waiting call on analog port. * Analog call waiting Caller ID spills could get stuck resulting in one way audio until the waiting call is answered. This only happens on the second (and later) call waiting call if the active call is not the first call. * The CLI/AMI "dahdi show channel" command could report the wrong channel information. Must keep the struct analog_pvt.owner and struct dahdi_pvt.owner pointer in sync. ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@295748 f38db490-d61c-443f-a65b-d21fe96a405b
2010-11-19Merged revisions 295516 via svnmerge from rmudgett1-7/+8
https://origsvn.digium.com/svn/asterisk/branches/1.8 ........ r295516 | rmudgett | 2010-11-19 10:47:11 -0600 (Fri, 19 Nov 2010) | 13 lines Bring sig_analog extraction more into alignment with orig-trunk/v1.6.2 chan_dahdi. * Restore SMDI support. * Fixed initial value of struct analog_pvt.use_callerid. It may get forced on depending upon other config options. * Call analog_dnd() instead of manual inlined code. * Removed unused struct analog_pvt.usedistinctiveringdetection. * Removed the struct analog_pvt.unknown_alarm flag. It was really the struct analog_pvt.inalarm flag. * Use ast_debug() instead of ast_log(LOG_DEBUG). * Rename several function's index variable to idx. * Some formatting tweaks. ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@295517 f38db490-d61c-443f-a65b-d21fe96a405b
2010-11-01Merged revisions 293530 via svnmerge from rmudgett1-1/+2
https://origsvn.digium.com/svn/asterisk/branches/1.8 ........ r293530 | rmudgett | 2010-11-01 12:29:30 -0500 (Mon, 01 Nov 2010) | 10 lines Analog 3-way call would not connect all parties if one was using sig_pri. Also the "dahdi show channel" would not show the correct 3-way call status. * Synchronized the inthreeway flag between chan_dahdi and sig_analog. * Fixed a my_set_linear_mode() sign error and made take an analog sub channel enum. ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@293531 f38db490-d61c-443f-a65b-d21fe96a405b
2010-10-13Merged revisions 291656 via svnmerge from rmudgett1-0/+3
https://origsvn.digium.com/svn/asterisk/branches/1.8 ................ r291656 | rmudgett | 2010-10-13 18:45:11 -0500 (Wed, 13 Oct 2010) | 34 lines Merged revisions 291655 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r291655 | rmudgett | 2010-10-13 18:36:50 -0500 (Wed, 13 Oct 2010) | 27 lines Merged revisions 291643 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r291643 | rmudgett | 2010-10-13 18:29:58 -0500 (Wed, 13 Oct 2010) | 20 lines Deadlock between dahdi_exception() and dahdi_indicate(). There is a deadlock between dahdi_exception() and dahdi_indicate() for analog ports. The call-waiting and three-way-calling feature can experience deadlock if these features are trying to do something and an event from the bridged channel happens at the same time. Deadlock avoidance code added to obtain necessary channel locks before attemting an operation with call-waiting and three-way-calling. (closes issue #16847) Reported by: shin-shoryuken Patches: issue_16847_v1.4.patch uploaded by rmudgett (license 664) issue_16847_v1.6.2.patch uploaded by rmudgett (license 664) issue_16847_v1.8_v2.patch uploaded by rmudgett (license 664) Tested by: alecdavis, rmudgett Review: https://reviewboard.asterisk.org/r/971/ ........ ................ ................ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@291658 f38db490-d61c-443f-a65b-d21fe96a405b
2010-08-11Merged revisions 281870 via svnmerge from rmudgett1-1/+1
https://origsvn.digium.com/svn/asterisk/branches/1.8 ........ r281870 | rmudgett | 2010-08-11 15:30:29 -0500 (Wed, 11 Aug 2010) | 4 lines Fix a call to analog_set_pulsedial() not setting 0 or 1 only. * Also a couple minor tweaks. ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@281871 f38db490-d61c-443f-a65b-d21fe96a405b
2010-07-22Support FXS module Polarity Reversal on remote party Answer and Hangup alecdavis1-0/+8
FXS lines normally connect to a telephone. However, when FXS lines are routed to an external PBX or Key System to act as "external" or "CO" lines, it is extremely difficult, if not impossible for the external PBX to know when the call has been disconnected without receiving a polarity reversal on the line. Now using answeronpolarityswitch and hanguponpolarityswitch keywords that previously were used only for FXO ports, now applies like functionality for an FXS port, but from the connected equipment's point of view. (closes issue #17318) Reported by: armeniki Patches: fxs_linepolarity.diff5.txt uploaded by alecdavis (license 585) Tested by: alecdavis Review: https://reviewboard.asterisk.org/r/797/ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@278809 f38db490-d61c-443f-a65b-d21fe96a405b
2010-07-19Fix regression with distinctive ring detection.jpeeler1-4/+4
The issue here is that passing an array to a function prohibits the ARRAY_LEN macro from returning the real size. To avoid this the size is now defined and use of ARRAY_LEN is avoided. (closes issue #15718) Reported by: alecdavis Patches: bug15718.patch uploaded by jpeeler (license 325) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@277837 f38db490-d61c-443f-a65b-d21fe96a405b
2010-07-14ast_callerid restructuringrmudgett1-2/+2
The purpose of this patch is to eliminate struct ast_callerid since it has turned into a miscellaneous collection of various party information. Eliminate struct ast_callerid and replace it with the following struct organization: struct ast_party_name { char *str; int char_set; int presentation; unsigned char valid; }; struct ast_party_number { char *str; int plan; int presentation; unsigned char valid; }; struct ast_party_subaddress { char *str; int type; unsigned char odd_even_indicator; unsigned char valid; }; struct ast_party_id { struct ast_party_name name; struct ast_party_number number; struct ast_party_subaddress subaddress; char *tag; }; struct ast_party_dialed { struct { char *str; int plan; } number; struct ast_party_subaddress subaddress; int transit_network_select; }; struct ast_party_caller { struct ast_party_id id; char *ani; int ani2; }; The new organization adds some new information as well. * The party name and number now have their own presentation value that can be manipulated independently. ISDN supplies the presentation value for the name and number at different times with the possibility that they could be different. * The party name and number now have a valid flag. Before this change the name or number string could be empty if the presentation were restricted. Most channel drivers assume that the name or number is then simply not available instead of indicating that the name or number was restricted. * The party name now has a character set value. SIP and Q.SIG have the ability to indicate what character set a name string is using so it could be presented properly. * The dialed party now has a numbering plan value that could be useful to have available. The various channel drivers will need to be updated to support the new core features as needed. They have simply been converted to supply current functionality at this time. The following items of note were either corrected or enhanced: * The CONNECTEDLINE() and REDIRECTING() dialplan functions were consolidated into func_callerid.c to share party id handling code. * CALLERPRES() is now deprecated because the name and number have their own presentation values. * Fixed app_alarmreceiver.c write_metadata(). The workstring[] could contain garbage. It also can only contain the caller id number so using ast_callerid_parse() on it is silly. There was also a typo in the CALLERNAME if test. * Fixed app_rpt.c using ast_callerid_parse() on the channel's caller id number string. ast_callerid_parse() alters the given buffer which in this case is the channel's caller id number string. Then using ast_shrink_phone_number() could alter it even more. * Fixed caller ID name and number memory leak in chan_usbradio.c. * Fixed uninitialized char arrays cid_num[] and cid_name[] in sig_analog.c. * Protected access to a caller channel with lock in chan_sip.c. * Clarified intent of code in app_meetme.c sla_ring_station() and dial_trunk(). Also made save all caller ID data instead of just the name and number strings. * Simplified cdr.c set_one_cid(). It hand coded the ast_callerid_merge() function. * Corrected some weirdness with app_privacy.c's use of caller presentation. Review: https://reviewboard.asterisk.org/r/702/ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@276347 f38db490-d61c-443f-a65b-d21fe96a405b
2010-05-04The inalarm flag is not passed up from the sig_analog and sig_pri submodules.rmudgett1-1/+2
The CLI "dahdi show channel" command was not correctly reporting the InAlarm status. The inalarm flag is now consistently passed between chan_dahdi and submodules. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@261007 f38db490-d61c-443f-a65b-d21fe96a405b
2010-04-30Merged revisions 260434 via svnmerge from jpeeler1-0/+1
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r260434 | jpeeler | 2010-04-30 17:22:46 -0500 (Fri, 30 Apr 2010) | 11 lines Ensure channel state is not incorrectly set in the case of a very early answer. The needringing bit was being read in dahdi_read after answering thereby setting the state to ringing from up. This clears needringing upon answering so that is no longer possible. (closes issue #17067) Reported by: tzafrir Patches: needringing.diff uploaded by tzafrir (license 46) ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@260437 f38db490-d61c-443f-a65b-d21fe96a405b
2010-04-09Merge Call completion support into trunk.mmichelson1-0/+2
From Reviewboard: CCSS stands for Call Completion Supplementary Services. An admittedly out-of-date overview of the architecture can be found in the file doc/CCSS_architecture.pdf in the CCSS branch. Off the top of my head, the big differences between what is implemented and what is in the document are as follows: 1. We did not end up modifying the Hangup application at all. 2. The document states that a single call completion monitor may be used across multiple calls to the same device. This proved to not be such a good idea when implementing protocol-specific monitors, and so we ended up using one monitor per-device per-call. 3. There are some configuration options which were conceived after the document was written. These are documented in the ccss.conf.sample that is on this review request. For some basic understanding of terminology used throughout this code, see the ccss.tex document that is on this review. This implements CCBS and CCNR in several flavors. First up is a "generic" implementation, which can work over any channel technology provided that the channel technology can accurately report device state. Call completion is requested using the dialplan application CallCompletionRequest and can be canceled using CallCompletionCancel. Device state subscriptions are used in order to monitor the state of called parties. Next, there is a SIP-specific implementation of call completion. This method uses the methods outlined in draft-ietf-bliss-call-completion-06 to implement call completion using SIP signaling. There are a few things to note here: * The agent/monitor terminology used throughout Asterisk sometimes is the reverse of what is defined in the referenced draft. * Implementation of the draft required support for SIP PUBLISH. I attempted to write this in a generic-enough fashion such that if someone were to want to write PUBLISH support for other event packages, such as dialog-state or presence, most of the effort would be in writing callbacks specific to the event package. * A subportion of supporting PUBLISH reception was that we had to implement a PIDF parser. The PIDF support added is a bit minimal. I first wrote a validation routine to ensure that the PIDF document is formatted properly. The rest of the PIDF reading is done in-line in the call-completion-specific PUBLISH-handling code. In other words, while there is PIDF support here, it is not in any state where it could easily be applied to other event packages as is. Finally, there are a variety of ISDN-related call completion protocols supported. These were written by Richard Mudgett, and as such I can't really say much about their implementation. There are notes in the CHANGES file that indicate the ISDN protocols over which call completion is supported. Review: https://reviewboard.asterisk.org/r/523 git-svn-id: http://svn.digium.com/svn/asterisk/trunk@256528 f38db490-d61c-443f-a65b-d21fe96a405b
2010-03-10Simplified dahdi_request() channel selection failed reason/cause code.rmudgett1-1/+1
Also avoid potential crash because cause could be NULL. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@251585 f38db490-d61c-443f-a65b-d21fe96a405b
2010-01-05Removed unused parameters from analog_available() and sig_pri_available().rmudgett1-1/+1
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@237804 f38db490-d61c-443f-a65b-d21fe96a405b
2009-10-05Add a few missing events to analog_handle_event.jpeeler1-8/+17
The reported bug was actually only for pulsedigit, dtmfup, and dtmfdown handling. Also added recognition for fax events (just some verbose output) and fixed handling for the ec_disabled_event. In order to make comparing the analog version of events to the DAHDI events easier, the ordering has been changed to follow that of the DAHDI events. (closes issue #15924) Reported by: tzafrir git-svn-id: http://svn.digium.com/svn/asterisk/trunk@222108 f38db490-d61c-443f-a65b-d21fe96a405b
2009-09-14Merged revisions 218401 via svnmerge from jpeeler1-1/+2
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r218401 | jpeeler | 2009-09-14 16:47:11 -0500 (Mon, 14 Sep 2009) | 11 lines Fix handling of DAHDI_EVENT_REMOVED event to prevent crash in do_monitor. After talking to rmudgett about some of his recent iflist locking changes, it was determined that the only place that would destroy a channel without being explicitly to do so was in handle_init_event. The loop to walk the interface list has been modified to wait to destroy the channel until the dahdi_pvt of the channel to be destroyed is no longer needed. (closes issue #15378) Reported by: samy ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@218430 f38db490-d61c-443f-a65b-d21fe96a405b
2009-09-10Allow do not disturb to be set on analog channels via the CLI and AMI.jpeeler1-1/+3
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@217954 f38db490-d61c-443f-a65b-d21fe96a405b
2009-09-10Stop caller id transmission when offhook event detected.jpeeler1-0/+1
This fixes the problem that would occur if an analog phone was picked up while the caller id was being sent. The caller id before sent the whole spill even after pickup and is now corrected. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@217744 f38db490-d61c-443f-a65b-d21fe96a405b
2009-09-08Fix memory leak of sig_xxx private structures.rmudgett1-1/+2
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@217332 f38db490-d61c-443f-a65b-d21fe96a405b
2009-09-03Added detection DTMF CID without polarity change alert.dbailey1-0/+3
Added detection of DTMF tone energy levels on FXO channels in chan_dahdi monitoring loop so DTMF CID can be detected without the need of a polarity change precursor. (closes issue #9096) Reported by: fleed Patches: 9096-chan_dahdi-trunk.diff uploaded by dbailey (license 819) Tested by: cyberplant, sum, maturs git-svn-id: http://svn.digium.com/svn/asterisk/trunk@216094 f38db490-d61c-443f-a65b-d21fe96a405b
2009-08-14More code that somehow got left out of sig_analogjpeeler1-2/+5
* confirmanswer option now respected * check and set waiting for dialtone timer * unneeded needcallerid flag removed from analog_subchannel * ss_astchan does not need to be a void pointer * swap_channels callback updated to trunk * analog_hangup now resets channel to default law git-svn-id: http://svn.digium.com/svn/asterisk/trunk@212287 f38db490-d61c-443f-a65b-d21fe96a405b
2009-08-12Fix chan_dahdi option ringtimeoutjpeeler1-0/+1
dahdi_read relies on the dahdi_pvt copy of ringt which was not getting set in sig_analog. This patch adds a callback to do so. (closes issue #15288) Reported by: alecdavis Patches: chan_dahdi.ringtimeout.diff.txt uploaded by alecdavis (license 585) Tested by: alecdavis git-svn-id: http://svn.digium.com/svn/asterisk/trunk@211908 f38db490-d61c-443f-a65b-d21fe96a405b
2009-07-15The dialing flag was mistakingly removed from sig_pri.jpeeler1-0/+1
This readds the proper setting of the flag and is really a continuation of r205731. The flag was being set properly in sig_analog, but use of the newly added set_dialing callback allowed for some simplification in chan_dahdi. (closes issue #15486) Reported by: rmudgett git-svn-id: http://svn.digium.com/svn/asterisk/trunk@206767 f38db490-d61c-443f-a65b-d21fe96a405b
2009-07-14Restore some missing functionality to sig_analog.jpeeler1-6/+20
The main purpose of this commit is to restore missing functionality present in the ss_thread before all the sig related work was done. Two of the biggest missing things were distinctive ring detection and cid handling for V23. fxsoffhookstate and associated mwi variables have been moved inside sig_analog as they were not being set properly as well. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@206566 f38db490-d61c-443f-a65b-d21fe96a405b
2009-06-26Merge the new Channel Event Logging (CEL) subsystem.russell1-2/+2
CEL is the new system for logging channel events. This was inspired after facing many problems trying to represent what is possible to happen to a call in Asterisk using CDR records. For more information on CEL, see the built in HTML or PDF documentation generated from the files in doc/tex/. Many thanks to Steve Murphy (murf) and Brian Degenhardt (bmd) for their hard work developing this code. Also, thanks to Matt Nicholson (mnicholson) and Sean Bright (seanbright) for their assistance in the final push to get this code ready for Asterisk trunk. Review: https://reviewboard.asterisk.org/r/239/ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@203638 f38db490-d61c-443f-a65b-d21fe96a405b
2009-06-25New signaling module to handle PRI/BRI operations in chan_dahdijpeeler1-5/+5
This merge splits the PRI/BRI signaling logic out of chan_dahdi.c into sig_pri.c. Functionality in theory should not change (mostly). A few trivial changes were made in sig_analog with verbose messages and commenting. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@203304 f38db490-d61c-443f-a65b-d21fe96a405b
2009-05-29New signaling module to handle analog operations in chan_dahdijpeeler1-0/+329
This branch splits all the analog signaling logic out of chan_dahdi.c into sig_analog.c. Functionality in theory should not change at all. As noted in the code, there is still some unused code remaining that will be cleaned up in a later commit. Review: https://reviewboard.asterisk.org/r/253/ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@198088 f38db490-d61c-443f-a65b-d21fe96a405b