packetize and cleanup
This commit is contained in:
parent
ced34c2145
commit
7646887163
1 changed files with 16 additions and 19 deletions
|
|
@ -5,13 +5,11 @@ import select
|
||||||
import argparse
|
import argparse
|
||||||
from RNode import RNodeInterface
|
from RNode import RNodeInterface
|
||||||
|
|
||||||
serialPort = "/dev/ttyACM0"
|
def packetize(str):
|
||||||
|
utf8_bytes = str.encode('utf-8')
|
||||||
def rx(data, rnode):
|
max_size = 255
|
||||||
message = data.decode("utf-8")
|
chunks = [utf8_bytes[i:i+max_size] for i in range(0, len(utf8_bytes), max_size)]
|
||||||
print("Received a packet: "+message)
|
return chunks
|
||||||
print("RSSI: "+str(rnode.r_stat_rssi)+" dBm")
|
|
||||||
print("SNR: "+str(rnode.r_stat_snr)+" dB")
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|
||||||
|
|
@ -23,14 +21,11 @@ def main():
|
||||||
parser.add_argument("--cr", action="store", metavar="rate", type=int, default=5, help="Coding rate")
|
parser.add_argument("--cr", action="store", metavar="rate", type=int, default=5, help="Coding rate")
|
||||||
parser.add_argument("port", nargs="?", default=None, help="Serial port where RNode is attached", type=str)
|
parser.add_argument("port", nargs="?", default=None, help="Serial port where RNode is attached", type=str)
|
||||||
parser.add_argument("payload", nargs="?", default=None, help="The payload to be transmitted", type=str)
|
parser.add_argument("payload", nargs="?", default=None, help="The payload to be transmitted", type=str)
|
||||||
|
parser.print_usage = parser.print_help
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
if not (args.freq and args.bw and args.sf and args.cr):
|
if not (args.freq and args.bw and args.sf and args.cr):
|
||||||
print("Please input startup configuration:")
|
print("Please input the LoRa frequency using the --freq argument")
|
||||||
|
|
||||||
if not args.freq:
|
|
||||||
print("Frequency in Hz:\t", end=' ')
|
|
||||||
args.freq = int(input())
|
|
||||||
|
|
||||||
if not args.payload and not select.select([sys.stdin, ], [], [], 0.0)[0]:
|
if not args.payload and not select.select([sys.stdin, ], [], [], 0.0)[0]:
|
||||||
print("Please provide a message to be sent")
|
print("Please provide a message to be sent")
|
||||||
|
|
@ -38,8 +33,8 @@ def main():
|
||||||
|
|
||||||
try:
|
try:
|
||||||
rnode = RNodeInterface(
|
rnode = RNodeInterface(
|
||||||
callback = rx,
|
callback = None,
|
||||||
name = "RandoRNode",
|
name = "LoRaTransmitCLI",
|
||||||
port = args.port,
|
port = args.port,
|
||||||
frequency = args.freq,
|
frequency = args.freq,
|
||||||
bandwidth = args.bw,
|
bandwidth = args.bw,
|
||||||
|
|
@ -52,12 +47,14 @@ def main():
|
||||||
exit()
|
exit()
|
||||||
|
|
||||||
if not args.payload and select.select([sys.stdin, ], [], [], 0.0)[0]:
|
if not args.payload and select.select([sys.stdin, ], [], [], 0.0)[0]:
|
||||||
message = sys.stdin.read()
|
message = sys.stdin.read().rstrip()
|
||||||
else:
|
else:
|
||||||
message = ' '.join(args.payload)
|
message = args.payload
|
||||||
data = message.encode("utf-8")
|
data = packetize(message)
|
||||||
rnode.send(data)
|
for chunk in data:
|
||||||
print(f"Payload sent: '{message}'\n")
|
rnode.queue(chunk)
|
||||||
|
rnode.process_queue()
|
||||||
|
rnode.log(f"Payload sent in {len(data)} packets!")
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
Loading…
Add table
Add a link
Reference in a new issue