package genconfig

configuration conf {

    include embox.arch.system(core_freq=144000000)
    include embox.arch.arm.cortexm3.bundle
    include embox.arch.arm.armmlib.cpu_idle
    include embox.arch.arm.libarch
    include embox.arch.arm.vfork
    include embox.arch.arm.cxxabi

    @Runlevel(0) include embox.arch.arm.fpu.cortex_m4_fp
    @Runlevel(0) include embox.arch.arm.fpu.fpv5(log_level="LOG_INFO")

    include platform.stm32.platform_init
    include platform.stm32.platform_shutdown
    include platform.stm32.f4.stm32f4_discovery.bsp(errata_spi_wrong_last_bit=true)

    @Runlevel(1) include embox.driver.interrupt.cortexm_nvic
    @Runlevel(1) include embox.driver.clock.cortexm_systick
    include embox.kernel.time.jiffies(cs_name="cortexm_systick")

    @Runlevel(1) include embox.driver.serial.stm_usart_f4
    @Runlevel(1) include embox.driver.serial.stm_diag(baud_rate=115200, usartx=6)
    @Runlevel(1) include embox.driver.diag(impl="embox__driver__serial__stm_diag")
    @Runlevel(1) include embox.driver.serial.stm_ttyS0(baud_rate=115200, usartx=6)

    include embox.driver.gpio.stm32cube_gpio
    include embox.driver.i2c.stm32cube_i2c
    include embox.driver.i2c.stm32cube_i2c1
    
    @Runlevel(2) include embox.driver.net.stm32f4cube_eth
    @Runlevel(2) include embox.driver.net.loopback
    include embox.net.skbuff(amount_skb=10)
    include embox.net.skbuff_data(amount_skb_data=10)
    include embox.net.sock_noxattr
    include embox.net.tcp
    include embox.net.tcp_sock

    include embox.kernel.stack(stack_size=4960, alignment=4)
    include embox.kernel.task.multi
    include embox.kernel.task.resource.idesc_table(idesc_table_size=16)
    include embox.kernel.task.resource.sig_table(sig_table_size=20)
    include embox.kernel.task.resource.env(env_per_task=4, env_str_len=64)
    include embox.kernel.thread.thread_local_none
    include embox.kernel.thread.thread_cancel_disable
    include embox.kernel.thread.signal.siginfoq(siginfo_pool_sz=4)
    include embox.kernel.sched.sched
    include embox.kernel.sched.idle_light
    include embox.kernel.lthread.lthread
    include embox.kernel.thread.core(thread_stack_size=4960, thread_pool_size=4)
    include embox.kernel.thread.mutex

    include embox.driver.tty.tty(rx_buff_sz=16, io_buff_sz=16)
    include embox.driver.tty.task_breaking_disable

    @Runlevel(2) include embox.cmd.sh.tish(
        builtin_commands = "cd export exit logout httpd pin ls help version"
    )
    include embox.init.setup_tty_diag
    @Runlevel(3) include embox.init.start_script(shell_name="tish")

    include third_party.libfdt
    include embox.init.devicetree_init

    include embox.compat.libc.stdio.print(support_floating=0)
    include embox.lib.libds
    include embox.framework.LibFramework
    include embox.util.log
    include embox.compat.libc.math_simple
    include embox.kernel.critical
    include embox.kernel.irq_static
    include embox.kernel.irq_stack_protection
    include embox.mem.pool_adapter
    include embox.mem.heap_bm
    include embox.mem.static_heap(heap_size=0x10000, section="")
    include embox.mem.bitmask(page_size=64)

    include embox.fs.driver.initfs_dvfs(file_quantity=32)
    include embox.fs.driver.devfs_dvfs
    include embox.fs.rootfs_dvfs(fstype="initfs")
    include embox.fs.dvfs.core
    include embox.compat.posix.file_system_dvfs
    include embox.fs.syslib.perm_stub
    include embox.compat.posix.proc.atexit_stub
    include embox.compat.atomic.pseudo_atomic

    include embox.driver.virtual.null
    include embox.driver.virtual.zero

    include embox.service.http_admin
    include embox.service.http_admin_iface_html
    include embox.demo.website
}
