Added a derived class for the rare event of an un-authenticated IPSC,
this necessitated moving two global functions into the classese.
Changes to prepare this as a module -- all "user space" packets that
are received now have expliciet callback functions (handily located in
one place)
Moved the supporting characters into the ipsc sub-directory. The config
is the only likely one to be touched.
Improved some of the logging, but also commented it out to make things
run faster when it is not in use.
Incorrect decodeing of determination of the peer-list. As it turns out,
the packet indicates the length of the list, not the number of peers.
So, take that value / 11 (length of a peer entry) for the number of
peers. Thanks to Hans for pointing this out!
This was just a massive clean up and documentation festival. Many many
clean ups made for better readability and consistenty, most everything
is well commented now too.
Added a function call to send a supplied packet to EVERY peer
(including master) that is active in an IPSC (except ourselves). This
completed the group voice bridge, and should facilitate EASILY adding
data and private bridging.
Group Voice forwarding now works, making this code sucessful at
bridging IPSC networks. Some things are missing, such as transmission
to all peers in an IPSC, right now, it only sends to the master, but
that's easily enough added, and my next goal.
Group Voice re-writes of both sourc IPSC radio ID and group translation
work. Packets are not yet actually sent to the destination network.
Right now the code prints out the original packet and the re-written
packet (with hash added)
Mostly done.. must find a way to allow master registration and
reception of peer list BEFORE validating incoming messages to the peer
list -- chicken and egg problem. Easily solved, but needs an EFFICIENT
solution since EVERY PACKET will be passed through this test.
There was no reason for the IPSC class to contain the function for
processing a peer list. It makes the class more self-sustaining, but
the goal should be a *module* to handle connection maintenance. I moved
the peer list process, and built a mode decoder function from the
previos mode printing function, as well as added decoded mode items to
the data structure… and cleaned up the prining function so it doesn't
re-process the data.
Mostly references to my_ipsc_config data structure items that are
commonly used. These received shortened names within the IPSC class…
also makes it easier to read, and should be self explanatory. Some
cruft also removed - object aliases that were no longer used.
These have been open issues. They are mostly completed. Now, once a
master or peer is registered, keep-alives start, and run every
(configurable) time, unless (configurable) times are missed, and then
it de-registers the peer. The outstanding counter still needs work, but
the important parts are there.
Work done on issues of timed actions for us to initiate relationships
with IPSC peers.
Tons of comments added so it likely actually makes sense to a reader
now.
In the data structures, I had kinda been storing things randomly. In
preparing to address more of the issues, it was clear this needed (and
still does) cleaned up. Other than a few mods along the way, the goal
has been to minimize conversions while processing "real" in/out network
traffic, and do as much as possible one-time (such as the peer list),
or in formatting for output -- which is really mostly debugging and
will go away.