mirror of
https://github.com/meshcore-dev/meshcore-cli.git
synced 2026-04-20 22:13:48 +00:00
decoding high level of packet (type, path)
This commit is contained in:
parent
29f674859d
commit
4d2d3094f6
1 changed files with 68 additions and 15 deletions
|
|
@ -205,27 +205,72 @@ process_event_message.last_node=None
|
||||||
|
|
||||||
async def handle_log_rx(event):
|
async def handle_log_rx(event):
|
||||||
mc = handle_log_rx.mc
|
mc = handle_log_rx.mc
|
||||||
if handle_log_rx.json_log_rx: # json mode ... raw dump
|
|
||||||
msg = json.dumps(event.payload)
|
|
||||||
if handle_message.above:
|
|
||||||
print_above(msg)
|
|
||||||
else :
|
|
||||||
print(msg)
|
|
||||||
return
|
|
||||||
|
|
||||||
pkt = bytes().fromhex(event.payload["payload"])
|
pkt = bytes().fromhex(event.payload["payload"])
|
||||||
pbuf = io.BytesIO(pkt)
|
pbuf = io.BytesIO(pkt)
|
||||||
header = pbuf.read(1)[0]
|
header = pbuf.read(1)[0]
|
||||||
|
route_type = header & 0x03
|
||||||
|
payload_type = (header & 0x3c) >> 2
|
||||||
|
payload_ver = (header & 0xc0) >> 6
|
||||||
|
|
||||||
if header & ~1 == 0x14: # flood msg / channel
|
transport_code = None
|
||||||
|
if route_type == 0x00 or route_type == 0x03: # has transport code
|
||||||
|
transport_code = pbuf.read(4) # discard transport code
|
||||||
|
|
||||||
|
path_len = pbuf.read(1)[0]
|
||||||
|
path = pbuf.read(path_len).hex() # Beware of traces where pathes are mixed
|
||||||
|
|
||||||
|
pkt_payload = pbuf.read()
|
||||||
|
|
||||||
|
event.payload["header"] = header
|
||||||
|
event.payload["route_type"] = route_type
|
||||||
|
event.payload["payload_type"] = payload_type
|
||||||
|
|
||||||
|
match payload_type:
|
||||||
|
case 0x0:
|
||||||
|
typename = "REQ"
|
||||||
|
case 0x01:
|
||||||
|
typename = "RESPONSE"
|
||||||
|
case 0x02:
|
||||||
|
typename = "TXT_MSG"
|
||||||
|
case 0x03:
|
||||||
|
typename = "ACK"
|
||||||
|
case 0x04:
|
||||||
|
typename = "ADVERT"
|
||||||
|
case 0x05:
|
||||||
|
typename = "GRP_TXT"
|
||||||
|
case 0x06:
|
||||||
|
typename = "GRP_DATA"
|
||||||
|
case 0x07:
|
||||||
|
typename = "ANON_REQ"
|
||||||
|
case 0x08:
|
||||||
|
typename = "PATH"
|
||||||
|
case 0x09:
|
||||||
|
typename = "TRACE"
|
||||||
|
case 0x0A:
|
||||||
|
typename = "MULTIPART"
|
||||||
|
case 0x0B:
|
||||||
|
typename = "CONTROL"
|
||||||
|
|
||||||
|
if typename :
|
||||||
|
event.payload["payload_typename"]= typename
|
||||||
|
|
||||||
|
event.payload["payload_ver"] = payload_ver
|
||||||
|
|
||||||
|
if not transport_code is None:
|
||||||
|
event.payload["transport_code"] = transport_code.hex()
|
||||||
|
|
||||||
|
event.payload["path_len"] = path_len
|
||||||
|
event.payload["path"] = path
|
||||||
|
|
||||||
|
event.payload["pkt_payload"] = pkt_payload.hex()
|
||||||
|
|
||||||
|
if payload_type == 0x05: # flood msg / channel
|
||||||
if handle_log_rx.channel_echoes:
|
if handle_log_rx.channel_echoes:
|
||||||
if header & 1 == 0: # has transport code
|
pk_buf = io.BytesIO(pkt_payload)
|
||||||
pbuf.read(4) # discard transport code
|
chan_hash = pk_buf.read(1).hex()
|
||||||
path_len = pbuf.read(1)[0]
|
cipher_mac = pk_buf.read(2)
|
||||||
path = pbuf.read(path_len).hex()
|
msg = pk_buf.read() # until the end of buffer
|
||||||
chan_hash = pbuf.read(1).hex()
|
|
||||||
cipher_mac = pbuf.read(2)
|
|
||||||
msg = pbuf.read() # until the end of buffer
|
|
||||||
|
|
||||||
channel = None
|
channel = None
|
||||||
for c in await get_channels(mc):
|
for c in await get_channels(mc):
|
||||||
|
|
@ -258,6 +303,14 @@ async def handle_log_rx(event):
|
||||||
else:
|
else:
|
||||||
print(txt)
|
print(txt)
|
||||||
|
|
||||||
|
if handle_log_rx.json_log_rx: # json mode ... raw dump
|
||||||
|
msg = json.dumps(event.payload)
|
||||||
|
if handle_message.above:
|
||||||
|
print_above(msg)
|
||||||
|
else :
|
||||||
|
print(msg)
|
||||||
|
|
||||||
|
|
||||||
handle_log_rx.json_log_rx = False
|
handle_log_rx.json_log_rx = False
|
||||||
handle_log_rx.channel_echoes = False
|
handle_log_rx.channel_echoes = False
|
||||||
handle_log_rx.mc = None
|
handle_log_rx.mc = None
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue