summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2008-06-08 16:58:15 +0000
committerMarcel Holtmann <marcel@holtmann.org>2008-06-08 16:58:15 +0000
commit9d81c523214d1af3508e90e9b8ae1f2ac93890b8 (patch)
treec24d87cd71d4081be622f6b3abfa0655e6c1c334
parent94c199911b1dc1395a8025647f0686f58e6bf4f6 (diff)
Add skeletons for missing API callbacks
-rw-r--r--hcid/adapter.c183
1 files changed, 101 insertions, 82 deletions
diff --git a/hcid/adapter.c b/hcid/adapter.c
index 6b618599..20b4ca1f 100644
--- a/hcid/adapter.c
+++ b/hcid/adapter.c
@@ -4125,94 +4125,20 @@ static DBusMessage *remove_service_record(DBusConnection *conn,
return dbus_message_new_method_return(msg);
}
-const char *major_class_str(uint32_t class)
+static DBusMessage *request_authorization(DBusConnection *conn,
+ DBusMessage *msg, void *data)
{
- uint8_t index = (class >> 8) & 0x1F;
-
- if (index > 8)
- return major_cls[9]; /* uncategorized */
+ /* FIXME implement the request */
- return major_cls[index];
-}
-
-const char *minor_class_str(uint32_t class)
-{
- uint8_t major_index = (class >> 8) & 0x1F;
- uint8_t minor_index;
-
- switch (major_index) {
- case 1: /* computer */
- minor_index = (class >> 2) & 0x3F;
- if (minor_index < NUM_ELEMENTS(computer_minor_cls))
- return computer_minor_cls[minor_index];
- else
- return "";
- case 2: /* phone */
- minor_index = (class >> 2) & 0x3F;
- if (minor_index < NUM_ELEMENTS(phone_minor_cls))
- return phone_minor_cls[minor_index];
- return "";
- case 3: /* access point */
- minor_index = (class >> 5) & 0x07;
- if (minor_index < NUM_ELEMENTS(access_point_minor_cls))
- return access_point_minor_cls[minor_index];
- else
- return "";
- case 4: /* audio/video */
- minor_index = (class >> 2) & 0x3F;
- if (minor_index < NUM_ELEMENTS(audio_video_minor_cls))
- return audio_video_minor_cls[minor_index];
- else
- return "";
- case 5: /* peripheral */
- minor_index = (class >> 6) & 0x03;
- if (minor_index < NUM_ELEMENTS(peripheral_minor_cls))
- return peripheral_minor_cls[minor_index];
- else
- return "";
- case 6: /* imaging */
- {
- uint8_t shift_minor = 0;
-
- minor_index = (class >> 4) & 0x0F;
- while (shift_minor < (sizeof(imaging_minor_cls) / sizeof(*imaging_minor_cls))) {
- if (((minor_index >> shift_minor) & 0x01) == 0x01)
- return imaging_minor_cls[shift_minor];
- shift_minor++;
- }
- }
- break;
- case 7: /* wearable */
- minor_index = (class >> 2) & 0x3F;
- if (minor_index < NUM_ELEMENTS(wearable_minor_cls))
- return wearable_minor_cls[minor_index];
- else
- return "";
- case 8: /* toy */
- minor_index = (class >> 2) & 0x3F;
- if (minor_index < NUM_ELEMENTS(toy_minor_cls))
- return toy_minor_cls[minor_index];
- else
- return "";
- }
-
- return "";
+ return NULL;
}
-GSList *service_classes_str(uint32_t class)
+static DBusMessage *cancel_authorization(DBusConnection *conn,
+ DBusMessage *msg, void *data)
{
- uint8_t services = class >> 16;
- GSList *l = NULL;
- int i;
-
- for (i = 0; i < (sizeof(service_cls) / sizeof(*service_cls)); i++) {
- if (!(services & (1 << i)))
- continue;
-
- l = g_slist_append(l, (void *) service_cls[i]);
- }
+ /* FIXME implement cancel request */
- return l;
+ return dbus_message_new_method_return(msg);
}
/* BlueZ 4.0 API */
@@ -4238,6 +4164,9 @@ static GDBusMethodTable adapter_methods[] = {
{ "AddServiceRecord", "s", "u", add_service_record },
{ "UpdateServiceRecord","us", "", update_service_record },
{ "RemoveServiceRecord","u", "", remove_service_record },
+ { "RequestAuthorization","su", "", request_authorization,
+ G_DBUS_METHOD_FLAG_ASYNC},
+ { "CancelAuthorization","", "", cancel_authorization },
{ }
};
@@ -4437,3 +4366,93 @@ dbus_bool_t adapter_init(DBusConnection *conn,
old_adapter_methods, old_adapter_signals,
NULL, adapter, NULL);
}
+
+const char *major_class_str(uint32_t class)
+{
+ uint8_t index = (class >> 8) & 0x1F;
+
+ if (index > 8)
+ return major_cls[9]; /* uncategorized */
+
+ return major_cls[index];
+}
+
+const char *minor_class_str(uint32_t class)
+{
+ uint8_t major_index = (class >> 8) & 0x1F;
+ uint8_t minor_index;
+
+ switch (major_index) {
+ case 1: /* computer */
+ minor_index = (class >> 2) & 0x3F;
+ if (minor_index < NUM_ELEMENTS(computer_minor_cls))
+ return computer_minor_cls[minor_index];
+ else
+ return "";
+ case 2: /* phone */
+ minor_index = (class >> 2) & 0x3F;
+ if (minor_index < NUM_ELEMENTS(phone_minor_cls))
+ return phone_minor_cls[minor_index];
+ return "";
+ case 3: /* access point */
+ minor_index = (class >> 5) & 0x07;
+ if (minor_index < NUM_ELEMENTS(access_point_minor_cls))
+ return access_point_minor_cls[minor_index];
+ else
+ return "";
+ case 4: /* audio/video */
+ minor_index = (class >> 2) & 0x3F;
+ if (minor_index < NUM_ELEMENTS(audio_video_minor_cls))
+ return audio_video_minor_cls[minor_index];
+ else
+ return "";
+ case 5: /* peripheral */
+ minor_index = (class >> 6) & 0x03;
+ if (minor_index < NUM_ELEMENTS(peripheral_minor_cls))
+ return peripheral_minor_cls[minor_index];
+ else
+ return "";
+ case 6: /* imaging */
+ {
+ uint8_t shift_minor = 0;
+
+ minor_index = (class >> 4) & 0x0F;
+ while (shift_minor < (sizeof(imaging_minor_cls) / sizeof(*imaging_minor_cls))) {
+ if (((minor_index >> shift_minor) & 0x01) == 0x01)
+ return imaging_minor_cls[shift_minor];
+ shift_minor++;
+ }
+ }
+ break;
+ case 7: /* wearable */
+ minor_index = (class >> 2) & 0x3F;
+ if (minor_index < NUM_ELEMENTS(wearable_minor_cls))
+ return wearable_minor_cls[minor_index];
+ else
+ return "";
+ case 8: /* toy */
+ minor_index = (class >> 2) & 0x3F;
+ if (minor_index < NUM_ELEMENTS(toy_minor_cls))
+ return toy_minor_cls[minor_index];
+ else
+ return "";
+ }
+
+ return "";
+}
+
+GSList *service_classes_str(uint32_t class)
+{
+ uint8_t services = class >> 16;
+ GSList *l = NULL;
+ int i;
+
+ for (i = 0; i < (sizeof(service_cls) / sizeof(*service_cls)); i++) {
+ if (!(services & (1 << i)))
+ continue;
+
+ l = g_slist_append(l, (void *) service_cls[i]);
+ }
+
+ return l;
+}