47 lines
1.5 KiB
NASM
47 lines
1.5 KiB
NASM
; ***************************************************************************
|
|
; copyright : (C) 2025 by Martin Preuss
|
|
; email : martin@libchipcard.de
|
|
;
|
|
; ***************************************************************************
|
|
; * This file is part of the project "AqHome". *
|
|
; * Please see toplevel file COPYING of that project for license details. *
|
|
; ***************************************************************************
|
|
|
|
|
|
; ***************************************************************************
|
|
; code
|
|
|
|
.cseg
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; @routine NETMSG_ValueRead @global
|
|
; Read a VALUE message.
|
|
;
|
|
; @param X buffer to read from
|
|
; @return R17 value id
|
|
; @return R19:R18 value
|
|
; @return R21:R20 denom (e.g. 100, meaning value must be divided by 100)
|
|
; @return R22 source address
|
|
; @return R23 command
|
|
; @return R25:R24 message id
|
|
|
|
NETMSG_ValueRead:
|
|
adiw xh:xl, 2 ; skip DEST, LEN 0
|
|
ld r23, X+ ; command 2
|
|
ld r22, X+ ; src address 3
|
|
adiw xh:xl, 4 ; skip uid 4 ( 0)
|
|
ld r24, X+ ; msg id (low) 8 ( 4)
|
|
ld r25, X+ ; msg id (high) 9 ( 5)
|
|
ld r17, X+ ; value id 10 ( 6)
|
|
adiw xh:xl, 1 ; skip value type 11 ( 7)
|
|
ld r18, X+ ; value (low) 12 ( 8)
|
|
ld r19, X+ ; value (high) 13 ( 9)
|
|
ld r20, X+ ; denom (low) 14 (10)
|
|
ld r21, X+ ; denom (high) 15 (11)
|
|
sbiw xh:xl, 16 ; back to msg begin 16 (12)
|
|
ret
|
|
; @end
|
|
|
|
|