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


; ***************************************************************************
; code


.cseg



; ---------------------------------------------------------------------------
; @routine initApps
;
; Call init functions of the used apps. Add your routine calls here.

initApps:

#ifdef APPS_NETWORK
  ldi yl, LOW(netInterfaceData)
  ldi yh, HIGH(netInterfaceData)
  bigcall AppNetwork_Init
#endif

#ifdef APPS_ROUTER
  bigcall AppRouter_Init
#endif

#ifdef APPS_HUB
  bigcall AppHub_Init
#endif

#ifdef APPS_FORWARDER
  bigcall AppForwarder_Init
#endif

#ifdef APPS_MOTION
  bigcall AppMotion_Init
#endif

#ifdef APPS_DOOR
  bigcall AppDoor_Init
#endif

#ifdef APPS_REPORTSENSORS
  bigcall AppReportSensors_Init
#endif

#ifdef APPS_STATS
  bigcall AppStats_Init
#endif

#ifdef APPS_MA_LIGHT
  bigcall AppMotionLight_Init
#endif

  ; done
  ret
; @end



; ---------------------------------------------------------------------------
; @routine runApps
;
; Call run functions of the used modules. Add your routine calls here.
;

runApps:
  clr r16
#ifdef APPS_ROUTER
  push r16
    bigcall AppRouter_Run
  pop r16
  sbci r16, 0              ; decrease r16 only if CFLAG set
#endif

#ifdef APPS_HUB
  push r16
    bigcall AppHub_Run
  pop r16
  sbci r16, 0              ; decrease r16 only if CFLAG set
#endif

#ifdef APPS_FORWARDER
  push r16
    bigcall AppForwarder_Run
  pop r16
  sbci r16, 0              ; decrease r16 only if CFLAG set
#endif

  ; add more modules here

  tst r16
  clc
  breq runApps_end
  sec
runApps_end:
  ret
; @end



; ---------------------------------------------------------------------------
; @routine mainAppsOnPacketReceived
;
; Let all apps handle received message.

mainAppsOnPacketReceived:
#ifdef APPS_NETWORK
    ; handle messages
    ldi yl, LOW(netInterfaceData)
    ldi yh, HIGH(netInterfaceData)
    bigcall AppNetwork_HandleMsg
#endif

#ifdef APPS_MA_LIGHT
    bigcall AppMotionLight_OnPacketReceived
#endif

; add more here

  ret
; @end





