Esempio n. 1
0
/**
 * Checks if the specified DeviceConfig is available on this platform.
 */
gcc_pure
static bool
DeviceConfigAvailable(const DeviceConfig &config)
{
  switch (config.port_type) {
  case DeviceConfig::DISABLED:
    return false;

  case DeviceConfig::SERIAL:
    return !is_android();

  case DeviceConfig::RFCOMM:
    return is_android();

  case DeviceConfig::AUTO:
    return is_windows_ce();

  case DeviceConfig::INTERNAL:
    return is_android();

  case DeviceConfig::TCP_LISTENER:
    return true;
  }

  /* unreachable */
  return false;
}
Esempio n. 2
0
const TCHAR *
GetHomeDataPath(TCHAR *buffer)
{
  if (is_android())
    /* hard-coded path for Android */
    return NULL;

#ifdef HAVE_POSIX
  /* on Unix or WINE, use ~/.xcsoar */
  const TCHAR *home = getenv("HOME");
  if (home != NULL) {
    _tcscpy(buffer, home);
    _tcscat(buffer, _T("/.xcsoar"));
    return buffer;
  } else
    return _T("/etc/xcsoar");
#else
  if (!SHGetSpecialFolderPath(NULL, buffer, CSIDL_PERSONAL, false))
    return NULL;

  _tcscat(buffer, _T(DIR_SEPARATOR_S));
  _tcscat(buffer, XCSDATADIR);
  return buffer;
#endif
}
static void sanremo_ts_timer_handler(unsigned long d)
{
	static u16 tem_x = 0xffff;
	static u16 tem_y = 0xffff;
	int pen_state;

	sanremo_tsi_readxy(&tem_x, &tem_y, &pen_state);
	if (pen_state) {
		tem_x = 4000 - tem_x;

		input_report_abs(sanremo_ts_input_dev,
				ABS_X, tem_x);
		input_report_abs(sanremo_ts_input_dev,
				ABS_Y, tem_y);
		if (!is_android())
			input_report_abs(sanremo_ts_input_dev,
					ABS_PRESSURE, 255);
		if (is_android()) {
			input_report_key(sanremo_ts_input_dev,
					BTN_TOUCH, 1);
			input_sync(sanremo_ts_input_dev);
		}
		sanremo_td->ts_timer->expires = jiffies+msecs_to_jiffies(100);
		add_timer(sanremo_td->ts_timer);
	} else {
		/* Report a pen up event */
		if (!is_android()) {
			input_report_abs(sanremo_ts_input_dev,
					ABS_PRESSURE, 0);
			input_report_abs(sanremo_ts_input_dev,
					ABS_TOOL_WIDTH, 1);
		}
		if (is_android()) {
			input_report_key(sanremo_ts_input_dev,
					BTN_TOUCH, 0);
			input_sync(sanremo_ts_input_dev);
		}
		sanremo_enable_pen_down_irq(1);
	}

	return;
}
static void __init tavorevb_add_onenand(void)
{
	if (is_android()) {
		tavorevb_onenand_info.parts = android_128m_v75_partitions;
		tavorevb_onenand_info.nr_parts = ARRAY_SIZE(android_128m_v75_partitions);
	} else {
		tavorevb_onenand_info.parts = generic_128m_v75_partitions;
		tavorevb_onenand_info.nr_parts = ARRAY_SIZE(generic_128m_v75_partitions);
	}
	pxa168_add_onenand(&tavorevb_onenand_info);
}
Esempio n. 5
0
static TCHAR *
FindDataPath()
{
  if (is_altair() && is_embedded())
    /* hard-coded path for Altair */
    return _tcsdup(_T("\\NOR Flash"));

  if (is_android()) {
    /* XXX use Environment.getExternalStorageDirectory() */

#ifdef ANDROID
    /* hack for Samsung Galaxy S and Samsung Galaxy Tab (which has a
       build-in and an external SD card) */
    struct stat st;
    if (stat("/sdcard/external_sd", &st) == 0 &&
        (st.st_mode & S_IFDIR) != 0 &&
        fgrep("/proc/mounts", "/sdcard/external_sd "))
      return strdup("/sdcard/external_sd/XCSoarData");
#endif

    /* hard-coded path for Android */
    return _tcsdup(_T("/sdcard/XCSoarData"));
  }

#ifdef _WIN32_WCE
  /* if XCSoar was started from a flash disk, put the XCSoarData onto
     it, too */
  {
    TCHAR buffer[MAX_PATH];
    if (ModuleInFlash(NULL, buffer) != NULL) {
      _tcscat(buffer, _T(DIR_SEPARATOR_S));
      _tcscat(buffer, XCSDATADIR);
      if (Directory::Exists(buffer))
        return _tcsdup(buffer);
    }

    /* if a flash disk with XCSoarData exists, use it */
    if (ExistingDataOnFlash(buffer) != NULL)
      return _tcsdup(buffer);
  }
#endif

  {
    TCHAR buffer[MAX_PATH];
    const TCHAR *path = GetHomeDataPath(buffer);
    if (path != NULL)
      return _tcsdup(path);
  }

  return NULL;
}
static void __init aspenite_add_nand(void)
{
	if (is_android()) {
		aspenite_nand_info.parts[0] = android_512m_v75_partitions;
		aspenite_nand_info.nr_parts[0] = ARRAY_SIZE(android_512m_v75_partitions);
	} else {
		aspenite_nand_info.parts[0] = generic_512m_v75_partitions;
		aspenite_nand_info.nr_parts[0] = ARRAY_SIZE(generic_512m_v75_partitions);
	}

	aspenite_nand_info.use_dma = 1;
	aspenite_nand_info.enable_arbiter = 1;
	pxa168_add_nand((struct flash_platform_data *) &aspenite_nand_info);
}
static void __init tavorevb_add_nand(void)
{
	if (is_android()) {
		tavorevb_nand_info.parts[0] = android_128m_v75_partitions;
		tavorevb_nand_info.nr_parts[0] = ARRAY_SIZE(android_128m_v75_partitions);
	} else {
		tavorevb_nand_info.parts[0] = generic_128m_v75_partitions;
		tavorevb_nand_info.nr_parts[0] = ARRAY_SIZE(generic_128m_v75_partitions);
	}

	tavorevb_nand_info.use_dma = 0;
	tavorevb_nand_info.enable_arbiter = 1;
	pxa168_add_nand(&tavorevb_nand_info);
}
Esempio n. 8
0
static void
UpdateDeviceControlVisibility(WndProperty &port_field,
                              WndProperty &speed_field,
                              WndProperty &driver_field)
{
  unsigned port = port_field.GetDataField()->GetAsInteger();
  enum DeviceConfig::port_type type = port < num_port_types
    ? port_types[port].type
    : (is_android()
       ? DeviceConfig::RFCOMM
       : DeviceConfig::SERIAL);

  speed_field.set_visible(DeviceConfig::UsesSpeed(type));
  driver_field.set_visible(DeviceConfig::UsesDriver(type));
}
Esempio n. 9
0
static TCHAR *
FindDataPath()
{
    if (is_altair())
        /* hard-coded path for Altair */
        return _tcsdup(_T("\\NOR Flash"));

    if (is_android())
        /* hard-coded path for Android */
        return _tcsdup(_T("/sdcard/XCSoarData"));

#ifdef _WIN32_WCE
    /* if XCSoar was started from a flash disk, put the XCSoarData onto
       it, too */
    {
        TCHAR buffer[MAX_PATH];
        if (ModuleInFlash(NULL, buffer) != NULL) {
            _tcscat(buffer, _T(DIR_SEPARATOR_S));
            _tcscat(buffer, XCSDATADIR);
            if (Directory::Exists(buffer))
                return _tcsdup(buffer);
        }

        /* if a flash disk with XCSoarData exists, use it */
        if (ExistingDataOnFlash(buffer) != NULL)
            return _tcsdup(buffer);
    }
#endif

    {
        TCHAR buffer[MAX_PATH];
        const TCHAR *path = GetHomeDataPath(buffer);
        if (path != NULL)
            return _tcsdup(path);
    }

    return NULL;
}
static void __init aspenite_init(void)
{
	mfp_config(ARRAY_AND_SIZE(aspenite_pin_config));
        pxa168_set_vdd_iox(VDD_IO0, VDD_IO_3P3V);
	pxa168_set_vdd_iox(VDD_IO1, VDD_IO_3P3V);
	pxa168_set_vdd_iox(VDD_IO2, VDD_IO_3P3V);
	pxa168_set_vdd_iox(VDD_IO3, VDD_IO_3P3V);
	pxa168_set_vdd_iox(VDD_IO4, VDD_IO_3P3V);
	pxa168_mfp_set_fastio_drive(MFP_DS02X);

	/* on-chip devices */
	pxa168_add_uart(1);
#if defined(CONFIG_BT_HCIUART) && defined(CONFIG_WLAN_8688_SDIO)
	pxa168_add_uart(3);
#endif
	aspenite_add_nand();
	pxa168_add_ssp(0);
#if defined(CONFIG_MTD_M25P80) && defined(CONFIG_SPI_PXA2XX)
	pxa168_add_ssp(1);
	pxa168_add_spi(2, &pxa_ssp_master_info);
	spi_flashinit();
#endif
	pxa168_add_twsi(0, &pwri2c_info, ARRAY_AND_SIZE(aspenite_i2c_board_info));
	pxa168_add_twsi(1, &pwri2c_info, ARRAY_AND_SIZE(pwri2c_board_info));

	if (is_android())
		pxa168_add_keypad(&aspenite_android_keypad_info);
	else
		pxa168_add_keypad(&aspenite_keypad_info);

#ifdef CONFIG_USB_GADGET_PXA_U2O
 	pxa168_add_u2o(&aspenite_u2o_info);
#endif

#ifdef CONFIG_USB_OTG
	pxa168_add_u2ootg(&aspenite_u2o_info);
	pxa168_add_u2oehci(&aspenite_u2o_info);
#endif

#ifdef CONFIG_USB_EHCI_PXA_U2H
 	pxa168_add_u2h(&aspenite_u2h_info);
#endif
	pxa168_add_mfu(&pxa168_eth_data);
#ifdef CONFIG_PCI
	pxa168_add_pcie(&pxa168_pcie_data);
#endif
#if defined(CONFIG_MMC_PXA_SDH)
	pxa168_add_sdh(0, &aspenite_sdh_platform_data_MMC1);
#if defined(CONFIG_WLAN_8688_SDIO)
	pxa168_add_sdh(1, &aspenite_sdh_platform_data_MMC2);
#if defined(CONFIG_BT_HCIUART)
	aspenite_bt_init();
#endif
#endif
#if defined(CONFIG_MMC3)
	pxa168_add_sdh(2, &aspenite_sdh_platform_data_MMC3);
#endif
#endif
#if defined(CONFIG_CIR)
	pxa168_cir_init(); /*init the gpio */
#endif
#if defined(CONFIG_PXA168_CF)
#if defined(CONFIG_PXA168_CF_USE_GPIO_CARDDETECT)
	pxa168_cf_init();
#else
	pxa168_add_cf();	
#endif
#endif
	pxa168_add_freq();
	if (machine_is_aspenite()) {
		pxa168_add_fb(&aspenite_lcd_info);
		pxa168_add_fb_ovly(&aspenite_lcd_ovly_info);
	}
	/* off-chip devices */
	if (machine_is_zylonite2()) {
		pxa168_add_fb(&zylonite2_lcd_info);
		platform_device_register(&smc91x_device);
	}
#if defined(CONFIG_PXA168_CAMERA)
	pxa168_add_cam();
#endif
#if defined(CONFIG_PXA_ICR)
	pxa168_add_icr();
#endif
#if defined(CONFIG_BATTERY_PXA168)
	pxa168_add_battery();
#endif
}
Esempio n. 11
0
void
TopCanvas::set()
{
  unsigned width = 640, height = 480;
#ifndef ANDROID
  Uint32 flags = SDL_ANYFORMAT;
#endif

#ifdef ENABLE_OPENGL
#ifndef ANDROID
  flags |= SDL_OPENGL;
#endif
#else /* !ENABLE_OPENGL */
  /* double buffering temporarily disabled on Android because
     Android's SDL port doesn't allow locking it then (which we need
     for SDL_gfx) */
  if (!is_android())
    flags |= SDL_DOUBLEBUF;

  /* we need async screen updates as long as we don't have a global
     frame rate */
  flags |= SDL_ASYNCBLIT;

  const SDL_VideoInfo *info = SDL_GetVideoInfo();
  assert(info != NULL);

  /* hardware surface temporarily disabled on Android because
     Android's SDL port doesn't allow locking it then (which we need
     for SDL_gfx) */
  if (!is_android() && info->hw_available)
    flags |= SDL_HWSURFACE;
  else
    flags |= SDL_SWSURFACE;
#endif /* !ENABLE_OPENGL */

  if (is_embedded()) {
#if defined(ANDROID)
    width = native_view->get_width();
    height = native_view->get_height();
#else
    flags |= SDL_FULLSCREEN;

    /* select a full-screen video mode */
    SDL_Rect **modes = SDL_ListModes(NULL, flags);
    if (modes == NULL)
      return;

    width = modes[0]->w;
    height = modes[0]->h;
#endif
  }

#ifdef ENABLE_OPENGL
#ifndef ANDROID
  ::SDL_SetVideoMode(width, height, 0, flags);
#endif
  OpenGL::SetupContext(width, height);
  Canvas::set(width, height);
#else
  Canvas::set(::SDL_SetVideoMode(width, height, 0, flags));
#endif

#ifdef ENABLE_OPENGL
  glViewport(0, 0, get_width(), get_height());
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
#ifdef HAVE_GLES
  glOrthox(0, get_width()<<16, get_height()<<16, 0, -(1<<16), 1<<16);
#else
  glOrtho(0, get_width(), get_height(), 0, -1, 1);
#endif

  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();

  glDisable(GL_DEPTH_TEST);
  glDisable(GL_DITHER);
  glDisable(GL_LIGHTING);

  glEnableClientState(GL_VERTEX_ARRAY);
#endif
}
Esempio n. 12
0
char * select_lv(int disable_android) {
	int n;
	int *by, pagenum = 1, npages, ret = 0;	
	char *selected_lv = NULL, str[64];

	DECL_LINE(backbtn);
	DECL_LINE(prevpage);
	DECL_LINE(nextpage);

	strcpy(sbstr, "select volume");

	update_lv_lists();
	n = lv_count();
	by = malloc(n * sizeof(int));
	npages = 1 + n / PERPAGE;

	do {
		clear_screen();
		START_LIST(8, 32, 352, 0xFF404040, 0xFF808080, 0xFFC0C0C0)

		DRAW_LINE(backbtn, "back", "return to previous menu without making a selection"); 
		if (pagenum > 1) {
			DRAW_LINE(prevpage, "previous page", "not all volumes are shown"); 
		}

		for (int i = PERPAGE * (pagenum - 1); i < n; ++i) {
			if (i > pagenum * PERPAGE) break;
			if (is_android(lv_name(i)) && disable_android)
				continue;

			snprintf(str, sizeof(str), "size = %ld MiB", lv_sizes[i]);

			USECOLR = !USECOLR; 
			CURCOLR = USECOLR ? BG1COLR : BG2COLR; 
			current_y += 48; 
			by[i] =  current_y; 
			fill_rect(0, by[i], 1024, 44, CURCOLR);
			text(lv_name(i), col1_x, by[i] + 8, 2, 2, 0xFFFFFFFF, CURCOLR);
			text(str, col2_x, by[i] + 8, 1, 1, 0xFFFFFFFF, CURCOLR);
		}
		if (pagenum < npages) {
			DRAW_LINE(nextpage, "next page", "not all volumes are shown");
		}

		update_screen();
		input_read();
		if (BTN_CLICKED(backbtn)) ret = 2;

		for (int i = PERPAGE * (pagenum - 1); i < n; ++i)
			if (was_clicked(0, by[i], 1024, 44)) {
				if (i > pagenum * PERPAGE) break;
				selected_lv = strdup(lv_name(i));
				ret = 1;				
			}
		if (BTN_CLICKED(prevpage)) --pagenum;
		else if (BTN_CLICKED(nextpage)) ++pagenum;
	} while (!ret);
	
	free(by);

	return selected_lv;
}