static gboolean property_exists_location(const GDBusPropertyTable *property, void *data) { struct heartrate *hr = data; if (!hr->has_location || location2str(hr->location) == NULL) return FALSE; return TRUE; }
static gboolean property_get_location(const GDBusPropertyTable *property, DBusMessageIter *iter, void *data) { struct csc *csc = data; const char *loc; if (!csc->has_location) return FALSE; loc = location2str(csc->location); dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &loc); return TRUE; }
static gboolean property_get_location(const GDBusPropertyTable *property, DBusMessageIter *iter, void *data) { struct heartrate *hr = data; char *loc; if (!hr->has_location) return FALSE; loc = g_strdup(location2str(hr->location)); if (loc == NULL) return FALSE; dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &loc); g_free(loc); return TRUE; }
static gboolean property_get_locations(const GDBusPropertyTable *property, DBusMessageIter *iter, void *data) { struct csc *csc = data; DBusMessageIter entry; int i; if (!(csc->feature & MULTI_SENSOR_LOC_SUPPORT)) return FALSE; dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING, &entry); for (i = 0; i < csc->num_locations; i++) { char *loc = g_strdup(location2str(csc->locations[i])); dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &loc); g_free(loc); } dbus_message_iter_close_container(iter, &entry); return TRUE; }
static DBusMessage *get_properties(DBusConnection *conn, DBusMessage *msg, void *data) { struct heartrate *hr = data; DBusMessageIter iter; DBusMessageIter dict; DBusMessage *reply; gboolean has_reset; reply = dbus_message_new_method_return(msg); if (reply == NULL) return NULL; dbus_message_iter_init_append(reply, &iter); dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict); if (hr->has_location) { char *loc = g_strdup(location2str(hr->location)); if (loc) { dict_append_entry(&dict, "Location", DBUS_TYPE_STRING, &loc); g_free(loc); } } has_reset = !!hr->hrcp_val_handle; dict_append_entry(&dict, "ResetSupported", DBUS_TYPE_BOOLEAN, &has_reset); dbus_message_iter_close_container(&iter, &dict); return reply; }