diff --git a/avr/apps/ma_light/main.asm b/avr/apps/ma_light/main.asm index fc1f67c..ac4c7fe 100644 --- a/avr/apps/ma_light/main.asm +++ b/avr/apps/ma_light/main.asm @@ -68,7 +68,7 @@ AppMotionLight_Every100ms: AppMotionLight_Every100ms_ret: ret AppMotionLight_Every100ms_off: - rjmp appMotionLightTurnOff ; (r16, r17, r18, r19, r20, r21, r23, r24, r25) + rjmp appMotionLightTurnOff ; (r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, X) ; @end @@ -147,11 +147,13 @@ appMotionLightStartTimer: ; --------------------------------------------------------------------------- ; @routine appMotionLightTurnOn ; -; @clobbers r18 (r16, r17, r19, r20, r21, r23, r24, r25) +; @clobbers r18 (r16, r17, r19, r20, r21, r22, r23, r24, r25, X) appMotionLightTurnOn: ldi r18, 1 - rjmp SK6812_SetState ; (r16, r17, r18, r19, r20, r21, r23, r24, r25) + rcall SK6812_SetState ; (R16, R17, R18, R19, R20, R21, R23, R24, R25) + ldi r18, 1 + rjmp appMotionLightReportState ; (R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, X) ; @end @@ -159,11 +161,35 @@ appMotionLightTurnOn: ; --------------------------------------------------------------------------- ; @routine appMotionLightTurnOff ; -; @clobbers r18 (r16, r17, r19, r20, r21, r23, r24, r25) +; @clobbers r18 (r16, r17, r19, r20, r21, r22, r23, r24, r25, X) appMotionLightTurnOff: clr r18 - rjmp SK6812_SetState ; (r16, r17, r18, r19, r20, r21, r23, r24, r25) + rcall SK6812_SetState ; (R16, R17, R18, R19, R20, R21, R23, R24, R25) + clr r18 + rjmp appMotionLightReportState ; (R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, X) +; @end + + + +; --------------------------------------------------------------------------- +; @routine appMotionLightReportState +; +; @param R18 state (0=off, 1=on) +; @clobbers (R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, X) + +appMotionLightReportState: + ldi r17, VALUE_ID_MAL_STATE + clr r19 + ldi r20, 1 + clr r21 + ldi r22, AQHOME_VALUETYPE_ONOFF + push yl + push yh + rcall Main_SendValueReport ; (R16, R17, R18, R19, R20, R21, R23, R24, R25, X) + pop yh + pop yl + ret ; @end diff --git a/avr/apps/ma_light/recv.asm b/avr/apps/ma_light/recv.asm index ddfedfb..f6f8dbc 100644 --- a/avr/apps/ma_light/recv.asm +++ b/avr/apps/ma_light/recv.asm @@ -64,8 +64,12 @@ AppMotionLight_OnPacketReceived_checkTimer: lds r17, appMotionLightTimer+1 or r16, r17 brne AppMotionLight_OnPacketReceived_startTimer ; no, just restart timer (light already on) - rcall appMotionLightTurnOn ; (r16, r17, r18, r19, r20, r21, r23, r24, r25) -AppMotionLight_OnPacketReceived_startTimer: + push xl + push xh + rcall appMotionLightTurnOn ; (r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, X) + pop xh + pop xl +AppMotionLight_OnPacketReceived_startTimer: rcall appMotionLightStartTimer AppMotionLight_OnPacketReceived_secRet: sec diff --git a/avr/devices/all/defs.asm b/avr/devices/all/defs.asm index 29a58c4..41b7ac3 100644 --- a/avr/devices/all/defs.asm +++ b/avr/devices/all/defs.asm @@ -21,6 +21,7 @@ .equ AQHOME_VALUETYPE_TVOC = 8 .equ AQHOME_VALUETYPE_STATS = 9 .equ AQHOME_VALUETYPE_LIGHT = 10 +.equ AQHOME_VALUETYPE_ONOFF = 11 ; Value Ids diff --git a/avr/devices/n14/aqua_n14.xml b/avr/devices/n14/aqua_n14.xml index fddc0cf..81abc7d 100644 --- a/avr/devices/n14/aqua_n14.xml +++ b/avr/devices/n14/aqua_n14.xml @@ -16,6 +16,7 @@ + diff --git a/avr/devices/n14/main/main.asm b/avr/devices/n14/main/main.asm index c27f091..fae03a2 100644 --- a/avr/devices/n14/main/main.asm +++ b/avr/devices/n14/main/main.asm @@ -76,6 +76,7 @@ ;.equ VALUE_ID_REED1 = 0x04 ;.equ VALUE_ID_REED2 = 0x05 .equ VALUE_ID_DS18B20_TEMP = 0x06 +.equ VALUE_ID_MAL_STATE = 0x07 ;.equ VALUE_ID_REED_CONF = 0x81 .equ VALUE_ID_LED_STATE = 0x81 diff --git a/avr/devices/n25/aqua_n25.xml b/avr/devices/n25/aqua_n25.xml index 552e4d1..144bf35 100644 --- a/avr/devices/n25/aqua_n25.xml +++ b/avr/devices/n25/aqua_n25.xml @@ -16,6 +16,7 @@ + diff --git a/avr/devices/n25/main/main.asm b/avr/devices/n25/main/main.asm index 23f0627..3735f1a 100644 --- a/avr/devices/n25/main/main.asm +++ b/avr/devices/n25/main/main.asm @@ -77,6 +77,8 @@ ;.equ VALUE_ID_REED1 = 0x04 ;.equ VALUE_ID_REED2 = 0x05 .equ VALUE_ID_DS18B20_TEMP = 0x06 +.equ VALUE_ID_MAL_STATE = 0x07 + ;.equ VALUE_ID_REED_CONF = 0x81 .equ VALUE_ID_LED_STATE = 0x81