From 92bcd366cb702686bbdebcfd2035148455f18227 Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Wed, 14 May 2025 01:50:59 +0200 Subject: [PATCH] add functions to remotely set LED timing. --- avr/modules/led_simple/main.asm | 39 ++++++++++++++++++---------- avr/modules/led_simple/recv.asm | 46 +++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 14 deletions(-) create mode 100644 avr/modules/led_simple/recv.asm diff --git a/avr/modules/led_simple/main.asm b/avr/modules/led_simple/main.asm index 65ba5a9..3cb5a2d 100644 --- a/avr/modules/led_simple/main.asm +++ b/avr/modules/led_simple/main.asm @@ -78,17 +78,13 @@ LedSimple_Every100ms_setTimer: ; @routine LedSimple_SetDefaultTiming @global ; ; Set default timing for LED. -; @clobbers r16 +; @clobbers R18, R19 ; LedSimple_SetDefaultTiming: - ldi r16, LED_SIMPLE_ONTIME - sts ledSimpleOnTime, r16 - sts ledSimpleTimer, r16 - ldi r16, LED_SIMPLE_OFFTIME - sts ledSimpleOffTime, r16 - cbi LED_SIMPLE_PORT, LED_SIMPLE_PINNUM ; on - ret + ldi r18, LED_SIMPLE_ONTIME + ldi r19, LED_SIMPLE_OFFTIME + rjmp LedSimple_SetTiming ; @end @@ -97,15 +93,30 @@ LedSimple_SetDefaultTiming: ; @routine LedSimple_SetFastTiming @global ; ; Set fast blinking timing for LED. Switch LED on. -; @clobbers r16 +; @clobbers R18, R19 ; LedSimple_SetFastTiming: - ldi r16, 5 - sts ledSimpleOnTime, r16 - sts ledSimpleTimer, r16 - ldi r16, 3 - sts ledSimpleOffTime, r16 + ldi r18, 5 + ldi r19, 3 + rjmp LedSimple_SetTiming +; @end + + + +; --------------------------------------------------------------------------- +; @routine LedSimple_SetTiming @global +; +; Set blinking timing for LED. Switch LED on. +; @param r18 ontime (in 1/10s) +; @param r19 offtime (in 1/10s) +; @clobbers none +; + +LedSimple_SetTiming: + sts ledSimpleOnTime, r18 + sts ledSimpleTimer, r18 + sts ledSimpleOffTime, r19 cbi LED_SIMPLE_PORT, LED_SIMPLE_PINNUM ; on ret ; @end diff --git a/avr/modules/led_simple/recv.asm b/avr/modules/led_simple/recv.asm new file mode 100644 index 0000000..fb23db7 --- /dev/null +++ b/avr/modules/led_simple/recv.asm @@ -0,0 +1,46 @@ +; *************************************************************************** +; 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. * +; *************************************************************************** + + +; --------------------------------------------------------------------------- +; @routine LedSimple_OnPacketReceived @global +; +; @clobbers any, -X + +LedSimple_OnPacketReceived: + adiw xh:xl, NETMSG_OFFS_CMD ; command + ld r16, X + sbiw xh:xl, NETMSG_OFFS_CMD + cpi r16, NETMSG_CMD_VALUE_SET + breq LedSimple_OnPacketReceived_set + clc ; unexpected msg + ret +LedSimple_OnPacketReceived_set: + rcall NETMSG_ValueRead ; (none) + cpi r17, VALUE_ID_LEDSIMPLE_TIMING + breq LedSimple_OnPacketReceived_setTiming + clc + ret +LedSimple_OnPacketReceived_setTiming: + tst r18 + breq LedSimple_OnPacketReceived_setDefaultTiming + rcall LedSimple_SetTiming + rjmp LedSimple_OnPacketReceived_sendAck +LedSimple_OnPacketReceived_setDefaultTiming: + rcall LedSimple_SetDefaultTiming +LedSimple_OnPacketReceived_sendAck: + push xl + push xh + ldi r23, NETMSG_CMD_VALUE_SET_ACK + rcall Main_SendValueResponse + pop xh + pop xl + sec + ret +; @end