int nxcon_server(int argc, char *argv[])
{
  FAR NX_DRIVERTYPE *dev;
  int ret;

#if defined(CONFIG_EXAMPLES_NXCON_EXTERNINIT)
  /* Use external graphics driver initialization */

  message("nxcon_server: Initializing external graphics device\n");
  dev = up_nxdrvinit(CONFIG_EXAMPLES_NXCON_DEVNO);
  if (!dev)
    {
      message("nxcon_server: up_nxdrvinit failed, devno=%d\n", CONFIG_EXAMPLES_NXCON_DEVNO);
      return ERROR;
    }

#elif defined(CONFIG_NX_LCDDRIVER)
  /* Initialize the LCD device */

  message("nxcon_server: Initializing LCD\n");
  ret = up_lcdinitialize();
  if (ret < 0)
    {
      message("nxcon_server: up_lcdinitialize failed: %d\n", -ret);
      return 1;
    }

  /* Get the device instance */

  dev = up_lcdgetdev(CONFIG_EXAMPLES_NXCON_DEVNO);
  if (!dev)
    {
      message("nxcon_server: up_lcdgetdev failed, devno=%d\n", CONFIG_EXAMPLES_NXCON_DEVNO);
      return 2;
    }

  /* Turn the LCD on at 75% power */

  (void)dev->setpower(dev, ((3*CONFIG_LCD_MAXPOWER + 3)/4));
#else
  /* Initialize the frame buffer device */

  message("nxcon_server: Initializing framebuffer\n");
  ret = up_fbinitialize();
  if (ret < 0)
    {
      message("nxcon_server: up_fbinitialize failed: %d\n", -ret);
      return 1;
    }

  dev = up_fbgetvplane(CONFIG_EXAMPLES_NXCON_VPLANE);
  if (!dev)
    {
      message("nxcon_server: up_fbgetvplane failed, vplane=%d\n", CONFIG_EXAMPLES_NXCON_VPLANE);
      return 2;
    }
#endif

  /* Then start the server */

  ret = nx_run(dev);
  gvdbg("nx_run returned: %d\n", errno);
  return 3;
}
示例#2
0
static inline int nxlines_initialize(void)
{
    FAR NX_DRIVERTYPE *dev;

#if defined(CONFIG_EXAMPLES_NXLINES_EXTERNINIT)
    /* Use external graphics driver initialization */

    message("nxlines_initialize: Initializing external graphics device\n");
    dev = up_nxdrvinit(CONFIG_EXAMPLES_NXLINES_DEVNO);
    if (!dev)
    {
        message("nxlines_initialize: up_nxdrvinit failed, devno=%d\n",
                CONFIG_EXAMPLES_NXLINES_DEVNO);
        g_nxlines.code = NXEXIT_EXTINITIALIZE;
        return ERROR;
    }

#elif defined(CONFIG_NX_LCDDRIVER)
    int ret;

    /* Initialize the LCD device */

    message("nxlines_initialize: Initializing LCD\n");
    ret = up_lcdinitialize();
    if (ret < 0)
    {
        message("nxlines_initialize: up_lcdinitialize failed: %d\n", -ret);
        g_nxlines.code = NXEXIT_LCDINITIALIZE;
        return ERROR;
    }

    /* Get the device instance */

    dev = up_lcdgetdev(CONFIG_EXAMPLES_NXLINES_DEVNO);
    if (!dev)
    {
        message("nxlines_initialize: up_lcdgetdev failed, devno=%d\n", CONFIG_EXAMPLES_NXLINES_DEVNO);
        g_nxlines.code = NXEXIT_LCDGETDEV;
        return ERROR;
    }

    /* Turn the LCD on at 75% power */

    (void)dev->setpower(dev, ((3*CONFIG_LCD_MAXPOWER + 3)/4));
#else
    int ret;

    /* Initialize the frame buffer device */

    message("nxlines_initialize: Initializing framebuffer\n");
    ret = up_fbinitialize();
    if (ret < 0)
    {
        message("nxlines_initialize: up_fbinitialize failed: %d\n", -ret);
        g_nxlines.code = NXEXIT_FBINITIALIZE;
        return ERROR;
    }

    dev = up_fbgetvplane(CONFIG_EXAMPLES_NXLINES_VPLANE);
    if (!dev)
    {
        message("nxlines_initialize: up_fbgetvplane failed, vplane=%d\n", CONFIG_EXAMPLES_NXLINES_VPLANE);
        g_nxlines.code = NXEXIT_FBGETVPLANE;
        return ERROR;
    }
#endif

    /* Then open NX */

    message("nxlines_initialize: Open NX\n");
    g_nxlines.hnx = nx_open(dev);
    if (!g_nxlines.hnx)
    {
        message("nxlines_initialize: nx_open failed: %d\n", errno);
        g_nxlines.code = NXEXIT_NXOPEN;
        return ERROR;
    }

    return OK;
}
int nsh_archinitialize(void)
{
#if defined(HAVE_USBHOST) || defined(HAVE_USBMONITOR)
    int ret;
#endif
#ifdef CONFIG_STM32_SPI3
    FAR struct spi_dev_s *spi;
    FAR struct mtd_dev_s *mtd;
#endif
    int ret;

    /* Configure SPI-based devices */

#ifdef CONFIG_STM32_SPI3
    /* Get the SPI port */

    message("nsh_archinitialize: Initializing SPI port 3\n");
    spi = up_spiinitialize(3);
    if (!spi)
    {
        message("nsh_archinitialize: Failed to initialize SPI port 3\n");
        return -ENODEV;
    }

    message("nsh_archinitialize: Successfully initialized SPI port 3\n");

    /* Now bind the SPI interface to the M25P8 SPI FLASH driver */

#if defined(CONFIG_MTD) && defined(CONFIG_MIKROE_FLASH)
    message("nsh_archinitialize: Bind SPI to the SPI flash driver\n");
    mtd = m25p_initialize(spi);
    if (!mtd)
    {
        message("nsh_archinitialize: Failed to bind SPI port 3 to the SPI FLASH driver\n");
    }
    else
    {
        message("nsh_archinitialize: Successfully bound SPI port 3 to the SPI FLASH driver\n");

#ifdef CONFIG_MIKROE_FLASH_PART
        {
            int partno;
            int partsize;
            int partoffset;
            const char *partstring = CONFIG_MIKROE_FLASH_PART_LIST;
            const char *ptr;
            FAR struct mtd_dev_s *mtd_part;
            char  partname[4];

            /* Now create a partition on the FLASH device */

            partno = 0;
            ptr = partstring;
            partoffset = 0;

            while (*ptr != '\0')
            {
                /* Get the partition size */

                partsize = atoi(ptr);
                mtd_part = mtd_partition(mtd, partoffset, (partsize>>2)*16);
                partoffset += (partsize >> 2) * 16;

#ifdef CONFIG_MIKROE_FLASH_CONFIG_PART
                /* Test if this is the config partition */

                if (CONFIG_MIKROE_FLASH_CONFIG_PART_NUMBER == partno)
                {
                    /* Register the partition as the config device */

                    mtdconfig_register(mtd_part);
                }
                else
#endif
                {
                    /* Now initialize a SMART Flash block device and bind it
                     * to the MTD device.
                     */

#if defined(CONFIG_MTD_SMART) && defined(CONFIG_FS_SMARTFS)
                    sprintf(partname, "p%d", partno);
                    smart_initialize(CONFIG_MIKROE_FLASH_MINOR, mtd_part, partname);
#endif
                }

                /* Update the pointer to point to the next size in the list */

                while ((*ptr >= '0') && (*ptr <= '9'))
                {
                    ptr++;
                }

                if (*ptr == ',')
                {
                    ptr++;
                }

                /* Increment the part number */

                partno++;
            }
#else /* CONFIG_MIKROE_FLASH_PART */

        /* Configure the device with no partition support */

        smart_initialize(CONFIG_MIKROE_FLASH_MINOR, mtd, NULL);

#endif /* CONFIG_MIKROE_FLASH_PART */
        }
    }

    /* Create a RAM MTD device if configured */

#if defined(CONFIG_RAMMTD) && defined(CONFIG_MIKROE_RAMMTD)
    {
        uint8_t *start = (uint8_t *) kmalloc(CONFIG_MIKROE_RAMMTD_SIZE * 1024);
        mtd = rammtd_initialize(start, CONFIG_MIKROE_RAMMTD_SIZE * 1024);
        mtd->ioctl(mtd, MTDIOC_BULKERASE, 0);

        /* Now initialize a SMART Flash block device and bind it to the MTD device */

#if defined(CONFIG_MTD_SMART) && defined(CONFIG_FS_SMARTFS)
        smart_initialize(CONFIG_MIKROE_RAMMTD_MINOR, mtd, NULL);
#endif
    }

#endif /* CONFIG_RAMMTD && CONFIG_MIKROE_RAMMTD */

#endif /* CONFIG_MTD */
#endif /* CONFIG_STM32_SPI3 */

    /* Create the SPI FLASH MTD instance */
    /* The M25Pxx is not a good media to implement a file system..
     * its block sizes are too large
     */

    /* Mount the SDIO-based MMC/SD block driver */

#ifdef NSH_HAVEMMCSD
    /* Bind the spi interface to the MMC/SD driver */

    message("nsh_archinitialize: Bind SDIO to the MMC/SD driver, minor=%d\n",
            CONFIG_NSH_MMCSDMINOR);
    ret = mmcsd_spislotinitialize(CONFIG_NSH_MMCSDMINOR, CONFIG_NSH_MMCSDSLOTNO, spi);
    if (ret != OK)
    {
        message("nsh_archinitialize: Failed to bind SPI to the MMC/SD driver: %d\n", ret);
    }
    else
    {
        message("nsh_archinitialize: Successfully bound SPI to the MMC/SD driver\n");
    }
#endif

#ifdef HAVE_USBHOST
    /* Initialize USB host operation.  stm32_usbhost_initialize() starts a thread
     * will monitor for USB connection and disconnection events.
     */

    ret = stm32_usbhost_initialize();
    if (ret != OK)
    {
        message("nsh_archinitialize: Failed to initialize USB host: %d\n", ret);
        return ret;
    }
#endif

#ifdef HAVE_USBMONITOR
    /* Start the USB Monitor */

    ret = usbmonitor_start(0, NULL);
    if (ret != OK)
    {
        message("nsh_archinitialize: Start USB monitor: %d\n", ret);
    }
#endif

#ifdef CONFIG_LCD_MIO283QT2
    /* Configure the TFT LCD module */

    message("nsh_archinitialize: Initializing TFT LCD module\n");

    ret = up_lcdinitialize();
    if (ret != OK)
    {
        message("nsh_archinitialize: Failed to initialize TFT LCD module\n");
    }

#endif

    /* Configure the Audio sub-system if enabled and bind it to SPI 3 */

#ifdef CONFIG_AUDIO

    up_vs1053initialize(spi);

#endif

    return OK;
}
示例#4
0
int nx_server(int argc, char *argv[])
{
  FAR NX_DRIVERTYPE *dev;
  int ret;

#if defined(CONFIG_NXSTART_EXTERNINIT)
  /* Use external graphics driver initialization */

  dev = up_nxdrvinit(CONFIG_NXSTART_DEVNO);
  if (!dev)
    {
      gdbg("ERROR: up_nxdrvinit failed, devno=%d\n", CONFIG_NXSTART_DEVNO);
      return EXIT_FAILURE;
    }

#elif defined(CONFIG_NX_LCDDRIVER)
  /* Initialize the LCD device */

  ret = up_lcdinitialize();
  if (ret < 0)
    {
      gdbg("ERROR: up_lcdinitialize failed: %d\n", ret);
      return EXIT_FAILURE;
    }

  /* Get the device instance */

  dev = up_lcdgetdev(CONFIG_NXSTART_DEVNO);
  if (!dev)
    {
      gdbg("ERROR: up_lcdgetdev failed, devno=%d\n", CONFIG_NXSTART_DEVNO);
      return EXIT_FAILURE;
    }

  /* Turn the LCD on at 75% power */

  (void)dev->setpower(dev, ((3*CONFIG_LCD_MAXPOWER + 3)/4));

#else /* CONFIG_NX_LCDDRIVER */
  /* Initialize the frame buffer device */

  ret = up_fbinitialize();
  if (ret < 0)
    {
      gdbg("ERROR: up_fbinitialize failed: %d\n", ret);
      return EXIT_FAILURE;
    }

  dev = up_fbgetvplane(CONFIG_NXSTART_VPLANE);
  if (!dev)
    {
      gdbg("ERROR: up_fbgetvplane failed, vplane=%d\n", CONFIG_NXSTART_VPLANE);
      return EXIT_FAILURE;
    }

#endif /* CONFIG_NX_LCDDRIVER */

  /* Then start the server (nx_run does not normally return) */

  ret = nx_run(dev);
  gvdbg("nx_run returned: %d\n", ret);
  return EXIT_FAILURE;
}