more work on network interface.
This commit is contained in:
@@ -7,49 +7,56 @@
|
|||||||
; * Please see toplevel file COPYING of that project for license details. *
|
; * Please see toplevel file COPYING of that project for license details. *
|
||||||
; ***************************************************************************
|
; ***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
; defs
|
; defs
|
||||||
.equ NET_MSGNUMINBUF_SIZE = 4 ; max buffer nums in ringbuffer (global incoming)
|
.equ NET_MSGNUMINBUF_SIZE = 4 ; max buffer nums in ringbuffer (global incoming)
|
||||||
|
|
||||||
.equ NET_IFACE_OUTMSGBUF_SIZE = 4 ; max buffer nums in ringbuffer (per interface outbound)
|
.equ NET_IFACE_OUTMSGBUF_SIZE = 4 ; max buffer nums in ringbuffer (per interface outbound)
|
||||||
|
|
||||||
|
|
||||||
.equ NET_IFACE_BUFFER_INUSE_BIT = 7
|
.equ NET_IFACE_BUFFER_INUSE_BIT = 7
|
||||||
.equ NET_IFACE_BUFFER_IFACENUM1_BIT = 1
|
.equ NET_IFACE_BUFFER_IFACENUM1_BIT = 1
|
||||||
.equ NET_IFACE_BUFFER_IFACENUM0_BIT = 0
|
.equ NET_IFACE_BUFFER_IFACENUM0_BIT = 0
|
||||||
|
|
||||||
|
|
||||||
; interface generic data
|
; interface generic data
|
||||||
.equ NET_IFACE_OFFS_IFACENUM = 0 ; interface number (put into received messages)
|
.equ NET_IFACE_OFFS_IFACENUM = 0 ; interface number (put into received messages)
|
||||||
.equ NET_IFACE_OFFS_ADDRESS = 1
|
.equ NET_IFACE_OFFS_ADDRESS = 1
|
||||||
.equ NET_IFACE_OFFS_STATUS = 2
|
.equ NET_IFACE_OFFS_RANGE_BEGIN = 2 ; used for address setup protocol
|
||||||
.equ NET_IFACE_OFFS_READTIMER = 3
|
.equ NET_IFACE_OFFS_RANGE_END = 3 ; used for address setup protocol
|
||||||
.equ NET_IFACE_OFFS_WRITETIMER = 4
|
.equ NET_IFACE_OFFS_STATUS = 4 ; used for address setup protocol
|
||||||
|
.equ NET_IFACE_OFFS_STATETIMER = 5 ; used for address setup protocol
|
||||||
|
.equ NET_IFACE_OFFS_READTIMER = 6
|
||||||
|
.equ NET_IFACE_OFFS_WRITETIMER = 7
|
||||||
|
.equ NET_IFACE_OFFS_LASTMSGID_LOW = 8
|
||||||
|
.equ NET_IFACE_OFFS_LASTMSGID_HIGH = 9
|
||||||
|
|
||||||
; receiption stats
|
; receiption stats
|
||||||
.equ NET_IFACE_OFFS_PACKETSIN_LOW = 8
|
.equ NET_IFACE_OFFS_PACKETSIN_LOW = 10
|
||||||
.equ NET_IFACE_OFFS_PACKETSIN_HIGH = 9
|
.equ NET_IFACE_OFFS_PACKETSIN_HIGH = 11
|
||||||
.equ NET_IFACE_OFFS_ERR_CONTENT_LOW = 10
|
.equ NET_IFACE_OFFS_ERR_CONTENT_LOW = 12
|
||||||
.equ NET_IFACE_OFFS_ERR_CONTENT_HIGH = 11
|
.equ NET_IFACE_OFFS_ERR_CONTENT_HIGH = 13
|
||||||
.equ NET_IFACE_OFFS_ERR_IO_LOW = 12
|
.equ NET_IFACE_OFFS_ERR_IO_LOW = 14
|
||||||
.equ NET_IFACE_OFFS_ERR_IO_HIGH = 13
|
.equ NET_IFACE_OFFS_ERR_IO_HIGH = 15
|
||||||
.equ NET_IFACE_OFFS_ERR_NOBUF_LOW = 14
|
.equ NET_IFACE_OFFS_ERR_NOBUF_LOW = 16
|
||||||
.equ NET_IFACE_OFFS_ERR_NOBUF_HIGH = 15
|
.equ NET_IFACE_OFFS_ERR_NOBUF_HIGH = 17
|
||||||
.equ NET_IFACE_OFFS_HANDLED_LOW = 16
|
.equ NET_IFACE_OFFS_HANDLED_LOW = 18
|
||||||
.equ NET_IFACE_OFFS_HANDLED_HIGH = 17
|
.equ NET_IFACE_OFFS_HANDLED_HIGH = 19
|
||||||
.equ NET_IFACE_OFFS_ERR_MISSED_LOW = 18
|
.equ NET_IFACE_OFFS_ERR_MISSED_LOW = 20
|
||||||
.equ NET_IFACE_OFFS_ERR_MISSED_HIGH = 19
|
.equ NET_IFACE_OFFS_ERR_MISSED_HIGH = 21
|
||||||
|
|
||||||
; send stats
|
; send stats
|
||||||
.equ NET_IFACE_OFFS_PACKETSOUT_LOW = 20
|
.equ NET_IFACE_OFFS_PACKETSOUT_LOW = 22
|
||||||
.equ NET_IFACE_OFFS_PACKETSOUT_HIGH = 21
|
.equ NET_IFACE_OFFS_PACKETSOUT_HIGH = 23
|
||||||
.equ NET_IFACE_OFFS_ERR_COLLISIONS_LOW = 22
|
.equ NET_IFACE_OFFS_ERR_COLLISIONS_LOW = 24
|
||||||
.equ NET_IFACE_OFFS_ERR_COLLISIONS_HIGH = 23
|
.equ NET_IFACE_OFFS_ERR_COLLISIONS_HIGH = 25
|
||||||
.equ NET_IFACE_OFFS_ERR_BUSY_LOW = 24
|
.equ NET_IFACE_OFFS_ERR_BUSY_LOW = 26
|
||||||
.equ NET_IFACE_OFFS_ERR_BUSY_HIGH = 25
|
.equ NET_IFACE_OFFS_ERR_BUSY_HIGH = 27
|
||||||
|
|
||||||
.equ NET_IFACE_OFFS_OUTMSGRINGBUF = 26 ; RINGBUFFERY_SIZE+UART_HW_IFACE_OUTMSGBUF_SIZE
|
.equ NET_IFACE_OFFS_OUTMSGRINGBUF = 28 ; RINGBUFFERY_SIZE+UART_HW_IFACE_OUTMSGBUF_SIZE
|
||||||
|
|
||||||
.equ NET_IFACE_SIZE = NET_IFACE_OFFS_OUTMSGRINGBUF+RINGBUFFERY_SIZE+NET_IFACE_OUTMSGBUF_SIZE
|
.equ NET_IFACE_SIZE = NET_IFACE_OFFS_OUTMSGRINGBUF+RINGBUFFERY_SIZE+NET_IFACE_OUTMSGBUF_SIZE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,6 @@
|
|||||||
; ***************************************************************************
|
; ***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.cseg
|
.cseg
|
||||||
|
|
||||||
|
|
||||||
@@ -38,6 +37,23 @@ NET_Interface_Init:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine NET_Interface_GetNextMsgId @global
|
||||||
|
;
|
||||||
|
; @param Y pointer to interface data in SRAM
|
||||||
|
; @clobbers none
|
||||||
|
|
||||||
|
NET_Interface_GetNextMsgId:
|
||||||
|
ldd r24, Y+NET_IFACE_OFFS_LASTMSGID_LOW
|
||||||
|
ldd r25, Y+NET_IFACE_OFFS_LASTMSGID_HIGH
|
||||||
|
adiw r25:r24, 1
|
||||||
|
std Y+NET_IFACE_OFFS_LASTMSGID_LOW, r24
|
||||||
|
std Y+NET_IFACE_OFFS_LASTMSGID_HIGH, r25
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; ---------------------------------------------------------------------------
|
; ---------------------------------------------------------------------------
|
||||||
; @routine NET_Interface_AddOutgoingMsgNum @global
|
; @routine NET_Interface_AddOutgoingMsgNum @global
|
||||||
;
|
;
|
||||||
@@ -182,3 +198,26 @@ NET_Interface_SetIfaceNumInBuffer:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine NET_Interface_Periodically @global
|
||||||
|
;
|
||||||
|
; @param Y pointer to start of interface data
|
||||||
|
; @clobbers R16
|
||||||
|
|
||||||
|
NET_Interface_Periodically:
|
||||||
|
ldd r16, Y+NET_IFACE_OFFS_READTIMER
|
||||||
|
inc r16
|
||||||
|
breq NET_Interface_Periodically_l1
|
||||||
|
std Y+NET_IFACE_OFFS_READTIMER, r16
|
||||||
|
NET_Interface_Periodically_l1:
|
||||||
|
ldd r16, Y+NET_IFACE_OFFS_WRITETIMER
|
||||||
|
inc r16
|
||||||
|
breq NET_Interface_Periodically_l2
|
||||||
|
std Y+NET_IFACE_OFFS_WRITETIMER, r16
|
||||||
|
NET_Interface_Periodically_l2:
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user