Hi David,
On 30/08/15 18:00, David Rowe wrote:
> Thanks for your ideas. I am looking for someone who would like to work
> on the C coding for the SM1000 UI. Please contact me if you are
> interested.
I can't promise a lot of time to be spent on this, but I can look into it.
> Voice prompts could be stored efficiently using Codec 2 compression. I
> imagine we have some nice studio voices out there in Ham land that could
> be used. The voice actor could read a script of the 20 or so words we
> need, then some one would need to segment these into separate wave
> files, compress, and use a utility to pack into C header files.
Indeed, the problem is getting someone who would be willing to "be the
voice", and how to handle later additions. You've either got to put up
with the voice suddenly changing or get the person back again.
Morse code packs in even tighter, so in the short term we can do the
Morse interface while we flesh out how the menu will be structured, then
later when things are more concrete, we can contract someone to record
the voice prompts.
Fundamentally, there's little difference from the menu interface
perspective, just calling a different function to generate the waveform.
> I'm OK with using PTT as an "OK" button when in "menu" mode. It's just
> another GPIO, and can be disconnected from the radio PTT line in
> software when in "menu" mode. So that's gives us a three buttons,
> select, back, ok which should be enough.
Yep, I did look into that, at first I thought it might've been in
parallel with the external PTT, or switched via the socket.
Reading the schematic informed me that they were separate, with the PTT
button doing double-duty as a boot mode selector switch.
I considered that as an OK button, my reasoning for deciding against it
was more along the lines of, what happens if you're in a menu, forget,
then go to transmit?
If I make it exit menu mode, it serves two purposes:
- The forgetful operator won't accidentally set some parameter they
didn't intend.
- An operator who gets lost in the menu structure or needs to get back
to some known point in a hurry can do so with minimum fuss.
e.g. switching modes, they can hold SELECT twice, tap SELECT or BACK any
number of times needed to select the desired mode, hold SELECT again,
then hit PTT and they're switched.
> Another possibility is a limited vocabulary voice recognition, using the
> Codec 2 encoder routines to extract model parameters that we can match
> to a set of templates. Imagine saying "Set squelch 2dB". If anyone
> would like to work on this please contact me.
I once had a Nokia 3310 mobile phone that had that, you could record
voice tags for up to 10 different numbers, and it would do pattern
recognition to figure out which one you wanted to call.
It was surprising how well it worked given the constraints of the CPU,
probably not dissimilar to what the SM-1000 uses. (I'll bet the 3310's
CPU didn't have IEEE754!)
Still, while it could work in a radio shack, out in the field I'm not so
sure. Then there's language processing: identifying individual words is
one thing, interpreting them quite another.
> Still another way is a command line terminal interface using the USB
> port, so a PC could be used. e.g. for setting a call sign. There is
> already some virtual serial port code in codec2-dev/stm32.
>
> IIRC it's possible for STM32F4 C code to write to the STM32F4 Flash to
> store persistent configuration data, some one will need to come up with
> a driver for that.
Yep, and it'll need the intelligence to know *when* to write, so as to
not unnecessarily burn out the flash.
One question I do have though. I note there is a STLink header, but no
JTAG, which I'm more accustomed to. (I don't have any STLink compatible
programmers on hand.)
I've read somewhere the procedure for loading firmware into the device
is via the USB port, powering up with the PTT button down. Question is,
if the firmware is faulty, how does one recover?
I'm concerned that a bad upload of firmware could wipe the bootloader
present on the device and brick it. If I had JTAG, no problem, I know
how to recover that, but with STLink, I'm not so sure.