; ***************************************************************************
; 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 initModules
;
; Call init functions of the used modules. Add your routine calls here.

initModules:
  bigcall BaseTimer_Init ; unconditionally call this

#ifdef MODULES_HEAP
  bigcall Heap_Init
#endif

#ifdef MODULES_CLOCK
  bigcall Clock_Init
#endif

#ifdef MODULES_TIMER
  bigcall Timer_Init
#endif

#ifdef MODULES_XRAM
  bigcall XRAM_Init
#endif

#ifdef MODULES_LED
  ldi zl, LOW(ledA3Flash)
  ldi zh, HIGH(ledA3Flash)
  ldi yl, LOW(ledA3Sram)
  ldi yh, HIGH(ledA3Sram)
  bigcall Led_Init
#endif

#ifdef MODULES_LED_SIMPLE
  bigcall LedSimple_Init
#endif


#ifdef MODULES_LED_SIGNAL
  bigcall LedSignal_Init
#endif



#ifdef MODULES_LED_ACTIVITY
  bigcall LedActivity_Init
#endif


#ifdef MODULES_COM
  bigcall Com2_Init   ; init COM module
  bigcall CPRO_Init   ; init COM protocol module
#endif

#ifdef MODULES_NETWORK
  bigcall NET_Init
#endif

#ifdef MODULES_UART_BITBANG
  bigcall UART_BitBang_Init
#endif

#ifdef MODULES_UART_HW
  bigcall NET_Uart_Init
#endif

#ifdef MODULES_TTYONUART1
  bigcall TtyOnUart1_Init
#endif

#ifdef MODULES_UARTFD0
  bigcall UARTFD0_Init
#endif

#ifdef MODULES_UARTFD1
  bigcall UARTFD1_Init
#endif

#ifdef MODULES_COMONUART0
  bigcall ComOnUart0_Init
#endif

#ifdef MODULES_COMONUART1
  bigcall ComOnUart1_Init
#endif

#ifdef MODULES_COM2W
  bigcall COM2W_Init
#endif

#ifdef MODULES_COM2W0
  bigcall COM2W0_Init
#endif

#ifdef MODULES_COM2W1
  bigcall COM2W1_Init
#endif

#ifdef MODULES_COM2WN
  bigcall COM2WN_Init
#endif

#ifdef MODULES_COM2WI
  bigcall COM2WI_Init
#endif


#ifdef MODULES_MOTION
  bigcall Motion_Init
#endif

#ifdef MODULES_TWI_MASTER
  bigcall TWI_Master_Init
#endif

#ifdef MODULES_OWI_MASTER
  bigcall OwiMaster_Init
#endif

#ifdef MODULES_SPI_HW
  bigcall SPIHW_Init
#endif

#ifdef MODULES_LCD
  bigcall LCD_Init
#endif
#ifdef MODULES_BMP280
  bigcall BMP280_Init
#endif

#ifdef MODULES_SI7021
  bigcall SI7021_Init
#endif

#ifdef MODULES_SGP30
  bigcall SGP30_Init
#endif

#ifdef MODULES_SGP40
  bigcall SGP40_Init
#endif

#ifdef MODULES_DS18B20
  bigcall Ds18b20_Init
#endif

#ifdef MODULES_STATS
  bigcall Stats_Init
#endif

#ifdef MODULES_CNY70
  bigcall CNY70_Init
#endif

#ifdef MODULES_REED
  bigcall REED_Init
#endif

#ifdef MODULES_SK6812
  bigcall SK6812_Init
#endif

#ifdef MODULES_MOTION_LIGHT
  bigcall MotionLight_Init
#endif

#ifdef MODULES_TCRT1000
  bigcall TCRT1K_Init
#endif

#ifdef MODULES_CCS811
  bigcall CCS811_Init
#endif

#ifdef MODULES_ILI9341
  bigcall ILI9341_Init
#endif

#ifdef MODULES_XPT2046
  bigcall XPT2046_Init
#endif

#ifdef MODULES_GUI
  bigcall GUI_Init
#endif

#ifdef MODULES_BRIGHTNESS
  bigcall Brightness_Init
#endif


  ; done
  ret
; @end



; ---------------------------------------------------------------------------
; runModules
;
; Call run functions of the used modules. Add your routine calls here.
;
; @return CFLAG set: at least one RUN routine returned CFLAG set
; @clobbers all

runModules:
  clr r16
  
  push r16
    bigcall BaseTimer_Run
  pop r16
  sbci r16, 0
  
#ifdef MODULES_TTYONUART1
  push r16
    bigcall TtyOnUart1_Run
  pop r16
#endif


#ifdef MODULES_UARTFD0
  push r16
    bigcall UARTFD0_Run
  pop r16
  sbci r16, 0
#endif

#ifdef MODULES_UARTFD1
  push r16
    bigcall UARTFD1_Run
  pop r16
  sbci r16, 0
#endif

#ifdef MODULES_COMONUART0
  push r16
    bigcall ComOnUart0_Run
  pop r16
  sbci r16, 0
#endif

#ifdef MODULES_COMONUART1
  push r16
    bigcall ComOnUart1_Run
  pop r16
  sbci r16, 0
#endif


#ifdef MODULES_COM2W
  push r16
    bigcall COM2W_Run
  pop r16
  sbci r16, 0
#endif


#ifdef MODULES_COM2W0
  push r16
    bigcall COM2W0_Run
  pop r16
  sbci r16, 0
#endif

#ifdef MODULES_COM2W1
  push r16
    bigcall COM2W1_Run
  pop r16
  sbci r16, 0
#endif

#ifdef MODULES_COM2WN
  push r16
    bigcall COM2WN_Run
  pop r16
  sbci r16, 0
#endif

#ifdef MODULES_COM2WI
  push r16
    bigcall COM2WI_Run
  pop r16
  sbci r16, 0
#endif

  ; add more modules here

  ; check for repeat request
  tst r16
  clc
  breq runModules_end
  sec
runModules_end:
  ret
; @end


mainModulesOnPacketReceived:

#ifdef MODULES_SK6812
    bigcall SK6812_OnPacketReceived
#endif

#ifdef MODULES_LED_SIMPLE
  #ifdef MODULES_NETWORK
    bigcall LedSimple_OnPacketReceived
  #endif  
#endif


; add more here

  ret
; @end



