From 83225c453db501e3ca408eb8448c00ee3e4b9ef6 Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Sat, 12 Jul 2025 20:07:33 +0200 Subject: [PATCH] Use uid to determine initial wait time after re-enum request. --- avr/apps/network/main.asm | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/avr/apps/network/main.asm b/avr/apps/network/main.asm index 9c64e8c..09ef659 100644 --- a/avr/apps/network/main.asm +++ b/avr/apps/network/main.asm @@ -210,12 +210,19 @@ appNetworkHandlePingRequest_end: appNetworkHandleReeunumRequest: - rcall NETMSG_Range_Read + push xl + push xh + rcall Utils_ReadUid ; r21:r20:r19:r18=uid (r16, X) + pop xh + pop xl + rcall NETMSG_Range_Read ; r20=range begin, r21=range end (none) ldi r16, APP_NETWORK_STATE_INITIALWAIT std Y+NET_IFACE_OFFS_STATUS, r16 - ldd r16, Y+NET_IFACE_OFFS_ADDRESS ; use current address as timer - std Y+NET_IFACE_OFFS_STATETIMER, r16 - ldi r16, APP_NETWORK_ADDRESS_RANGE_BEGIN + cpi r18, 20 + brcc appNetworkHandleReeunumRequest_setWait + subi r18, -20 ; minimum 2s +appNetworkHandleReeunumRequest_setWait: + std Y+NET_IFACE_OFFS_STATETIMER, r18 ; use lowest byte of uid as wat time std Y+NET_IFACE_OFFS_RANGE_BEGIN, r20 std Y+NET_IFACE_OFFS_RANGE_END, r21 ret