avr: move SK6812_OnPacketReceived to dedicated file.

This commit is contained in:
Martin Preuss
2025-05-01 00:59:02 +02:00
parent 048eccf4c6
commit 51d32dc505
2 changed files with 51 additions and 35 deletions

View File

@@ -83,41 +83,6 @@ SK6812_Fini:
; ---------------------------------------------------------------------------
; @routine SK6812_OnPacketReceived @global
;
; @clobbers any, -X
SK6812_OnPacketReceived:
adiw xh:xl, 2 ; command
ld r16, X
sbiw xh:xl, 2
cpi r16, CPRO_CMD_VALUE_SET
breq SK6812_OnPacketReceived_set
clc ; unexpected msg
ret
SK6812_OnPacketReceived_set:
rcall CPRO_ReadValue ; (none)
cpi r17, VALUE_ID_LED_RGBW_VALUE
breq SK6812_OnPacketReceived_setRGBW
cpi r17, VALUE_ID_LED_NUMLEDS
breq SK6812_OnPacketReceived_setNumLeds
clc
ret
SK6812_OnPacketReceived_setRGBW:
rcall SK6812_SetAllColor ; value is in R18-R21
rjmp SK6812_OnPacketReceived_sendAck
SK6812_OnPacketReceived_setNumLeds:
sts sk6812NumLeds, r18
SK6812_OnPacketReceived_sendAck:
ldi r16, CPRO_CMD_VALUE_SET_ACK
rcall CPRO_SendSetValueResponse
sec
ret
; @end
; ---------------------------------------------------------------------------
; @routine SK6812_SetAllColor @global
;

View File

@@ -0,0 +1,51 @@
; ***************************************************************************
; copyright : (C) 2024 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. *
; ***************************************************************************
; ---------------------------------------------------------------------------
; @routine SK6812_OnPacketReceived @global
;
; @clobbers any, -X
SK6812_OnPacketReceived:
adiw xh:xl, 2 ; command
ld r16, X
sbiw xh:xl, 2
cpi r16, NETMSG_CMD_VALUE_SET
breq SK6812_OnPacketReceived_set
clc ; unexpected msg
ret
SK6812_OnPacketReceived_set:
rcall NETMSG_ValueRead ; (none)
cpi r17, VALUE_ID_LED_RGBW_VALUE
breq SK6812_OnPacketReceived_setRGBW
cpi r17, VALUE_ID_LED_NUMLEDS
breq SK6812_OnPacketReceived_setNumLeds
clc
ret
SK6812_OnPacketReceived_setRGBW:
rcall SK6812_SetAllColor ; value is in R18-R21 (r16, r17, r23)
rjmp SK6812_OnPacketReceived_sendAck
SK6812_OnPacketReceived_setNumLeds:
sts sk6812NumLeds, r18
SK6812_OnPacketReceived_sendAck:
push xl
push xh
mov r16, r22 ; src address
ldi r23, NETMSG_CMD_VALUE_SET_ACK
clr r17
rcall Main_SendValueResponse
pop xh
pop xl
sec
ret
; @end