コード例 #1
0
ファイル: cd-sensor-munki.c プロジェクト: Hextremist/colord
/**
 * cd_sensor_munki_refresh_state_transfer_cb:
 **/
static void
cd_sensor_munki_refresh_state_transfer_cb (struct libusb_transfer *transfer)
{
	CdSensor *sensor = CD_SENSOR (transfer->user_data);
	guint8 *reply = transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE;

	if (transfer->status != LIBUSB_TRANSFER_COMPLETED) {
		g_warning ("did not succeed");
		goto out;
	}

	/* sensor position and button task */
	switch (reply[0]) {
	case MUNKI_DIAL_POSITION_PROJECTOR:
		cd_sensor_set_mode (sensor, CD_SENSOR_CAP_PROJECTOR);
		break;
	case MUNKI_DIAL_POSITION_SURFACE:
		cd_sensor_set_mode (sensor, CD_SENSOR_CAP_PRINTER);
		break;
	case MUNKI_DIAL_POSITION_CALIBRATION:
		cd_sensor_set_mode (sensor, CD_SENSOR_CAP_CALIBRATION);
		break;
	case MUNKI_DIAL_POSITION_AMBIENT:
		cd_sensor_set_mode (sensor, CD_SENSOR_CAP_AMBIENT);
		break;
	case MUNKI_DIAL_POSITION_UNKNOWN:
		cd_sensor_set_mode (sensor, CD_SENSOR_CAP_UNKNOWN);
		break;
	default:
		break;
	}

	g_debug ("dial now %s, button now %s",
		 cd_sensor_cap_to_string (cd_sensor_get_mode (sensor)),
		 munki_button_state_to_string (reply[1]));

	cd_sensor_debug_data (CD_SENSOR_DEBUG_MODE_RESPONSE,
			      transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE,
			      transfer->actual_length);
out:
	g_free (transfer->buffer);
}
コード例 #2
0
ファイル: cd-parse-beagle.c プロジェクト: Distrotech/colord
/**
 * cd_parse_beagle_process_entry_colormunki:
 **/
static void
cd_parse_beagle_process_entry_colormunki (CdParseEntry *entry)
{
	gchar **tok;
	guint j;
	guint8 cmd;
	guint tok_len;
	GString *output;

	/* set ep description */
	entry->ep_description = munki_endpoint_to_string (entry->ep);

	output = g_string_new ("");

	/* only know how to parse 8 bytes */
	tok = g_strsplit (entry->summary, " ", -1);
	tok_len = g_strv_length (tok);

	/* status */
	if (entry->ep == MUNKI_EP_CONTROL &&
	    entry->direction == CD_PARSE_ENTRY_DIRECTION_REPLY &&
	    tok_len == 2) {

		/* dial position */
		cmd = g_ascii_strtoll (tok[0], NULL, 16);
		g_string_append_printf (output, "%s(dial-position-%s) ",
					tok[0],
					munki_dial_position_to_string (cmd));

		/* button value */
		cmd = g_ascii_strtoll (tok[1], NULL, 16);
		g_string_append_printf (output, "%s(button-state-%s)",
					tok[1],
					munki_button_state_to_string (cmd));
		goto out;
	}

	/* event */
	if (entry->ep == MUNKI_EP_EVENT &&
	    entry->direction == CD_PARSE_ENTRY_DIRECTION_REPLY &&
	    tok_len == 8) {
		g_print ("process 8: %s\n", entry->summary);

		/* cmd */
		cmd = g_ascii_strtoll (tok[0], NULL, 16);
		g_string_append_printf (output, "%s(%s) ",
					tok[0],
					munki_command_value_to_string (cmd));

		for (j=1; j<8; j++) {
			cmd = g_ascii_strtoll (tok[j], NULL, 16);
			g_string_append_printf (output, "%02x ", cmd);
		}
		if (output->len > 1)
			g_string_set_size (output, output->len - 1);
		goto out;
	}

	/* unknown command */
	for (j = 0; j < tok_len; j++) {
		cmd = g_ascii_strtoll (tok[j], NULL, 16);
		g_string_append_printf (output, "%02x ", cmd);
	}
	if (output->len > 1)
		g_string_set_size (output, output->len - 1);
out:
	if (output != NULL)
		entry->summary_pretty = g_string_free (output, FALSE);
	g_strfreev (tok);
}