mirror of
https://github.com/markqvist/Reticulum.git
synced 2024-11-22 13:40:19 +00:00
Compare commits
9 Commits
1b55ac7f24
...
5b6d0ec337
Author | SHA1 | Date | |
---|---|---|---|
|
5b6d0ec337 | ||
|
2bbb0f5ec2 | ||
|
e385c79abd | ||
|
86faf6c28d | ||
|
6d8a3f09e5 | ||
|
1e88a390f4 | ||
|
e9ae255f84 | ||
|
42dfee8557 | ||
|
177e724457 |
@ -62,7 +62,7 @@ For more info, see [reticulum.network](https://reticulum.network/)
|
|||||||
- Total bandwidth cost of setting up an encrypted link is 3 packets totaling 297 bytes
|
- Total bandwidth cost of setting up an encrypted link is 3 packets totaling 297 bytes
|
||||||
- Low cost of keeping links open at only 0.44 bits per second
|
- Low cost of keeping links open at only 0.44 bits per second
|
||||||
|
|
||||||
## Development Roadmap
|
## Roadmap
|
||||||
While Reticulum is already a fully featured and functional networking stack, many improvements and additions are actively being worked on, and planned for the future.
|
While Reticulum is already a fully featured and functional networking stack, many improvements and additions are actively being worked on, and planned for the future.
|
||||||
|
|
||||||
To learn more about the direction and future of Reticulum, please see the [Development Roadmap](./Roadmap.md).
|
To learn more about the direction and future of Reticulum, please see the [Development Roadmap](./Roadmap.md).
|
||||||
|
@ -78,6 +78,7 @@ class KISS():
|
|||||||
CMD_BLINK = 0x30
|
CMD_BLINK = 0x30
|
||||||
CMD_RANDOM = 0x40
|
CMD_RANDOM = 0x40
|
||||||
CMD_BT_CTRL = 0x46
|
CMD_BT_CTRL = 0x46
|
||||||
|
CMD_BT_PIN = 0x62
|
||||||
CMD_BOARD = 0x47
|
CMD_BOARD = 0x47
|
||||||
CMD_PLATFORM = 0x48
|
CMD_PLATFORM = 0x48
|
||||||
CMD_MCU = 0x49
|
CMD_MCU = 0x49
|
||||||
@ -386,6 +387,21 @@ class RNode():
|
|||||||
RNS.log("Radio reporting bandwidth is "+str(self.r_bandwidth/1000.0)+" KHz")
|
RNS.log("Radio reporting bandwidth is "+str(self.r_bandwidth/1000.0)+" KHz")
|
||||||
self.updateBitrate()
|
self.updateBitrate()
|
||||||
|
|
||||||
|
elif (command == KISS.CMD_BT_PIN):
|
||||||
|
if (byte == KISS.FESC):
|
||||||
|
escape = True
|
||||||
|
else:
|
||||||
|
if (escape):
|
||||||
|
if (byte == KISS.TFEND):
|
||||||
|
byte = KISS.FEND
|
||||||
|
if (byte == KISS.TFESC):
|
||||||
|
byte = KISS.FESC
|
||||||
|
escape = False
|
||||||
|
command_buffer = command_buffer+bytes([byte])
|
||||||
|
if (len(command_buffer) == 4):
|
||||||
|
self.r_bt_pin = command_buffer[0] << 24 | command_buffer[1] << 16 | command_buffer[2] << 8 | command_buffer[3]
|
||||||
|
RNS.log("Bluetooth pairing PIN is: {:06d}".format(self.r_bt_pin))
|
||||||
|
|
||||||
elif (command == KISS.CMD_DEV_HASH):
|
elif (command == KISS.CMD_DEV_HASH):
|
||||||
if (byte == KISS.FESC):
|
if (byte == KISS.FESC):
|
||||||
escape = True
|
escape = True
|
||||||
@ -865,6 +881,7 @@ class RNode():
|
|||||||
selected_version = None
|
selected_version = None
|
||||||
selected_hash = None
|
selected_hash = None
|
||||||
firmware_version_url = "https://unsigned.io/firmware/latest/?v="+program_version+"&variant="
|
firmware_version_url = "https://unsigned.io/firmware/latest/?v="+program_version+"&variant="
|
||||||
|
fallback_firmware_version_url = "https://github.com/markqvist/rnode_firmware/releases/latest/download/release.json"
|
||||||
def ensure_firmware_file(fw_filename):
|
def ensure_firmware_file(fw_filename):
|
||||||
global selected_version, selected_hash, upd_nocheck
|
global selected_version, selected_hash, upd_nocheck
|
||||||
if fw_filename == "extracted_rnode_firmware.zip":
|
if fw_filename == "extracted_rnode_firmware.zip":
|
||||||
@ -902,8 +919,31 @@ def ensure_firmware_file(fw_filename):
|
|||||||
try:
|
try:
|
||||||
if selected_version == None:
|
if selected_version == None:
|
||||||
if not upd_nocheck:
|
if not upd_nocheck:
|
||||||
|
try:
|
||||||
try:
|
try:
|
||||||
urlretrieve(firmware_version_url+fw_filename, UPD_DIR+"/"+fw_filename+".version.latest")
|
urlretrieve(firmware_version_url+fw_filename, UPD_DIR+"/"+fw_filename+".version.latest")
|
||||||
|
except Exception as e:
|
||||||
|
RNS.log("")
|
||||||
|
RNS.log("WARNING!")
|
||||||
|
RNS.log("Failed to retrieve latest version information for your board from the default server")
|
||||||
|
RNS.log("Will retry using the following fallback URL: "+fallback_firmware_version_url)
|
||||||
|
RNS.log("")
|
||||||
|
RNS.log("Hit enter if you want to proceed")
|
||||||
|
input()
|
||||||
|
try:
|
||||||
|
urlretrieve(fallback_firmware_version_url, UPD_DIR+"/fallback_release_info.json")
|
||||||
|
import json
|
||||||
|
with open(UPD_DIR+"/fallback_release_info.json", "rb") as rif:
|
||||||
|
rdat = json.loads(rif.read())
|
||||||
|
variant = rdat[fw_filename]
|
||||||
|
with open(UPD_DIR+"/"+fw_filename+".version.latest", "wb") as verf:
|
||||||
|
inf_str = str(variant["version"])+" "+str(variant["hash"])
|
||||||
|
verf.write(inf_str.encode("utf-8"))
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
RNS.log("Error while trying fallback URL: "+str(e))
|
||||||
|
raise e
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
RNS.log("Failed to retrive latest version information for your board.")
|
RNS.log("Failed to retrive latest version information for your board.")
|
||||||
RNS.log("Check your internet connection and try again.")
|
RNS.log("Check your internet connection and try again.")
|
||||||
@ -2481,8 +2521,9 @@ def main():
|
|||||||
rnode.leave()
|
rnode.leave()
|
||||||
|
|
||||||
if args.bluetooth_pair:
|
if args.bluetooth_pair:
|
||||||
RNS.log("Putting device into Bluetooth pairing mode...")
|
RNS.log("Putting device into Bluetooth pairing mode. Press enter to exit when done.")
|
||||||
rnode.bluetooth_pair()
|
rnode.bluetooth_pair()
|
||||||
|
input()
|
||||||
rnode.leave()
|
rnode.leave()
|
||||||
|
|
||||||
if args.info:
|
if args.info:
|
||||||
|
@ -18,13 +18,11 @@ For each release cycle of Reticulum, improvements and additions from the five [P
|
|||||||
- [x] Improve storage persist call on local client connect/disconnect
|
- [x] Improve storage persist call on local client connect/disconnect
|
||||||
- [x] Better path invalidation on roaming interfaces
|
- [x] Better path invalidation on roaming interfaces
|
||||||
- [x] Improved roaming support on Android
|
- [x] Improved roaming support on Android
|
||||||
|
- [x] Add bluetooth pairing code output to rnodeconf
|
||||||
|
- [x] Add `rnid` utility with encryption, signing and Identity funcionality
|
||||||
- [ ] Updating the documentation to reflect recent changes and improvements
|
- [ ] Updating the documentation to reflect recent changes and improvements
|
||||||
- [ ] Add bluetooth pairing code output to rnodeconf
|
|
||||||
- [ ] Transit traffic display in rnstatus
|
- [ ] Transit traffic display in rnstatus
|
||||||
- [ ] JSON output mode for rnstatus
|
- [ ] JSON output mode for rnstatus
|
||||||
- [x] Add `rnid` utility
|
|
||||||
- [x] Add `rnsign` utility
|
|
||||||
- [x] Add `rncrypt` utility
|
|
||||||
- [ ] Create a standalone RNS Daemon app for Android
|
- [ ] Create a standalone RNS Daemon app for Android
|
||||||
- Targets for related applications
|
- Targets for related applications
|
||||||
- [x] Add offline & paper message transport to LXMF
|
- [x] Add offline & paper message transport to LXMF
|
||||||
@ -127,7 +125,7 @@ The Reticulum ecosystem is enriched by several other software and hardware proje
|
|||||||
This section lists, in no particular order, various important efforts that would be beneficial to the goals of Reticulum.
|
This section lists, in no particular order, various important efforts that would be beneficial to the goals of Reticulum.
|
||||||
|
|
||||||
- The [RNode](https://unsigned.io/rnode/) project
|
- The [RNode](https://unsigned.io/rnode/) project
|
||||||
- [ ] Evolve RNode into a self-replicating system, so that anyone can use an existing RNode to create more RNodes, and bootstrap functional networks based on Reticulum, even in absence of the Internet.
|
- [x] Evolve RNode into a self-replicating system, so that anyone can use an existing RNode to create more RNodes, and bootstrap functional networks based on Reticulum, even in absence of the Internet.
|
||||||
- [ ] Create a WebUSB-based bootstrapping utility, and integrate this directly into the [RNode Bootstrap Console](#), both on-device, and on an Internet-reachable copy. This will make it much easier to create new RNodes for average users.
|
- [ ] Create a WebUSB-based bootstrapping utility, and integrate this directly into the [RNode Bootstrap Console](#), both on-device, and on an Internet-reachable copy. This will make it much easier to create new RNodes for average users.
|
||||||
|
|
||||||
## Release History
|
## Release History
|
||||||
|
Binary file not shown.
File diff suppressed because one or more lines are too long
1
setup.py
1
setup.py
@ -43,6 +43,7 @@ setuptools.setup(
|
|||||||
'rnstatus=RNS.Utilities.rnstatus:main',
|
'rnstatus=RNS.Utilities.rnstatus:main',
|
||||||
'rnprobe=RNS.Utilities.rnprobe:main',
|
'rnprobe=RNS.Utilities.rnprobe:main',
|
||||||
'rnpath=RNS.Utilities.rnpath:main',
|
'rnpath=RNS.Utilities.rnpath:main',
|
||||||
|
'rnid=RNS.Utilities.rnid:main',
|
||||||
'rncp=RNS.Utilities.rncp:main',
|
'rncp=RNS.Utilities.rncp:main',
|
||||||
'rnx=RNS.Utilities.rnx:main',
|
'rnx=RNS.Utilities.rnx:main',
|
||||||
'rnodeconf=RNS.Utilities.rnodeconf:main',
|
'rnodeconf=RNS.Utilities.rnodeconf:main',
|
||||||
|
Loading…
Reference in New Issue
Block a user