added test firmware for r04.

This commit is contained in:
Martin Preuss
2025-07-03 22:11:27 +02:00
parent bfd0cd77a9
commit 725ff96425
7 changed files with 448 additions and 76 deletions

View File

@@ -47,12 +47,16 @@
; ---------------------------------------------------------------------------
; generic
.equ COMONUART0_IFACENUM = 1
.equ COMONUART1_IFACENUM = 2
; ---------------------------------------------------------------------------
; firmware settings including list of modules used
#define MAIN_WITHOUT_MSG_HANDLING ; we do message handling ourselfes
#define APP_STATS_NETDEV2
#define MODULES_CLOCK
;#define MODULES_COM
@@ -73,12 +77,14 @@
;#define MODULES_TTYONUART1
#define MODULES_COMONUART0
#define MODULES_COMONUART1
#define APPS_STATS
#define APPS_NETWORK
;#define APPS_REPORTSENSORS
.equ NET_BUFFERS_NUM = 12
.equ NET_BUFFERS_NUM = 9
.equ NET_BUFFERS_SIZE = 32
.equ UART_HW_MSGNUMINBUF_SIZE = 8
@@ -89,6 +95,8 @@
; ---------------------------------------------------------------------------
; defines for values
.equ VALUE_ID_DS18B20_TEMP = 0x06
.equ VALUE_ID_LEDSIMPLE_TIMING = 0x88
@@ -159,10 +167,13 @@ firmwareStart:
; @routine onSystemStart
onSystemStart:
clr r16
sts debugCounter, r16
ldi r16, 0xff
sts attnByte, r16
; set interface number for UART0
ldi r16, COMONUART0_IFACENUM
sts comOnUart0_iface+NET_IFACE_OFFS_IFACENUM, r16
; set interface number for UART1
ldi r16, COMONUART1_IFACENUM
sts comOnUart1_iface+NET_IFACE_OFFS_IFACENUM, r16
ret
; @end
@@ -182,7 +193,8 @@ onEveryDay:
onEveryMinute:
rcall sendPacketsIface2In
rcall sendErrorsIface2
; rcall sendErrorsIface2
rcall sendDeviceUart1
ret
; @end
@@ -223,16 +235,13 @@ onAttnChangeIsr:
push r15
in r15, SREG
push r16
in r16, COM_ATTN_INPUT
push r17
lds r17, attnByte
sts attnByte, r16
eor r17, r16
sbrc r17, COM_ATTN1_PIN
rcall onAttnChangeAttn1
sbrc r17, COM_ATTN_PIN
rcall onAttnChangeAttn0
pop r17
inr r16, COM_ATTN1_INPUT
sbrs r16, COM_ATTN1_PIN
rcall ComOnUart1_HandleAttnChange ; (none)
inr r16, COM_ATTN0_INPUT
sbrs r16, COM_ATTN0_PIN
rcall ComOnUart0_HandleAttnChange ; (none)
pop r16
out SREG, r15
pop r15
@@ -241,18 +250,6 @@ onAttnChangeIsr:
onAttnChangeAttn0:
sbrs r16, COM_ATTN_PIN
rcall ComOnUart0_HandleAttnChange ; (none)
ret
onAttnChangeAttn1:
sbrs r16, COM_ATTN1_PIN
rcall ComOnUart1_HandleAttnChange ; (none)
ret
; ---------------------------------------------------------------------------
; @routine checkRecvdMsg
;
@@ -267,18 +264,16 @@ checkRecvdMsg:
push xl
push xh
adiw xh:xl, 1
rcall onMessageReceived
rcall mainModulesOnPacketReceived
rcall mainAppsOnPacketReceived
rcall letSysHandleMsg
pop xh
pop xl
pop r16
; forward to other interface
ld r17, X
andi r17, (NET_IFACE_BUFFER_IFACENUM1_BIT | NET_IFACE_BUFFER_IFACENUM0_BIT)
rcall reverseInterfaceNum ; (R16, R17)
; ldi r17, COMONUART0_IFACENUM ; DEBUG: send everything to uart0 to test that code first
andi r17, (1<<NET_IFACE_BUFFER_IFACENUM1_BIT) | (1<<NET_IFACE_BUFFER_IFACENUM0_BIT)
rcall reverseInterfaceNum ; (R17)
; ldi r17, COMONUART0_IFACENUM ; DEBUG: send everything to uart1 to test that code first
rcall addMsgToInterface
brcc checkRecvdMsg_end ; could not add, jmp
rcall NET_GetNextIncomingMsgNum ; take off the queue
@@ -289,16 +284,50 @@ checkRecvdMsg_end:
letSysHandleMsg:
ld r16, X
cpi r16, 0xff
breq letSysHandleMsg_forMe
lds r17, comOnUart0_iface+NET_IFACE_OFFS_ADDRESS
cp r16, r17
brne letSysHandleMsg_end
letSysHandleMsg_forMe:
push xl
push xh
rcall onMessageReceived
pop xh
pop xl
push xl
push xh
rcall mainModulesOnPacketReceived
pop xh
pop xl
push xl
push xh
rcall mainAppsOnPacketReceived
pop xh
pop xl
letSysHandleMsg_end:
ret
; @end
; ---------------------------------------------------------------------------
; @routine reverseInterfaceNum
;
; @param r17 buffer num
; @return r17 reversed interface number
; @clobbers r16, r17
; @clobbers r17
reverseInterfaceNum:
ldi r16, (NET_IFACE_BUFFER_IFACENUM1_BIT | NET_IFACE_BUFFER_IFACENUM0_BIT)
eor r17, r16
andi r17, (1<<NET_IFACE_BUFFER_IFACENUM1_BIT) | (1<<NET_IFACE_BUFFER_IFACENUM0_BIT)
cpi r17, COMONUART0_IFACENUM
brne reverseInterfaceNum_notuart0
ldi r17, COMONUART1_IFACENUM
ret
reverseInterfaceNum_notuart0:
ldi r17, COMONUART0_IFACENUM
ret
; @end
@@ -311,17 +340,19 @@ reverseInterfaceNum:
addMsgToInterface:
cpi r17, COMONUART0_IFACENUM
brne addMsgToInterface_notUart0
breq addMsgToInterface_toUart0
cpi r17, COMONUART1_IFACENUM
breq addMsgToInterface_toUart1
clc
ret
addMsgToInterface_toUart0:
ldi yl, LOW(comOnUart0_iface)
ldi yh, HIGH(comOnUart0_iface)
rjmp NET_Interface_AddOutgoingMsgNum ; try to add msg to interface
addMsgToInterface_notUart0:
addMsgToInterface_toUart1:
ldi yl, LOW(comOnUart1_iface)
ldi yh, HIGH(comOnUart1_iface)
rjmp NET_Interface_AddOutgoingMsgNum ; try to add msg to interface
addMsgToInterface_end:
clc
ret
; @end
@@ -329,22 +360,43 @@ addMsgToInterface_end:
sendPacketsIface2In:
ldi yl, LOW(netInterfaceData)
ldi yh, HIGH(netInterfaceData)
ldi r17, AQHOME_VALUEID_STATS_PACKETS2_IN
lds r18, comOnUart1_iface+NET_IFACE_OFFS_PACKETSIN_LOW
lds r19, comOnUart1_iface+NET_IFACE_OFFS_PACKETSIN_HIGH
rjmp appStatsSend16BitValue
sendErrorsIface2:
ldi yl, LOW(netInterfaceData)
ldi yh, HIGH(netInterfaceData)
ldi r17, 0xf0
lds r18, comOnUart1_iface+NET_IFACE_OFFS_ERR_MISSED_LOW
lds r19, comOnUart1_iface+NET_IFACE_OFFS_ERR_MISSED_HIGH
; lds r18, debugCounter
; clr r19
rjmp appStatsSend16BitValue
ldi r17, AQHOME_VALUEID_STATS_PACKETS_OUT2
lds r18, comOnUart1_iface+NET_IFACE_OFFS_PACKETSOUT_LOW
lds r19, comOnUart1_iface+NET_IFACE_OFFS_PACKETSOUT_HIGH
rjmp SendValueReport
sendDeviceUart1:
ldi yl, LOW(comOnUart1_iface)
ldi yh, HIGH(comOnUart1_iface)
rjmp AppNetwork_SendDevice
; ---------------------------------------------------------------------------
; @routine SendValueReport
;
; @param R17 value id
; @param R19:R18 value
; @param R22 value type
SendValueReport:
push r17
rcall NET_Buffer_Alloc ; (R16, R17, X)
pop r17
brcc SendValueReport_end ; jmp on error
push r16 ; buffer num
ldi r16, 0xff ; DEST addr
adiw xh:xl, 1
ldi r20, 1
clr r21
rcall NETMSG_ValueWriteReport ; (R16, R17, R18, R19, R20, R21, R23, R24, R25)
sbiw xh:xl, 1
pop r16 ; buffer num
rcall NET_Interface_AddOrReleaseOutMsg ; (R16, R17, R18, X)
SendValueReport_end:
ret
; @end
@@ -362,9 +414,6 @@ sendErrorsIface2:
; defines for network interface
.equ netInterfaceData = comOnUart0_iface
.equ netInterfaceData2 = comOnUart1_iface
.dseg
attnByte: .byte 1
debugCounter: .byte 1