diff --git a/avr/modules/sk6812/recv.asm b/avr/modules/sk6812/recv.asm index 6432213..5e19c15 100644 --- a/avr/modules/sk6812/recv.asm +++ b/avr/modules/sk6812/recv.asm @@ -27,44 +27,62 @@ sk6812SetValueRGBW: rcall SK6812_Trigger ldi r18, 1 rcall sk6812SetState - rjmp sk6812SetValueReturn + rjmp sk6812SetValueACK ; @end sk6812SetValueNumLeds: sts sk6812NumLeds, r18 - rjmp sk6812SetValueReturn + rjmp sk6812SetValueACK ; @end sk6812SetValueState: rcall SK6812_SetState ; value is in R18 (r16, r17, r18, r19, r20, r21, r23, r24, r25) - rjmp sk6812SetValueReturn + rjmp sk6812SetValueACK ; @end sk6812SetValueMode: rcall SK6812_SetMode ; value is in R18 (r16, r17, r18, r19, r20, r21, r23, r24, r25) - rjmp sk6812SetValueReturn + rjmp sk6812SetValueACK ; @end -sk6812SetValueReturn: +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