Files
aqhomecontrol/avr/apps/reportsensors/main.asm
2026-08-07 00:42:45 +02:00

214 lines
4.5 KiB
NASM

; ***************************************************************************
; copyright : (C) 2025 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. *
; ***************************************************************************
; ***************************************************************************
; defines
.equ APP_REPORT_SENSORS_INTERVAL_SECS = 120
; ***************************************************************************
; code
.cseg
; ---------------------------------------------------------------------------
; @routine AppReportSensors_Init @global
;
; @clobbers r16
AppReportSensors_Init:
clr r16
sts reportSensorTimer, r16
sec
ret
; @end
; ---------------------------------------------------------------------------
; @routine AppReportSensors_Fini @global
;
AppReportSensors_Fini:
; nothing to do
ret
; @end
; ---------------------------------------------------------------------------
; @routine AppReportSensors_OnEverySecond @global
;
AppReportSensors_OnEverySecond:
push r15
in r15, SREG
cli
rcall AppReportSensors_OnEverySecond_noIrqs
out SREG, r15
pop r15
ret
AppReportSensors_OnEverySecond_noIrqs:
lds r16, reportSensorTimer
inc r16
cpi r16, APP_REPORT_SENSORS_INTERVAL_SECS
brcs AppReportSensors_OnEverySecond_store
clr r16
AppReportSensors_OnEverySecond_store:
sts reportSensorTimer, r16
rcall appReportSensorsWalkTable
ret
; @end
; ---------------------------------------------------------------------------
; @routine appReportSensorsWalkTable
;
; @clobbers r16, r18, r19, r22, Z, (any)
appReportSensorsWalkTable:
ldi zl, LOW(appReportSensorsTable*2)
ldi zh, HIGH(appReportSensorsTable*2)
lds r16, reportSensorTimer
bigcall WalkTable
ret
; @end
#ifdef MODULES_SI7021
appReportSensorsSi7021MeasureValue1:
rjmp SI7021_MeasureTemp
appReportSensorsSi7021MeasureValue2:
rjmp SI7021_MeasureHumidity
appReportSensorsSi7021SendValue1:
rjmp SI7021_SendTemperature
appReportSensorsSi7021SendValue2:
rjmp SI7021_SendHumidity
#endif
#ifdef MODULES_DS18B20
appReportSensorsDs18b20SendValue:
rjmp Ds18b20_SendTemperature
#endif
#ifdef MODULES_MULTIFAN
appReportSensorsMultiFanSendValue1:
bigjmp MultiFan_ReportSpeed1
appReportSensorsMultiFanSendValue2:
bigjmp MultiFan_ReportSpeed2
appReportSensorsMultiFanSendValue3:
bigjmp MultiFan_ReportSpeed3
#endif
#ifdef MODULES_SGP40
appReportSensorsSgp40MeasureValue:
rjmp SGP40_MeasureRawSignal
appReportSensorsSgp40SendValue:
rjmp SGP40_SendTVOC
#endif
#ifdef MODULES_SGP30
appReportSensorsSgp30SendValue1:
rjmp SGP30_SendTVOC
appReportSensorsSgp30SendValue2:
rjmp SGP30_SendCO2
#endif
#ifdef MODULES_CCS811
appReportSensorsCcs811SendValue1:
rjmp CCS811_SendTVOC
appReportSensorsCcs811SendValue2:
rjmp CCS811_SendCO2
#endif
#ifdef MODULES_BRIGHTNESS
appReportSensorsBrightnessSendValue:
rjmp Brightness_Send
#endif
#ifdef APPS_DOOR
appReportSensorsDoorSendValue:
rjmp appDoorSendValue
#endif
#ifdef APPS_MOTION
appReportSensorsMotionSendValue:
rjmp appMotionSendValue
#endif
; ---------------------------------------------------------------------------
; table
; time routine (word address)
appReportSensorsTable:
#ifdef MODULES_SI7021
.dw 1, appReportSensorsSi7021MeasureValue1
.dw 11, appReportSensorsSi7021MeasureValue2
.dw 16, appReportSensorsSi7021SendValue1
.dw 21, appReportSensorsSi7021SendValue2
#endif
#ifdef MODULES_MULTIFAN
.dw 32, appReportSensorsMultiFanSendValue1
.dw 33, appReportSensorsMultiFanSendValue2
.dw 34, appReportSensorsMultiFanSendValue3
#endif
#ifdef MODULES_SGP40
.dw 53, appReportSensorsSgp40MeasureValue
.dw 63, appReportSensorsSgp40SendValue
#endif
#ifdef MODULES_SGP30
.dw 53, appReportSensorsSgp30SendValue1
.dw 63, appReportSensorsSgp30SendValue2
#endif
#ifdef MODULES_DS18B20
.dw 84, appReportSensorsDs18b20SendValue
#endif
#ifdef MODULES_CCS811
.dw 94, appReportSensorsCcs811SendValue1
.dw 104, appReportSensorsCcs811SendValue2
#endif
#ifdef MODULES_BRIGHTNESS
.dw 97, appReportSensorsBrightnessSendValue
#endif
#ifdef APPS_DOOR
.dw 100, appReportSensorsDoorSendValue
#endif
#ifdef APPS_MOTION
.dw 108, appReportSensorsMotionSendValue
#endif
; end of table
.dw 0, 0