|
Packit |
34410b |
/*
|
|
Packit |
34410b |
*
|
|
Packit |
34410b |
* BlueZ - Bluetooth protocol stack for Linux
|
|
Packit |
34410b |
*
|
|
Packit |
34410b |
* Copyright (C) 2006-2010 Nokia Corporation
|
|
Packit |
34410b |
* Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
|
|
Packit |
34410b |
* Copyright (C) 2005-2007 Johan Hedberg <johan.hedberg@nokia.com>
|
|
Packit |
34410b |
*
|
|
Packit |
34410b |
*
|
|
Packit |
34410b |
* This program is free software; you can redistribute it and/or modify
|
|
Packit |
34410b |
* it under the terms of the GNU General Public License as published by
|
|
Packit |
34410b |
* the Free Software Foundation; either version 2 of the License, or
|
|
Packit |
34410b |
* (at your option) any later version.
|
|
Packit |
34410b |
*
|
|
Packit |
34410b |
* This program is distributed in the hope that it will be useful,
|
|
Packit |
34410b |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
34410b |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit |
34410b |
* GNU General Public License for more details.
|
|
Packit |
34410b |
*
|
|
Packit |
34410b |
* You should have received a copy of the GNU General Public License
|
|
Packit |
34410b |
* along with this program; if not, write to the Free Software
|
|
Packit |
34410b |
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
Packit |
34410b |
*
|
|
Packit |
34410b |
*/
|
|
Packit |
34410b |
|
|
Packit |
34410b |
#ifdef HAVE_CONFIG_H
|
|
Packit |
34410b |
#include <config.h>
|
|
Packit |
34410b |
#endif
|
|
Packit |
34410b |
|
|
Packit |
34410b |
#include <stdio.h>
|
|
Packit |
34410b |
#include <stdint.h>
|
|
Packit |
34410b |
|
|
Packit |
34410b |
#include <glib.h>
|
|
Packit |
34410b |
#include <dbus/dbus.h>
|
|
Packit |
34410b |
|
|
Packit |
34410b |
#include "gdbus/gdbus.h"
|
|
Packit |
34410b |
|
|
Packit |
34410b |
#include "log.h"
|
|
Packit |
34410b |
|
|
Packit |
34410b |
#include "dbus-common.h"
|
|
Packit |
34410b |
|
|
Packit |
34410b |
static DBusConnection *connection = NULL;
|
|
Packit |
34410b |
|
|
Packit |
34410b |
void dict_append_entry(DBusMessageIter *dict,
|
|
Packit |
34410b |
const char *key, int type, void *val)
|
|
Packit |
34410b |
{
|
|
Packit |
34410b |
g_dbus_dict_append_entry(dict, key, type, val);
|
|
Packit |
34410b |
}
|
|
Packit |
34410b |
|
|
Packit |
34410b |
void dict_append_array(DBusMessageIter *dict, const char *key, int type,
|
|
Packit |
34410b |
void *val, int n_elements)
|
|
Packit |
34410b |
{
|
|
Packit |
34410b |
g_dbus_dict_append_array(dict, key, type, val, n_elements);
|
|
Packit |
34410b |
}
|
|
Packit |
34410b |
|
|
Packit |
34410b |
void set_dbus_connection(DBusConnection *conn)
|
|
Packit |
34410b |
{
|
|
Packit |
34410b |
connection = conn;
|
|
Packit |
34410b |
}
|
|
Packit |
34410b |
|
|
Packit |
34410b |
DBusConnection *btd_get_dbus_connection(void)
|
|
Packit |
34410b |
{
|
|
Packit |
34410b |
return connection;
|
|
Packit |
34410b |
}
|
|
Packit |
34410b |
|
|
Packit |
34410b |
const char *class_to_icon(uint32_t class)
|
|
Packit |
34410b |
{
|
|
Packit |
34410b |
switch ((class & 0x1f00) >> 8) {
|
|
Packit |
34410b |
case 0x01:
|
|
Packit |
34410b |
return "computer";
|
|
Packit |
34410b |
case 0x02:
|
|
Packit |
34410b |
switch ((class & 0xfc) >> 2) {
|
|
Packit |
34410b |
case 0x01:
|
|
Packit |
34410b |
case 0x02:
|
|
Packit |
34410b |
case 0x03:
|
|
Packit |
34410b |
case 0x05:
|
|
Packit |
34410b |
return "phone";
|
|
Packit |
34410b |
case 0x04:
|
|
Packit |
34410b |
return "modem";
|
|
Packit |
34410b |
}
|
|
Packit |
34410b |
break;
|
|
Packit |
34410b |
case 0x03:
|
|
Packit |
34410b |
return "network-wireless";
|
|
Packit |
34410b |
case 0x04:
|
|
Packit |
34410b |
switch ((class & 0xfc) >> 2) {
|
|
Packit |
34410b |
case 0x01:
|
|
Packit |
34410b |
case 0x02:
|
|
Packit |
34410b |
return "audio-card"; /* Headset */
|
|
Packit |
34410b |
case 0x06:
|
|
Packit |
34410b |
return "audio-card"; /* Headphone */
|
|
Packit |
34410b |
case 0x0b: /* VCR */
|
|
Packit |
34410b |
case 0x0c: /* Video Camera */
|
|
Packit |
34410b |
case 0x0d: /* Camcorder */
|
|
Packit |
34410b |
return "camera-video";
|
|
Packit |
34410b |
default:
|
|
Packit |
34410b |
return "audio-card"; /* Other audio device */
|
|
Packit |
34410b |
}
|
|
Packit |
34410b |
break;
|
|
Packit |
34410b |
case 0x05:
|
|
Packit |
34410b |
switch ((class & 0xc0) >> 6) {
|
|
Packit |
34410b |
case 0x00:
|
|
Packit |
34410b |
switch ((class & 0x1e) >> 2) {
|
|
Packit |
34410b |
case 0x01:
|
|
Packit |
34410b |
case 0x02:
|
|
Packit |
34410b |
return "input-gaming";
|
|
Packit |
34410b |
}
|
|
Packit |
34410b |
break;
|
|
Packit |
34410b |
case 0x01:
|
|
Packit |
34410b |
return "input-keyboard";
|
|
Packit |
34410b |
case 0x02:
|
|
Packit |
34410b |
switch ((class & 0x1e) >> 2) {
|
|
Packit |
34410b |
case 0x05:
|
|
Packit |
34410b |
return "input-tablet";
|
|
Packit |
34410b |
default:
|
|
Packit |
34410b |
return "input-mouse";
|
|
Packit |
34410b |
}
|
|
Packit |
34410b |
}
|
|
Packit |
34410b |
break;
|
|
Packit |
34410b |
case 0x06:
|
|
Packit |
34410b |
if (class & 0x80)
|
|
Packit |
34410b |
return "printer";
|
|
Packit |
34410b |
if (class & 0x20)
|
|
Packit |
34410b |
return "camera-photo";
|
|
Packit |
34410b |
break;
|
|
Packit |
34410b |
}
|
|
Packit |
34410b |
|
|
Packit |
34410b |
return NULL;
|
|
Packit |
34410b |
}
|
|
Packit |
34410b |
|
|
Packit |
34410b |
const char *gap_appearance_to_icon(uint16_t appearance)
|
|
Packit |
34410b |
{
|
|
Packit |
34410b |
switch ((appearance & 0xffc0) >> 6) {
|
|
Packit |
34410b |
case 0x00:
|
|
Packit |
34410b |
return "unknown";
|
|
Packit |
34410b |
case 0x01:
|
|
Packit |
34410b |
return "phone";
|
|
Packit |
34410b |
case 0x02:
|
|
Packit |
34410b |
return "computer";
|
|
Packit |
34410b |
case 0x05:
|
|
Packit |
34410b |
return "video-display";
|
|
Packit |
34410b |
case 0x0a:
|
|
Packit |
34410b |
return "multimedia-player";
|
|
Packit |
34410b |
case 0x0b:
|
|
Packit |
34410b |
return "scanner";
|
|
Packit |
34410b |
case 0x0f: /* HID Generic */
|
|
Packit |
34410b |
switch (appearance & 0x3f) {
|
|
Packit |
34410b |
case 0x01:
|
|
Packit |
34410b |
return "input-keyboard";
|
|
Packit |
34410b |
case 0x02:
|
|
Packit |
34410b |
return "input-mouse";
|
|
Packit |
34410b |
case 0x03:
|
|
Packit |
34410b |
case 0x04:
|
|
Packit |
34410b |
return "input-gaming";
|
|
Packit |
34410b |
case 0x05:
|
|
Packit |
34410b |
return "input-tablet";
|
|
Packit |
34410b |
case 0x08:
|
|
Packit |
34410b |
return "scanner";
|
|
Packit |
34410b |
}
|
|
Packit |
34410b |
break;
|
|
Packit |
34410b |
}
|
|
Packit |
34410b |
|
|
Packit |
34410b |
return NULL;
|
|
Packit |
34410b |
}
|