Exemple #1
0
static void
vehicle_wince_io(struct vehicle_priv *priv)
{
	int size, rc = 0;
	char *str, *tok;

	dbg(1, "vehicle_file_io : enter\n");

	size = read_win32(priv, priv->buffer + priv->buffer_pos, buffer_size - priv->buffer_pos - 1);
	
	if (size <= 0) {
		switch (priv->on_eof) {
		case 0:
			vehicle_wince_close(priv);
			vehicle_wince_open(priv);
			break;
		case 1:
			vehicle_wince_disable_watch(priv);
			break;
		case 2:
			exit(0);
			break;
		}
		return;
	}
	priv->buffer_pos += size;
	priv->buffer[priv->buffer_pos] = '\0';
	dbg(1, "size=%d pos=%d buffer='%s'\n", size,
		priv->buffer_pos, priv->buffer);
	str = priv->buffer;
	while ((tok = strchr(str, '\n'))) {
		*tok++ = '\0';
		dbg(1, "line='%s'\n", str);
		rc +=vehicle_wince_parse(priv, str);
		str = tok;
		if (priv->file_type == file_type_file && rc)
			break;
	}

	if (str != priv->buffer) {
		size = priv->buffer + priv->buffer_pos - str;
		memmove(priv->buffer, str, size + 1);
		priv->buffer_pos = size;
		dbg(2, "now pos=%d buffer='%s'\n",
			priv->buffer_pos, priv->buffer);
	} else if (priv->buffer_pos == buffer_size - 1) {
		dbg(0,
			"Overflow. Most likely wrong baud rate or no nmea protocol\n");
		priv->buffer_pos = 0;
	}
	if (rc)
		callback_list_call_attr_0(priv->cbl, attr_position_coord_geo);
}
Exemple #2
0
static void
vehicle_wince_destroy(struct vehicle_priv *priv)
{
	vehicle_wince_disable_watch(priv);
	vehicle_wince_close(priv);
	if (priv->BthSetMode)
	{
		(void)priv->BthSetMode(0);
		FreeLibrary(priv->hBthDll);
	}
	if (priv->source)
		g_free(priv->source);
	if (priv->buffer)
		g_free(priv->buffer);
	if (priv->read_buffer)
		g_free(priv->read_buffer);
	g_free(priv);
}
Exemple #3
0
static void
vehicle_wince_enable_watch(struct vehicle_priv *priv)
{
    dbg(1, "enter");
	vehicle_wince_disable_watch(priv);
	priv->is_running = 1;

    InitializeCriticalSection(&priv->lock);
    priv->m_hGPSThread = CreateThread(NULL, 0, wince_reader_thread,
        priv, 0, &priv->m_dwGPSThread);

	if (!priv->m_hGPSThread) {
		priv->is_running = 0;
		// error creating thread
		MessageBox (NULL, TEXT ("Can not create GPS reader thread"), TEXT (""),
			MB_APPLMODAL|MB_OK);
	}
}