; ***************************************************************************
; 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.   *
; ***************************************************************************


.cseg


; ---------------------------------------------------------------------------
; @routine AppNetwork_SendTxdStats

; @param Y network interface to work with
; @clobbers R16, X (R17, R18, R19, R20, R21, Z)

AppNetwork_SendTxdStats:
  bigcall NET_Buffer_Alloc                     ; (R16, R17, X)
  brcc AppNetwork_SendTxdStats_end
  push r16
    adiw xh:xl, 1
    bigcall NETMSG_SendStats_Write             ; (R16, R17, R18, R19, R20, R21, Z)
    sbiw xh:xl, 1
  pop r16
  bigcall NET_Interface_AddOrReleaseOutMsg     ; (R16, R17, R18, X)
AppNetwork_SendTxdStats_end:
  ret
; @end



; ---------------------------------------------------------------------------
; @routine AppNetwork_SendRxdStats

; @param Y network interface whose stats to send
; @clobbers R16, X (R17, R18, R19, R20, R21, Z)

AppNetwork_SendRxdStats:
  bigcall NET_Buffer_Alloc                     ; (R16, R17, X)
  brcc AppNetwork_SendRxdStats_end
  push r16
    adiw xh:xl, 1
    bigcall NETMSG_RecvStats_Write             ; (R16, R17, R18, R19, R20, R21, Z)
    sbiw xh:xl, 1
  pop r16
  bigcall NET_Interface_AddOrReleaseOutMsg ; (R16, R17, R18, X)
AppNetwork_SendRxdStats_end:
  ret
; @end



; ---------------------------------------------------------------------------
; @routine AppNetwork_SendMemStats

; @clobbers R16, X (R17, R18, R19, R20, R21, Z)

AppNetwork_SendMemStats:
  bigcall NET_Buffer_Alloc                     ; (R16, R17, X)
  brcc AppNetwork_SendMemStats_end
  push r16
    adiw xh:xl, 1
    bigcall NETMSG_MemStats_Write             ; (R16, R17, R18, R19, R20, R21)
    sbiw xh:xl, 1
  pop r16
  bigcall NET_Interface_AddOrReleaseOutMsg ; (R16, R17, R18, X)
AppNetwork_SendMemStats_end:
  ret
; @end



; ---------------------------------------------------------------------------
; @routine AppNetwork_SendDevice

; @param Y network interface to work with
; @clobbers R16, X (R17, R18, R19, R20, R21, Z)

AppNetwork_SendDevice:
  bigcall NET_Buffer_Alloc                     ; (R16, R17, X)
  brcc AppNetwork_SendDevice_end
  push r16
    adiw xh:xl, 1
    bigcall NETMSG_Device_Write                ; (R16, R17, R18, R19, R20, R21, Z)
    sbiw xh:xl, 1
  pop r16
  bigcall NET_Interface_AddOrReleaseOutMsg     ; (R16, R17, R18, X)
AppNetwork_SendDevice_end:
  ret
; @end



