
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

	/* Enable FPU */
	@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")
	/* Note: SPI1 overlaps some USART2 pins 
	@Runlevel(1) include embox.driver.serial.stm_ttyS1(baud_rate=57600, usartx=2)
	*/
	@Runlevel(1) include embox.driver.serial.stm_ttyS0(baud_rate=115200, usartx=6)

	include embox.driver.gpio.stm32cube_gpio
	include embox.driver.servo.stm32f4_pwm
	include servo.cmd.pwm

	include embox.driver.flash.flash_cache_block
	include embox.driver.flash.stm32f4cube(flash_size=0xC000)
	include embox.driver.flash.flash_fs

	include embox.driver.i2c.stm32cube_i2c
	include embox.driver.i2c.stm32cube_i2c1

	include embox.driver.spi.core
	include embox.driver.spi.stm32cube_spi(log_level="LOG_NONE")
	include embox.driver.spi.stm32cube_spi1(log_level="LOG_NONE") /* Note: SPI1 overlaps some USART2 pins */
	// include embox.driver.spi.stm32cube_spi2(log_level="LOG_NONE") /* Note: SPI2 overlaps some Ethernet pins */

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

	@Runlevel(1) include embox.driver.usb.core(usb_max_hcd=1, usb_max_dev=2, usb_max_hub=1,
					usb_max_req=4, urb_alignment=4)
	@Runlevel(1) include embox.driver.usb.class.mass_storage
	@Runlevel(1) include embox.driver.usb.class.ccid(log_level="LOG_DEBUG")
	@Runlevel(1) include embox.driver.usb.class.hid
	@Runlevel(1) include embox.driver.usb.hub
	@Runlevel(2) include embox.driver.usb.stm32_hc.stm32f4_hc

	/* Use it only with -Os optimization flag */
	/* @Runlevel(2) include embox.driver.sd.stm32f4_sd(use_irq=false) */
	@Runlevel(2) include embox.driver.block.partition

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

	include embox.driver.block_dev(dev_quantity=4)

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

	include embox.kernel.critical
	include embox.kernel.irq_static
	include embox.kernel.irq_stack_protection

	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.timer.sleep
	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)

	/* tty requires */
	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

	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


	@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 embox.cmd.service(services_count=2)
	include embox.cmd.help
	include embox.cmd.msleep
	include embox.cmd.sys.version

	include embox.cmd.fs.dd
	include embox.cmd.fs.cat
	include embox.cmd.fs.ls
	include embox.cmd.fs.rm
	include embox.cmd.fs.mount
	include embox.cmd.fs.umount
	include embox.cmd.fs.stat
	include embox.cmd.fs.echo
	include embox.cmd.fs.touch
	include embox.cmd.fs.mkdir
	include embox.cmd.fs.cp
	include embox.cmd.fs.conf_setup

	include embox.cmd.hw.lsblk
	include embox.cmd.hw.partition
	include embox.cmd.hardware.pin
	include embox.cmd.hw.lsusb

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

	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.loop_file_logger
	include embox.lib.loop_file_logger_lib(file_name="/conf/log.txt", record_size=64, record_quantity=4)

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

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

	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.driver.dfs
	include embox.fs.driver.fat_dvfs(log_level="LOG_ERR")
	include embox.fs.dvfs.core
	include embox.compat.posix.file_system_dvfs
	include embox.fs.syslib.perm_stub

}
