mirror of
https://github.com/markqvist/Reticulum.git
synced 2024-11-26 15:30:18 +00:00
Compare commits
5 Commits
866262027a
...
959487cf8b
Author | SHA1 | Date | |
---|---|---|---|
|
959487cf8b | ||
|
b977f33df6 | ||
|
589fcb8201 | ||
|
e5427d70ac | ||
|
11baace08d |
@ -43,6 +43,9 @@ class AutoInterface(Interface):
|
|||||||
SCOPE_ORGANISATION = "8"
|
SCOPE_ORGANISATION = "8"
|
||||||
SCOPE_GLOBAL = "e"
|
SCOPE_GLOBAL = "e"
|
||||||
|
|
||||||
|
MULTICAST_PERMANENT_ADDRESS_TYPE = "0"
|
||||||
|
MULTICAST_TEMPORARY_ADDRESS_TYPE = "1"
|
||||||
|
|
||||||
PEERING_TIMEOUT = 7.5
|
PEERING_TIMEOUT = 7.5
|
||||||
|
|
||||||
ALL_IGNORE_IFS = ["lo0"]
|
ALL_IGNORE_IFS = ["lo0"]
|
||||||
@ -74,7 +77,7 @@ class AutoInterface(Interface):
|
|||||||
ifas = self.netinfo.ifaddresses(ifname)
|
ifas = self.netinfo.ifaddresses(ifname)
|
||||||
return ifas
|
return ifas
|
||||||
|
|
||||||
def __init__(self, owner, name, group_id=None, discovery_scope=None, discovery_port=None, data_port=None, allowed_interfaces=None, ignored_interfaces=None, configured_bitrate=None):
|
def __init__(self, owner, name, group_id=None, discovery_scope=None, discovery_port=None, multicast_address_type=None, data_port=None, allowed_interfaces=None, ignored_interfaces=None, configured_bitrate=None):
|
||||||
from RNS.vendor.ifaddr import niwrapper
|
from RNS.vendor.ifaddr import niwrapper
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.netinfo = niwrapper
|
self.netinfo = niwrapper
|
||||||
@ -128,6 +131,13 @@ class AutoInterface(Interface):
|
|||||||
else:
|
else:
|
||||||
self.discovery_port = discovery_port
|
self.discovery_port = discovery_port
|
||||||
|
|
||||||
|
if multicast_address_type == None:
|
||||||
|
self.multicast_address_type = AutoInterface.MULTICAST_TEMPORARY_ADDRESS_TYPE
|
||||||
|
elif str(multicast_address_type).lower() == "temporary":
|
||||||
|
self.multicast_address_type = AutoInterface.MULTICAST_TEMPORARY_ADDRESS_TYPE
|
||||||
|
elif str(multicast_address_type).lower() == "permanent":
|
||||||
|
self.multicast_address_type = AutoInterface.MULTICAST_PERMANENT_ADDRESS_TYPE
|
||||||
|
|
||||||
if data_port == None:
|
if data_port == None:
|
||||||
self.data_port = AutoInterface.DEFAULT_DATA_PORT
|
self.data_port = AutoInterface.DEFAULT_DATA_PORT
|
||||||
else:
|
else:
|
||||||
@ -156,7 +166,7 @@ class AutoInterface(Interface):
|
|||||||
gt += ":"+"{:02x}".format(g[9]+(g[8]<<8))
|
gt += ":"+"{:02x}".format(g[9]+(g[8]<<8))
|
||||||
gt += ":"+"{:02x}".format(g[11]+(g[10]<<8))
|
gt += ":"+"{:02x}".format(g[11]+(g[10]<<8))
|
||||||
gt += ":"+"{:02x}".format(g[13]+(g[12]<<8))
|
gt += ":"+"{:02x}".format(g[13]+(g[12]<<8))
|
||||||
self.mcast_discovery_address = "ff1"+self.discovery_scope+":"+gt
|
self.mcast_discovery_address = "ff"+self.multicast_address_type+self.discovery_scope+":"+gt
|
||||||
|
|
||||||
suitable_interfaces = 0
|
suitable_interfaces = 0
|
||||||
for ifname in self.list_interfaces():
|
for ifname in self.list_interfaces():
|
||||||
|
@ -540,6 +540,7 @@ class Reticulum:
|
|||||||
group_id = c["group_id"] if "group_id" in c else None
|
group_id = c["group_id"] if "group_id" in c else None
|
||||||
discovery_scope = c["discovery_scope"] if "discovery_scope" in c else None
|
discovery_scope = c["discovery_scope"] if "discovery_scope" in c else None
|
||||||
discovery_port = int(c["discovery_port"]) if "discovery_port" in c else None
|
discovery_port = int(c["discovery_port"]) if "discovery_port" in c else None
|
||||||
|
multicast_address_type = c["multicast_address_type"] if "multicast_address_type" in c else None
|
||||||
data_port = int(c["data_port"]) if "data_port" in c else None
|
data_port = int(c["data_port"]) if "data_port" in c else None
|
||||||
allowed_interfaces = c.as_list("devices") if "devices" in c else None
|
allowed_interfaces = c.as_list("devices") if "devices" in c else None
|
||||||
ignored_interfaces = c.as_list("ignored_devices") if "ignored_devices" in c else None
|
ignored_interfaces = c.as_list("ignored_devices") if "ignored_devices" in c else None
|
||||||
@ -550,6 +551,7 @@ class Reticulum:
|
|||||||
group_id,
|
group_id,
|
||||||
discovery_scope,
|
discovery_scope,
|
||||||
discovery_port,
|
discovery_port,
|
||||||
|
multicast_address_type,
|
||||||
data_port,
|
data_port,
|
||||||
allowed_interfaces,
|
allowed_interfaces,
|
||||||
ignored_interfaces
|
ignored_interfaces
|
||||||
|
@ -774,18 +774,13 @@ class RNode():
|
|||||||
self.made = bytes([self.eeprom[ROM.ADDR_MADE], self.eeprom[ROM.ADDR_MADE+1], self.eeprom[ROM.ADDR_MADE+2], self.eeprom[ROM.ADDR_MADE+3]])
|
self.made = bytes([self.eeprom[ROM.ADDR_MADE], self.eeprom[ROM.ADDR_MADE+1], self.eeprom[ROM.ADDR_MADE+2], self.eeprom[ROM.ADDR_MADE+3]])
|
||||||
self.checksum = b""
|
self.checksum = b""
|
||||||
|
|
||||||
|
|
||||||
self.min_freq = models[self.model][0]
|
|
||||||
self.max_freq = models[self.model][1]
|
|
||||||
self.max_output = models[self.model][2]
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.min_freq = models[self.model][0]
|
self.min_freq = models[self.model][0]
|
||||||
self.max_freq = models[self.model][1]
|
self.max_freq = models[self.model][1]
|
||||||
self.max_output = models[self.model][2]
|
self.max_output = models[self.model][2]
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
RNS.log("Exception")
|
RNS.log("Error: Model band and output power capabilities are unknown!")
|
||||||
RNS.log(str(e))
|
RNS.log("The contained exception was: "+str(e))
|
||||||
self.min_freq = 0
|
self.min_freq = 0
|
||||||
self.max_freq = 0
|
self.max_freq = 0
|
||||||
self.max_output = 0
|
self.max_output = 0
|
||||||
@ -3041,10 +3036,13 @@ def main():
|
|||||||
if args.product != None:
|
if args.product != None:
|
||||||
if args.product == "03":
|
if args.product == "03":
|
||||||
mapped_product = ROM.PRODUCT_RNODE
|
mapped_product = ROM.PRODUCT_RNODE
|
||||||
if args.product == "f0":
|
elif args.product == "f0":
|
||||||
mapped_product = ROM.PRODUCT_HMBRW
|
mapped_product = ROM.PRODUCT_HMBRW
|
||||||
if args.product == "e0":
|
elif args.product == "e0":
|
||||||
mapped_product = ROM.PRODUCT_TBEAM
|
mapped_product = ROM.PRODUCT_TBEAM
|
||||||
|
else:
|
||||||
|
if len(args.product) == 2:
|
||||||
|
mapped_product = ord(bytes.fromhex(args.product))
|
||||||
|
|
||||||
if mapped_model != None:
|
if mapped_model != None:
|
||||||
if mapped_model == ROM.MODEL_B4_TCXO:
|
if mapped_model == ROM.MODEL_B4_TCXO:
|
||||||
@ -3068,6 +3066,9 @@ def main():
|
|||||||
model = ROM.MODEL_E9
|
model = ROM.MODEL_E9
|
||||||
elif args.model == "ff":
|
elif args.model == "ff":
|
||||||
model = ROM.MODEL_FF
|
model = ROM.MODEL_FF
|
||||||
|
else:
|
||||||
|
if len(args.model) == 2:
|
||||||
|
model = ord(bytes.fromhex(args.model))
|
||||||
|
|
||||||
|
|
||||||
if args.hwrev != None and (args.hwrev > 0 and args.hwrev < 256):
|
if args.hwrev != None and (args.hwrev > 0 and args.hwrev < 256):
|
||||||
|
@ -47,6 +47,12 @@ system, which should be enabled by default in almost all OSes.
|
|||||||
|
|
||||||
group_id = reticulum
|
group_id = reticulum
|
||||||
|
|
||||||
|
# You can also choose the multicast address type:
|
||||||
|
# temporary (default, Temporary Multicast Address)
|
||||||
|
# or permanent (Permanent Multicast Address)
|
||||||
|
|
||||||
|
multicast_address_type = permanent
|
||||||
|
|
||||||
# You can also select specifically which
|
# You can also select specifically which
|
||||||
# kernel networking devices to use.
|
# kernel networking devices to use.
|
||||||
|
|
||||||
|
@ -47,6 +47,12 @@ system, which should be enabled by default in almost all OSes.
|
|||||||
|
|
||||||
group_id = reticulum
|
group_id = reticulum
|
||||||
|
|
||||||
|
# You can also choose the multicast address type:
|
||||||
|
# temporary (default, Temporary Multicast Address)
|
||||||
|
# or permanent (Permanent Multicast Address)
|
||||||
|
|
||||||
|
multicast_address_type = permanent
|
||||||
|
|
||||||
# You can also select specifically which
|
# You can also select specifically which
|
||||||
# kernel networking devices to use.
|
# kernel networking devices to use.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user