#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#

config SYSTEM_NXINIT
	tristate "NuttX Init"
	default n
	depends on EXPERIMENTAL
	depends on LIBC_EXECFUNCS
	depends on SCHED_CHILD_STATUS
	---help---
		Enable NxInit(NuttX Init) component for system initialization.
		The script of NxInit(init.rc) is compatible with the Android Init Language syntax.

if SYSTEM_NXINIT

comment "NXInit Basic"

config SYSTEM_NXINIT_PRIORITY
	int "Thread priority"
	default 100

config SYSTEM_NXINIT_STACKSIZE
	int "Stack size"
	default DEFAULT_TASK_STACKSIZE

config SYSTEM_NXINIT_PROGNAME
	string "Program name"
	default "init"

comment "NXInit Run Control(RC)"

config SYSTEM_NXINIT_RC_FILE_PATH
	string "Path to RC file"
	default "/etc/init.d/init.rc"
	---help---
		Path to the init.rc file to use for NXInit's boot logic.

config SYSTEM_NXINIT_RC_LINE_MAX
	int "Max line length of RC file"
	default 128
	---help---
		Maximum line length of RC file.
		More details: https://android.googlesource.com/platform/system/core/+/master/init/README.md

comment "NXInit Action"

config SYSTEM_NXINIT_ACTION_CMD_ARGS_MAX
	int "Max number of command arguments"
	default 8
	---help---
		Maximum number of command arguments.
		Form:
		```
		on <trigger>
		   <command>
		   <command>
		   <command>
		   ...
		```

config SYSTEM_NXINIT_ACTION_WARN_SLOW
	int "Slow command warning timeout"
	default 50
	depends on SYSTEM_NXINIT_WARN
	---help---
		Warning if command took more than `SYSTEM_NXINIT_ACTION_WARN_SLOW` ms.

config SYSTEM_NXINIT_ACTION_MANAGER_EVENT_MAX
	int "Max number of action manager events"
	default 32
	---help---
		Maximum number of action manager events.
		```
		struct action_manager_s
		{
		  ...
		  FAR char *events[CONFIG_SYSTEM_NXINIT_ACTION_MANAGER_EVENT_MAX];
		  ...
		};
		```
config SYSTEM_NXINIT_FINALINIT
	bool "Enable NXInit final event"
	default n
	---help---
		Enable support to run the "final" event. Currently only "boot",
		and "init" event are enabled by default, where "netinit" and
		"final" are optional.

comment "NXInit Service"

config SYSTEM_NXINIT_SERVICE_ARGS_MAX
	int "Max number of service arguments"
	default 8
	range 3 64
	---help---
		Maximum number of service arguments,
		including "name", "pathname" and key word "service"(at least 3). Form:
		```
		service <name> <pathname> [ <argument> ]*
		   <option>
		   <option>
		   ...
		```

config SYSTEM_NXINIT_SERVICE_RESTART_PERIOD
	int "Service restart period in ms"
	default 5000

comment "NXInit Log level"

config SYSTEM_NXINIT_ERR
	bool "Enable error log"
	default !DEFAULT_SMALL

config SYSTEM_NXINIT_WARN
	bool "Enable warning log"
	depends on SYSTEM_NXINIT_ERR

config SYSTEM_NXINIT_INFO
	bool "Enable info log"
	depends on SYSTEM_NXINIT_WARN

config SYSTEM_NXINIT_DEBUG
	bool "Enable debug log"
	depends on SYSTEM_NXINIT_INFO

endif
