
package genconfig

configuration conf {
	include embox.arch.system(core_freq=400000000)
	include embox.arch.arm.cortexm3.bundle
	include embox.arch.arm.armmlib.cpu_idle
	include embox.arch.arm.armmlib.exception_entry(irq_stack_size=2048)
	include embox.arch.arm.libarch
	include embox.arch.arm.vfork

	@Runlevel(0) include embox.arch.arm.cortexm3.armv7m_cpu_cache(
		log_level="LOG_DEBUG",
		sram_nocache_section_size=0x10000
	)

	/* Enable FPU */
	include embox.arch.arm.fpu.cortex_m7_fp
	@Runlevel(0) include embox.arch.arm.fpu.fpv5(log_level="LOG_ERR")

	include platform.stm32.platform_init
	include platform.stm32.platform_shutdown
	include platform.stm32.h7.stm32h745i_discovery.bsp
	include third_party.bsp.stmh7cube.cube(use_middleware_pdm=true)
	include third_party.lib.st_audio_pdm.libPDMFilter_CM7_GCC_wc32
	@Runlevel(0) include third_party.bsp.stmh7cube.sdram(fmc_swap=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_h7
	@Runlevel(1) include embox.driver.serial.stm_diag(baud_rate=115200, usartx=3)
	@Runlevel(1) include embox.driver.diag(impl="embox__driver__serial__stm_diag")
	@Runlevel(1) include embox.driver.serial.stm_ttyS0(baud_rate=115200, usartx=3)

	@Runlevel(2) include embox.driver.net.stm32h7cube_eth_745i_discovery

	include embox.driver.audio.stm32h745i_discovery

	@Runlevel(1) include embox.driver.video.stm32h7_lcd(fb_base=0x70000000)

	@Runlevel(2) include embox.driver.input.touchscreen.stm32h7cube_ts
	@Runlevel(2) include embox.driver.input.input_dev_devfs
	include embox.driver.video.fb

	include embox.driver.flash.flash_cache_ram(use_ram_section=true)
	include embox.driver.flash.stm32h7cube(flash_size=0x40000)
	include embox.driver.flash.flash_fs

	include embox.kernel.stack(stack_size=16000,alignment=4)

	include embox.kernel.task.multi
	include embox.kernel.task.resource.idesc_table(idesc_table_size=16)
	include embox.kernel.task.resource.env(env_str_len=64)

	include embox.net.util.protoent(max_aliases_num=4)
	include embox.net.util.servent(max_aliases_num=4)
	include embox.net.util.hostent(max_aliases_num=4,max_addrs_num=4)

	include embox.compat.posix.proc.vfork_exchanged
	include embox.compat.posix.proc.exec_exchanged

	include embox.kernel.thread.thread_cancel_disable
	include embox.kernel.timer.sys_timer(timer_quantity=4)
	include embox.kernel.sched.sched
	include embox.kernel.sched.idle_light

	@Runlevel(2) include embox.kernel.sched.strategy.priority_based

	include embox.net.skbuff(amount_skb=64)
	include embox.net.skbuff_data(amount_skb_data=64, data_size=0x600)
	include embox.net.sock_noxattr
	include embox.net.af_inet(amount_inet_sock=40)
	include embox.net.af_packet(amount_sockets=4)
	include embox.compat.posix.net.getaddrinfo(addrinfo_pool_size=8)
	@Runlevel(2) include embox.net.core(amount_interface=1)
	@Runlevel(2) include embox.net.socket(log_level="LOG_ERR")
	@Runlevel(2) include embox.net.dev(netdev_quantity=1)
	@Runlevel(2) include embox.net.arp
	@Runlevel(2) include embox.net.ipv4(max_uncomplete_cnt=8)
	@Runlevel(2) include embox.net.udp
	@Runlevel(2) include embox.net.udp_sock
	@Runlevel(2) include embox.net.raw_sock
	include embox.net.tcp
	include embox.net.tcp_sock(log_level="LOG_ERR", amount_tcp_sock=30)
	@Runlevel(2) include embox.net.neighbour(neighbour_amount=16)
	@Runlevel(2) include embox.net.netfilter(amount_rules=0)

	include embox.kernel.lthread.lthread
	include embox.kernel.thread.core(thread_pool_size=9,thread_stack_size=12000)
	include embox.kernel.thread.thread_allocator_pool(use_thread_section=1)
	include embox.kernel.thread.signal.siginfoq(siginfo_pool_sz=1)

	include embox.fs.driver.initfs_dvfs
	include embox.fs.driver.devfs_dvfs
	include embox.fs.rootfs_dvfs(fstype="initfs")
	include embox.fs.driver.dfs(inode_count=4, minimum_file_size=4096)

	include embox.fs.dvfs.core(inode_pool_size=32, dentry_pool_size=32)
	include embox.compat.posix.file_system_dvfs
	include embox.fs.syslib.perm_stub

	/* tty requires */
	include embox.kernel.thread.mutex
	include embox.driver.tty.tty(rx_buff_sz=32, io_buff_sz=32)
	include embox.driver.tty.task_breaking_enable

	@Runlevel(2) include embox.cmd.msleep
	@Runlevel(2) include embox.cmd.sh.tish(builtin_commands = "cd export exit logout httpd simple_pjsua_imported sip_nuklear")
	@Runlevel(3) include embox.init.start_script(shell_name="tish", tty_dev="ttyS0", shell_start=1, stop_on_error=false)
	include embox.cmd.service

	include embox.cmd.net.netmanager(conf_file="/conf/network")
	include embox.cmd.net.bootpc
	include embox.cmd.net.ifconfig
	include embox.cmd.net.route
	include embox.cmd.net.arp
	include embox.cmd.net.ping
	include embox.cmd.net.ntpdate

	include embox.cmd.sys.date

	include embox.cmd.net.httpd
	include embox.cmd.net.httpd_cgi(use_real_cmd=true, use_parallel_cgi=false)
	include project.pjsip.http_admin
	include embox.service.http_admin_iface_list(is_readonly=false, use_netmanager=true)
	include embox.service.http_admin_iface_html
	include project.pjsip.http_admin_accounts
	//include project.pjsip.flash_settings
	include embox.service.cgi_cmd_wrapper(cmds_check=true, allowed_cmds="loop_file_logger")

	include embox.cmd.loop_file_logger
	include embox.lib.loop_file_logger_lib(file_name="/conf/log.txt", record_size=128, record_quantity=16)

	include embox.cmd.fs.mount
	include embox.cmd.fs.mkdir
	include embox.cmd.fs.ls
	include embox.cmd.fs.cat
	include embox.cmd.fs.touch
	include embox.cmd.fs.echo
	include embox.cmd.fs.cp
	include embox.cmd.fs.conf_setup

	include embox.cmd.hw.input

	include embox.util.log
	include embox.kernel.critical

	include embox.cmd.play(use_local_buffer=false, frames_per_buffer=960)
	include embox.cmd.record(use_local_buffer = false)

	include embox.kernel.irq_static
	include embox.kernel.irq_stack_protection
	include embox.mem.pool_adapter

	include embox.framework.embuild

	include embox.compat.libc.stdio.print(support_floating=0)
	include embox.compat.libc.stdio.file_pool(file_quantity=4)

	include embox.net.lib.dns_file

	include embox.compat.libc.math_openlibm

	include embox.mem.heap_bm
	include embox.mem.static_heap(heap_size=0xB000)
	include embox.mem.fixed_heap(heap_size=0x400000, heap_start=0x70200000)
	include embox.mem.bitmask(page_size=64)

	include embox.kernel.thread.thread_local_heap

	include embox.driver.audio.portaudio_lib(log_level="LOG_ERR")

	//include project.pjsip.cmd.simple_pjsua_imported

	include project.pjsip.cmd.sip_nuklear
	include project.pjsip.cmd.pjsua_lib(use_acc_file=true, acc_file_name="/conf/sip_acc.conf")
	include project.pjsip.cmd.nuklear_lib(use_small_display=true)
	include project.pjsip.cmd.rawfb_stm32_ltdc
}
