From b94105bf781fec03b0770729d125a4ddb188318d Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Thu, 5 Sep 2024 18:52:25 +0200 Subject: [PATCH] avr: refactor SEND_VALUE message code. --- avr/modules/cny70/main.asm | 2 +- avr/modules/comproto/defs.asm | 7 +- avr/modules/comproto/msg_value.asm | 102 ++++++++++++++++++++--------- avr/modules/reed/main.asm | 4 +- avr/modules/si7021/main.asm | 2 +- 5 files changed, 80 insertions(+), 37 deletions(-) diff --git a/avr/modules/cny70/main.asm b/avr/modules/cny70/main.asm index 8217f81..787e45a 100644 --- a/avr/modules/cny70/main.asm +++ b/avr/modules/cny70/main.asm @@ -174,7 +174,7 @@ CNY70_SendAdc_haveValue: clr r21 ldi xl, LOW(com2SendBuffer) ldi xh, HIGH(com2SendBuffer) - rcall CPRO_WriteValue + rcall CPRO_WriteReportValue rjmp COM2_SendPacket diff --git a/avr/modules/comproto/defs.asm b/avr/modules/comproto/defs.asm index 0d0772b..b8b4a38 100644 --- a/avr/modules/comproto/defs.asm +++ b/avr/modules/comproto/defs.asm @@ -22,7 +22,6 @@ .equ CPRO_CMD_COMRECVSTATS = 21 .equ CPRO_CMD_TWIBUSMEMBER = 30 .equ CPRO_CMD_DEBUG = 40 -.equ CPRO_CMD_VALUE = 51 ; was 50 when sending timestamp instead of uid .equ CPRO_CMD_NEED_ADDRESS = 60 .equ CPRO_CMD_HAVE_ADDRESS = 61 .equ CPRO_CMD_CLAIM_ADDRESS = 62 @@ -42,6 +41,12 @@ .equ CPRO_CMD_REBOOT_REQUEST = 90 .equ CPRO_CMD_REBOOT_RESPONSE = 91 +.equ CPRO_CMD_VALUE_REPORT = 100 +.equ CPRO_CMD_VALUE_SET = 101 +.equ CPRO_CMD_VALUE_SET_ACK = 102 +.equ CPRO_CMD_VALUE_SET_NACK = 103 + + .equ CPRO_CMD_CONFIG_MODULE_REQUEST = 100 .equ CPRO_CMD_CONFIG_MODULE_RESPONSE = 101 diff --git a/avr/modules/comproto/msg_value.asm b/avr/modules/comproto/msg_value.asm index 2866a15..cd519de 100644 --- a/avr/modules/comproto/msg_value.asm +++ b/avr/modules/comproto/msg_value.asm @@ -17,42 +17,80 @@ ; --------------------------------------------------------------------------- -; Write a VALUE packet. +; @routine CPRO_WriteReportValue +; Write a REPORT_VALUE packet. ; -; IN: -; - R16: destination address -; - R17: value id -; - R19:R18: value -; - R21:R20: denom (e.g. 100, meaning value must be divided by 100) -; - R22: value type -; - X : buffer to write to -; OUT: -; - CFLAG: set if okay, clear otherwise -; MODIFIED REGS: R6, R7, R8, R9, R10, R11, R12, R16, R17, X, Y (R3, R4, R15, R16, R17, R18, R19, R20, R21) +; @return nothing +; @param R16 destination address +; @param R17 value id +; @param R19:R18 value +; @param R21:R20 denom (e.g. 100, meaning value must be divided by 100) +; @param R22 value type +; @param X buffer to write to +; @clobbers R6, R7, R8, R9, R10, R11, R12, R16, R17, X, Y (R3, R4, R15, R16, R17, R18, R19, R20, R21) -CPRO_WriteValue: - mov r7, r17 - mov r8, r18 - mov r9, r19 - mov r10, r20 - mov r11, r21 - mov r12, r22 - - ldi r17, COM2_PAYLOAD_FLAGS_UID | (6<