Bob

I'm not qualified to comment, however, I am by no means board, by any of
this. I'm sure others feel the same. Have at it. Recently someone mentioned
added descriptors in the subject line. I think that would be good to
consider, even if voluntary. [programming] etc. 

Eric2


-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Robert McGwier
Sent: Sunday, February 19, 2006 7:34 PM
To: Jim Lux
Cc: [email protected]
Subject: Re: [Flexradio] Surmised structure of update.c

Jim:

You are right on the money as far as you have taken it.

A large part of the structure in that file is different from the Linux 
structure.  It used to be more closely aligned with the Linux 
structure.  At one time,  all commands were passed through named pipes 
just as they were are Linux  and used memory mapped file like structures 
just as Linux does.  The threads to enable this are still in place.  
This has made it more confusing than it needs to be but the reasons are 
straightforward.  The Windows named pipes have some performance issues 
and they are not really what we want to talk to the "whole world" of 
other devices anyway since Linux and Mac's do not support Windows style 
named pipes! We want to do something like enable sockets and/or some 
other message passing regime that can be opened to remote devices.  The 
security issues are completely overlooked here so far.

So what you are seeing is a hybrid of expediency.  It has been kept 
"separated" by universal functions above the CTE processing apparatus, 
and windows only stuff at the bottom.  Those routines that begin with 
Capital letters are dll interface routines that Eric calls through the 
C# "pseudo function calls" that are in dsp.cs.  Almost all of the lower 
case setXXXYYYZZZ routines up top that are in the CTE list,  were the 
original interface.  Those have been preserved along with the thread 
that would eventually pass the commands.  There are some exceptions: 
meter, powerspectra, and PTT since they were added late after I 
determined that the named pipes were not the way to go.   Those 
functions that are available as dll components all begin with the export 
macro DttSP_EXP.  Those should not be in our future.

The correct way for us to go from here is to decide on the message 
construction/passing/queue/parse regime, well documented at each step, 
so we can all develop to this specification.  If we do this, we will 
find the results usable across most of the platforms. 

You have indeed teased apart the essential nature of what is done.  It 
is not true to Frank's original vision but that is to be remedied with 
our future work.


Anyone that thinks we are going to do morse code key closures across any 
remoted distance is of course, foolish.  These key presses will have to 
be done locally, with a local sidetone and then extremely dense 
compressed messages will be pass remotely to the other side.  The morse 
code issues have absolutely nothing whatsoever to do with command 
processing.  They have everything to do with the lag going into the 
portaudio and sound card device driver buffers.  There was just no way 
around them.  Future radios need a hardware solution to achieve QSK 
keying such as a built in electronic keyer and a separate.

If lots of folks get bored with this conversation, let us know and we 
can take it private, but I expect that there is wide spread interest.

Good job so far!
 Bob



Jim Lux wrote:
> OK, here's what I've figured out sofar. Anyone (Frank, Bob,?) who can 
> confirm or deny, please pitch in.
>
> updates.c contains a whole raft of small routines which execute various 
> commands.  The "main" smarts of this is a routine called do_update, which 
> parses a string (passed as a parameter) into  substrings (delimited by 
> whitespace).  The first substring is a command, the remaining substrings 
> (if any) are parameters for the command.
> The commands are compared against a list defined in a structure called 
> update_cmds, terminated by a zero sentinel.  If the command isn't matched,

> do_updates returns with an error code (-1). If the command IS foudn in the

> table, the corresponding routine is called, passing the number of 
> parameters (as an int) and an array of the strings for the parameters.
>
> The parsing (more properly, lexical analysis) is done by routines in a 
> module called splitfields, and uses strtok, which I haven't found yet (is 
> it a library routine?).  The data structures (notably, the "SPLIT") used
by 
> the routines (and, by extenstion, do_update) are defined in splitfields.h.
>
> A module called thunk.c contains routines which do the comparison against 
> the command list.
>
> OK so far?
>
> Jim,W6RMK
>
>
> _______________________________________________
> FlexRadio mailing list
> [email protected]
> http://mail.flex-radio.biz/mailman/listinfo/flexradio_flex-radio.biz
> Archive Link:
http://mail.flex-radio.biz/pipermail/flexradio_flex-radio.biz/
> FlexRadio Homepage: http://www.flex-radio.com
>
>   


-- 
AMSAT VP Engineering. Member: ARRL, AMSAT-DL, TAPR, Packrats,
NJQRP/AMQRP, QRP ARCI, QCWA, FRC. ARRL SDR Wrk Grp Chairman
Laziness is the number one inspiration for ingenuity.  Guilty as charged!


_______________________________________________
FlexRadio mailing list
[email protected]
http://mail.flex-radio.biz/mailman/listinfo/flexradio_flex-radio.biz
Archive Link: http://mail.flex-radio.biz/pipermail/flexradio_flex-radio.biz/
FlexRadio Homepage: http://www.flex-radio.com


Reply via email to