/*
 *  キッチン・タイマのコンフィグレーション・ファイル
 */
INCLUDE("target_timer.cfg");
INCLUDE("syssvc/syslog.cfg");
INCLUDE("syssvc/banner.cfg");
INCLUDE("syssvc/serial.cfg");
INCLUDE("syssvc/logtask.cfg");
INCLUDE("target_ipi.cfg");
INCLUDE("pdic/rp2350/device.cfg");
INCLUDE("gdic/daytime/dtime.cfg");
INCLUDE("monitor/monitor.cfg");

#include "adc.h"
#include "cup_timer.h"
#include "device.h"
#include "i2c.h"
#include "pwm.h"

ATT_INI({TA_NULL, 0, device_info_init});
ATT_INI({TA_NULL, I2C_PORTID, shield_init});

CLASS(TCL_1) {
  CRE_TSK(MAIN_TASK, {TA_ACT, 0, main_task, MAIN_PRIORITY, STACK_SIZE, NULL});
  CRE_SEM(BTTRNS_SEM, {TA_NULL, 0, 1});
  CRE_SEM(CYW43LOCK_SEM, {TA_NULL, 1, 1});
  CRE_SEM(CYW43TRNS_SEM, {TA_NULL, 0, 1});
  CRE_SEM(STDIO_SEM, {TA_NULL, 0, 1});
}

CLASS(TCL_2) {
  CRE_TSK(CUP_TIMER_TASK,
          {TA_NULL, 0, cup_timer_task, SUB_PRIORITY, STACK_SIZE, NULL});
  CRE_CYC(CYCHDR1, {TA_NULL, 0, cyclic_handler, TIMER_GRANULE, 0});
  CRE_SEM(TIMER_SEM, {TA_NULL, 0, 1});
  CRE_SEM(I2CTRS_SEM, {TA_NULL, 0, 1});
  CRE_SEM(I2CLOC_SEM, {TA_NULL, 1, 1});
  CRE_SEM(ADCINT_SEM, {TA_NULL, 0, 1});
}
CLASS(TCL_2_ONLY) {
  ATT_ISR({TA_NULL, I2C_PORTID, INTNO_I2C, i2c_isr, 1});
  CFG_INT(INTNO_I2C, {TA_ENAINT | INTATR_I2C, INTPRI_I2C});
  DEF_INH(INHNO_ADC, {TA_NULL, adc_int_handler});
  CFG_INT(INTNO_ADC, {TA_ENAINT | INTATR_ADC, INTPRI_ADC});
}
