Kconfig 35 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284
#
#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#

menu "NSH Library"

config NSH_LIBRARY
	bool "NSH Library"
	default n
	select NETUTILS_NETLIB if NET
	select LIBC_NETDB if NET
	select READLINE_HAVE_EXTMATCH
	select LIB_BOARDCTL if (!NSH_DISABLE_MKRD && !DISABLE_MOUNTPOINT) || NSH_ARCHINIT || NSH_ROMFSETC
	select BOARDCTL_MKRD if !NSH_DISABLE_MKRD && !DISABLE_MOUNTPOINT
	select BOARDCTL_ROMDISK if NSH_ROMFSETC
	---help---
		Build the NSH support library.  This is used, for example, by
		system/nsh in order to implement the full NuttShell (NSH).

if NSH_LIBRARY

menuconfig NSH_MOTD
	bool "Message of the Day (MOTD)"
	default n
	---help---
		Support a user-provided Message of the Day (MOTD) that will be
		presented each time new NSH session is opened.

if NSH_MOTD

config NSH_PLATFORM_MOTD
	bool "Platform MOTD"
	default n
	---help---
		If this option is selected, the NSH will call into platform-specific
		logic in order to get the MOTD.  The function prototype for this
		call is:

			void platform_motd(FAR char *buffer, size_t buflen);

		Where buffer is the location to return the MOTD and buflen is the
		length of that buffer.  The maximum size of the buffer is determined
		by NSH_FILEIOSIZE.  An appropriate location for the
		implementation of platform_motd would be within apps/platform/<board>.

		One newline will be inserted after the platform-supplied message.

		platform_motd() is prototyped and described in apps/include/nshlib/nshlib.h
		which may be included like:

			#include "nshlib/nshlib.h"

config NSH_MOTD_STRING
	string "MOTD String"
	default "No MOTD string provided"
	depends on !NSH_PLATFORM_MOTD
	---help---
		If NSH_MOTD is selected, but NSH_PLATFORM_MOTD is not, then a fixed
		MOTD string will be used.  That string is provided by this selection.

		One newline will be inserted after supplied MOTD message.

endif # NSH_MOTD

menu "Command Line Configuration"

config NSH_PROMPT_STRING
	string "Prompt String"
	default "nsh> "
	---help---
		Provide the shell prompt string, default is "nsh> ".

choice
	prompt "Command Line Editor"
	default NSH_READLINE if DEFAULT_SMALL
	default NSH_CLE if !DEFAULT_SMALL

config NSH_READLINE
	bool "Minimal readline()"
	select SYSTEM_READLINE
	---help---
		Selects the minimal implementation of readline().  This minimal
		implementation provides on backspace for command line editing.

config NSH_CLE
	bool "Command Line Editor"
	select SYSTEM_CLE
	---help---
		Selects the more extensive, EMACS-like command line editor.
		Select this option only if (1) you don't mind a modest increase
		in the FLASH footprint, and (2) you work with a terminal that
		supports extensive VT100 editing commands.

		Selecting this option will add probably 1.5-2KB to the FLASH
		footprint.

endchoice

config NSH_LINELEN
	int "Max command line length"
	default 64 if DEFAULT_SMALL
	default 80 if !DEFAULT_SMALL
	---help---
		The maximum length of one command line and of one output line.
		Default: 64/80

config NSH_DISABLE_SEMICOLON
	bool "Disable multiple commands per line"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL
	---help---
		By default, you can enter multiple NSH commands on a line with each
		command separated by a semicolon.  You can disable this feature to
		save a little memory on FLASH challenged platforms.

config NSH_QUOTE
	bool "Enable back-slash quoting of characters"
	default n if DEFAULT_SMALL || !NSH_ARGCAT
	default y if !DEFAULT_SMALL && NSH_ARGCAT
	---help---
		Force special characters like back-quotes, quotation marks, and the
		back-slash character itself to be treat like normal text.

		This feature is only implemented properly for the case where
		CONFIG_NSH_ARGCAT is also selected.

config NSH_CMDPARMS
	bool "Enable commands as parameters"
	default n if DEFAULT_SMALL
	default y if !DEFAULT_SMALL
	depends on !DISABLE_MOUNTPOINT
	---help---
		If selected, then the output from commands, from file applications, and
		from NSH built-in commands can be used as arguments to other
		commands.  The entity to be executed is identified by enclosing the
		command line in back quotes.  For example,

			set FOO `myprogram $BAR`

		Will execute the program named myprogram passing it the value of the
		environment variable BAR.  The value of the environment variable FOO
		is then set output of myprogram on stdout.

		Because this feature commits significant resources, it is disabled by
		default.

config NSH_MAXARGUMENTS
	int "Maximum number of command arguments"
	default 7
	---help---
		The maximum number of NSH command arguments.
		Default: 7

config NSH_ARGCAT
	bool "Concatenation of argument strings"
	default n if DEFAULT_SMALL
	default y if !DEFAULT_SMALL
	---help---
		Support concatenation of strings with environment variables or command
		output.  For example:

			set FOO XYZ
			set BAR 123
			set FOOBAR ABC_${FOO}_${BAR}

		would set the environment variable FOO to XYZ, BAR to 123 and FOOBAR
		to ABC_XYZ_123.  If NSH_ARGCAT is not selected, then a slightly small
		FLASH footprint results but then also only simple environment
		variables like $FOO can be used on the command line.

config NSH_NESTDEPTH
	int "Maximum command nesting"
	default 3
	---help---
		The maximum number of nested if-then[-else]-fi sequences that
		are permissible.  Default: 3

config NSH_DISABLEBG
	bool "Disable background commands"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL
	---help---
		This can be set to 'y' to suppress support for background
		commands.  This setting disables the 'nice' command prefix and
		the '&' command suffix.  This would only be set on systems
		where a minimal footprint is a necessity and background command
		execution is not.

endmenu # Command Line Configuration

config NSH_BUILTIN_APPS
	bool "Enable built-in applications"
	default n
	depends on BUILTIN
	---help---
		Support external registered, "built-in" applications that can be
		executed from the NSH command line (see apps/README.txt for
		more information).  This options requires support for builtin
		applications (BUILTIN).

config NSH_FILE_APPS
	bool "Enable execution of program files"
	default n
	depends on LIBC_EXECFUNCS
	---help---
		Support execution of program files residing within a file
		system.  This options requires support for the posix_spawn()
		interface (LIBC_EXECFUNCS).

menu "Disable Individual commands"

config NSH_DISABLE_ADDROUTE
	bool "Disable addroute"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL
	depends on NET_ROUTE

config NSH_DISABLE_ARP
	bool "Disable arp"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL
	depends on NET_ARP

config NSH_DISABLE_BASE64DEC
	bool "Disable base64dec"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL
	depends on NETUTILS_CODECS && CODECS_BASE64

config NSH_DISABLE_BASE64ENC
	bool "Disable base64enc"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL
	depends on NETUTILS_CODECS && CODECS_BASE64

config NSH_DISABLE_BASENAME
	bool "Disable basename"
	default y if DEFAULT_SMALL || NSH_DISABLESCRIPT
	default n if !DEFAULT_SMALL && !NSH_DISABLESCRIPT

config NSH_DISABLE_CAT
	bool "Disable cat"
	default n

config NSH_DISABLE_CD
	bool "Disable cd"
	default n

config NSH_DISABLE_CP
	bool "Disable cp"
	default n

config NSH_DISABLE_CMP
	bool "Disable cmp"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL

config NSH_DISABLE_DATE
	bool "Disable date"
	default n if RTC
	default y if !RTC

config NSH_DISABLE_DD
	bool "Disable dd"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL

config NSH_DISABLE_DF
	bool "Disable df"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL

config NSH_DISABLE_DELROUTE
	bool "Disable delroute"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL
	depends on NET_ROUTE

config NSH_DISABLE_DIRNAME
	bool "Disable dirname"
	default y if DEFAULT_SMALL || NSH_DISABLESCRIPT
	default n if !DEFAULT_SMALL && !NSH_DISABLESCRIPT

config NSH_DISABLE_DMESG
	bool "Disable dmesg"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL
	depends on RAMLOG_SYSLOG

config NSH_DISABLE_ECHO
	bool "Disable echo"
	default n

config NSH_DISABLE_ENV
	bool "Disable env"
	default n

config NSH_DISABLE_EXEC
	bool "Disable exec"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL

config NSH_DISABLE_EXIT
	bool "Disable exit"
	default y if DEFAULT_SMALL && !NSH_TELNET
	default n if !DEFAULT_SMALL || NSH_TELNET

config NSH_DISABLE_EXPORT
	bool "Disable export"
	default n

config NSH_DISABLE_FREE
	bool "Disable free"
	default n

config NSH_DISABLE_GET
	bool "Disable get"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL

config NSH_DISABLE_HELP
	bool "Disable help"
	default n

config NSH_DISABLE_HEXDUMP
	bool "Disable hexdump"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL

config NSH_DISABLE_IFCONFIG
	bool "Disable ifconfig"
	default y if !FS_PROCFS || FS_PROCFS_EXCLUDE_NET
	default n if FS_PROCFS && !FS_PROCFS_EXCLUDE_NET

config NSH_DISABLE_IFUPDOWN
	bool "Disable ifup/down"
	default y if !FS_PROCFS || FS_PROCFS_EXCLUDE_NET
	default n if FS_PROCFS && !FS_PROCFS_EXCLUDE_NET

config NSH_DISABLE_KILL
	bool "Disable kill"
	default n

config NSH_DISABLE_LOSETUP
	bool "Disable losetup"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL

config NSH_DISABLE_LOSMART
	bool "Disable losmart"
	default y if DEFAULT_SMALL || !MTD_SMART
	default n if !DEFAULT_SMALL && MTD_SMART

config NSH_DISABLE_LN
	bool "Disable ln"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL
	depends on PSEUDOFS_SOFTLINKS

config NSH_DISABLE_LS
	bool "Disable ls"
	default n

config NSH_DISABLE_MB
	bool "Disable mb"
	default n

config NSH_DISABLE_MD5
	bool "Disable md5"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL
	depends on NETUTILS_CODECS && CODECS_HASH_MD5

config NSH_DISABLE_MKDIR
	bool "Disable mkdir"
	default n

config NSH_DISABLE_MKFATFS
	bool "Disable mkfatfs"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL
	depends on FUTILS_MKFATFS

config NSH_DISABLE_MKFIFO
	bool "Disable mkfifo"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL
	depends on PIPES

config NSH_DISABLE_MKRD
	bool "Disable mkrd"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL

config NSH_DISABLE_MKSMARTFS
	bool "Disable mksmartfs"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL
	depends on FS_SMARTFS && FSUTILS_MKSMARTFS

config NSH_DISABLE_MH
	bool "Disable mh"
	default n

config NSH_DISABLE_MODCMDS
	bool "Disable modules commands (insmod, rmmod, lsmod)"
	default n
	depends on MODULE

config NSH_DISABLE_MOUNT
	bool "Disable mount"
	default n

config NSH_DISABLE_MV
	bool "Disable mv"
	default n

config NSH_DISABLE_MW
	bool "Disable mw"
	default n

config NSH_DISABLE_NSFMOUNT
	bool "Disable nfsmount"
	default n
	depends on NFS

config NSH_DISABLE_NSLOOKUP
	bool "Disable nslookup"
	default n
	depends on LIBC_NETDB && NETDB_DNSCLIENT

config NSH_DISABLE_PASSWD
	bool "Disable passwd"
	default y
	depends on NSH_LOGIN_PASSWD && !FSUTILS_PASSWD_READONLY

config NSH_DISABLE_PMCONFIG
	bool "Disable pmconfig"
	default n
	depends on PM

config NSH_DISABLE_POWEROFF
	bool "Disable poweroff"
	default n if !DEFAULT_SMALL
	default y if DEFAULT_SMALL
	depends on BOARDCTL_POWEROFF

config NSH_DISABLE_PRINTF
	bool "Disable printf"
	default y

config NSH_DISABLE_PS
	bool "Disable ps"
	default y if !FS_PROCFS || FS_PROCFS_EXCLUDE_PROCESS
	default n if FS_PROCFS && !FS_PROCFS_EXCLUDE_PROCESS

config NSH_DISABLE_PSSTACKUSAGE
	bool "Disable ps stack usage"
	depends on STACK_COLORATION && !NSH_DISABLE_PS
	default n
	---help---
		Disable to save space and not pull in floating point routines

config NSH_DISABLE_PUT
	bool "Disable put"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL

config NSH_DISABLE_PWD
	bool "Disable pwd"
	default n

config NSH_DISABLE_READLINK
	bool "Disable readlink"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL
	depends on PSEUDOFS_SOFTLINKS

config NSH_DISABLE_REBOOT
	bool "Disable reboot"
	default n if !DEFAULT_SMALL
	default y if DEFAULT_SMALL
	depends on BOARDCTL_RESET

config NSH_DISABLE_RM
	bool "Disable rm"
	default n

config NSH_DISABLE_RMDIR
	bool "Disable rmdir"
	default n

config NSH_DISABLE_ROUTE
	bool "Disable delroute"
	depends on FS_PROCFS && NET_ROUTE && !FS_PROCFS_EXCLUDE_NET && !FS_PROCFS_EXCLUDE_ROUTE
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL

config NSH_DISABLE_RPTUN
	bool "Disable rptun"
	default n
	depends on RPTUN

config NSH_DISABLE_SET
	bool "Disable set"
	default n

config NSH_DISABLE_SOURCE
	bool "Disable source"
	default n

config NSH_DISABLE_SHUTDOWN
	bool "Disable shutdown"
	default n if !DEFAULT_SMALL && BOARD_POWEROFF && BOARD_RESET
	default y if DEFAULT_SMALL || !BOARD_POWEROFF || !BOARD_RESET
	depends on BOARDCTL_POWEROFF || BOARDCTL_RESET

config NSH_DISABLE_SLEEP
	bool "Disable sleep"
	default n

config NSH_DISABLE_TIME
	bool "Disable time"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL

config NSH_DISABLE_TEST
	bool "Disable test"
	default n

config NSH_DISABLE_TELNETD
	bool "Disable telnetd"
	default n if !NSH_NETLOCAL
	default y if NSH_NETLOCAL

config NSH_DISABLE_TRUNCATE
	bool "Disable truncate"
	default y

config NSH_DISABLE_UMOUNT
	bool "Disable umount"
	default n

config NSH_DISABLE_UNAME
	bool "Disable uname"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL

config NSH_DISABLE_UNSET
	bool "Disable unset"
	default n

config NSH_DISABLE_URLDECODE
	bool "Disable urldecode"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL
	depends on NETUTILS_CODECS && CODECS_URLCODE

config NSH_DISABLE_URLENCODE
	bool "Disable urlencode"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL
	depends on NETUTILS_CODECS && CODECS_URLCODE

config NSH_DISABLE_USERADD
	bool "Disable useradd"
	default y
	depends on NSH_LOGIN_PASSWD && !FSUTILS_PASSWD_READONLY

config NSH_DISABLE_USERDEL
	bool "Disable userdel"
	default y
	depends on NSH_LOGIN_PASSWD && !FSUTILS_PASSWD_READONLY

config NSH_DISABLE_USLEEP
	bool "Disable usleep"
	default n

config NSH_DISABLE_WGET
	bool "Disable wget"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL

config NSH_DISABLE_XD
	bool "Disable xd"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL

endmenu

if MMCSD

config NSH_MMCSDMINOR
	int "MMC/SD minor number"
	default 0
	---help---
		If board-specific NSH start-up logic needs to mount an MMC/SD device, then the
		setting should be provided to identify the MMC/SD minor device number (i.e., the N ini
		/dev/mmcsdN).  Default 0

config NSH_MMCSDSLOTNO
	int "MMC/SD slot number"
	default 0
	---help---
		If board-specific NSH start-up supports more than one MMC/SD slot, then this setting
		should be provided to indicate which slot should be used.  Default: 0.

config NSH_MMCSDSPIPORTNO
	int "MMC/SD SPI device number"
	default 0
	depends on MMCSD_SPI
	---help---
		If board-specif NSH start-up logic will mount an SPI-based MMC/SD volume, then this
		setting may be needed to tell the board logic which SPI bus to use.  Default: 0
		(meaning is board-specific).

endif # MMCSD

menu "Configure Command Options"

config NSH_VARS
	bool "NSH variables"
	default n
	---help---
		By default, there are no internal NSH variables.  NSH will use OS
		environment variables for all variable storage.  If this option, NSH
		will also support local NSH variables.  These variables are, for the
		most part, transparent and work just like the OS environment
		variables.  The difference is that when you create new tasks, all of
		environment variables are inherited by the created tasks.  NSH local
		variables are not.

		If this option is enabled (and CONFIG_DISABLE_ENVIRON is not), then a
		new command called 'export' is enabled.  The export command works very
		must like the set command except that is operates on environment
		variables.  When CONFIG_NSH_VARS is enabled, there are changes in the
		behavior of certains commands

		============== =========================== ===========================
		CMD             w/o CONFIG_NSH_VARS        w/CONFIG_NSH_VARS
		============== =========================== ===========================
		set <a> <b>    Set environment var a to b  Set NSH var a to b
		unset <a>      Unsets environment var a    Unsets both environment var
		                                           and NSH var a
		export <a> <b> Causes an error             Unsets NSH var a.  Sets
		                                           environment var a to b.
		export <a>     Causes an error             Sets environment var a to
		                                           NSH var b (or "").  Unsets
		                                           local var a.
		env            Lists all environment       Lists all environment
		               variables                   variables
		============== =========================== ===========================

config NSH_CMDOPT_DD_STATS
	bool "dd: Support transfer statistics"
	default n
	depends on !NSH_DISABLE_DD

config NSH_CODECS_BUFSIZE
	int "File buffer size used by CODEC commands"
	default 128

config NSH_CMDOPT_HEXDUMP
	bool "hexdump: Enable 'skip' and 'count' parameters"
	default n if DEFAULT_SMALL
	default y if !DEFAULT_SMALL
	depends on !NSH_DISABLE_HEXDUMP

config NSH_PROC_MOUNTPOINT
	string "procfs mountpoint"
	default "/proc"
	depends on FS_PROCFS

endmenu

config NSH_FILEIOSIZE
	int "NSH I/O buffer size"
	default 512 if DEFAULT_SMALL
	default 1024 if !DEFAULT_SMALL
	---help---
		Size of a static I/O buffer used for file access (ignored if
		there is no filesystem). Default is 512/1024.

config NSH_STRERROR
	bool "Use strerror()"
	default n
	depends on LIBC_STRERROR
	---help---
		strerror(errno) makes more readable output but strerror() is
		very large and will not be used unless this setting is 'y'
		This setting depends upon the strerror() having been enabled
		with LIBC_STRERROR.

menu "Scripting Support"

config NSH_DISABLESCRIPT
	bool "Disable script support"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL
	---help---
		This can be set to 'y' to suppress support for scripting.  This
		setting disables the 'sh', 'test', and '[' commands and the
		if-then[-else]-fi construct.  This would only be set on systems
		where a minimal footprint is a necessity and scripting is not.

if !NSH_DISABLESCRIPT

config NSH_DISABLE_ITEF
	bool "Disable if-then-else-fi"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL
	---help---
		This can be set to 'y' to suppress support for if-then-else-fi
		sequences in scripts.  This would only be set on systems where
		some minimal scripting is required but if-then-else-fi is not.

config NSH_DISABLE_LOOPS
	bool "Disable loops"
	default y if DEFAULT_SMALL
	default n if !DEFAULT_SMALL
	---help---
		This can be set to 'y' to suppress support for while-do-done and
		until-do-done sequences in scripts.  This would only be set on
		systems where some minimal scripting is required but looping
		is not.

endif # !NSH_DISABLESCRIPT

config NSH_MMCSDMINOR
	int "MMC/SD minor device number"
	default 0
	---help---
		If the architecture supports an MMC/SD slot and if the NSH
		architecture specific logic is present, this option will provide
		the MMC/SD minor number, i.e., the MMC/SD block driver will
		be registered as /dev/mmcsdN where N is the minor number.
		Default is zero.

config NSH_ROMFSETC
	bool "Support ROMFS start-up script"
	default n
	depends on FS_ROMFS
	---help---
		Mount a ROMFS filesystem at /etc and provide a startup script
		at /etc/init.d/rcS.  The default startup script will mount
		a FAT FS RAMDISK at /tmp but the logic is easily extensible.

if NSH_ROMFSETC

config NSH_CROMFSETC
	bool "Support CROMFS (compressed) start-up script"
	default n
	depends on NSH_ROMFSETC && FS_CROMFS
	---help---
		Mount a CROMFS filesystem at /etc and provide a compressed startup
		script at /etc/init.d/rcS.

config NSH_ROMFSRC
	bool "Support ROMFS login script"
	default n
	---help---
		The ROMFS start-up script will be executed exactly once.  For
		simple, persistence consoles (like a serial console).  But with
		other other kinds of consoles, there may be multiple, transient
		sessions (such as Telnet and USB consoles).  In these cases, you
		may need another script that is executed at the beginning of each
		session.  Selecting this option enables support for such a login
		script

config NSH_ROMFSMOUNTPT
	string "ROMFS mount point"
	default "/etc"
	---help---
		The default mountpoint for the ROMFS volume is /etc, but that
		can be changed with this setting.  This must be a absolute path
		beginning with '/'.

config NSH_INITSCRIPT
	string "Relative path to startup script"
	default "init.d/rcS"
	---help---
		This is the relative path to the startup script within the mountpoint.
		The default is init.d/rcS.  This is a relative path and must not
		start with '/'.

config NSH_RCSCRIPT
	string "Relative path to login script"
	default ".nshrc"
	depends on NSH_ROMFSRC
	---help---
		This is the relative path to the login script within the mountpoint.
		The default is .nshrc.  This is a relative path and must not
		start with '/'.

config NSH_ROMFSDEVNO
	int "ROMFS block device minor number"
	default 0
	---help---
		This is the minor number of the ROMFS block device.  The default is
		'0' corresponding to /dev/ram0.

config NSH_ROMFSSECTSIZE
	int "ROMFS sector size"
	default 64
	---help---
		This is the sector size to use with the ROMFS volume.  Since the
		default volume is very small, this defaults to 64 but should be
		increased if the ROMFS volume were to be become large.  Any value
		selected must be a power of 2.

choice
	prompt "ROMFS header location"
	default NSH_DEFAULTROMFS

config NSH_DEFAULTROMFS
	bool "Default ROMFS header path"
	---help---
		Selects the default header located in the source directory of the
		NSH library.

config NSH_ARCHROMFS
	bool "Architecture-specific ROMFS path"
	---help---
		Enable this option to provide an architecture-specific ROMFS
		header at arch/<boardname>/nsh_romfsimg.h.  Note that this header
		will be linked (or copied) from nuttx/boards/<arch>/<chip>/<board>/include
		and should be stored at that location in the nuttx boards/
		sub-directory.

config NSH_CUSTOMROMFS
	bool "Custom ROMFS header path"
	---help---
		Enable this option to provide a custom ROMFS header. The path to
		the header file can be specified in the option "Custom ROMFS header
		file".

endchoice

if NSH_CUSTOMROMFS

config NSH_CUSTOMROMFS_HEADER
	string "Custom ROMFS header file path"
	default ""
	---help---
		Specifies the path to the custom ROMFS header file.  This must be
		either a full path or a path relative to one of the include file
		search paths provided in your CFLAGS.

endif #NSH_CUSTOMROMFS

config NSH_FATDEVNO
	int "FAT block device minor number"
	default 1
	depends on FS_FAT
	---help---
		When the default rcS file used when NSH_ROMFSETC is selected, it
		will mount a FAT FS under /tmp. This is the minor number of the FAT
		FS block device.  The default is '1' corresponding to /dev/ram1.

config NSH_FATSECTSIZE
	int "FAT sector size"
	default 512
	depends on FS_FAT
	---help---
		When the default rcS file used when NSH_ROMFSETC is selected, it
		will mount a FAT FS under /tmp. This is the sector size use with the
		FAT FS. Default is 512.

config NSH_FATNSECTORS
	int "FAT number of sectors"
	default 1024
	depends on FS_FAT
	---help---
		When the default rcS file used when NSH_ROMFSETC is selected, it
		will mount a FAT FS under /tmp. This is the number of sectors to use
		with the FAT FS.  Default is 1024.  The amount of memory used by the
		FAT FS will be NSH_FATSECTSIZE * NSH_FATNSECTORS bytes.

config NSH_FATMOUNTPT
	string "FAT mount point"
	default "/tmp"
	depends on FS_FAT
	---help---
		When the default rcS file used when NSH_ROMFSETC is selected, it
		will mount a FAT FS under /tmp. This is the location where the FAT
		FS will be mounted.  Default is "/tmp".

endif # NSH_ROMFSETC
endmenu # Scripting Support

menu "Console Configuration"

config NSH_CONSOLE
	bool "Use console"
	default y
	---help---
		If NSH_CONSOLE is set to 'y', then a character driver
		console front-end is selected (/dev/console).

		Normally, the serial console device is a UART and RS-232
		interface.  However, if USBDEV is defined, then a USB
		serial device may, instead, be used if the one of
		the following are defined:

		PL2303 and PL2303_CONSOLE - Set up the Prolifics PL2303
		emulation as a console device at /dev/console.

		CDCACM and CDCACM_CONSOLE - Set up the CDC/ACM serial
		device as a console device at dev/console.

		NSH_USBCONSOLE and NSH_USBCONDEV - Sets up some other USB
		serial device as the NSH console (not necessarily dev/console).

config NSH_USBCONSOLE
	bool "Use a USB serial console"
	default n
	depends on LIB_BOARDCTL && NSH_CONSOLE && USBDEV && (CDCACM || PL2303)
	select BOARDCTL_USBDEVCTRL
	---help---
		If defined, then the an arbitrary USB serial device may be used
		to as the NSH console.  In this case, NSH_USBCONDEV must be defined
		to indicate which USB serial device to use as the console.

if NSH_USBCONSOLE

config NSH_USBCONDEV
	string "USB serial console device"
	default "/dev/ttyACM0" if CDCACM
	default "/dev/ttyUSB0" if !CDCACM
	---help---
		If NSH_USBCONSOLE is set to 'y', then NSH_USBCONDEV must
		also be set to select the USB device used to support the
		NSH console.   This should be set to the quoted name of a
		read-/write-able USB driver.  Default: "/dev/ttyACM0".

config USBDEV_MINOR
	int "USB serial console device minor number"
	default 0
	---help---
		If there are more than one USB devices, then a USB device
		minor number may also need to be provided. Default: 0

endif # NSH_USBCONSOLE

config NSH_ALTCONDEV
	bool "Alternative console device"
	default n
	depends on NSH_CONSOLE && !NSH_USBCONSOLE && !NSH_TELNET
	---help---
		If CONFIG_NSH_CONSOLE is set to y, then CONFIG_NSH_ALTCONDEV may
		also be selected to enable use of an alternate character device
		to support the NSH console. If CONFIG_NSH_ALTCONDEV is selected,
		then NSH_ALTSTDIN, NSH_ALTSTDOUT and NSH_ALTSTDERR must be set
		to select the serial devices used to support the NSH console.
		This may be useful, for example, to separate the NSH command
		line from the system console when the system console is used to
		provide debug output.

		Default: stdin, stderr and stdout (probably "/dev/console")

		NOTE 1: When any other device other than /dev/console is used
		for a user interface, (1) linefeeds (\n) will not be expanded to
		carriage return / linefeeds (\r\n).  You will need to set
		your terminal program to account for this.  And (2) input is
		not automatically echoed so you will have to turn local echo on.

		NOTE 2:  This option forces the console of all sessions to use
		NSH_ALTSTD(IN/OUT/ERR).  Hence, this option only makes sense for
		a system that supports only a single session.  This option is,
		in particular, incompatible with Telnet sessions because each
		Telnet session must use a different console device.

if NSH_ALTCONDEV

config NSH_ALTSTDIN
	string "Alternative console \"stdin\" device name"
	default "/dev/console"
	---help---
		If CONFIG_NSH_CONSOLE is set to y, then CONFIG_NSH_ALTCONDEV may
		also be selected to enable use of an alternate character device
		to support the NSH console. If CONFIG_NSH_ALTCONDEV is selected,
		then NSH_ALTSTDIN must be set to select the "stdin" device to
		support the NSH console.   This should be set to the quoted name
		of a readable character driver such as:

			NSH_ALTSTDIN="/dev/ttyS1".

		This way the input will come from "/dev/ttyS1".

config NSH_ALTSTDOUT
	string "Alternative console \"stdout\" device name"
	default "/dev/console" if !SLCD_CONSOLE
	default "/dev/slcd0"   if SLCD_CONSOLE
	---help---
		If CONFIG_NSH_CONSOLE is set to y, then CONFIG_NSH_ALTCONDEV may
		also be selected to enable use of an alternate character device
		to support the NSH console. If CONFIG_NSH_ALTCONDEV is selected,
		then NSH_ALTSTDOUT must be set to select the "stdout" device to
		support the NSH console.   This should be set to the quoted name
		of a write-able character driver such as:

			NSH_ALTSTDIN="/dev/ttyS1".

		This way the standard output will go to "/dev/ttyS1".

config NSH_ALTSTDERR
	string "Alternative console \"stderr\" device name"
	default "/dev/console" if !SLCD_CONSOLE
	default "/dev/slcd0"   if SLCD_CONSOLE
	---help---
		If CONFIG_NSH_CONSOLE is set to y, then CONFIG_NSH_ALTCONDEV may
		also be selected to enable use of an alternate character device
		to support the NSH console. If CONFIG_NSH_ALTCONDEV is selected,
		then NSH_ALTSTDERR must be set to select the "stderr" device to
		support the NSH console.   This should be set to the quoted name
		of a write-able character driver such as:

			NSH_ALTSTDIN="/dev/ttyS1".

		This way the standard error output will go to "/dev/ttyS1".

endif # NSH_ALTCONDEV

config NSH_USBKBD
	bool "Use USB keyboard input"
	default n
	depends on NSH_CONSOLE && USBHOST_HIDKBD && !NSH_USBCONSOLE
	---help---
		Normally NSH uses the same device for stdin, stdout, and stderr.  By
		default, that device is /dev/console.  If this option is selected,
		then NSH will use a USB HID keyboard for stdin.  In this case, the
		keyboard is connected directly to the target (via a USB host
		interface) and the data from the keyboard will drive NSH.  NSH
		output (stdout and stderr) will still go to /dev/console.

if NSH_USBKBD

config NSH_USBKBD_DEVNAME
	string "USB keyboard device"
	default "/dev/kbda"
	---help---
		If NSH_USBKBD is set to 'y', then NSH_USBKBD_DEVNAME must also be
		set to select the USB keyboard device used to support the NSH
		console input.   This should be set to the quoted name of a read-
		able keyboard driver. Default: "/dev/kbda".

endif #NSH_USBKBD
endmenu # Console Configuration

menu "USB Device Trace Support"
	depends on USBDEV && (DEBUG_FEATURES || USBDEV_TRACE)

config NSH_USBDEV_TRACE
	bool "Enable Builtin USB Trace Support"
	default n
	---help---
		Enable builtin USB trace support in NSH.  If selected, buffered USB
		trace data will be presented each time a command is provided to NSH.
		The USB trace data will be sent to the console unless CONFIG_DEBUG_FEATURES
		set or unless you are using a USB console.  In those cases, the trace
		data will go to the SYSLOG device.

		If not enabled, the USB trace support can be provided by external
		logic such as nuttx/drivers/usbmonitor.

if NSH_USBDEV_TRACE

config NSH_USBDEV_TRACEINIT
	bool "Show initialization events"
	default n
	---help---
		Show initialization events

config NSH_USBDEV_TRACECLASS
	bool "Show class driver events"
	default n
	---help---
		Show class driver events

config NSH_USBDEV_TRACETRANSFERS
	bool "Show data transfer events"
	default n
	---help---
		Show data transfer events

config NSH_USBDEV_TRACECONTROLLER
	bool "Show controller events"
	default n
	---help---
		Show controller events

config NSH_USBDEV_TRACEINTERRUPTS
	bool "Show interrupt-related events"
	default n
	---help---
		Show interrupt-related events

endif # NSH_USBDEV_TRACE
endmenu # USB Device Trace Support

config NSH_ARCHINIT
	bool "Have architecture-specific initialization"
	default n
	select LIB_BOARDCTL
	---help---
		Set if your board provides architecture specific initialization
		via the board-interface function boardctl().  The boardctl()
		function will be called early in NSH initialization to allow
		board logic to do such things as configure MMC/SD slots.

menu "Networking Configuration"
	depends on NET

config NSH_NETINIT
	bool "Network initialization"
	default y
	depends on NET
	select NETUTILS_NETINIT
	---help---
		This option enables/disables all network initialization in NSH.

if !NSH_DISABLE_WGET
config NSH_WGET_BUFF_SIZE
	int "wget buffer size"
	default 512
	---help---
		Buffer size for wget command
endif # NSH_DISABLE_WGET

endmenu # Networking Configuration"

menu "Telnet Configuration"
	depends on NETUTILS_TELNETD

config NSH_TELNET
	bool "Use Telnet console"
	default n if DEFAULT_SMALL
	default y if !DEFAULT_SMALL
	depends on NETUTILS_TELNETD
	---help---
		If NSH_TELNET is set to 'y', then a TELENET
		server front-end is selected.  When this option is provided,
		you may log into NuttX remotely using telnet in order to
		access NSH.

if NSH_TELNET

config NSH_TELNETD_PORT
	int "Telnet port number"
	default 23
	---help---
		The telnet daemon will listen on this TCP port number for connections.
		Default: 23

config NSH_TELNETD_DAEMONPRIO
	int "Telnet daemon priority"
	default 100
	---help---
		Priority of the Telnet daemon. Default: 100

config NSH_TELNETD_DAEMONSTACKSIZE
	int "Telnet daemon stack size"
	default DEFAULT_TASK_STACKSIZE
	---help---
		Stack size allocated for the Telnet daemon. Default: 2048

config NSH_TELNETD_CLIENTPRIO
	int "Telnet client priority"
	default 100
	---help---
		Priority of the Telnet client. Default: 100

config NSH_TELNETD_CLIENTSTACKSIZE
	int "Telnet client stack size"
	default DEFAULT_TASK_STACKSIZE
	---help---
		Stack size allocated for the Telnet client. Default: 2048

config NSH_IOBUFFER_SIZE
	int "Telnet I/O buffer size"
	default 512
	---help---
		Determines the size of the I/O buffer to use for sending/
		receiving TELNET commands/responses.  Default: 512

endif # NSH_TELNET
endmenu # Telnet Configuration

config NSH_LOGIN
	bool
	default n

config NSH_CONSOLE_LOGIN
	bool "Console Login"
	default n
	select NSH_LOGIN
	---help---
		If defined, then the console user will be required to provide a
		username and password to start the NSH shell.

config NSH_TELNET_LOGIN
	bool "Telnet Login"
	default n
	depends on NSH_TELNET
	select NSH_LOGIN
	---help---
		If defined, then the Telnet user will be required to provide a
		username and password to start the NSH shell.

if NSH_LOGIN

choice
	prompt "Verification method"
	default NSH_LOGIN_PASSWD if FSUTILS_PASSWD
	default NSH_LOGIN_FIXED if !FSUTILS_PASSWD

config NSH_LOGIN_FIXED
	bool "Fixed username/password"
	---help---
		Verify user credentials by matching to fixed username and password
		strings

config NSH_LOGIN_PLATFORM
	bool "Platform username/password"
	---help---
		Call a platform-specific function to perform the verification of
		user credentials.  In this case, the platform-specific logic must
		provide a function with the following prototype:

			int platform_user_verify(FAR const char *username, FAR const char *password);

		which is prototyped an described in apps/include/nshlib/nshlib.h and
		which may be included like:

			#include "nshlib/nshlib.h"

		An appropriate place to implement this function might be in the
		directory apps/platform/<board>.

config NSH_LOGIN_PASSWD
	bool "Encrypted password file"
	depends on FSUTILS_PASSWD
	---help---
		Use the content of an encrypted password file to verify user
		credentials.  This option requires that you have selected
		CONFIG_FSUTILS_PASSWD to enable the access methods of
		apps/fsutils/passwd.

endchoice # Verification method

config NSH_LOGIN_USERNAME
	string "Login username"
	default "admin"
	depends on !NSH_LOGIN_PASSWD
	---help---
		Login user name.  Default: "admin"

config NSH_LOGIN_PASSWORD
	string "Login password"
	default "Administrator"
	depends on !NSH_LOGIN_PASSWD
	---help---
		Login password:  Default: "Administrator"

config NSH_LOGIN_FAILDELAY
	int "Login failure delay"
	default 0
	---help---
		Login failure delay in milliseconds.  The system will pause this
		amount of time after each failed login attempt in order to
		discourage people from cracking the password by brute force.  The
		value zero may be supplied to disable the delay.

config NSH_LOGIN_FAILCOUNT
	int "Login retry count"
	default 3
	---help---
		Number of login retry attempts.

endif # NSH_LOGIN
endif # NSH_LIBRARY
endmenu # NSH Library