tlf-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Tlf-devel] Re: another feature for cwdaemon


From: rein couperus PA0RCT
Subject: Re: [Tlf-devel] Re: another feature for cwdaemon
Date: Sun, 20 Jul 2003 12:17:24 +0200

On Sunday 20 July 2003 10:42, Joop Stakenborg wrote:
> Sergei Klink wrote:
> > Hi all,
> >
> > I saw somebody use a keyer interface with TRlog which has a connector for
> > the manipulator itself, to make a "software" automatic key(pins 12 and 13
> > on the parallel port), and decided to try to do something similar with
> > cwdaemon(0.5). The I/O port programming HOWTO seems to be pretty clear(I
> > happened to have a 1998 book lying at my feet at the moment), although
> > some of the things I just cannot understand there(why did I have to use
> > != instead of == ?). Besides, I'm a very poor C programmer(and not even
> > really a HAM yet), so maybe this is more of a suggestion than
> > solution(also, I don't know if anyone used something similar for the
> > serial port, so I just made a dummy function to prevent it from
> > segfaulting); although it seems to work somehow.

Don't bother with the serial port, the standard for paddle input is pin 12/13 
on the parallel port, with pull-up resistors to pin 14.

Rein PA0RCT

>
> Hi sergei,
>
> Thanks for the patch! I never thought that adding a manipulator would be
> this simple. Can you tell me how the interface circuitry looks like? I
> suppose it is just a pull-up resistor which you need for every pin?
>
> The serial port routine looks okay, there are just not enough pins to
> add a paddle to the serial port...
>
> I will release version 0.6 shortly and then we can add your idea to the
> first 0.7 beta release.
>
> > Anyways, (please excuse me if this is the wrong place to send it) the
> > patch for cwdaemon-0.5 is attached, just to show what I meant(I'm not
> > exactly sure how to do this with 0.6beta1).
>
> I will have a look how I can add this to version 0.6.
> I have cc'd your mail to the tlf-devel mailing list. Most people who
> have worked on cwdaemon are on this list.
>
> > ------------------------------------------------------------------------
> >
> > diff -u -r cwdaemon-0.5/cwdaemon.c cwdaemon-0.5-mod/cwdaemon.c
> > --- cwdaemon-0.5/cwdaemon.c 2003-05-19 10:58:40.000000000 -0600
> > +++ cwdaemon-0.5-mod/cwdaemon.c     2003-07-19 16:02:10.000000000 -0600
> > @@ -54,6 +54,8 @@
> >  unsigned int ptt_delay = 0; /* default = off*/
> >  int ptt_timer_running = 0;
> >
> > +int keyer_data;            /* status of the automatic keyer */
> > +
> >  struct timeval now,end,left;
> >
> >  #define MAXMORSE 4000
> > @@ -125,6 +127,7 @@
> >    init : ttys_init,
> >    free : ttys_free,
> >    reset : ttys_reset,
> > +  status : ttys_status,
> >    cw_on   : ttys_cw_on,
> >    cw_off  : ttys_cw_off,
> >    ptt_on  : ttys_ptt_on,
> > @@ -138,6 +141,7 @@
> >    init : lp_init,
> >    free : lp_free,
> >    reset : lp_reset,
> > +  status : lp_status,
> >    cw_on   : lp_cw_on,
> >    cw_off  : lp_cw_off,
> >    ptt_on  : lp_ptt_on,
> > @@ -900,6 +904,27 @@
> >    while (1)
> >      {
> >        udelay (1000); /*prevent 100% CPU */
> > +
> > +      keyer_data = cwdev->status(cwdev);
> > +      if (keyer_data == 13)                        /* dash */
> > +      {
> > +        debug("dash");
> > +        playbeep(dash);
> > +   udelay (eldelay / morse_speed);         /* delay after the element */
> > +   continue;                               /* don't let cwdaemon do 
> > anything else if the key is
> > still in use */ +      }
> > +      else
> > +      {
> > +        if (keyer_data == 12)                      /* dot */
> > +   {
> > +     debug("dot");
> > +     playbeep(dot);
> > +     udelay (eldelay / morse_speed);       /* delay after the element */
> > +     continue;                             /* don't let cwdaemon do 
> > anything else if the key is
> > still in use */ +   }
> > +      }
> > +
> > +
> >        if (recv_code ())
> >          playmorsestring (morsetext);
> >        /* check for ptt off timer */
> > diff -u -r cwdaemon-0.5/cwdaemon.h cwdaemon-0.5-mod/cwdaemon.h
> > --- cwdaemon-0.5/cwdaemon.h 2003-05-05 14:09:41.000000000 -0600
> > +++ cwdaemon-0.5-mod/cwdaemon.h     2003-07-19 16:08:33.000000000 -0600
> > @@ -90,6 +90,7 @@
> >      int (*init)(struct cwdev_s *);
> >      int (*free)(struct cwdev_s *);
> >      int (*reset)(struct cwdev_s *);
> > +    int (*status)(struct cwdev_s *);
> >      int (*cw_on)(struct cwdev_s *);
> >      int (*cw_off)(struct cwdev_s *);
> >      int (*ptt_on)(struct cwdev_s *);
> > @@ -108,6 +109,7 @@
> >  int lp_init(cwdevice *dev);
> >  int lp_free(cwdevice *dev);
> >  int lp_reset(cwdevice *dev);
> > +int lp_status(cwdevice *dev);
> >  int lp_cw_on(cwdevice *dev);
> >  int lp_cw_off(cwdevice *dev);
> >  int lp_ptt_on(cwdevice *dev);
> > @@ -120,6 +122,7 @@
> >  int ttys_init(cwdevice *dev);
> >  int ttys_free(cwdevice *dev);
> >  int ttys_reset(cwdevice *dev);
> > +int ttys_status(cwdevice *dev);
> >  int ttys_cw_on(cwdevice *dev);
> >  int ttys_cw_off(cwdevice *dev);
> >  int ttys_ptt_on(cwdevice *dev);
> > diff -u -r cwdaemon-0.5/lp.c cwdaemon-0.5-mod/lp.c
> > --- cwdaemon-0.5/lp.c       2003-05-05 14:09:41.000000000 -0600
> > +++ cwdaemon-0.5-mod/lp.c   2003-07-19 16:11:31.000000000 -0600
> > @@ -3,6 +3,29 @@
> >
> >  /* LP functions */
> >
> > +int lp_status(cwdevice *dev)
> > +{
> > +  int port_data;
> > +
> > +  if (ioperm (dev->base+1, 3, 1) == -1)
> > +    {
> > +      errmsg ("Open lp port 0x%x, %d", dev->base, dev->base);
> > +      exit (1);
> > +    }
> > +
> > +
> > +  port_data = inb(dev->base+1);
> > +  if ((port_data & 0x10) != 0x10)  /* Check for pin 13 */
> > +    return 13;     /* dash */
> > +  else
> > +  {
> > +    if ((port_data & 0x20) != 0x20)        /* Check for pin 12 */
> > +      return 12;   /* dot */
> > +    else
> > +      return 0;            /* nothing */
> > +  }
> > +}
> > +
> >  int lp_init(cwdevice *dev)
> >  {
> >    if (ioperm (dev->base+2, 1, 1) == -1)
> > diff -u -r cwdaemon-0.5/ttys.c cwdaemon-0.5-mod/ttys.c
> > --- cwdaemon-0.5/ttys.c     2003-05-17 04:24:01.000000000 -0600
> > +++ cwdaemon-0.5-mod/ttys.c 2003-07-19 16:05:52.000000000 -0600
> > @@ -21,6 +21,12 @@
> >
> >  /* ttyS functions */
> >
> > +int ttys_status(cwdevice *dev)
> > +{
> > +  /* Dummy function */
> > +  return 0;
> > +}
> > +
> >  int ttys_init(cwdevice *dev)
> >  {
> >    if (ioperm (dev->base, 8, 1) == -1)
>
> Regards,
> Joop PA4TU
>
>
>
> _______________________________________________
> Tlf-devel mailing list
> address@hidden
> http://mail.nongnu.org/mailman/listinfo/tlf-devel

-- 
--
Email: address@hidden or address@hidden




reply via email to

[Prev in Thread] Current Thread [Next in Thread]