cx issues and indent

This commit is contained in:
Florent de Lamotte 2025-10-31 13:27:42 +01:00
parent 452d90b352
commit ae13eea883

View file

@ -362,204 +362,204 @@ def make_completion_dict(contacts, pending={}, to=None, channels=None):
}
root_completion_list = {
"ver" : None,
"infos" : None,
"advert" : None,
"floodadv" : None,
"msg" : contact_list,
"wait_ack" : None,
"time" : None,
"clock" : {"sync" : None},
"reboot" : None,
"card" : None,
"upload_card" : None,
"contacts": None,
"pending_contacts": None,
"add_pending": pending_list,
"flush_pending": None,
"contact_info": contact_list,
"export_contact" : contact_list,
"upload_contact" : contact_list,
"share_contact" : contact_list,
"path": contact_list,
"disc_path" : contact_list,
"trace" : None,
"reset_path" : contact_list,
"change_path" : contact_list,
"change_flags" : contact_list,
"remove_contact" : contact_list,
"import_contact" : {"meshcore://":None},
"reload_contacts" : None,
"login" : contact_list,
"cmd" : contact_list,
"req_status" : contact_list,
"req_bstatus" : contact_list,
"logout" : contact_list,
"req_telemetry" : contact_list,
"req_binary" : contact_list,
"req_mma" : contact_list,
"self_telemetry" : None,
"get_channel": None,
"set_channel": None,
"get_channels": None,
"remove_channel": None,
"set" : {
"name" : None,
"pin" : None,
"radio" : {",,,":None, "f,bw,sf,cr":None},
"tx" : None,
"tuning" : {",", "af,tx_d"},
"lat" : None,
"lon" : None,
"coords" : None,
"print_snr" : {"on":None, "off": None},
"json_msgs" : {"on":None, "off": None},
"color" : {"on":None, "off":None},
"print_name" : {"on":None, "off":None},
"print_adverts" : {"on":None, "off":None},
"print_new_contacts" : {"on": None, "off":None},
"print_path_updates" : {"on":None,"off":None},
"classic_prompt" : {"on" : None, "off":None},
"manual_add_contacts" : {"on" : None, "off":None},
"telemetry_mode_base" : {"always" : None, "device":None, "never":None},
"telemetry_mode_loc" : {"always" : None, "device":None, "never":None},
"telemetry_mode_env" : {"always" : None, "device":None, "never":None},
"advert_loc_policy" : {"none" : None, "share" : None},
"auto_update_contacts" : {"on":None, "off":None},
"multi_acks" : {"on": None, "off":None},
"max_attempts" : None,
"max_flood_attempts" : None,
"flood_after" : None,
},
"get" : {"name":None,
"bat":None,
"fstats": None,
"radio":None,
"tx":None,
"coords":None,
"lat":None,
"lon":None,
"print_snr":None,
"json_msgs":None,
"color":None,
"print_name":None,
"print_adverts":None,
"print_path_updates":None,
"print_new_contacts":None,
"classic_prompt":None,
"manual_add_contacts":None,
"telemetry_mode_base":None,
"telemetry_mode_loc":None,
"telemetry_mode_env":None,
"advert_loc_policy":None,
"auto_update_contacts":None,
"multi_acks":None,
"max_attempts":None,
"max_flood_attempts":None,
"flood_after":None,
"custom":None,
},
}
"ver" : None,
"infos" : None,
"advert" : None,
"floodadv" : None,
"msg" : contact_list,
"wait_ack" : None,
"time" : None,
"clock" : {"sync" : None},
"reboot" : None,
"card" : None,
"upload_card" : None,
"contacts": None,
"pending_contacts": None,
"add_pending": pending_list,
"flush_pending": None,
"contact_info": contact_list,
"export_contact" : contact_list,
"upload_contact" : contact_list,
"share_contact" : contact_list,
"path": contact_list,
"disc_path" : contact_list,
"trace" : None,
"reset_path" : contact_list,
"change_path" : contact_list,
"change_flags" : contact_list,
"remove_contact" : contact_list,
"import_contact" : {"meshcore://":None},
"reload_contacts" : None,
"login" : contact_list,
"cmd" : contact_list,
"req_status" : contact_list,
"req_bstatus" : contact_list,
"logout" : contact_list,
"req_telemetry" : contact_list,
"req_binary" : contact_list,
"req_mma" : contact_list,
"self_telemetry" : None,
"get_channel": None,
"set_channel": None,
"get_channels": None,
"remove_channel": None,
"set" : {
"name" : None,
"pin" : None,
"radio" : {",,,":None, "f,bw,sf,cr":None},
"tx" : None,
"tuning" : {",", "af,tx_d"},
"lat" : None,
"lon" : None,
"coords" : None,
"print_snr" : {"on":None, "off": None},
"json_msgs" : {"on":None, "off": None},
"color" : {"on":None, "off":None},
"print_name" : {"on":None, "off":None},
"print_adverts" : {"on":None, "off":None},
"print_new_contacts" : {"on": None, "off":None},
"print_path_updates" : {"on":None,"off":None},
"classic_prompt" : {"on" : None, "off":None},
"manual_add_contacts" : {"on" : None, "off":None},
"telemetry_mode_base" : {"always" : None, "device":None, "never":None},
"telemetry_mode_loc" : {"always" : None, "device":None, "never":None},
"telemetry_mode_env" : {"always" : None, "device":None, "never":None},
"advert_loc_policy" : {"none" : None, "share" : None},
"auto_update_contacts" : {"on":None, "off":None},
"multi_acks" : {"on": None, "off":None},
"max_attempts" : None,
"max_flood_attempts" : None,
"flood_after" : None,
},
"get" : {"name":None,
"bat":None,
"fstats": None,
"radio":None,
"tx":None,
"coords":None,
"lat":None,
"lon":None,
"print_snr":None,
"json_msgs":None,
"color":None,
"print_name":None,
"print_adverts":None,
"print_path_updates":None,
"print_new_contacts":None,
"classic_prompt":None,
"manual_add_contacts":None,
"telemetry_mode_base":None,
"telemetry_mode_loc":None,
"telemetry_mode_env":None,
"advert_loc_policy":None,
"auto_update_contacts":None,
"multi_acks":None,
"max_attempts":None,
"max_flood_attempts":None,
"flood_after":None,
"custom":None,
},
}
contact_completion_list = {
"contact_info": None,
"export_contact" : None,
"share_contact" : None,
"upload_contact" : None,
"path": None,
"disc_path": None,
"trace": None,
"dtrace": None,
"reset_path" : None,
"change_path" : None,
"change_flags" : None,
"req_telemetry" : None,
"req_binary" : None,
"forget_password" : None,
}
"contact_info": None,
"export_contact" : None,
"share_contact" : None,
"upload_contact" : None,
"path": None,
"disc_path": None,
"trace": None,
"dtrace": None,
"reset_path" : None,
"change_path" : None,
"change_flags" : None,
"req_telemetry" : None,
"req_binary" : None,
"forget_password" : None,
}
client_completion_list = dict(contact_completion_list)
client_completion_list.update({
"get" : { "timeout":None, },
"set" : { "timeout":None, },
"get" : { "timeout":None, },
"set" : { "timeout":None, },
})
repeater_completion_list = dict(contact_completion_list)
repeater_completion_list.update({
"login" : None,
"logout" : None,
"req_status" : None,
"req_bstatus" : None,
"cmd" : None,
"ver" : None,
"advert" : None,
"time" : None,
"clock" : {"sync" : None},
"reboot" : None,
"start ota" : None,
"password" : None,
"neighbors" : None,
"req_acl":None,
"setperm":contact_list,
"gps" : {"on":None,"off":None,"sync":None,"setloc":None,
"advert" : {"none": None, "share": None, "prefs": None},
},
"sensor": {"list": None, "set": {"gps": None}, "get": {"gps": None}},
"get" : {"name" : None,
"role":None,
"radio" : None,
"freq":None,
"tx":None,
"af" : None,
"repeat" : None,
"allow.read.only" : None,
"flood.advert.interval" : None,
"flood.max":None,
"advert.interval" : None,
"guest.password" : None,
"rxdelay": None,
"txdelay": None,
"direct.tx_delay":None,
"public.key":None,
"lat" : None,
"lon" : None,
"telemetry" : None,
"status" : None,
"timeout" : None,
"acl":None,
"bridge.enabled":None,
"bridge.delay":None,
"bridge.source":None,
"bridge.baud":None,
"bridge.secret":None,
"bridge.type":None,
},
"set" : {"name" : None,
"radio" : {",,,":None, "f,bw,sf,cr": None},
"freq" : None,
"tx" : None,
"af": None,
"repeat" : {"on": None, "off": None},
"flood.advert.interval" : None,
"flood.max" : None,
"advert.interval" : None,
"guest.password" : None,
"allow.read.only" : {"on": None, "off": None},
"rxdelay" : None,
"txdelay": None,
"direct.txdelay" : None,
"lat" : None,
"lon" : None,
"timeout" : None,
"perm":contact_list,
"bridge.enabled":{"on": None, "off": None},
"bridge.delay":None,
"bridge.source":None,
"bridge.baud":None,
"bridge.secret":None,
},
"erase": None,
"log" : {"start" : None, "stop" : None, "erase" : None}
"login" : None,
"logout" : None,
"req_status" : None,
"req_bstatus" : None,
"cmd" : None,
"ver" : None,
"advert" : None,
"time" : None,
"clock" : {"sync" : None},
"reboot" : None,
"start ota" : None,
"password" : None,
"neighbors" : None,
"req_acl":None,
"setperm":contact_list,
"gps" : {"on":None,"off":None,"sync":None,"setloc":None,
"advert" : {"none": None, "share": None, "prefs": None},
},
"sensor": {"list": None, "set": {"gps": None}, "get": {"gps": None}},
"get" : {"name" : None,
"role":None,
"radio" : None,
"freq":None,
"tx":None,
"af" : None,
"repeat" : None,
"allow.read.only" : None,
"flood.advert.interval" : None,
"flood.max":None,
"advert.interval" : None,
"guest.password" : None,
"rxdelay": None,
"txdelay": None,
"direct.tx_delay":None,
"public.key":None,
"lat" : None,
"lon" : None,
"telemetry" : None,
"status" : None,
"timeout" : None,
"acl":None,
"bridge.enabled":None,
"bridge.delay":None,
"bridge.source":None,
"bridge.baud":None,
"bridge.secret":None,
"bridge.type":None,
},
"set" : {"name" : None,
"radio" : {",,,":None, "f,bw,sf,cr": None},
"freq" : None,
"tx" : None,
"af": None,
"repeat" : {"on": None, "off": None},
"flood.advert.interval" : None,
"flood.max" : None,
"advert.interval" : None,
"guest.password" : None,
"allow.read.only" : {"on": None, "off": None},
"rxdelay" : None,
"txdelay": None,
"direct.txdelay" : None,
"lat" : None,
"lon" : None,
"timeout" : None,
"perm":contact_list,
"bridge.enabled":{"on": None, "off": None},
"bridge.delay":None,
"bridge.source":None,
"bridge.baud":None,
"bridge.secret":None,
},
"erase": None,
"log" : {"start" : None, "stop" : None, "erase" : None}
})
sensor_completion_list = dict(repeater_completion_list)
@ -2714,7 +2714,7 @@ async def main(argv):
with open(MCCLI_ADDRESS, encoding="utf-8") as f :
address = f.readline().strip()
opts, args = getopt.getopt(argv, "a:d:s:ht:p:b:jDhvSlT:P")
opts, args = getopt.getopt(argv, "a:d:s:ht:p:b:fjDhvSlT:P")
for opt, arg in opts :
match opt:
case "-d" : # name specified on cmdline
@ -2744,6 +2744,8 @@ async def main(argv):
case "-v":
version()
return
case "-f": # connect to first encountered device
address = ""
case "-l" :
print("BLE devices:")
try :
@ -2813,7 +2815,10 @@ async def main(argv):
elif address and len(address) == 36 and len(address.split("-")) == 5:
client = BleakClient(address) # mac uses uuid, we'll pass a client
else:
logger.info(f"Scanning BLE for device matching {address}")
if address == "":
logger.info(f"Searching first MC BLE device")
else:
logger.info(f"Scanning BLE for device matching {address}")
devices = await BleakScanner.discover(timeout=timeout)
found = False
for d in devices:
@ -2838,6 +2843,26 @@ async def main(argv):
mc = await MeshCore.create_ble(address=address, device=device, client=client, debug=debug, only_error=json_output, pin=pin)
except ConnectionError :
logger.info("Error while connecting, retrying once ...")
if device is None or client is None: # Search for device
logger.info(f"Scanning BLE for device matching {address}")
devices = await BleakScanner.discover(timeout=timeout)
found = False
for d in devices:
if not d.name is None and d.name.startswith("MeshCore-") and\
(address is None or address in d.name) :
address=d.address
device=d
logger.info(f"Found device {d.name} {d.address}")
found = True
break
elif d.address == address : # on a mac, address is an uuid
device = d
logger.info(f"Found device {d.name} {d.address}")
found = True
break
if not found :
logger.info(f"Couldn't find device {address}")
return
try :
mc = await MeshCore.create_ble(address=address, device=device, client=client, debug=debug, only_error=json_output, pin=pin)
except ConnectionError :