[svn-commits] jpeeler: branch jpeeler/asterisk-sigwork-trunk r193717 - /team/jpeeler/asteri...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Mon May 11 16:28:07 CDT 2009


Author: jpeeler
Date: Mon May 11 16:28:03 2009
New Revision: 193717

URL: http://svn.asterisk.org/svn-view/asterisk?view=rev&rev=193717
Log:
modify handle_notify_message callback to be able to also handle neon mwi
add forgotten event to analog_event2str
don't pass in unneeded params to dahdievent_to_analogevent


Modified:
    team/jpeeler/asterisk-sigwork-trunk/channels/chan_dahdi.c
    team/jpeeler/asterisk-sigwork-trunk/channels/sig_analog.c
    team/jpeeler/asterisk-sigwork-trunk/channels/sig_analog.h

Modified: team/jpeeler/asterisk-sigwork-trunk/channels/chan_dahdi.c
URL: http://svn.asterisk.org/svn-view/asterisk/team/jpeeler/asterisk-sigwork-trunk/channels/chan_dahdi.c?view=diff&rev=193717&r1=193716&r2=193717
==============================================================================
--- team/jpeeler/asterisk-sigwork-trunk/channels/chan_dahdi.c (original)
+++ team/jpeeler/asterisk-sigwork-trunk/channels/chan_dahdi.c Mon May 11 16:28:03 2009
@@ -1543,7 +1543,7 @@
 	return index;
 }
 
-static enum analog_event dahdievent_to_analogevent(struct dahdi_pvt *p, int event);
+static enum analog_event dahdievent_to_analogevent(int event);
 static int bump_gains(struct dahdi_pvt *p);
 static int dahdi_setlinear(int dfd, int linear);
 
@@ -1590,7 +1590,7 @@
 	res = poll(&poller, 1, timeout);
 
 	if (poller.revents & POLLPRI) {
-		*ev = dahdievent_to_analogevent(p, dahdi_get_event(p->subs[SUB_REAL].dfd));
+		*ev = dahdievent_to_analogevent(dahdi_get_event(p->subs[SUB_REAL].dfd));
 		return 1;
 	}
 
@@ -2016,7 +2016,7 @@
 	return tone_zone_play_tone(p->subs[index].dfd, analog_tone_to_dahditone(tone));
 }
 
-static enum analog_event dahdievent_to_analogevent(struct dahdi_pvt *p, int event)
+static enum analog_event dahdievent_to_analogevent(int event)
 {
 	enum analog_event res = ANALOG_EVENT_ERROR;
 
@@ -2057,6 +2057,12 @@
 		case DAHDI_EVENT_PULSE_START:
 			res = ANALOG_EVENT_PULSE_START;
 			break;
+		case DAHDI_EVENT_NEONMWI_ACTIVE:
+			res = ANALOG_EVENT_NEONMWI_ACTIVE;
+			break;
+		case DAHDI_EVENT_NEONMWI_INACTIVE:
+			res = ANALOG_EVENT_NEONMWI_INACTIVE;
+			break;
 	}
 
 	return res;
@@ -2082,7 +2088,7 @@
 	} else
 		res = dahdi_get_event(p->subs[SUB_REAL].dfd);
 
-	return dahdievent_to_analogevent(p, res);
+	return dahdievent_to_analogevent(res);
 }
 
 static int my_is_off_hook(void *pvt)
@@ -2252,27 +2258,25 @@
 	}
 }
 
-static void my_handle_notify_message(struct ast_channel *chan, void *pvt, int flags)
+static void my_handle_notify_message(struct ast_channel *chan, void *pvt, int cid_flags, int neon_mwievent)
 {
 	struct dahdi_pvt *p = pvt;
 
+	if (neon_mwievent > -1 && !p->mwimonitor_neon)
+		return;
+
+	if (neon_mwievent == ANALOG_EVENT_NEONMWI_ACTIVE || cid_flags & CID_MSGWAITING) {
+		ast_log(LOG_NOTICE, "MWI: Channel %d message waiting, mailbox %s\n", p->channel, p->mailbox);
+		notify_message(p->mailbox, 1);
+	} else if (neon_mwievent == ANALOG_EVENT_NEONMWI_INACTIVE || cid_flags & CID_NOMSGWAITING) {
+		ast_log(LOG_NOTICE, "MWI: Channel %d no message waiting, mailbox %s\n", p->channel, p->mailbox);
+		notify_message(p->mailbox, 0);
+	}
 	/* If the CID had Message waiting payload, assume that this for MWI only and hangup the call */
-	if (flags & CID_MSGWAITING) {
-		ast_log(LOG_NOTICE, "MWI: Channel %d message waiting!\n", p->channel);
-		notify_message(p->mailbox, 1);
-		/* If generated using Ring Pulse Alert, then ring has been answered as a call and needs to be hungup */
-		if (p->mwimonitor_rpas) {
-			ast_hangup(chan);
-			return;
-		}
-	} else if (flags & CID_NOMSGWAITING) {
-		ast_log(LOG_NOTICE, "MWI: Channel %d no message waiting!\n", p->channel);
-		notify_message(p->mailbox, 0);
-		/* If generated using Ring Pulse Alert, then ring has been answered as a call and needs to be hungup */
-		if (p->mwimonitor_rpas) {
-			ast_hangup(chan);
-			return;
-		}
+	/* If generated using Ring Pulse Alert, then ring has been answered as a call and needs to be hungup */
+	if (neon_mwievent == -1 && p->mwimonitor_rpas) {
+		ast_hangup(chan);
+		return;
 	}
 }
 
@@ -9836,7 +9840,7 @@
 		if (cs)
 			callerid_free(cs);
 
-		my_handle_notify_message(chan, p, flags);
+		my_handle_notify_message(chan, p, flags, -1);
 
 		ast_setstate(chan, AST_STATE_RING);
 		chan->rings = 1;
@@ -10606,7 +10610,7 @@
 						/* Don't hold iflock while handling init events */
 						ast_mutex_unlock(&iflock);
 						if (analog_lib_handles(i->sig, i->radio, i->oprmode))
-							analog_handle_init_event(i->sig_pvt, dahdievent_to_analogevent(i, res));
+							analog_handle_init_event(i->sig_pvt, dahdievent_to_analogevent(res));
 						else
 							handle_init_event(i, res);
 						ast_mutex_lock(&iflock);
@@ -10675,7 +10679,7 @@
 					ast_mutex_unlock(&iflock);
 					if (0 == i->mwisendactive || 0 == mwi_send_process_event(i, res)) {
 						if (analog_lib_handles(i->sig, i->radio, i->oprmode))
-							analog_handle_init_event(i->sig_pvt, dahdievent_to_analogevent(i, res));
+							analog_handle_init_event(i->sig_pvt, dahdievent_to_analogevent(res));
 						else
 							handle_init_event(i, res);
 					}

Modified: team/jpeeler/asterisk-sigwork-trunk/channels/sig_analog.c
URL: http://svn.asterisk.org/svn-view/asterisk/team/jpeeler/asterisk-sigwork-trunk/channels/sig_analog.c?view=diff&rev=193717&r1=193716&r2=193717
==============================================================================
--- team/jpeeler/asterisk-sigwork-trunk/channels/sig_analog.c (original)
+++ team/jpeeler/asterisk-sigwork-trunk/channels/sig_analog.c Mon May 11 16:28:03 2009
@@ -227,6 +227,15 @@
 			break;
 		case ANALOG_EVENT_RINGBEGIN:
 			res = "ANALOG_EVENT_RINGBEGIN";
+			break;
+		case ANALOG_EVENT_PULSE_START:
+			res = "ANALOG_EVENT_PULSE_START";
+			break;
+		case ANALOG_EVENT_NEONMWI_ACTIVE:
+			res = "ANALOG_EVENT_NEONMWI_ACTIVE";
+			break;
+		case ANALOG_EVENT_NEONMWI_INACTIVE:
+			res = "ANALOG_EVENT_NEONMWI_INACTIVE";
 			break;
 		default:
 			res = "UNKNOWN/OTHER";
@@ -1199,10 +1208,10 @@
 	}
 }
 
-static int analog_handle_notify_message(struct ast_channel *chan, struct analog_pvt *p, int flags)
+static int analog_handle_notify_message(struct ast_channel *chan, struct analog_pvt *p, int cid_flags, int neon_mwievent)
 {
 	if (p->calls->handle_notify_message) {
-		p->calls->handle_notify_message(chan, p->chan_pvt, flags);
+		p->calls->handle_notify_message(chan, p->chan_pvt, cid_flags, neon_mwievent);
 		return 0;
 	}
 	else
@@ -2120,7 +2129,7 @@
 		if (cs)
 			callerid_free(cs);
 
-		analog_handle_notify_message(chan, p, flags);
+		analog_handle_notify_message(chan, p, flags, -1);
 
 		ast_setstate(chan, AST_STATE_RING);
 		chan->rings = 1;
@@ -3137,6 +3146,12 @@
 				"interface %d\n", i->channel);
 		}
 		break;
+	case ANALOG_EVENT_NEONMWI_ACTIVE:
+		analog_handle_notify_message(NULL, i, -1, ANALOG_EVENT_NEONMWI_ACTIVE);
+		break;
+	case ANALOG_EVENT_NEONMWI_INACTIVE:
+		analog_handle_notify_message(NULL, i, -1, ANALOG_EVENT_NEONMWI_INACTIVE);
+		break;
 	}
 	pthread_attr_destroy(&attr);
 	return 0;

Modified: team/jpeeler/asterisk-sigwork-trunk/channels/sig_analog.h
URL: http://svn.asterisk.org/svn-view/asterisk/team/jpeeler/asterisk-sigwork-trunk/channels/sig_analog.h?view=diff&rev=193717&r1=193716&r2=193717
==============================================================================
--- team/jpeeler/asterisk-sigwork-trunk/channels/sig_analog.h (original)
+++ team/jpeeler/asterisk-sigwork-trunk/channels/sig_analog.h Mon May 11 16:28:03 2009
@@ -61,6 +61,8 @@
 	ANALOG_EVENT_RINGBEGIN,
 	ANALOG_EVENT_PULSE_START,
 	ANALOG_EVENT_ERROR,
+	ANALOG_EVENT_NEONMWI_ACTIVE,
+	ANALOG_EVENT_NEONMWI_INACTIVE,
 };
 
 enum analog_sub {
@@ -161,7 +163,7 @@
 
 	int (* const has_voicemail)(void *pvt);
 	int (* const check_for_conference)(void *pvt);
-	void (* const handle_notify_message)(struct ast_channel *chan, void *pvt, int flags);
+	void (* const handle_notify_message)(struct ast_channel *chan, void *pvt, int cid_flags, int neon_mwievent);
 
 };
 




More information about the svn-commits mailing list