c03: implemented setdata message handling for SensorWatch
storing/restoring data from EEPROM doesn't work, yet.
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
C01
|
C03
|
||||||
===
|
===
|
||||||
|
|
||||||
- Role: Controller with Display
|
- Role: Controller with Display
|
||||||
@@ -8,3 +8,11 @@ C01
|
|||||||
- Periphery:
|
- Periphery:
|
||||||
- Display with SPI
|
- Display with SPI
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SetLimits:
|
||||||
|
aqhome-tool setdata -N nodes/xxxxxxxx/CO2_LIMIT_CRIT -v "LOWER:UPPER"
|
||||||
|
aqhome-tool setdata -N nodes/xxxxxxxx/CO2_LIMIT_WARN -v "LOWER:UPPER"
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -66,6 +66,9 @@ winClimateSensor3Value_ramdata:
|
|||||||
buttonClimateNetwork_ramdata:
|
buttonClimateNetwork_ramdata:
|
||||||
.byte IMGVIEW_SD_SIZE
|
.byte IMGVIEW_SD_SIZE
|
||||||
|
|
||||||
|
debugValue1_ramdata:
|
||||||
|
.byte VLABEL_SD_SIZE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; ***************************************************************************
|
; ***************************************************************************
|
||||||
@@ -158,25 +161,25 @@ winClimate_signalmap:
|
|||||||
|
|
||||||
winClimateSensor1:
|
winClimateSensor1:
|
||||||
; OBJECT
|
; OBJECT
|
||||||
.db 0x55, 0xaa ; magic
|
.db 0x55, 0xaa ; magic
|
||||||
.dw winClimateSensor2*2 ; next
|
.dw winClimateSensor2*2 ; next
|
||||||
.dw winClimateBody*2 ; parent
|
.dw winClimateBody*2 ; parent
|
||||||
.dw winClimateSensor1Title*2 ; first child
|
.dw winClimateSensor1Title*2 ; first child
|
||||||
.dw 0 ; target
|
.dw 0 ; target
|
||||||
.dw 0 ; selector (ony lower 8 bits used)
|
.dw 0 ; selector (ony lower 8 bits used)
|
||||||
.dw SensorWatch_DefaultSignalmap*2 ; signal map
|
.dw SensorWatch_DefaultSignalmap*2 ; signal map
|
||||||
; WIDGET
|
; WIDGET
|
||||||
.db (1<<WIDGET_OPTSLO_MSGRECV_BIT), 0 ; opts lo, hi
|
.db (1<<WIDGET_OPTSLO_MSGRECV_BIT), 0 ; opts lo, hi
|
||||||
.dw 4 ; X
|
.dw 4 ; X
|
||||||
.dw 4 ; Y
|
.dw 4 ; Y
|
||||||
.dw 100 ; W (image=96, 2 px borders)
|
.dw 100 ; W (image=96, 2 px borders)
|
||||||
.dw 100 ; H
|
.dw 100 ; H
|
||||||
.dw STYLE_WIN_FOREGROUND ; front color
|
.dw STYLE_WIN_FOREGROUND ; front color
|
||||||
.dw STYLE_WIN_BACKGROUND ; back color
|
.dw STYLE_WIN_BACKGROUND ; back color
|
||||||
.dw STYLE_WIN_FONT*2 ; font
|
.dw STYLE_WIN_FONT*2 ; font
|
||||||
.dw winClimateSensor1_ramdata ; ptr to SDRAM
|
.dw winClimateSensor1_ramdata ; ptr to SDRAM
|
||||||
; SENSORWATCH
|
; SENSORWATCH
|
||||||
.db 0, 0 ; baseValueId, eepromId
|
.db VALUE_ID_SENSOR_CO2_BASE, C03_EEID_SENSOR_CO2 ; baseValueId, eepromId
|
||||||
|
|
||||||
|
|
||||||
winClimateSensor1Title:
|
winClimateSensor1Title:
|
||||||
@@ -256,25 +259,25 @@ winClimate_signalmap:
|
|||||||
|
|
||||||
winClimateSensor2:
|
winClimateSensor2:
|
||||||
; OBJECT
|
; OBJECT
|
||||||
.db 0x55, 0xaa ; magic
|
.db 0x55, 0xaa ; magic
|
||||||
.dw winClimateSensor3*2 ; next
|
.dw winClimateSensor3*2 ; next
|
||||||
.dw winClimateBody*2 ; parent
|
.dw winClimateBody*2 ; parent
|
||||||
.dw winClimateSensor2Title*2 ; first child
|
.dw winClimateSensor2Title*2 ; first child
|
||||||
.dw 0 ; target
|
.dw 0 ; target
|
||||||
.dw 0 ; selector (ony lower 8 bits used)
|
.dw 0 ; selector (ony lower 8 bits used)
|
||||||
.dw SensorWatch_DefaultSignalmap*2 ; signal map
|
.dw SensorWatch_DefaultSignalmap*2 ; signal map
|
||||||
; WIDGET
|
; WIDGET
|
||||||
.db (1<<WIDGET_OPTSLO_MSGRECV_BIT), 0 ; opts lo, hi
|
.db (1<<WIDGET_OPTSLO_MSGRECV_BIT), 0 ; opts lo, hi
|
||||||
.dw 108 ; X
|
.dw 108 ; X
|
||||||
.dw 4 ; Y
|
.dw 4 ; Y
|
||||||
.dw 100 ; W (image=96, 2 px borders)
|
.dw 100 ; W (image=96, 2 px borders)
|
||||||
.dw 100 ; H
|
.dw 100 ; H
|
||||||
.dw STYLE_WIN_FOREGROUND ; front color
|
.dw STYLE_WIN_FOREGROUND ; front color
|
||||||
.dw STYLE_WIN_BACKGROUND ; back color
|
.dw STYLE_WIN_BACKGROUND ; back color
|
||||||
.dw STYLE_WIN_FONT*2 ; font
|
.dw STYLE_WIN_FONT*2 ; font
|
||||||
.dw winClimateSensor2_ramdata ; ptr to SDRAM
|
.dw winClimateSensor2_ramdata ; ptr to SDRAM
|
||||||
; SENSORWATCH
|
; SENSORWATCH
|
||||||
.db 0, 0 ; baseValueId, eepromId
|
.db VALUE_ID_SENSOR_TEMP_BASE, C03_EEID_SENSOR_TEMP ; baseValueId, eepromId
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -355,25 +358,25 @@ winClimate_signalmap:
|
|||||||
|
|
||||||
winClimateSensor3:
|
winClimateSensor3:
|
||||||
; OBJECT
|
; OBJECT
|
||||||
.db 0x55, 0xaa ; magic
|
.db 0x55, 0xaa ; magic
|
||||||
.dw buttonClimateNetwork*2 ; next
|
.dw buttonClimateNetwork*2 ; next
|
||||||
.dw winClimateBody*2 ; parent
|
.dw winClimateBody*2 ; parent
|
||||||
.dw winClimateSensor3Title*2 ; first child
|
.dw winClimateSensor3Title*2 ; first child
|
||||||
.dw 0 ; target
|
.dw 0 ; target
|
||||||
.dw 0 ; selector (ony lower 8 bits used)
|
.dw 0 ; selector (ony lower 8 bits used)
|
||||||
.dw SensorWatch_DefaultSignalmap*2 ; signal map
|
.dw SensorWatch_DefaultSignalmap*2 ; signal map
|
||||||
; WIDGET
|
; WIDGET
|
||||||
.db (1<<WIDGET_OPTSLO_MSGRECV_BIT), 0 ; opts lo, hi
|
.db (1<<WIDGET_OPTSLO_MSGRECV_BIT), 0 ; opts lo, hi
|
||||||
.dw 212 ; X
|
.dw 212 ; X
|
||||||
.dw 4 ; Y
|
.dw 4 ; Y
|
||||||
.dw 100 ; W (image=96, 2 px borders)
|
.dw 100 ; W (image=96, 2 px borders)
|
||||||
.dw 100 ; H
|
.dw 100 ; H
|
||||||
.dw STYLE_WIN_FOREGROUND ; front color
|
.dw STYLE_WIN_FOREGROUND ; front color
|
||||||
.dw STYLE_WIN_BACKGROUND ; back color
|
.dw STYLE_WIN_BACKGROUND ; back color
|
||||||
.dw STYLE_WIN_FONT*2 ; font
|
.dw STYLE_WIN_FONT*2 ; font
|
||||||
.dw winClimateSensor3_ramdata ; ptr to SDRAM
|
.dw winClimateSensor3_ramdata ; ptr to SDRAM
|
||||||
; SENSORWATCH
|
; SENSORWATCH
|
||||||
.db 0, 0 ; baseValueId, eepromId
|
.db VALUE_ID_SENSOR_HUM_BASE, C03_EEID_SENSOR_HUM ; baseValueId, eepromId
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -449,12 +452,13 @@ winClimate_signalmap:
|
|||||||
.dw winClimateSensor3Value_ramdata ; ptr to SDRAM
|
.dw winClimateSensor3Value_ramdata ; ptr to SDRAM
|
||||||
; VALUELABEL
|
; VALUELABEL
|
||||||
.db 0, 0 ; num of post-komma digits
|
.db 0, 0 ; num of post-komma digits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
buttonClimateNetwork:
|
buttonClimateNetwork:
|
||||||
; OBJECT
|
; OBJECT
|
||||||
.db 0x55, 0xaa ; magic
|
.db 0x55, 0xaa ; magic
|
||||||
|
; .dw debugValue1*2 ; next
|
||||||
.dw 0 ; next
|
.dw 0 ; next
|
||||||
.dw winClimateBody*2 ; parent
|
.dw winClimateBody*2 ; parent
|
||||||
.dw 0 ; first child
|
.dw 0 ; first child
|
||||||
@@ -482,4 +486,29 @@ winClimate_signalmap:
|
|||||||
.db 0, 0, 0, 0 ; end of table
|
.db 0, 0, 0, 0 ; end of table
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
debugValue1:
|
||||||
|
; OBJECT
|
||||||
|
.db 0x55, 0xaa ; magic
|
||||||
|
.dw 0 ; next
|
||||||
|
.dw winClimateBody*2 ; parent
|
||||||
|
.dw 0 ; first child
|
||||||
|
.dw 0 ; target
|
||||||
|
.dw 0 ; selector (ony lower 8 bits used)
|
||||||
|
.dw ValueLabel_DefaultSignalmap*2 ; signal map
|
||||||
|
; WIDGET
|
||||||
|
.db 0, (1<<WIDGET_OPTSHI_HALIGNCENTER_BIT) ; opts lo, hi
|
||||||
|
.dw 2 ; X
|
||||||
|
.dw (3*STYLE_WIN_FONT_HEIGHT)+2+96+2 ; Y
|
||||||
|
.dw 96 ; W
|
||||||
|
.dw STYLE_WIN_FONT_HEIGHT+4 ; H
|
||||||
|
.dw STYLE_WIN_FOREGROUND ; front color
|
||||||
|
.dw STYLE_WIN_BACKGROUND ; back color
|
||||||
|
.dw STYLE_WIN_FONT*2 ; font
|
||||||
|
.dw debugValue1_ramdata ; ptr to SDRAM
|
||||||
|
; VALUELABEL
|
||||||
|
.db 0, 0 ; num of post-komma digits
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -99,7 +99,20 @@
|
|||||||
|
|
||||||
.equ VALUE_ID_LEDSIMPLE_TIMING = 0x88
|
.equ VALUE_ID_LEDSIMPLE_TIMING = 0x88
|
||||||
|
|
||||||
|
.equ VALUE_ID_SENSOR_CO2_BASE = 0x90
|
||||||
|
.equ VALUE_ID_SENSOR_CO2_SOURCE = 0x90
|
||||||
|
.equ VALUE_ID_SENSOR_CO2_LIMWARN = 0x91
|
||||||
|
.equ VALUE_ID_SENSOR_CO2_LIMCRIT = 0x92
|
||||||
|
|
||||||
|
.equ VALUE_ID_SENSOR_TEMP_BASE = 0x93
|
||||||
|
.equ VALUE_ID_SENSOR_TEMP_SOURCE = 0x93
|
||||||
|
.equ VALUE_ID_SENSOR_TEMP_LIMWARN = 0x94
|
||||||
|
.equ VALUE_ID_SENSOR_TEMP_LIMCRIT = 0x95
|
||||||
|
|
||||||
|
.equ VALUE_ID_SENSOR_HUM_BASE = 0x96
|
||||||
|
.equ VALUE_ID_SENSOR_HUM_SOURCE = 0x96
|
||||||
|
.equ VALUE_ID_SENSOR_HUM_LIMWARN = 0x97
|
||||||
|
.equ VALUE_ID_SENSOR_HUM_LIMCRIT = 0x98
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -301,6 +314,10 @@ test:
|
|||||||
;.include "modules/lcd2/ili9341/font12x20_1.asm"
|
;.include "modules/lcd2/ili9341/font12x20_1.asm"
|
||||||
;.include "common/list_t.asm"
|
;.include "common/list_t.asm"
|
||||||
;.include "common/tree_t.asm"
|
;.include "common/tree_t.asm"
|
||||||
|
|
||||||
|
.include "common/eeprom_tlv.asm"
|
||||||
|
;.include "common/eeprom-r.asm"
|
||||||
|
|
||||||
.include "common/divide.asm"
|
.include "common/divide.asm"
|
||||||
.include "common/itoa.asm"
|
.include "common/itoa.asm"
|
||||||
.include "common/ressource.asm"
|
.include "common/ressource.asm"
|
||||||
|
|||||||
@@ -57,6 +57,16 @@
|
|||||||
.equ SENSORWATCH_SD_SIZE = SENSORWATCH_SD_OFFS_SENSORWATCH+12
|
.equ SENSORWATCH_SD_SIZE = SENSORWATCH_SD_OFFS_SENSORWATCH+12
|
||||||
|
|
||||||
|
|
||||||
|
; EEPROM data for SensorWatch
|
||||||
|
.equ SENSORWATCH_EE_OFFS_NODEADDR = 0
|
||||||
|
.equ SENSORWATCH_EE_OFFS_VALUEID = 1
|
||||||
|
.equ SENSORWATCH_EE_OFFS_UPPER_LIMIT_WARN_LO = 2
|
||||||
|
.equ SENSORWATCH_EE_OFFS_UPPER_LIMIT_WARN_HI = 3
|
||||||
|
.equ SENSORWATCH_EE_OFFS_UPPER_LIMIT_CRIT_LO = 4
|
||||||
|
.equ SENSORWATCH_EE_OFFS_UPPER_LIMIT_CRIT_HI = 5
|
||||||
|
.equ SENSORWATCH_EE_SIZE = 6
|
||||||
|
|
||||||
|
|
||||||
; signals
|
; signals
|
||||||
.equ SENSORWATCH_SIGNAL_SETSOURCE = WIDGET_SIGNAL_NEXTFREE+0
|
.equ SENSORWATCH_SIGNAL_SETSOURCE = WIDGET_SIGNAL_NEXTFREE+0
|
||||||
.equ SENSORWATCH_SIGNAL_SETUPPERLIMWARN = WIDGET_SIGNAL_NEXTFREE+1
|
.equ SENSORWATCH_SIGNAL_SETUPPERLIMWARN = WIDGET_SIGNAL_NEXTFREE+1
|
||||||
@@ -102,6 +112,8 @@ SensorWatch_OnCreate_loop:
|
|||||||
|
|
||||||
bigcall Widget_OnCreate
|
bigcall Widget_OnCreate
|
||||||
|
|
||||||
|
rcall sensorWatchReadFromEeprom ; (R16, R18, X, Y)
|
||||||
|
|
||||||
SensorWatch_OnCreate_ret:
|
SensorWatch_OnCreate_ret:
|
||||||
sec
|
sec
|
||||||
ret
|
ret
|
||||||
@@ -263,8 +275,50 @@ SensorWatch_OnMsgReceived_report:
|
|||||||
|
|
||||||
SensorWatch_OnMsgReceived_set:
|
SensorWatch_OnMsgReceived_set:
|
||||||
bigcall Widget_GetSdramPtr ; (none)
|
bigcall Widget_GetSdramPtr ; (none)
|
||||||
bigcall NETMSG_ValueRead ; R17=valueId, R22=nodeAddr R19:R18=value R21:R20=denom (none)
|
bigcall NETMSG_ValueRead ; R17=valueId, R22=nodeAddr R19:R18=value (none)
|
||||||
; TODO: check valueid, read and set value
|
adiw zh:zl, SENSORWATCH_OFFS_BASEVALUEID
|
||||||
|
lpm r16, Z
|
||||||
|
sbiw zh:zl, SENSORWATCH_OFFS_BASEVALUEID
|
||||||
|
sub r17, r16
|
||||||
|
brcs SensorWatch_OnMsgReceived_ret ; not my value
|
||||||
|
cpi r17, 3
|
||||||
|
brcc SensorWatch_OnMsgReceived_ret ; not my value
|
||||||
|
cpi r17, 0
|
||||||
|
breq SensorWatch_OnMsgReceived_setSource
|
||||||
|
cpi r17, 1
|
||||||
|
breq SensorWatch_OnMsgReceived_setLimWarn
|
||||||
|
cpi r17, 2
|
||||||
|
breq SensorWatch_OnMsgReceived_setLimCrit
|
||||||
|
rjmp SensorWatch_OnMsgReceived_ret
|
||||||
|
SensorWatch_OnMsgReceived_setSource:
|
||||||
|
std Y+SENSORWATCH_SD_OFFS_NODEADDR, r18
|
||||||
|
std Y+SENSORWATCH_SD_OFFS_VALUEID, r19
|
||||||
|
rjmp SensorWatch_OnMsgReceived_sendACK
|
||||||
|
SensorWatch_OnMsgReceived_setLimWarn:
|
||||||
|
std Y+SENSORWATCH_SD_OFFS_LOWER_LIMIT_WARN_LO, r18
|
||||||
|
std Y+SENSORWATCH_SD_OFFS_LOWER_LIMIT_WARN_HI, r19
|
||||||
|
std Y+SENSORWATCH_SD_OFFS_UPPER_LIMIT_WARN_LO, r20
|
||||||
|
std Y+SENSORWATCH_SD_OFFS_UPPER_LIMIT_WARN_HI, r21
|
||||||
|
rjmp SensorWatch_OnMsgReceived_sendACK
|
||||||
|
SensorWatch_OnMsgReceived_setLimCrit:
|
||||||
|
std Y+SENSORWATCH_SD_OFFS_LOWER_LIMIT_CRIT_LO, r18
|
||||||
|
std Y+SENSORWATCH_SD_OFFS_LOWER_LIMIT_CRIT_HI, r19
|
||||||
|
std Y+SENSORWATCH_SD_OFFS_UPPER_LIMIT_CRIT_LO, r20
|
||||||
|
std Y+SENSORWATCH_SD_OFFS_UPPER_LIMIT_CRIT_HI, r21
|
||||||
|
SensorWatch_OnMsgReceived_sendACK:
|
||||||
|
add r17, r16 ; restore valueId
|
||||||
|
push xl
|
||||||
|
push xh
|
||||||
|
push yl
|
||||||
|
push yh
|
||||||
|
ldi r23, NETMSG_CMD_VALUE_SET_ACK
|
||||||
|
bigcall Main_SendValueResponse ; (clobbers all except Z)
|
||||||
|
pop yh
|
||||||
|
pop yl
|
||||||
|
rcall sensorWatchSetColor ; (any, !Y, !Z)
|
||||||
|
rcall sensorWatchWriteToEeprom ; (R16, R17, R18, R20, R21, X, Y)
|
||||||
|
pop xh
|
||||||
|
pop xl
|
||||||
SensorWatch_OnMsgReceived_ret:
|
SensorWatch_OnMsgReceived_ret:
|
||||||
sec
|
sec
|
||||||
ret
|
ret
|
||||||
@@ -339,52 +393,56 @@ SensorWatch_GetValueLabel_ret:
|
|||||||
; @clobbers any, !Y, !Z
|
; @clobbers any, !Y, !Z
|
||||||
|
|
||||||
sensorWatchSetColor:
|
sensorWatchSetColor:
|
||||||
; default color is green
|
push yl
|
||||||
ldi xl, LOW(DISPLAY_COLOR_DARKGREEN)
|
push yh
|
||||||
ldi xh, HIGH(DISPLAY_COLOR_DARKGREEN)
|
; default color is green
|
||||||
ldd r20, Y+SENSORWATCH_SD_OFFS_VALUE_LO
|
ldi xl, LOW(DISPLAY_COLOR_DARKGREEN)
|
||||||
ldd r21, Y+SENSORWATCH_SD_OFFS_VALUE_HI
|
ldi xh, HIGH(DISPLAY_COLOR_DARKGREEN)
|
||||||
mov r16, r20
|
ldd r20, Y+SENSORWATCH_SD_OFFS_VALUE_LO
|
||||||
or r16, r21
|
ldd r21, Y+SENSORWATCH_SD_OFFS_VALUE_HI
|
||||||
breq sensorWatchSetColor_ret ; do nothing
|
mov r16, r20
|
||||||
|
or r16, r21
|
||||||
; check against critical limits
|
breq sensorWatchSetColor_ret ; do nothing
|
||||||
adiw yh:yl, SENSORWATCH_SD_OFFS_UPPER_LIMIT_CRIT_LO
|
|
||||||
rcall sensorWatchCheckAgainstLimit ; (r16, r17, r22, r23)
|
; check against critical limits
|
||||||
sbiw yh:yl, SENSORWATCH_SD_OFFS_UPPER_LIMIT_CRIT_LO
|
adiw yh:yl, SENSORWATCH_SD_OFFS_UPPER_LIMIT_CRIT_LO
|
||||||
brcs sensorWatchSetColor_setRed
|
rcall sensorWatchCheckAgainstLimit ; (r16, r17, r22, r23)
|
||||||
|
brcs sensorWatchSetColor_setRed
|
||||||
; check against warning limits
|
sbiw yh:yl, SENSORWATCH_SD_OFFS_UPPER_LIMIT_CRIT_LO
|
||||||
adiw yh:yl, SENSORWATCH_SD_OFFS_UPPER_LIMIT_WARN_LO
|
|
||||||
rcall sensorWatchCheckAgainstLimit ; (r16, r17, r22, r23)
|
; check against warning limits
|
||||||
sbiw yh:yl, SENSORWATCH_SD_OFFS_UPPER_LIMIT_WARN_LO
|
adiw yh:yl, SENSORWATCH_SD_OFFS_UPPER_LIMIT_WARN_LO
|
||||||
brcs sensorWatchSetColor_setYellow
|
rcall sensorWatchCheckAgainstLimit ; (r16, r17, r22, r23)
|
||||||
|
brcs sensorWatchSetColor_setYellow
|
||||||
; set green background
|
sbiw yh:yl, SENSORWATCH_SD_OFFS_UPPER_LIMIT_WARN_LO
|
||||||
rjmp sensorWatchSetColor_setColor
|
|
||||||
|
; set green background
|
||||||
|
rjmp sensorWatchSetColor_setColor
|
||||||
|
|
||||||
sensorWatchSetColor_setRed:
|
sensorWatchSetColor_setRed:
|
||||||
ldi xl, LOW(DISPLAY_COLOR_RED)
|
ldi xl, LOW(DISPLAY_COLOR_RED)
|
||||||
ldi xh, HIGH(DISPLAY_COLOR_RED)
|
ldi xh, HIGH(DISPLAY_COLOR_RED)
|
||||||
rjmp sensorWatchSetColor_setColor
|
rjmp sensorWatchSetColor_setColor
|
||||||
|
|
||||||
sensorWatchSetColor_setYellow:
|
sensorWatchSetColor_setYellow:
|
||||||
ldi xl, LOW(DISPLAY_COLOR_YELLOW)
|
ldi xl, LOW(DISPLAY_COLOR_YELLOW)
|
||||||
ldi xh, HIGH(DISPLAY_COLOR_YELLOW)
|
ldi xh, HIGH(DISPLAY_COLOR_YELLOW)
|
||||||
|
|
||||||
sensorWatchSetColor_setColor:
|
sensorWatchSetColor_setColor:
|
||||||
rcall SensorWatch_GetImageView ; (none)
|
rcall SensorWatch_GetImageView ; (none)
|
||||||
brcc sensorWatchSetColor_ret
|
brcc sensorWatchSetColor_ret
|
||||||
push zl
|
push zl
|
||||||
push zh
|
push zh
|
||||||
mov zl, r18
|
mov zl, r18
|
||||||
mov zh, r19
|
mov zh, r19
|
||||||
ldi r16, IMGVIEW_SIGNAL_SETBGCOL
|
ldi r16, IMGVIEW_SIGNAL_SETBGCOL
|
||||||
clr r17
|
clr r17
|
||||||
bigcall OBJ_HandleSignal ; (any, !X, !Y, !Z)
|
bigcall OBJ_HandleSignal ; (any, !X, !Y, !Z)
|
||||||
pop zh
|
pop zh
|
||||||
pop zl
|
pop zl
|
||||||
sensorWatchSetColor_ret:
|
sensorWatchSetColor_ret:
|
||||||
|
pop yh
|
||||||
|
pop yl
|
||||||
ret
|
ret
|
||||||
; @end
|
; @end
|
||||||
|
|
||||||
@@ -447,6 +505,7 @@ sensorWatchSetValueLabel:
|
|||||||
mov zh, r19
|
mov zh, r19
|
||||||
ldd xl, Y+SENSORWATCH_SD_OFFS_VALUE_LO
|
ldd xl, Y+SENSORWATCH_SD_OFFS_VALUE_LO
|
||||||
ldd xh, Y+SENSORWATCH_SD_OFFS_VALUE_HI
|
ldd xh, Y+SENSORWATCH_SD_OFFS_VALUE_HI
|
||||||
|
|
||||||
ldi r16, VLABEL_SIGNAL_SETVALUE
|
ldi r16, VLABEL_SIGNAL_SETVALUE
|
||||||
clr r17
|
clr r17
|
||||||
bigcall OBJ_HandleSignal ; (any, !X, !Y, !Z)
|
bigcall OBJ_HandleSignal ; (any, !X, !Y, !Z)
|
||||||
@@ -458,6 +517,78 @@ sensorWatchSetValueLabel_ret:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine sensorWatchWriteToEeprom
|
||||||
|
;
|
||||||
|
; @param Z byte address of widget object (for LPM!)
|
||||||
|
; @return CFLAG set if data found and read, cleared on error
|
||||||
|
; @clobbers R16, R17, R18, R20, R21, X, Y
|
||||||
|
|
||||||
|
sensorWatchWriteToEeprom:
|
||||||
|
adiw zh:zl, SENSORWATCH_OFFS_EEPROMID
|
||||||
|
lpm r16, Z
|
||||||
|
sbiw zh:zl, SENSORWATCH_OFFS_EEPROMID
|
||||||
|
tst r16
|
||||||
|
clc
|
||||||
|
breq sensorWatchWriteToEeprom_ret
|
||||||
|
ldi xl, LOW(EEPROM_OFFS_TLV)
|
||||||
|
ldi xh, HIGH(EEPROM_OFFS_TLV)
|
||||||
|
bigcall EepromTlv_FindFirst ; (R18)
|
||||||
|
brcs sensorWatchWriteToEeprom_write
|
||||||
|
ldi r17, SENSORWATCH_EE_SIZE
|
||||||
|
ldi xl, LOW(EEPROM_OFFS_TLV)
|
||||||
|
ldi xh, HIGH(EEPROM_OFFS_TLV)
|
||||||
|
bigcall EepromTlv_AddTlv ; X=pointer to EEPROM data (R16, R18, R20, R21)
|
||||||
|
brcc sensorWatchWriteToEeprom_ret
|
||||||
|
sensorWatchWriteToEeprom_write:
|
||||||
|
bigcall Widget_GetSdramPtr ; (none)
|
||||||
|
adiw yh:yl, SENSORWATCH_SD_OFFS_NODEADDR
|
||||||
|
ldi r18, SENSORWATCH_EE_SIZE
|
||||||
|
sensorWatchWriteToEeprom_loop:
|
||||||
|
ld r16, Y+
|
||||||
|
bigcall Eeprom_WriteByteIfChanged ; (R17)
|
||||||
|
brcc sensorWatchWriteToEeprom_ret
|
||||||
|
adiw xh:xl, 1
|
||||||
|
dec r18
|
||||||
|
brne sensorWatchWriteToEeprom_loop
|
||||||
|
sec
|
||||||
|
sensorWatchWriteToEeprom_ret:
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine sensorWatchReadFromEeprom
|
||||||
|
;
|
||||||
|
; @param Z byte address of widget object (for LPM!)
|
||||||
|
; @return CFLAG set if data found and read, cleared on error
|
||||||
|
; @clobbers R16, R18, X, Y
|
||||||
|
|
||||||
|
sensorWatchReadFromEeprom:
|
||||||
|
adiw zh:zl, SENSORWATCH_OFFS_EEPROMID
|
||||||
|
lpm r16, Z
|
||||||
|
sbiw zh:zl, SENSORWATCH_OFFS_EEPROMID
|
||||||
|
ldi xl, LOW(EEPROM_OFFS_TLV)
|
||||||
|
ldi xh, HIGH(EEPROM_OFFS_TLV)
|
||||||
|
bigcall EepromTlv_FindFirst ; (R18)
|
||||||
|
brcc sensorWatchReadFromEeprom_ret
|
||||||
|
bigcall Widget_GetSdramPtr ; (none)
|
||||||
|
adiw yh:yl, SENSORWATCH_SD_OFFS_NODEADDR
|
||||||
|
ldi r18, SENSORWATCH_EE_SIZE
|
||||||
|
sensorWatchReadFromEeprom_loop:
|
||||||
|
bigcall Eeprom_ReadByte ; R16=byte (none)
|
||||||
|
brcc sensorWatchReadFromEeprom_ret
|
||||||
|
st Y+, r16
|
||||||
|
adiw xh:xl, 1
|
||||||
|
dec r18
|
||||||
|
brne sensorWatchReadFromEeprom_loop
|
||||||
|
sec
|
||||||
|
sensorWatchReadFromEeprom_ret:
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SensorWatch_DefaultSignalmap:
|
SensorWatch_DefaultSignalmap:
|
||||||
|
|||||||
@@ -5,7 +5,19 @@
|
|||||||
<deviceversion>3</deviceversion>
|
<deviceversion>3</deviceversion>
|
||||||
|
|
||||||
<values>
|
<values>
|
||||||
<value name="LEDTIMING" id="0x88" type="actor" dataType="uint16" />
|
<value name="LEDTIMING" id="0x88" type="actor" dataType="uint16" />
|
||||||
|
|
||||||
|
<value name="CO2_SOURCE" id="0x90" type="actor" dataType="uint16" />
|
||||||
|
<value name="CO2_LIMIT_WARN" id="0x91" type="actor" dataType="uint32" />
|
||||||
|
<value name="CO2_LIMIT_CRIT" id="0x92" type="actor" dataType="uint32" />
|
||||||
|
|
||||||
|
<value name="TEMP_SOURCE" id="0x93" type="actor" dataType="uint16" />
|
||||||
|
<value name="TEMP_LIMIT_WARN" id="0x94" type="actor" dataType="uint32" />
|
||||||
|
<value name="TEMP_LIMIT_CRIT" id="0x95" type="actor" dataType="uint32" />
|
||||||
|
|
||||||
|
<value name="HUM_SOURCE" id="0x96" type="actor" dataType="uint16" />
|
||||||
|
<value name="HUM_LIMIT_WARN" id="0x97" type="actor" dataType="uint32" />
|
||||||
|
<value name="HUM_LIMIT_CRIT" id="0x98" type="actor" dataType="uint32" />
|
||||||
|
|
||||||
</values>
|
</values>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user