[Asterisk-Dev] Fix for file playback

Steven Critchfield critch at basesys.com
Wed Jul 16 09:21:20 MST 2003


On Wed, 2003-07-16 at 10:54, Lubomir Christov wrote:
> COOL
> I'll test it immediately
> 
> Thanks
> Lubo
> 
> P.S. Can somebody enplane me how we can use dummy zaptel hardware if we 
> haven't a real one :)

Edit the makefile so that it is going to be made, then install it, then
modprobe ztdummy. You do not need to configure it as it isn't a channel,
it just is a source of interupts to help drive the application.

> Michael Manousos wrote:
> > 
> > This patch fixes the playback of the prompt files for
> > machines that do not have any zaptel hardware (real or dummy).
> > Mark, consider it disclaimed and feel free to apply it
> > in the CVS.
> > 
> > Michael.
> > 
> > 
> > 
> > ------------------------------------------------------------------------
> > 
> > Index: sched.c
> > ===================================================================
> > RCS file: /usr/cvsroot/asterisk/sched.c,v
> > retrieving revision 1.1.1.1
> > diff -u -r1.1.1.1 sched.c
> > --- sched.c	12 Feb 2003 13:59:13 -0000	1.1.1.1
> > +++ sched.c	16 Jul 2003 15:32:22 -0000
> > @@ -180,13 +180,36 @@
> >  
> >  static inline int sched_settime(struct timeval *tv, int when)
> >  {
> > -	if (gettimeofday(tv, NULL) < 0) {
> > -			/* This shouldn't ever happen, but let's be sure */
> > -			ast_log(LOG_NOTICE, "gettimeofday() failed!\n");
> > -			return -1;
> > +	struct timeval tv_tmp;
> > +	long error_sec, error_usec;
> > +
> > +	if (gettimeofday(&tv_tmp, NULL) < 0) {
> > +		/* This shouldn't ever happen, but let's be sure */
> > +		ast_log(LOG_NOTICE, "gettimeofday() failed!\n");
> > +		return -1;
> > +	}
> > +	/*ast_log(LOG_DEBUG, "TV -> %lu,%lu\n", tv->tv_sec, tv->tv_usec);*/
> > +	if (((unsigned long)(tv->tv_sec) > 0)&&((unsigned long)(tv->tv_usec) > 0)) {
> > +		if ((unsigned long)(tv_tmp.tv_usec) < (unsigned long)(tv->tv_usec)) {
> > +			tv_tmp.tv_usec += 1000000;
> > +			tv_tmp.tv_sec -= 1;
> > +		}
> > +		error_sec = (unsigned long)(tv_tmp.tv_sec) - (unsigned long)(tv->tv_sec);
> > +		error_usec = (unsigned long)(tv_tmp.tv_usec) - (unsigned long)(tv->tv_usec);
> > +	} else {
> > +		/*ast_log(LOG_DEBUG, "Initializing error\n");*/
> > +		error_sec = 0;
> > +		error_usec = 0;
> > +	}
> > +	/*ast_log(LOG_DEBUG, "ERROR -> %lu,%lu\n", error_sec, error_usec);*/
> > +	if (error_sec * 1000 + error_usec / 1000 < when) {
> > +		tv->tv_sec = tv_tmp.tv_sec + (when/1000 - error_sec);
> > +		tv->tv_usec = tv_tmp.tv_usec + ((when % 1000) * 1000 - error_usec);
> > +	} else {
> > +		ast_log(LOG_NOTICE, "Request to schedule in the past?!?!\n");
> > +		tv->tv_sec = tv_tmp.tv_sec;
> > +		tv->tv_usec = tv_tmp.tv_usec;
> >  	}
> > -	tv->tv_sec += when/1000;
> > -	tv->tv_usec += (when % 1000) * 1000;
> >  	if (tv->tv_usec > 1000000) {
> >  		tv->tv_sec++;
> >  		tv->tv_usec-= 1000000;
> > @@ -210,6 +233,8 @@
> >  		tmp->callback = callback;
> >  		tmp->data = data;
> >  		tmp->resched = when;
> > +		tmp->when.tv_sec = 0;
> > +		tmp->when.tv_usec = 0;
> >  		if (sched_settime(&tmp->when, when)) {
> >  			sched_release(con, tmp);
> >  			return -1;
> 
> _______________________________________________
> Asterisk-Dev mailing list
> Asterisk-Dev at lists.digium.com
> http://lists.digium.com/mailman/listinfo/asterisk-dev
-- 
Steven Critchfield  <critch at basesys.com>




More information about the asterisk-dev mailing list