avr: share code (use Main_HandleValueMsg)
This commit is contained in:
@@ -230,6 +230,7 @@
|
|||||||
.include "modules/sk6812/main.asm"
|
.include "modules/sk6812/main.asm"
|
||||||
#ifdef MODULES_NETWORK
|
#ifdef MODULES_NETWORK
|
||||||
.include "modules/sk6812/recv.asm"
|
.include "modules/sk6812/recv.asm"
|
||||||
|
.include "devices/all/handlevaluemsg.asm"
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -15,63 +15,54 @@
|
|||||||
; @clobbers any, -X
|
; @clobbers any, -X
|
||||||
|
|
||||||
SK6812_OnPacketReceived:
|
SK6812_OnPacketReceived:
|
||||||
adiw xh:xl, NETMSG_OFFS_CMD ; command
|
ldi zl, LOW(sk6812MsgTable*2)
|
||||||
ld r16, X
|
ldi zh, HIGH(sk6812MsgTable*2)
|
||||||
sbiw xh:xl, NETMSG_OFFS_CMD
|
rjmp Main_HandleValueMsg
|
||||||
cpi r16, NETMSG_CMD_VALUE_SET
|
; @end
|
||||||
breq SK6812_OnPacketReceived_set
|
|
||||||
clc ; unexpected msg
|
|
||||||
ret
|
|
||||||
SK6812_OnPacketReceived_set:
|
sk6812SetValueRGBW:
|
||||||
rcall NETMSG_ValueRead ; (none)
|
rcall SK6812_SetRGBW ; value is in R18-R21 (R16, R17, X)
|
||||||
cpi r17, VALUE_ID_LED_RGBW_VALUE
|
ldi r23, NETMSG_CMD_VALUE_SET_ACK
|
||||||
breq SK6812_OnPacketReceived_setRGBW
|
|
||||||
cpi r17, VALUE_ID_LED_NUMLEDS
|
|
||||||
breq SK6812_OnPacketReceived_setNumLeds
|
|
||||||
cpi r17, VALUE_ID_LED_STATE
|
|
||||||
breq SK6812_OnPacketReceived_setState
|
|
||||||
cpi r17, VALUE_ID_LED_MODE
|
|
||||||
breq SK6812_OnPacketReceived_setMode
|
|
||||||
clc
|
|
||||||
ret
|
|
||||||
SK6812_OnPacketReceived_setRGBW:
|
|
||||||
push r17
|
|
||||||
push r24
|
|
||||||
push r25
|
|
||||||
rcall SK6812_SetRGBW ; value is in R18-R21 (R16, R17, X)
|
|
||||||
pop r25
|
|
||||||
pop r24
|
|
||||||
pop r17
|
|
||||||
rjmp SK6812_OnPacketReceived_sendAck
|
|
||||||
SK6812_OnPacketReceived_setState:
|
|
||||||
push r17
|
|
||||||
push r24
|
|
||||||
push r25
|
|
||||||
rcall SK6812_SetState ; value is in R18 (r16, r17, r18, r19, r20, r21, r23, r24, r25)
|
|
||||||
pop r25
|
|
||||||
pop r24
|
|
||||||
pop r17
|
|
||||||
rjmp SK6812_OnPacketReceived_sendAck
|
|
||||||
SK6812_OnPacketReceived_setMode:
|
|
||||||
push r17
|
|
||||||
push r24
|
|
||||||
push r25
|
|
||||||
rcall SK6812_SetMode ; value is in R18 (r16, r17, r18, r19, r20, r21, r23, r24, r25)
|
|
||||||
pop r25
|
|
||||||
pop r24
|
|
||||||
pop r17
|
|
||||||
rjmp SK6812_OnPacketReceived_sendAck
|
|
||||||
SK6812_OnPacketReceived_setNumLeds:
|
|
||||||
sts sk6812NumLeds, r18
|
|
||||||
SK6812_OnPacketReceived_sendAck:
|
|
||||||
push xl
|
|
||||||
push xh
|
|
||||||
ldi r23, NETMSG_CMD_VALUE_SET_ACK
|
|
||||||
rcall Main_SendValueResponse
|
|
||||||
pop xh
|
|
||||||
pop xl
|
|
||||||
sec
|
sec
|
||||||
ret
|
ret
|
||||||
; @end
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
sk6812SetValueNumLeds:
|
||||||
|
sts sk6812NumLeds, r18
|
||||||
|
ldi r23, NETMSG_CMD_VALUE_SET_ACK
|
||||||
|
sec
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
sk6812SetValueState:
|
||||||
|
rcall SK6812_SetState ; value is in R18 (r16, r17, r18, r19, r20, r21, r23, r24, r25)
|
||||||
|
ldi r23, NETMSG_CMD_VALUE_SET_ACK
|
||||||
|
sec
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
sk6812SetValueMode:
|
||||||
|
rcall SK6812_SetMode ; value is in R18 (r16, r17, r18, r19, r20, r21, r23, r24, r25)
|
||||||
|
ldi r23, NETMSG_CMD_VALUE_SET_ACK
|
||||||
|
sec
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
sk6812MsgTable:
|
||||||
|
.db NETMSG_CMD_VALUE_SET, VALUE_ID_LED_RGBW_VALUE, LOW(sk6812SetValueRGBW), HIGH(sk6812SetValueRGBW)
|
||||||
|
.db NETMSG_CMD_VALUE_SET, VALUE_ID_LED_NUMLEDS, LOW(sk6812SetValueNumLeds), HIGH(sk6812SetValueNumLeds)
|
||||||
|
.db NETMSG_CMD_VALUE_SET, VALUE_ID_LED_STATE, LOW(sk6812SetValueState), HIGH(sk6812SetValueState)
|
||||||
|
.db NETMSG_CMD_VALUE_SET, VALUE_ID_LED_MODE, LOW(sk6812SetValueMode), HIGH(sk6812SetValueMode)
|
||||||
|
.db 0, 0, 0, 0
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user