package genconfig

configuration conf {
	include embox.arch.system(core_freq=800000000)
	include embox.arch.arm.armv7a.head
	include embox.arch.arm.armv7a.cpu_idle
	include embox.arch.arm.armlib.locore
	include embox.arch.arm.armlib.interrupt
	include embox.arch.arm.armlib.context
	include embox.arch.arm.armlib.mem_barriers
	include embox.arch.arm.armlib.static_excpt_table
	include embox.arch.arm.stackframe
	include embox.arch.arm.vfork
	include embox.arch.arm.libarch

	//include embox.arch.arm.fpu.fpu_stub
	@Runlevel(0) include embox.arch.arm.fpu.vfpv3

//	@Runlevel(1) include embox.driver.cache.pl310(base_addr=0x01106000, log_level="LOG_DEBUG")

	@Runlevel(0) include embox.arch.arm.mmu_small_page(domain_access=3)
	@Runlevel(0) include embox.arch.arm.mmuinfo

/* IRQ */
	include embox.driver.interrupt.gicv1(gicd_base=0x01104000, gicc_base=0x01105000)

/* Timer DIT3 */	
	@Runlevel(0) include embox.driver.clock.sp804(base_addr=0x0104B000, TIMCLK_freq=100000000, irq_nr=48, target_freq=1000)
	@Runlevel(1) include embox.kernel.time.jiffies(cs_name="sp804_timer")

	include embox.device.common(device_name_len=32, max_dev_module_count=128)
	include embox.driver.block_dev
	include embox.driver.virtual.null
	include embox.driver.virtual.zero
	include embox.driver.block.partition

/* MUART */
	@Runlevel(2) include embox.driver.serial.rcm_muart_uart_diag(base_addr=0x01044000, baud_rate=115200)
	@Runlevel(1) include embox.driver.diag(impl="embox__driver__serial__rcm_muart_uart_diag")
	@Runlevel(1) include embox.driver.serial.rcm_muart_uart_ttys0(base_addr=0x01044000, baud_rate=115200, irq_num=76)
	@Runlevel(1) include embox.driver.serial.rcm_muart_uart_ttys1(base_addr=0x01045000, baud_rate=115200, irq_num=77)

	include embox.driver.serial.core_tty
	include embox.driver.tty.serial(serial_quantity=4, idesc_serial_quantity=4)

/* PCIe */
/*	include embox.driver.pci(log_level="LOG_DEBUG", dev_quantity=1, bus_n_to_scan=1)
	include embox.driver.pci_chip.pci_chip_rcm1888bc048(log_level="LOG_DEBUG")
*/
/* MGETH */
	@Runlevel(2) include embox.driver.net.rcm_mgeth(log_level="LOG_ERR")
	@Runlevel(2) include embox.driver.net.loopback

/* Kernel */
	@Runlevel(2) include embox.kernel.timer.sys_timer
	@Runlevel(2) include embox.kernel.time.kernel_time

	@Runlevel(2) include embox.kernel.task.multi
	@Runlevel(2) include embox.kernel.stack(stack_size=0x80000, alignment=4)
	@Runlevel(2) include embox.kernel.thread.core(thread_stack_align=64, thread_stack_size=0x80000)
	@Runlevel(2) include embox.kernel.sched.strategy.priority_based
	@Runlevel(2) include embox.kernel.timer.sleep
	@Runlevel(2) include embox.kernel.timer.strategy.head_timer
	@Runlevel(2) include embox.kernel.irq
	@Runlevel(2) include embox.kernel.critical

	@Runlevel(2) include embox.kernel.task.resource.errno

/* NET */
	@Runlevel(2) include embox.net.skbuff(amount_skb=80)
	@Runlevel(2) include embox.net.skbuff_data(amount_skb_data=80, data_size=1514, data_align=8, data_padto=8, ip_align=true)

	include embox.net.lib.dns_fixed(nameserver="192.168.1.1")
	include embox.net.lib.getifaddrs

	@Runlevel(2) include embox.net.l2.ethernet
	@Runlevel(2) include embox.net.net_entry
	@Runlevel(2) include embox.net.socket
	@Runlevel(2) include embox.net.dev
	@Runlevel(2) include embox.net.core
	@Runlevel(2) include embox.net.arp
	@Runlevel(2) include embox.net.rarp
	@Runlevel(2) include embox.net.af_inet
	@Runlevel(2) include embox.net.ipv4
	@Runlevel(2) include embox.net.icmpv4
	@Runlevel(2) include embox.net.udp
	@Runlevel(2) include embox.net.tcp
	@Runlevel(2) include embox.net.udp_sock
	@Runlevel(2) include embox.net.tcp_sock
	@Runlevel(2) include embox.net.raw_sock

	include embox.lib.libds
	include embox.framework.LibFramework

	include embox.compat.libc.all
	include embox.compat.libc.math_openlibm

	include embox.compat.posix.util.sleep
	include embox.compat.posix.file_system_oldfs
	include embox.compat.posix.time.time
	include embox.compat.posix.net.socket

	/* Tell printf() do not support floating point */
	@Runlevel(2) include embox.compat.libc.stdio.print(support_floating=0)

/* MEMORY ALLOCATION */
	@Runlevel(1) include embox.mem.bitmask
	@Runlevel(1) include embox.mem.pool_adapter	
	@Runlevel(1) include embox.mem.static_heap(heap_size=16777216)
	@Runlevel(1) include embox.mem.heap_bm(heap_size=8388608)

/* FS */
	@Runlevel(2) include embox.fs.node(fnode_quantity=256)
	@Runlevel(2) include embox.fs.driver.initfs
	@Runlevel(2) include embox.fs.rootfs_oldfs

	include embox.test.net.socket_test(family=2,type=1,proto=0) /* AF_INET, SOCK_STREAM, default */
	include embox.test.net.inet_socket_test(type=1,proto=0) /* SOCK_STREAM, default */
	include embox.test.net.inet_dgram_socket_test(proto=0) /* default */
	include embox.test.net.inet_stream_socket_test(proto=0) /* default */

/* CMD */

	include embox.init.system_start_service(log_level="LOG_INFO", tty_dev="ttyS0")

	@Runlevel(2) include embox.cmd.sh.tish(prompt="embox#",
		builtin_commands = "cd export exit logout pin help version"
	)

	include embox.cmd.sys.uname
	include embox.cmd.sys.env
	include embox.cmd.sys.export
	include embox.cmd.sys.version
	include embox.cmd.sys.date
	include embox.cmd.sys.time

	include embox.cmd.help
	include embox.cmd.test
	include embox.cmd.service
	include embox.cmd.proc.thread
	include embox.cmd.proc.top

	/* HARDWARE */
/*	include embox.cmd.hardware.spi
	include embox.cmd.i2c_tools.i2cdetect
	include embox.cmd.i2c_tools.i2cdump
	include embox.cmd.i2c_tools.i2cget
	include embox.cmd.i2c_tools.i2cset
	include embox.cmd.hardware.pin
*/
	include embox.cmd.hw.mem
	include embox.cmd.memmap
	include embox.cmd.mmuinfo
	include embox.cmd.hw.mmutrans
//	include embox.cmd.lspci

	/* FS */
	include embox.cmd.fs.echo
	include embox.cmd.fs.ls
	include embox.cmd.fs.cat
	include embox.cmd.fs.cd
	include embox.cmd.fs.pwd
	include embox.cmd.fs.more
	include embox.cmd.fs.stat
	include embox.cmd.fs.echo
	include embox.cmd.fs.touch
	include embox.cmd.fs.cp
	include embox.cmd.fs.mv
	include embox.cmd.fs.dd

	/* NET */
	include embox.cmd.net.arp
	include embox.cmd.net.netstat
	include embox.cmd.net.arping
	include embox.cmd.net.rarping
	include embox.cmd.net.ifconfig
	include embox.cmd.net.ping
	include embox.cmd.net.iptables
	include embox.cmd.net.route
	include embox.cmd.net.ftp
	include embox.cmd.net.tftp
	include embox.cmd.net.snmpd
	include embox.cmd.net.ntpdate
	include embox.cmd.net.ntpd
	include embox.cmd.net.telnetd
	include embox.cmd.net.nslookup
	include embox.cmd.net.httpd
	include embox.cmd.net.httpd_cgi(use_real_cmd=true, use_parallel_cgi=false)
	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.net.netmanager
	include embox.cmd.net.bootpc

	include embox.cmd.testing.ticker

	//include third_party.cmd.iperf
	//include third_party.cmd.iperf3

	/* use this for debugging */
	// include embox.cmd.gdbserver
	// include embox.arch.arm.armlib.gdb
	// include embox.driver.virtual.tty_stub(tty_name="ttyS0") /* comment out embox.driver.serial.rcm_muart_uart_ttys0 */

	@Runlevel (2) include embox.lib.cxx.ConstructionGlobal
	include embox.lib.cxx.DestructionStatic(table_size=2048)
	include third_party.lib.libgcc_toolchain
	include embox.lib.cxx.libsupcxx_standalone
	include third_party.STLport.libstlportg


}
