[Freeswitch-users] zapata.conf immediate=yes in Asterisk - Freeswitch equivalent - a solution of sorts.

Anthony Minessale anthony.minessale at gmail.com
Thu Jan 15 14:31:56 PST 2009


open a jira and attach a svn diff and we'll have a look
thanks


On Thu, Jan 15, 2009 at 5:14 AM, Scott Ellis <scott.ellis at novatex.com.au>wrote:

> So I decided to hack the code to see if I could just get it to do what I
> wanted - assuming some kind of error in the options setting.
>
> First I changed the state change code to just skip straight to IDLE
>
> if (!event->channel->ring_count && (event->channel->state ==
> ZAP_CHANNEL_STATE_DOWN && !zap_test_flag(event->channel,
> ZAP_CHANNEL_INTHREAD))) {
>                //              if (zap_test_flag(analog_data,
> ZAP_ANALOG_CALLERID)) {
>                //                      zap_set_state_locked(event->channel,
> ZAP_CHANNEL_STATE_GET_CALLERID);
>                //              } else {
>                                        zap_set_state_locked(event->channel,
> ZAP_CHANNEL_STATE_IDLE);
>                //              }
>                                event->channel->ring_count = 1;
>                                zap_mutex_unlock(event->channel->mutex);
>                                locked = 0;
>
>  zap_thread_create_detached(zap_analog_channel_run, event->channel);
>                        } else {
>                                event->channel->ring_count++;
>                        }
>
> So we skip the GET_CALLERID state altogether.
>
> This generated an illegal state change message cannot go from DOWN to IDLE
>
> So then changed the code to
>
> if (!event->channel->ring_count && (event->channel->state ==
> ZAP_CHANNEL_STATE_DOWN && !zap_test_flag(event->channel,
> ZAP_CHANNEL_INTHREAD))) {
>                //              if (zap_test_flag(analog_data,
> ZAP_ANALOG_CALLERID)) {
>                                        zap_set_state_locked(event->channel,
> ZAP_CHANNEL_STATE_GET_CALLERID);
>                //              } else {
>                                        zap_set_state_locked(event->channel,
> ZAP_CHANNEL_STATE_IDLE);
>                //              }
>                                event->channel->ring_count = 1;
>                                zap_mutex_unlock(event->channel->mutex);
>                                locked = 0;
>
>  zap_thread_create_detached(zap_analog_channel_run, event->channel);
>                        } else {
>                                event->channel->ring_count++;
>                        }
>
> Allowing the state change to GET_CALLERID, then immediately to IDLE.
>
> This works perfectly - the call is answered straight away. At the moment
> I don't know enough about linux debugging to step through the parameter
> code to see why setting get caller ID to false in openzap.conf.xml does
> not get passed through, but even if it does the current code will still
> run into the illegal state change error.
>
> 2009-01-15 21:59:18 [DEBUG] ozmod_analog.c:744 process_event() EVENT
> [RING_START][1:1] STATE [DOWN]
> 2009-01-15 21:59:18 [DEBUG] ozmod_analog.c:760 process_event() Changing
> state on 1:1 from DOWN to GET_CALLERID
> 2009-01-15 21:59:18 [DEBUG] ozmod_analog.c:762 process_event() Changing
> state on 1:1 from GET_CALLERID to IDLE
> 2009-01-15 21:59:18 [DEBUG] ozmod_analog.c:239 zap_analog_channel_run()
> ANALOG CHANNEL thread starting.
> 2009-01-15 21:59:18 [DEBUG] ozmod_analog.c:410 zap_analog_channel_run()
> Executing state handler on 1:1 for IDLE
> 2009-01-15 21:59:18 [DEBUG] mod_openzap.c:1165 on_fxo_signal() got FXO
> sig 1:1 [START]
> 2009-01-15 21:59:18 [DEBUG] mod_openzap.c:340 tech_init() Set codec PCMU
> 20ms
> 2009-01-15 21:59:18 [DEBUG] mod_openzap.c:1137 zap_channel_from_event()
> Connect inbound channel OpenZAP/1:1/1
> 2009-01-15 21:59:18 [NOTICE] switch_channel.c:565
> switch_channel_set_name() New Channel OpenZAP/1:1/1
> [8e2a55c8-e2f3-11dd-adfd-6d934f226ffd]
>
> Will go and put this into JIRA in the next couple of days.
>
> Scott
>
> Scott Ellis wrote:
> > After poking around in the code, it looks like if I set <param
> > name="enable-callerid" value="false"/> in openzap.conf.xml, it should
> > skip the GET_CALLERID state, and I should get the call answered straight
> > away.
> >
> > mod_openzap.c
> >
> > } else if (!strcasecmp(var, "enable-callerid")) {
> >                     enable_callerid = val;
> >
> >
> > if (zap_configure_span("analog", span, on_analog_signal,
> >                                    "tonemap", tonegroup,
> >                                    "digit_timeout", &to,
> >                                    "max_dialstr", &max,
> >                                    "hotline", hotline,
> >                                    "enable_callerid", enable_callerid,
> >                                    TAG_END) != ZAP_SUCCESS) {
> >                 zap_log(ZAP_LOG_ERROR, "Error starting OpenZAP span
> > %d\n", span_id);
> >                 continue;
> >             }
> >
> > ozmod_analog.c
> >
> >             else if (!strcasecmp(var, "enable_callerid")) {
> >             if (!(val = va_arg(ap, char *))) {
> >                 break;
> >             }
> >             if (zap_true(val)) {
> >                 flags |= ZAP_ANALOG_CALLERID;
> >             } else {
> >                 flags &= ~ZAP_ANALOG_CALLERID;
> >             }
> >
> > and
> >
> > case ZAP_OOB_RING_START:
> >         {
> >             if (event->channel->type != ZAP_CHAN_TYPE_FXO) {
> >                 zap_log(ZAP_LOG_ERROR, "Cannot get a RING_START event on
> > a non-fxo channel, please check your config.\n");
> >                 zap_set_state_locked(event->channel,
> > ZAP_CHANNEL_STATE_DOWN);
> >                 goto end;
> >             }
> >             if (!event->channel->ring_count && (event->channel->state ==
> > ZAP_CHANNEL_STATE_DOWN && !zap_test_flag(event->channel,
> > ZAP_CHANNEL_INTHREAD))) {
> >                 if (zap_test_flag(analog_data, ZAP_ANALOG_CALLERID)) {
> >                     zap_set_state_locked(event->channel,
> > ZAP_CHANNEL_STATE_GET_CALLERID);
> >                 } else {
> >                     zap_set_state_locked(event->channel,
> > ZAP_CHANNEL_STATE_IDLE);
> >                 }
> >                 event->channel->ring_count = 1;
> >                 zap_mutex_unlock(event->channel->mutex);
> >                 locked = 0;
> >                 zap_thread_create_detached(zap_analog_channel_run,
> > event->channel);
> >             } else {
> >                 event->channel->ring_count++;
> >             }
> >         }
> >         break;
> >
> > 2009-01-15 20:19:44 [DEBUG] ozmod_analog.c:744 process_event() EVENT
> > [RING_START][1:1] STATE [DOWN]
> > 2009-01-15 20:19:44 [DEBUG] ozmod_analog.c:760 process_event() Changing
> > state on 1:1 from DOWN to GET_CALLERID
> > 2009-01-15 20:19:44 [DEBUG] ozmod_analog.c:239 zap_analog_channel_run()
> > ANALOG CHANNEL thread starting.
> > 2009-01-15 20:19:44 [DEBUG] ozmod_analog.c:410 zap_analog_channel_run()
> > Executing state handler on 1:1 for GET_CALLERID
> > 2009-01-15 20:19:44 [DEBUG] ozmod_analog.c:744 process_event() EVENT
> > [RING_START][1:1] STATE [GET_CALLERID]
> > 2009-01-15 20:19:44 [DEBUG] ozmod_analog.c:744 process_event() EVENT
> > [RING_START][1:1] STATE [GET_CALLERID]
> > 2009-01-15 20:19:45 [DEBUG] ozmod_analog.c:744 process_event() EVENT
> > [RING_START][1:1] STATE [GET_CALLERID]
> > 2009-01-15 20:19:47 [DEBUG] ozmod_analog.c:744 process_event() EVENT
> > [RING_START][1:1] STATE [GET_CALLERID]
> > 2009-01-15 20:19:47 [DEBUG] ozmod_analog.c:744 process_event() EVENT
> > [RING_START][1:1] STATE [GET_CALLERID]
> > 2009-01-15 20:19:47 [DEBUG] ozmod_analog.c:744 process_event() EVENT
> > [RING_START][1:1] STATE [GET_CALLERID]
> > 2009-01-15 20:19:48 [DEBUG] ozmod_analog.c:744 process_event() EVENT
> > [RING_START][1:1] STATE [GET_CALLERID]
> > 2009-01-15 20:19:49 [DEBUG] ozmod_analog.c:292 zap_analog_channel_run()
> > Changing state on 1:1 from GET_CALLERID to IDLE
> > 2009-01-15 20:19:49 [DEBUG] ozmod_analog.c:410 zap_analog_channel_run()
> > Executing state handler on 1:1 for IDLE
> > 2009-01-15 20:19:49 [DEBUG] mod_openzap.c:1165 on_fxo_signal() got FXO
> > sig 1:1 [START]
> >
> > The code all looks right, but I am not getting what I think should
> > happen. Anyone with any ideas?
> >
> > Scott
> >
> > Scott Ellis wrote:
> >
> >> Searched the wiki and mailing lists as best I can, but with no luck.
> >>
> >> How do I get OpenZap to answer a call immediately? (I do not need caller
> id)
> >>
> >> Scott
> >>
> >>
> >>
> >> _______________________________________________
> >> Freeswitch-users mailing list
> >> Freeswitch-users at lists.freeswitch.org
> >> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> >> UNSUBSCRIBE:
> http://lists.freeswitch.org/mailman/options/freeswitch-users
> >> http://www.freeswitch.org
> >>
> >>
> >>
> >
> >
> > _______________________________________________
> > Freeswitch-users mailing list
> > Freeswitch-users at lists.freeswitch.org
> > http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> > UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> > http://www.freeswitch.org
> >
> >
>
>
> _______________________________________________
> Freeswitch-users mailing list
> Freeswitch-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org
>



-- 
Anthony Minessale II

FreeSWITCH http://www.freeswitch.org/
ClueCon http://www.cluecon.com/

AIM: anthm
MSN:anthony_minessale at hotmail.com <MSN%3Aanthony_minessale at hotmail.com>
GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com<PAYPAL%3Aanthony.minessale at gmail.com>
IRC: irc.freenode.net #freeswitch

FreeSWITCH Developer Conference
sip:888 at conference.freeswitch.org <sip%3A888 at conference.freeswitch.org>
iax:guest at conference.freeswitch.org/888
googletalk:conf+888 at conference.freeswitch.org<googletalk%3Aconf%2B888 at conference.freeswitch.org>
pstn:213-799-1400
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20090115/f708b487/attachment-0001.html 


More information about the Freeswitch-users mailing list