87 lines
1.9 KiB
NASM
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
|
|
|