
package genconfig

configuration conf {
	include embox.arch.system(core_freq=216000000)
	include embox.arch.arm.cortexm3.bundle
	include embox.arch.arm.armmlib.cpu_idle
	include embox.arch.arm.armmlib.exception_entry(irq_stack_size=1024)
	include embox.arch.arm.armmlib.lthread_own_stack(stack_size=1024)
	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=0x4000,
		nocache_region0_addr=0x60000000, nocache_region0_size=0x00100000
	)

	/* Enable FPU */
	include embox.arch.arm.fpu.cortex_m7_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.f7.stm32746g_discovery.bsp
	@Runlevel(0) include third_party.bsp.stmf7cube.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_f7
	@Runlevel(1) include embox.driver.serial.stm_diag(baud_rate=115200, usartx=1)
	@Runlevel(1) include embox.driver.diag(impl="embox__driver__serial__stm_diag")
	//@Runlevel(1) include embox.driver.serial.stm_ttyS1(baud_rate=115200, usartx=6)
	@Runlevel(1) include embox.driver.serial.stm_ttyS0(baud_rate=115200, usartx=1)

	@Runlevel(1) include embox.driver.gpio.stm32cube_gpio
	@Runlevel(1) include embox.driver.flash.stm32f7_qspi
	@Runlevel(1) include embox.driver.video.stm32f7_lcd(fb_base=0x60000000)
	@Runlevel(2) include embox.driver.sd.stm32f746g_discovery_sd

	/* Touchscreen shares INT pin with SD detect. */
	/*
	include embox.cmd.hw.input
	@Runlevel(2) include embox.driver.input.touchscreen.stm32f7cube_ts
	@Runlevel(2) include embox.driver.input.input_dev_devfs
	include embox.cmd.testing.input.touchscreen_test
	*/
	/*
	include embox.driver.flash.flash_cache_block
	include embox.driver.flash.stm32f7cube(flash_size=0x18000)
	include embox.driver.flash.flash_fs
	*/

	include embox.driver.block_dev

	@Runlevel(2) include embox.driver.net.stm32f7cube_eth
	@Runlevel(2) include embox.driver.net.loopback

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

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

	include embox.kernel.task.multi
	include embox.kernel.task.resource.idesc_table(idesc_table_size=32)
	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.critical
	include embox.kernel.irq_static

	include embox.kernel.sched.sched
	include embox.kernel.sched.idle_light
	include embox.kernel.lthread.lthread	
	include embox.kernel.thread.core(thread_pool_size=16, thread_stack_size=5000)
	include embox.kernel.thread.thread_local_none
	include embox.kernel.thread.thread_cancel_disable
	include embox.kernel.thread.signal.siginfoq(siginfo_pool_sz=8)
	include embox.kernel.thread.mutex
	include embox.kernel.timer.sleep

	include embox.mem.heap_bm
	include embox.mem.static_heap(heap_size=0x4000)
	include embox.mem.bitmask(page_size=64)
	include embox.mem.pool_adapter

	include embox.lib.libds
	include embox.framework.LibFramework
	include embox.compat.libc.stdio.print(support_floating=0)
	include embox.compat.posix.file_system_dvfs

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

	include embox.compat.posix.pthreads
	include embox.compat.posix.time.time
	include embox.compat.posix.net.getaddrinfo(addrinfo_pool_size=8)

	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.net.udp
	include embox.net.udp_sock

	include embox.fs.driver.initfs_dvfs
	include embox.fs.driver.devfs_dvfs
	include embox.fs.rootfs_dvfs(fstype="initfs")
	include embox.fs.driver.fat_dvfs

	include embox.fs.dvfs.core(inode_pool_size=16, dentry_pool_size=16, inode_pool_size=16)
	include embox.fs.syslib.perm_stub

	@Runlevel(2) include embox.cmd.msleep
	@Runlevel(2) include embox.cmd.sh.tish(builtin_commands = "cd export exit logout httpd")
	//include embox.init.setup_tty_diag
	//@Runlevel(3) include embox.init.start_script(shell_name="tish", tty_dev="ttyS0", shell_start=1, stop_on_error=true)
	include embox.init.system_start_service(log_level="LOG_INFO", tty_dev="ttyS0")

	include embox.cmd.help
	include embox.cmd.sys.version
	include embox.cmd.hw.mem
	include embox.cmd.goto
	include embox.cmd.net.tftp
	include embox.cmd.service
	include embox.cmd.fs.ls
	include embox.cmd.fs.cat
	include embox.cmd.fs.mount
	include embox.cmd.net.netmanager
	include embox.cmd.net.ifconfig
	include embox.cmd.net.route
	include embox.cmd.net.ping
	include embox.cmd.net.telnetd
	include embox.cmd.net.httpd
	include embox.cmd.net.httpd_cgi(use_real_cmd=true)
	include embox.service.http_admin
	include embox.service.http_admin_iface_list(is_readonly=true)
	include embox.service.http_admin_iface_html
	include embox.demo.website
	include embox.cmd.hardware.pin

	include embox.compat.posix.semaphore
	include third_party.lib.mbedtls(tls_config="iec61850")
	include third_party.lib.lib60870(tls_enable=true)

	include embox.project.server60870.cmd.server104
	include embox.project.server60870.cmd.tls_server104

	include platform.server61850.data_samples.client1_cer
    include platform.server61850.data_samples.client2_cer
    include platform.server61850.data_samples.root_cer
    include platform.server61850.data_samples.server_pem
    include platform.server61850.data_samples.server_cer
}
