did not add the additional code to use unauthenticated IPSC with the
log mixin. Added it blind - as in I've not tested it yet. If someone
finds this and tests it BEFORE I do, please let me know if it works.
As of now, dmrlink.py is only a behind the scenes worker... It's just
the base class to take care of link establishment and maintenance.
Applications, such as bridging or logging will now be in their own
files and inherit from dmrlink.py
All "useful" call-back actions removed. This is because it's time to
start using derived classes to make applicaitons out of dmrlink.py as a
base class.
Preparing to use DMRlink as a python module. The name needed to be
changed to not clash with the resource sub-directory, and functions
were moved into the main class that are intended to be changed in a
derived class.
DMRlink is now a functional module. I will be shifting ALL development
of "application" level features to other files with derived classes,
and dmrlink.py will ONLY include protocol update/fixes/etc.
Cleaned up many things:
Needless iteration during received packet parsing.
Grouping received packet re-requisite checking so that it can be done
once, not on each packet.
Removed some conversions where a number is converted twice just to be
compared.
Callback functions were added to parse known packet types. Also, the
hardwired "flags" section in our own config was updated to handle voice
and data packets. PLEASE NOTE: The mode and flags change what repeaters
send to DMRlink -- the fields are documented in ipsc/ipsc_mask.py
No longer is it necessary to build the configuration by hand as a
python file. It now uses a basic INI style… not my favorite, but easily
added thanks to ConfigParser.
This BREAKS group-voice forwarding for now, as there's no good way to
add the rules config in the basic config file right NOW, but it will be
fixed soon.
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.