Files
aqhomecontrol/avr/modules/multifan/recv.asm
2026-06-29 22:15:15 +02:00

87 lines
1.9 KiB
NASM

; ***************************************************************************
; copyright : (C) 2026 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. *
; ***************************************************************************
#ifndef AQH_AVR_MODULES_MULTIFAN_RECV_ASM
#define AQH_AVR_MODULES_MULTIFAN_RECV_ASM
; ---------------------------------------------------------------------------
; @routine MultiFan_OnPacketReceived @global
;
; @clobbers any, !X
MultiFan_OnPacketReceived:
ldi zl, LOW(multiFanMsgTable*2)
ldi zh, HIGH(multiFanMsgTable*2)
rjmp Main_HandleValueMsg
; @end
multiFanSetValueFan1Duty: ; value is in R18-R21 (R16, R17, X)
mov r16, r18
rcall MultiFan_SetFan1Duty
rjmp multiFanSetValueACK
; @end
.if MULTIFAN_FANS > 1
multiFanSetValueFan2Duty: ; value is in R18-R21 (R16, R17, X)
mov r16, r18
rcall MultiFan_SetFan2Duty
rjmp multiFanSetValueACK
; @end
.endif
.if MULTIFAN_FANS > 2
multiFanSetValueFan3Duty: ; value is in R18-R21 (R16, R17, X)
mov r16, r18
rcall MultiFan_SetFan3Duty
rjmp multiFanSetValueACK
; @end
.endif
multiFanSetValueACK:
ldi r23, NETMSG_CMD_VALUE_SET_ACK
sec
ret
; @end
multiFanSetValueNACK:
ldi r23, NETMSG_CMD_VALUE_SET_NACK
sec
ret
; @end
multiFanMsgTable:
.db NETMSG_CMD_VALUE_SET, VALUE_ID_FAN1_DUTY, LOW(multiFanSetValueFan1Duty), HIGH(multiFanSetValueFan1Duty)
.if MULTIFAN_FANS > 1
.db NETMSG_CMD_VALUE_SET, VALUE_ID_FAN2_DUTY, LOW(multiFanSetValueFan2Duty), HIGH(multiFanSetValueFan2Duty)
.endif
.if MULTIFAN_FANS > 2
.db NETMSG_CMD_VALUE_SET, VALUE_ID_FAN3_DUTY, LOW(multiFanSetValueFan3Duty), HIGH(multiFanSetValueFan3Duty)
.endif
.db 0, 0, 0, 0
#endif