Custom DTMF decoding

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Custom DTMF decoding

daglitch
Searched through past messages and didn't find anything that was related to what I am looking for. Currently digits are decoded with the "SimplexLogic", and I was wondering if there was any way to change this. I have some hardware doing the decoding for me and outputting the decoded digit as a 4 digit binary number "0001" for '1', "0010" for '2', etc... These 4 digits then go to 4 GPIO pins on the raspberry pi for interfacing. I was wondering if there was currently any easy way to have svxlink use the GPIO pins for determining which dtmf tone was pressed. Thank you :)
Reply | Threaded
Open this post in threaded view
|

Re: Custom DTMF decoding

Tobias Blomberg
On Tuesday 25 February 2014 13:46:12 daglitch wrote:
> Searched through past messages and didn't find anything that was related to
> what I am looking for. Currently digits are decoded with the "SimplexLogic",
> and I was wondering if there was any way to change this. I have some
> hardware doing the decoding for me and outputting the decoded digit as a 4
> digit binary number "0001" for '1', "0010" for '2', etc... These 4 digits
> then go to 4 GPIO pins on the raspberry pi for interfacing. I was wondering
> if there was currently any easy way to have svxlink use the GPIO pins for
> determining which dtmf tone was pressed. Thank you :)

My first question would be, isn't the software decoding good enough?  I know
there are some problems with the software decoder but I'm curious to know what
you think is the biggest problem.

To answer your question, there is no support in SvxLink for reading DTMF
through GPIO. You need to write some C++ code to do that. The S54sDtmfDecoder
class (svxlink/trx/S54sDtmfDecoder.{h,cpp}) can be used as a template.

Also, I'd say that four pins is not enough. You need a strobe pin that say
when the value on the data pins are valid. Otherwise it will be impossible to
decode all 16 digits. Depending on your specific DTMF decoder it will also be
hard or impossible to detect when a digit begin/end.

73's de SM0SVX / Tobias


------------------------------------------------------------------------------
Flow-based real-time traffic analytics software. Cisco certified tool.
Monitor traffic, SLAs, QoS, Medianet, WAAS etc. with NetFlow Analyzer
Customize your own dashboards, set traffic alerts and generate reports.
Network behavioral analysis & security monitoring. All-in-one tool.
http://pubads.g.doubleclick.net/gampad/clk?id=126839071&iu=/4140/ostg.clktrk
_______________________________________________
Svxlink-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/svxlink-devel
Reply | Threaded
Open this post in threaded view
|

Re: Custom DTMF decoding

daglitch
Thanks for getting back to me. Yea the software works OK, I've just found instances of where noisy connections will sometimes register as a key press. The way my hardware works right now is similar to that of the IRLP stuff where '0000' is the default state. Since it doesn't matter what letters are decoded, this is what I have. So, it'll be '0000' on the pins, they you'll see a clock cycle (or how ever long I make it) strobe of the digit actually pressed. It also wouldn't be hard for me to route out a 'dtmf_valid' signal or something similar since I have this implemented in re-configurable hardware. Reason why I wanted to use hardware is that I spent a lot of time implementing some filtering, and cleaning up of signals. I may try to take a crack at coding something up, but just thought I would see if I missed something with the current implementation. 


On Thu, Feb 27, 2014 at 12:07 AM, SM0SVX <[hidden email]> wrote:
On Tuesday 25 February 2014 13:46:12 daglitch wrote:
> Searched through past messages and didn't find anything that was related to
> what I am looking for. Currently digits are decoded with the "SimplexLogic",
> and I was wondering if there was any way to change this. I have some
> hardware doing the decoding for me and outputting the decoded digit as a 4
> digit binary number "0001" for '1', "0010" for '2', etc... These 4 digits
> then go to 4 GPIO pins on the raspberry pi for interfacing. I was wondering
> if there was currently any easy way to have svxlink use the GPIO pins for
> determining which dtmf tone was pressed. Thank you :)

My first question would be, isn't the software decoding good enough?  I know
there are some problems with the software decoder but I'm curious to know what
you think is the biggest problem.

To answer your question, there is no support in SvxLink for reading DTMF
through GPIO. You need to write some C++ code to do that. The S54sDtmfDecoder
class (svxlink/trx/S54sDtmfDecoder.{h,cpp}) can be used as a template.

Also, I'd say that four pins is not enough. You need a strobe pin that say
when the value on the data pins are valid. Otherwise it will be impossible to
decode all 16 digits. Depending on your specific DTMF decoder it will also be
hard or impossible to detect when a digit begin/end.

73's de SM0SVX / Tobias


------------------------------------------------------------------------------
Flow-based real-time traffic analytics software. Cisco certified tool.
Monitor traffic, SLAs, QoS, Medianet, WAAS etc. with NetFlow Analyzer
Customize your own dashboards, set traffic alerts and generate reports.
Network behavioral analysis & security monitoring. All-in-one tool.
http://pubads.g.doubleclick.net/gampad/clk?id=126839071&iu=/4140/ostg.clktrk
_______________________________________________
Svxlink-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/svxlink-devel


------------------------------------------------------------------------------
Flow-based real-time traffic analytics software. Cisco certified tool.
Monitor traffic, SLAs, QoS, Medianet, WAAS etc. with NetFlow Analyzer
Customize your own dashboards, set traffic alerts and generate reports.
Network behavioral analysis & security monitoring. All-in-one tool.
http://pubads.g.doubleclick.net/gampad/clk?id=126839071&iu=/4140/ostg.clktrk
_______________________________________________
Svxlink-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/svxlink-devel
Reply | Threaded
Open this post in threaded view
|

Re: Custom DTMF decoding

Tobias Blomberg
On Thursday 27 February 2014 00:17:52 Mitch Martin wrote:
> Thanks for getting back to me. Yea the software works OK, I've just found
> instances of where noisy connections will sometimes register as a key
> press.

Yes, that's one of the existing problems. I don't think it's triggered that
much by noise but rather by speech. Especially long vocals may be detected as
DTMF-digits.


> The way my hardware works right now is similar to that of the IRLP
> stuff where '0000' is the default state. Since it doesn't matter what
> letters are decoded, this is what I have. So, it'll be '0000' on the pins,
> they you'll see a clock cycle (or how ever long I make it) strobe of the
> digit actually pressed.

OK, but then detecting digit zero will be impossible. All 16 digits are used
by SvxLink and for example, EchoLink node ID:s may contain zeros.


> It also wouldn't be hard for me to route out a
> 'dtmf_valid' signal or something similar since I have this implemented in
> re-configurable hardware.

I think that would be well worth the trouble to get a complete implementation.
I wouldn't want a DTMF decoder implementation in SvxLink that does not fully
support all functionality.

73's de SM0SVX / Tobias


> Reason why I wanted to use hardware is that I
> spent a lot of time implementing some filtering, and cleaning up of
> signals. I may try to take a crack at coding something up, but just thought
> I would see if I missed something with the current implementation.
>
> On Thu, Feb 27, 2014 at 12:07 AM, SM0SVX
<[hidden email]>wrote:

> > On Tuesday 25 February 2014 13:46:12 daglitch wrote:
> > > Searched through past messages and didn't find anything that was related
> >
> > to
> >
> > > what I am looking for. Currently digits are decoded with the
> >
> > "SimplexLogic",
> >
> > > and I was wondering if there was any way to change this. I have some
> > > hardware doing the decoding for me and outputting the decoded digit as a
> >
> > 4
> >
> > > digit binary number "0001" for '1', "0010" for '2', etc... These 4
> > > digits
> > > then go to 4 GPIO pins on the raspberry pi for interfacing. I was
> >
> > wondering
> >
> > > if there was currently any easy way to have svxlink use the GPIO pins
> > > for
> > > determining which dtmf tone was pressed. Thank you :)
> >
> > My first question would be, isn't the software decoding good enough?  I
> > know
> > there are some problems with the software decoder but I'm curious to know
> > what
> > you think is the biggest problem.
> >
> > To answer your question, there is no support in SvxLink for reading DTMF
> > through GPIO. You need to write some C++ code to do that. The
> > S54sDtmfDecoder
> > class (svxlink/trx/S54sDtmfDecoder.{h,cpp}) can be used as a template.
> >
> > Also, I'd say that four pins is not enough. You need a strobe pin that say
> > when the value on the data pins are valid. Otherwise it will be impossible
> > to
> > decode all 16 digits. Depending on your specific DTMF decoder it will also
> > be
> > hard or impossible to detect when a digit begin/end.
> >
> > 73's de SM0SVX / Tobias


------------------------------------------------------------------------------
Subversion Kills Productivity. Get off Subversion & Make the Move to Perforce.
With Perforce, you get hassle-free workflows. Merge that actually works.
Faster operations. Version large binaries.  Built-in WAN optimization and the
freedom to use Git, Perforce or both. Make the move to Perforce.
http://pubads.g.doubleclick.net/gampad/clk?id=122218951&iu=/4140/ostg.clktrk
_______________________________________________
Svxlink-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/svxlink-devel
Reply | Threaded
Open this post in threaded view
|

Re: Custom DTMF decoding

daglitch
All very valid points you brought up. A '0000' signal with this decoder is a 'D' which is why I went ahead and used it, while a '0001' signal is a "0". Anyways, I went ahead and added an additional signal that is routed to the Raspberry Pi's pin 13, which I think is GPIO27? This pin will go high when the DTMF tone is valid and the other pins are ready to be read. I currently have the following pins used for the DTMF decoded bits:

Pin 7 is "Bit1" or LSB (Least significant bit)
Pin 22 is "Bit2"  
Pin 21 is "Bit3"  
Pin 18 is "Bit4"  MSB (Most significant bit)

Scoped it out and it appears to function like you would like to see. Now, just need to work on the software sides of things I guess.


On Sat, Mar 8, 2014 at 12:51 AM, SM0SVX <[hidden email]> wrote:
On Thursday 27 February 2014 00:17:52 Mitch Martin wrote:
> Thanks for getting back to me. Yea the software works OK, I've just found
> instances of where noisy connections will sometimes register as a key
> press.

Yes, that's one of the existing problems. I don't think it's triggered that
much by noise but rather by speech. Especially long vocals may be detected as
DTMF-digits.


> The way my hardware works right now is similar to that of the IRLP
> stuff where '0000' is the default state. Since it doesn't matter what
> letters are decoded, this is what I have. So, it'll be '0000' on the pins,
> they you'll see a clock cycle (or how ever long I make it) strobe of the
> digit actually pressed.

OK, but then detecting digit zero will be impossible. All 16 digits are used
by SvxLink and for example, EchoLink node ID:s may contain zeros.


> It also wouldn't be hard for me to route out a
> 'dtmf_valid' signal or something similar since I have this implemented in
> re-configurable hardware.

I think that would be well worth the trouble to get a complete implementation.
I wouldn't want a DTMF decoder implementation in SvxLink that does not fully
support all functionality.

73's de SM0SVX / Tobias


> Reason why I wanted to use hardware is that I
> spent a lot of time implementing some filtering, and cleaning up of
> signals. I may try to take a crack at coding something up, but just thought
> I would see if I missed something with the current implementation.
>
> On Thu, Feb 27, 2014 at 12:07 AM, SM0SVX
<[hidden email]>wrote:
> > On Tuesday 25 February 2014 13:46:12 daglitch wrote:
> > > Searched through past messages and didn't find anything that was related
> >
> > to
> >
> > > what I am looking for. Currently digits are decoded with the
> >
> > "SimplexLogic",
> >
> > > and I was wondering if there was any way to change this. I have some
> > > hardware doing the decoding for me and outputting the decoded digit as a
> >
> > 4
> >
> > > digit binary number "0001" for '1', "0010" for '2', etc... These 4
> > > digits
> > > then go to 4 GPIO pins on the raspberry pi for interfacing. I was
> >
> > wondering
> >
> > > if there was currently any easy way to have svxlink use the GPIO pins
> > > for
> > > determining which dtmf tone was pressed. Thank you :)
> >
> > My first question would be, isn't the software decoding good enough?  I
> > know
> > there are some problems with the software decoder but I'm curious to know
> > what
> > you think is the biggest problem.
> >
> > To answer your question, there is no support in SvxLink for reading DTMF
> > through GPIO. You need to write some C++ code to do that. The
> > S54sDtmfDecoder
> > class (svxlink/trx/S54sDtmfDecoder.{h,cpp}) can be used as a template.
> >
> > Also, I'd say that four pins is not enough. You need a strobe pin that say
> > when the value on the data pins are valid. Otherwise it will be impossible
> > to
> > decode all 16 digits. Depending on your specific DTMF decoder it will also
> > be
> > hard or impossible to detect when a digit begin/end.
> >
> > 73's de SM0SVX / Tobias


------------------------------------------------------------------------------
Subversion Kills Productivity. Get off Subversion & Make the Move to Perforce.
With Perforce, you get hassle-free workflows. Merge that actually works.
Faster operations. Version large binaries.  Built-in WAN optimization and the
freedom to use Git, Perforce or both. Make the move to Perforce.
http://pubads.g.doubleclick.net/gampad/clk?id=122218951&iu=/4140/ostg.clktrk
_______________________________________________
Svxlink-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/svxlink-devel


------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
_______________________________________________
Svxlink-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/svxlink-devel
Reply | Threaded
Open this post in threaded view
|

Re: Custom DTMF decoding

Rob Janssen
Mitch Martin wrote:

> All very valid points you brought up. A '0000' signal with this decoder is a 'D' which is why I went ahead and used it, while a '0001' signal is a "0". Anyways, I went ahead and added an additional signal that is routed to the Raspberry Pi's pin
> 13, which I think is GPIO27? This pin will go high when the DTMF tone is valid and the other pins are ready to be read. I currently have the following pins used for the DTMF decoded bits:
>
> Pin 7 is "Bit1" or LSB (Least significant bit)
> Pin 22 is "Bit2"
> Pin 21 is "Bit3"
> Pin 18 is "Bit4"  MSB (Most significant bit)
>
> Scoped it out and it appears to function like you would like to see. Now, just need to work on the software sides of things I guess.
>

I think it would be much more useful for you to work on the DTMF decoding software within svxlink.
When you have the knowledge to design a hardware DTMF decoder that works better than the built-in software decoding,
maybe you can also improve the software decoding using the same criteria as you designed in the hardware.

It should be possible to write a decoder in software that performs at least as good, and maybe even better, than whatever
you can build in hardware.   And with software, it is a one-time effort that can be used by everyone :-)

Rob

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
_______________________________________________
Svxlink-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/svxlink-devel
Reply | Threaded
Open this post in threaded view
|

Re: Custom DTMF decoding

Tobias Blomberg
In reply to this post by daglitch
On Sunday 09 March 2014 23:27:39 Mitch Martin wrote:
> All very valid points you brought up. A '0000' signal with this decoder is
> a 'D' which is why I went ahead and used it, while a '0001' signal is a
> "0".

Even D is used in SvxLink. It's for executing a macro.


> Anyways, I went ahead and added an additional signal that is routed to
> the Raspberry Pi's pin 13, which I think is GPIO27? This pin will go high
> when the DTMF tone is valid and the other pins are ready to be read. I
> currently have the following pins used for the DTMF decoded bits:
>
> Pin 7 is "Bit1" or LSB (Least significant bit)
> Pin 22 is "Bit2"
> Pin 21 is "Bit3"
> Pin 18 is "Bit4"  MSB (Most significant bit)
>
> Scoped it out and it appears to function like you would like to see. Now,
> just need to work on the software sides of things I guess.

Sounds much better to me :-)

73's de SM0SVX / Tobias


>
> On Sat, Mar 8, 2014 at 12:51 AM, SM0SVX <[hidden email]>wrote:
> > On Thursday 27 February 2014 00:17:52 Mitch Martin wrote:
> > > Thanks for getting back to me. Yea the software works OK, I've just
> > > found
> > > instances of where noisy connections will sometimes register as a key
> > > press.
> >
> > Yes, that's one of the existing problems. I don't think it's triggered
> > that
> > much by noise but rather by speech. Especially long vocals may be detected
> > as
> > DTMF-digits.
> >
> > > The way my hardware works right now is similar to that of the IRLP
> > > stuff where '0000' is the default state. Since it doesn't matter what
> > > letters are decoded, this is what I have. So, it'll be '0000' on the
> >
> > pins,
> >
> > > they you'll see a clock cycle (or how ever long I make it) strobe of the
> > > digit actually pressed.
> >
> > OK, but then detecting digit zero will be impossible. All 16 digits are
> > used
> > by SvxLink and for example, EchoLink node ID:s may contain zeros.
> >
> > > It also wouldn't be hard for me to route out a
> > > 'dtmf_valid' signal or something similar since I have this implemented
> > > in
> > > re-configurable hardware.
> >
> > I think that would be well worth the trouble to get a complete
> > implementation.
> > I wouldn't want a DTMF decoder implementation in SvxLink that does not
> > fully
> > support all functionality.
> >
> > 73's de SM0SVX / Tobias
> >
> > > Reason why I wanted to use hardware is that I
> > > spent a lot of time implementing some filtering, and cleaning up of
> > > signals. I may try to take a crack at coding something up, but just
> >
> > thought
> >
> > > I would see if I missed something with the current implementation.
> > >
> > > On Thu, Feb 27, 2014 at 12:07 AM, SM0SVX
> >
> > <[hidden email]>wrote:
> > > > On Tuesday 25 February 2014 13:46:12 daglitch wrote:
> > > > > Searched through past messages and didn't find anything that was
> >
> > related
> >
> > > > to
> > > >
> > > > > what I am looking for. Currently digits are decoded with the
> > > >
> > > > "SimplexLogic",
> > > >
> > > > > and I was wondering if there was any way to change this. I have some
> > > > > hardware doing the decoding for me and outputting the decoded digit
> >
> > as a
> >
> > > > 4
> > > >
> > > > > digit binary number "0001" for '1', "0010" for '2', etc... These 4
> > > > > digits
> > > > > then go to 4 GPIO pins on the raspberry pi for interfacing. I was
> > > >
> > > > wondering
> > > >
> > > > > if there was currently any easy way to have svxlink use the GPIO
> > > > > pins
> > > > > for
> > > > > determining which dtmf tone was pressed. Thank you :)
> > > >
> > > > My first question would be, isn't the software decoding good enough?
> > > > I
> > > > know
> > > > there are some problems with the software decoder but I'm curious to
> >
> > know
> >
> > > > what
> > > > you think is the biggest problem.
> > > >
> > > > To answer your question, there is no support in SvxLink for reading
> >
> > DTMF
> >
> > > > through GPIO. You need to write some C++ code to do that. The
> > > > S54sDtmfDecoder
> > > > class (svxlink/trx/S54sDtmfDecoder.{h,cpp}) can be used as a template.
> > > >
> > > > Also, I'd say that four pins is not enough. You need a strobe pin that
> >
> > say
> >
> > > > when the value on the data pins are valid. Otherwise it will be
> >
> > impossible
> >
> > > > to
> > > > decode all 16 digits. Depending on your specific DTMF decoder it will
> >
> > also
> >
> > > > be
> > > > hard or impossible to detect when a digit begin/end.
> > > >
> > > > 73's de SM0SVX / Tobias


------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
_______________________________________________
Svxlink-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/svxlink-devel