; *************************************************************************** ; 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: ldi zl, LOW(sk6812MsgTable*2) ldi zh, HIGH(sk6812MsgTable*2) rjmp Main_HandleValueMsg ; @end sk6812SetValueRGBW: rcall SK6812_SetRGBW ; value is in R18-R21 (R16, R17, X) rcall SK6812_Trigger ldi r18, 1 rcall sk6812SetState rjmp sk6812SetValueACK ; @end sk6812SetValueNumLeds: sts sk6812NumLeds, r18 rjmp sk6812SetValueACK ; @end sk6812SetValueState: rcall SK6812_SetState ; value is in R18 (r16, r17, r18, r19, r20, r21, r23, r24, r25) rjmp sk6812SetValueACK ; @end sk6812SetValueMode: rcall SK6812_SetMode ; value is in R18 (r16, r17, r18, r19, r20, r21, r23, r24, r25) rjmp sk6812SetValueACK ; @end sk6812SetValueType: cpi r18, SK6812_TYPE_NUM brcc sk6812SetValueNACK sts sk6812Type, r18 rjmp sk6812SetValueACK ; @end sk6812SetValueACK: ldi r23, NETMSG_CMD_VALUE_SET_ACK sec ret ; @end sk6812SetValueNACK: ldi r23, NETMSG_CMD_VALUE_SET_NACK 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 NETMSG_CMD_VALUE_SET, VALUE_ID_LED_TYPE, LOW(sk6812SetValueType), HIGH(sk6812SetValueType) .db 0, 0, 0, 0