From fd5d0e19dc678717f08313ffcba398119845777a Mon Sep 17 00:00:00 2001
From: Gregory Nutt <gnutt@nuttx.org>
Date: Wed, 30 Mar 2016 18:19:27 -0600
Subject: [PATCH] Remove apps/system/sdcard

---
 ChangeLog.txt            |   5 ++
 system/Kconfig           |   1 -
 system/Make.defs         |   4 -
 system/Makefile          |   2 +-
 system/sdcard/.gitignore |  11 ---
 system/sdcard/Kconfig    |  14 ----
 system/sdcard/Makefile   | 149 -----------------------------------
 system/sdcard/sdcard.c   | 162 ---------------------------------------
 8 files changed, 6 insertions(+), 342 deletions(-)
 delete mode 100644 system/sdcard/.gitignore
 delete mode 100644 system/sdcard/Kconfig
 delete mode 100644 system/sdcard/Makefile
 delete mode 100644 system/sdcard/sdcard.c

diff --git a/ChangeLog.txt b/ChangeLog.txt
index b04e2af87..e86bc10eb 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -1575,3 +1575,8 @@
 	  (2016-03-25).
 
 7.16 2016-xx-xx Gregory Nutt <gnutt@nuttx.org>
+
+	* apps/system/sdcard:  Remove the SD card application.  This
+	  application violates OS/application interface rules and has been
+	  moved to Obsoleted/apps/system/sdcard (2016-03-29).
+
diff --git a/system/Kconfig b/system/Kconfig
index 3b0758f0f..8ad2b6769 100644
--- a/system/Kconfig
+++ b/system/Kconfig
@@ -19,7 +19,6 @@ source "$APPSDIR/system/ramtest/Kconfig"
 source "$APPSDIR/system/readline/Kconfig"
 source "$APPSDIR/system/prun/Kconfig"
 source "$APPSDIR/system/mdio/Kconfig"
-source "$APPSDIR/system/sdcard/Kconfig"
 source "$APPSDIR/system/sudoku/Kconfig"
 source "$APPSDIR/system/lm75/Kconfig"
 source "$APPSDIR/system/vi/Kconfig"
diff --git a/system/Make.defs b/system/Make.defs
index 24111c615..2caba6179 100644
--- a/system/Make.defs
+++ b/system/Make.defs
@@ -102,10 +102,6 @@ ifeq ($(CONFIG_SYSTEM_READLINE),y)
 CONFIGURED_APPS += system/readline
 endif
 
-ifeq ($(CONFIG_SYSTEM_SDCARD),y)
-CONFIGURED_APPS += system/sdcard
-endif
-
 ifeq ($(CONFIG_SYSTEM_SUDOKU),y)
 CONFIGURED_APPS += system/sudoku
 endif
diff --git a/system/Makefile b/system/Makefile
index 353a06338..04b2deef5 100644
--- a/system/Makefile
+++ b/system/Makefile
@@ -38,7 +38,7 @@
 # Sub-directories containing system tasks/libraries
 
 SUBDIRS  = cdcacm cle composite cu flash_eraseall free i2c hex2bin install
-SUBDIRS += hexed lm75 mdio netdb nxplayer ramtest readline sdcard
+SUBDIRS += hexed lm75 mdio netdb nxplayer ramtest readline
 SUBDIRS += stackmonitor sudoku symtab ubloxmodem usbmonitor usbmsc vi
 SUBDIRS += zmodem zoneinfo
 
diff --git a/system/sdcard/.gitignore b/system/sdcard/.gitignore
deleted file mode 100644
index 83bd7b811..000000000
--- a/system/sdcard/.gitignore
+++ /dev/null
@@ -1,11 +0,0 @@
-/Make.dep
-/.depend
-/.built
-/*.asm
-/*.rel
-/*.lst
-/*.sym
-/*.adb
-/*.lib
-/*.src
-/*.obj
diff --git a/system/sdcard/Kconfig b/system/sdcard/Kconfig
deleted file mode 100644
index 029226c83..000000000
--- a/system/sdcard/Kconfig
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# For a description of the syntax of this configuration file,
-# see the file kconfig-language.txt in the NuttX tools repository.
-#
-
-config SYSTEM_SDCARD
-	bool "SD Card"
-	default n
-	---help---
-		Enable support for the NSH sdcard command.
-
-if SYSTEM_SDCARD
-endif
-
diff --git a/system/sdcard/Makefile b/system/sdcard/Makefile
deleted file mode 100644
index 9aac89f95..000000000
--- a/system/sdcard/Makefile
+++ /dev/null
@@ -1,149 +0,0 @@
-############################################################################
-# apps/system/sdcard/Makefile
-#
-#   Copyright (C) 2011 Uros Platise. All rights reserved.
-#   Copyright (C) 2012 Gregory Nutt. All rights reserved.
-#   Author: Uros Platise <uros.platise@isotel.eu>
-#           Gregory Nutt <gnutt@nuttx.org>
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in
-#    the documentation and/or other materials provided with the
-#    distribution.
-# 3. Neither the name NuttX nor the names of its contributors may be
-#    used to endorse or promote products derived from this software
-#    without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
-# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-############################################################################
-
-# TODO, this makefile should run make under the app dirs, instead of
-# sourcing the Make.defs!
-
--include $(TOPDIR)/.config
--include $(TOPDIR)/Make.defs
-include $(APPDIR)/Make.defs
-
-ifeq ($(WINTOOL),y)
-INCDIROPT = -w
-endif
-
-# Hello Application
-# TODO: appname can be automatically extracted from the directory name
-
-APPNAME = sdcard
-PRIORITY = SCHED_PRIORITY_DEFAULT
-STACKSIZE = 1024
-
-ASRCS =
-CSRCS =
-MAINSRC = sdcard.c
-
-AOBJS = $(ASRCS:.S=$(OBJEXT))
-COBJS = $(CSRCS:.c=$(OBJEXT))
-MAINOBJ = $(MAINSRC:.c=$(OBJEXT))
-
-SRCS = $(ASRCS) $(CSRCS) $(MAINSRC)
-OBJS = $(AOBJS) $(COBJS)
-
-ifneq ($(CONFIG_BUILD_KERNEL),y)
-  OBJS += $(MAINOBJ)
-endif
-
-ifeq ($(CONFIG_WINDOWS_NATIVE),y)
-  BIN = ..\..\libapps$(LIBEXT)
-else
-ifeq ($(WINTOOL),y)
-  BIN = ..\\..\\libapps$(LIBEXT)
-else
-  BIN = ../../libapps$(LIBEXT)
-endif
-endif
-
-ifeq ($(WINTOOL),y)
-  INSTALL_DIR = "${shell cygpath -w $(BIN_DIR)}"
-else
-  INSTALL_DIR = $(BIN_DIR)
-endif
-
-CONFIG_XYZ_PROGNAME ?= sdcard$(EXEEXT)
-PROGNAME = $(CONFIG_XYZ_PROGNAME)
-
-ROOTDEPPATH = --dep-path .
-
-# Common build
-
-VPATH =
-
-all: .built
-.PHONY: context depend clean distclean
-
-$(AOBJS): %$(OBJEXT): %.S
-	$(call ASSEMBLE, $<, $@)
-
-$(COBJS) $(MAINOBJ): %$(OBJEXT): %.c
-	$(call COMPILE, $<, $@)
-
-.built: $(OBJS)
-	$(call ARCHIVE, $(BIN), $(OBJS))
-	$(Q) touch .built
-
-ifeq ($(CONFIG_BUILD_KERNEL),y)
-$(BIN_DIR)$(DELIM)$(PROGNAME): $(OBJS) $(MAINOBJ)
-	@echo "LD: $(PROGNAME)"
-	$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $(INSTALL_DIR)$(DELIM)$(PROGNAME) $(ARCHCRT0OBJ) $(MAINOBJ) $(LDLIBS)
-	$(Q) $(NM) -u  $(INSTALL_DIR)$(DELIM)$(PROGNAME)
-
-install: $(BIN_DIR)$(DELIM)$(PROGNAME)
-
-else
-install:
-
-endif
-
-# Register application
-
-ifeq ($(CONFIG_NSH_BUILTIN_APPS),y)
-$(BUILTIN_REGISTRY)$(DELIM)$(APPNAME)_main.bdat: $(DEPCONFIG) Makefile
-	$(call REGISTER,$(APPNAME),$(PRIORITY),$(STACKSIZE),$(APPNAME)_main)
-
-context: $(BUILTIN_REGISTRY)$(DELIM)$(APPNAME)_main.bdat
-else
-context:
-endif
-
-# Create dependencies
-
-.depend: Makefile $(SRCS)
-	$(Q) $(MKDEP) $(ROOTDEPPATH) "$(CC)" -- $(CFLAGS) -- $(SRCS) >Make.dep
-	$(Q) touch $@
-
-depend: .depend
-
-clean:
-	$(call DELFILE, .built)
-	$(call CLEAN)
-
-distclean: clean
-	$(call DELFILE, Make.dep)
-	$(call DELFILE, .depend)
-
--include Make.dep
diff --git a/system/sdcard/sdcard.c b/system/sdcard/sdcard.c
deleted file mode 100644
index 1235d7f24..000000000
--- a/system/sdcard/sdcard.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/****************************************************************************
- * apps/system/sdcard/sdcard.c
- *
- *   Copyright (C) 2011 Uros Platise. All rights reserved.
- *   Copyright (C) 2009 Gregory Nutt. All rights reserved.
- *
- *   Authors: Uros Platise <uros.platise@isotel.eu>
- *            Gregory Nutt <gnutt@nuttx.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <nuttx/sdio.h>
-#include <nuttx/mmcsd.h>
-
-/****************************************************************************
- * Public Function Prototypes
- ****************************************************************************/
-
-FAR struct sdio_dev_s *sdio_initialize(int slotno);
-void sdio_mediachange(FAR struct sdio_dev_s *dev, bool cardinslot);
-
-// TODO get the structure out from the slot number
-static FAR struct sdio_dev_s *sdio = NULL;
-
-/****************************************************************************
- * Private Functions
- ****************************************************************************/
-
-/* Create device device for the SDIO-based MMC/SD block driver */
-
-static int sdcard_start(int slotno)
-{
-  int ret;
-
-  /* First, get an instance of the SDIO interface */
-
-  sdio = sdio_initialize(slotno);
-  if (!sdio)
-    {
-      printf("SDIO: Failed to initialize slot %d\n", slotno);
-      return -ENODEV;
-    }
-
-  printf("SDIO: Initialized slot %d\n", slotno);
-
-  /* Now bind the SPI interface to the MMC/SD driver */
-
-  ret = mmcsd_slotinitialize(slotno, sdio);
-  if (ret != OK)
-    {
-      printf("SDIO: Failed to bind to the MMC/SD driver: %d\n", ret);
-      return ret;
-    }
-
-  printf("SDIO: Successfully bound to the MMC/SD driver\n");
-
-  /* Then let's guess and say that there is a card in the slot.  I need to check to
-   * see if the VSN board supports a GPIO to detect if there is a card in
-   * the slot.
-   */
-  sdio_mediachange(sdio, true);
-
-  return OK;
-}
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-
-#ifdef CONFIG_BUILD_KERNEL
-int main(int argc, FAR char *argv[])
-#else
-int sdcard_main(int argc, char *argv[])
-#endif
-{
-  int slotno = 0;
-
-  if (argc >= 2) {
-
-      /* The 3rd argument is expected to be a slot number, if given */
-
-      if (argc==3)
-        {
-          slotno = atoi(argv[2]);
-        }
-
-      /* Commands */
-
-      if (!strcmp(argv[1], "start"))
-        {
-          return sdcard_start(slotno);
-        }
-      else if (!strcmp(argv[1], "stop"))
-        {
-          fprintf(stderr, "Not implemented yet\n");
-        }
-      else if (!strcmp(argv[1], "insert"))
-        {
-          if (sdio)
-            {
-              sdio_mediachange(sdio, true);
-              return OK;
-            }
-        }
-      else if (!strcmp(argv[1], "eject"))
-        {
-          if (sdio)
-            {
-              sdio_mediachange(sdio, false);
-              return OK;
-            }
-        }
-      else if (!strcmp(argv[1], "status"))
-        {
-          printf("SDcard #%d Status:\n", slotno);
-#ifndef CONFIG_MMCSD_HAVECARDDETECT
-          printf("\t - Without SDcard detect capability\n");
-#endif
-          return 0;
-        }
-    }
-
-  printf("%s: <start|stop|insert|eject|status> {slotno}\n", argv[0]);
-  return -1;
-}