avr: motionLight module now reads/writes its config from/into EEPROM.
This commit is contained in:
@@ -8,8 +8,7 @@
|
|||||||
; ***************************************************************************
|
; ***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
;.equ MOTIONLIGHT_DEFAULT_ONTIME = 3000
|
.equ MOTIONLIGHT_DEFAULT_ONTIME = 3000 ; 5min
|
||||||
.equ MOTIONLIGHT_DEFAULT_ONTIME = 300
|
|
||||||
|
|
||||||
.equ MOTIONLIGHT_SOURCE_NUM = 2
|
.equ MOTIONLIGHT_SOURCE_NUM = 2
|
||||||
|
|
||||||
@@ -61,11 +60,13 @@ MotionLight_Init:
|
|||||||
ldi r16, HIGH(MOTIONLIGHT_DEFAULT_ONTIME)
|
ldi r16, HIGH(MOTIONLIGHT_DEFAULT_ONTIME)
|
||||||
sts motionLightOnTime+1, r16
|
sts motionLightOnTime+1, r16
|
||||||
|
|
||||||
|
rcall motionLightReadConfFromEeprom
|
||||||
|
|
||||||
; debug
|
; debug
|
||||||
ldi r16, 0x01
|
; ldi r16, 0x01
|
||||||
sts motionLightSources+MOTIONLIGHT_SOURCE_OFFS_ADDR, r16
|
; sts motionLightSources+MOTIONLIGHT_SOURCE_OFFS_ADDR, r16
|
||||||
ldi r16, 0x07
|
; ldi r16, 0x07
|
||||||
sts motionLightSources+MOTIONLIGHT_SOURCE_OFFS_VALUEID, r16
|
; sts motionLightSources+MOTIONLIGHT_SOURCE_OFFS_VALUEID, r16
|
||||||
|
|
||||||
ret
|
ret
|
||||||
; @end
|
; @end
|
||||||
@@ -170,6 +171,11 @@ MotionLight_OnPacketReceived_setSource2:
|
|||||||
MotionLight_OnPacketReceived_sendAck:
|
MotionLight_OnPacketReceived_sendAck:
|
||||||
ldi r16, CPRO_CMD_VALUE_SET_ACK
|
ldi r16, CPRO_CMD_VALUE_SET_ACK
|
||||||
rcall CPRO_SendSetValueResponse
|
rcall CPRO_SendSetValueResponse
|
||||||
|
push xl
|
||||||
|
push xh
|
||||||
|
rcall motionLightWriteConfToEeprom
|
||||||
|
pop xh
|
||||||
|
pop xl
|
||||||
sec
|
sec
|
||||||
ret
|
ret
|
||||||
; @end
|
; @end
|
||||||
@@ -252,6 +258,87 @@ motionLightTurnOff:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine motionLightReadConfFromEeprom
|
||||||
|
;
|
||||||
|
; @clobbers
|
||||||
|
|
||||||
|
motionLightReadConfFromEeprom:
|
||||||
|
push r15
|
||||||
|
in r15, SREG
|
||||||
|
cli
|
||||||
|
ldi xl, LOW(EEPROM_OFFS_MAL_CONF_ONTIME)
|
||||||
|
ldi xh, HIGH(EEPROM_OFFS_MAL_CONF_ONTIME)
|
||||||
|
rcall Utils_ReadEepromIncr ; (R16)
|
||||||
|
mov r18, r16
|
||||||
|
rcall Utils_ReadEepromIncr ; (R16)
|
||||||
|
mov r19, r16
|
||||||
|
and r16, r18
|
||||||
|
cpi r16, 0xff
|
||||||
|
breq motionLightReadConfFromEeprom_end
|
||||||
|
sts motionLightOnTime, r18
|
||||||
|
sts motionLightOnTime+1, r19
|
||||||
|
|
||||||
|
; read source 1
|
||||||
|
rcall Utils_ReadEepromIncr ; (R16)
|
||||||
|
mov r18, r16
|
||||||
|
rcall Utils_ReadEepromIncr ; (R16)
|
||||||
|
mov r19, r16
|
||||||
|
sts motionLightSources+MOTIONLIGHT_SOURCE_OFFS_ADDR, r18
|
||||||
|
sts motionLightSources+MOTIONLIGHT_SOURCE_OFFS_VALUEID, r19
|
||||||
|
|
||||||
|
; read source 2
|
||||||
|
rcall Utils_ReadEepromIncr ; (R16)
|
||||||
|
mov r18, r16
|
||||||
|
rcall Utils_ReadEepromIncr ; (R16)
|
||||||
|
mov r19, r16
|
||||||
|
sts motionLightSources+MOTIONLIGHT_SOURCE_SIZE+MOTIONLIGHT_SOURCE_OFFS_ADDR, r18
|
||||||
|
sts motionLightSources+MOTIONLIGHT_SOURCE_SIZE+MOTIONLIGHT_SOURCE_OFFS_VALUEID, r19
|
||||||
|
|
||||||
|
motionLightReadConfFromEeprom_end:
|
||||||
|
out SREG, r15
|
||||||
|
pop r15
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine motionLightWriteConfToEeprom
|
||||||
|
;
|
||||||
|
; @clobbers r15, r16, r17, X
|
||||||
|
|
||||||
|
motionLightWriteConfToEeprom:
|
||||||
|
push r15
|
||||||
|
in r15, SREG
|
||||||
|
cli
|
||||||
|
ldi xl, LOW(EEPROM_OFFS_MAL_CONF_ONTIME)
|
||||||
|
ldi xh, HIGH(EEPROM_OFFS_MAL_CONF_ONTIME)
|
||||||
|
|
||||||
|
lds r16, motionLightOnTime
|
||||||
|
rcall Utils_WriteEepromIncr ; (R17)
|
||||||
|
lds r16, motionLightOnTime+1
|
||||||
|
rcall Utils_WriteEepromIncr ; (R17)
|
||||||
|
|
||||||
|
; write source 1
|
||||||
|
lds r16, motionLightSources+MOTIONLIGHT_SOURCE_OFFS_ADDR
|
||||||
|
rcall Utils_WriteEepromIncr ; (R16)
|
||||||
|
lds r16, motionLightSources+MOTIONLIGHT_SOURCE_OFFS_VALUEID
|
||||||
|
rcall Utils_WriteEepromIncr ; (R16)
|
||||||
|
|
||||||
|
; write source 2
|
||||||
|
lds r16, motionLightSources+MOTIONLIGHT_SOURCE_SIZE+MOTIONLIGHT_SOURCE_OFFS_ADDR
|
||||||
|
rcall Utils_WriteEepromIncr ; (R16)
|
||||||
|
lds r16, motionLightSources+MOTIONLIGHT_SOURCE_SIZE+MOTIONLIGHT_SOURCE_OFFS_VALUEID
|
||||||
|
rcall Utils_WriteEepromIncr ; (R16)
|
||||||
|
|
||||||
|
out SREG, r15
|
||||||
|
pop r15
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
MOTIONLIGHT_END:
|
MOTIONLIGHT_END:
|
||||||
.equ MODULE_SIZE_MOTIONLIGHT = MOTIONLIGHT_END-MOTIONLIGHT_BEGIN
|
.equ MODULE_SIZE_MOTIONLIGHT = MOTIONLIGHT_END-MOTIONLIGHT_BEGIN
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user