/* * dLeyna * * Copyright (C) 2012-2017 Intel Corporation. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU Lesser General Public License, * version 2.1, as published by the Free Software Foundation. * * This program is distributed in the hope it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. * * Mark Ryan * */ #ifndef DLS_DEVICE_H__ #define DLS_DEVICE_H__ #include #include #include #include "async.h" #include "client.h" #include "props.h" typedef struct dls_network_if_info_t_ dls_network_if_info_t; struct dls_network_if_info_t_ { gchar *system_name; gchar *mac_address; gchar *device_uuid; gchar *network_if_mode; gchar *wake_on_pattern; gchar *wake_transport; guint max_wake_on_delay; GList *ip_addresses; guint ip_address_position; }; typedef struct dls_service_t_ dls_service_t; struct dls_service_t_ { GUPnPServiceProxy *proxy; gboolean subscribed; guint timeout_id; }; struct dls_device_context_t_ { gchar *ip_address; GUPnPDeviceProxy *device_proxy; GUPnPDeviceInfo *device_info; dls_device_t *device; dls_service_t cds; dls_service_t ems; }; typedef struct dls_device_icon_t_ dls_device_icon_t; struct dls_device_icon_t_ { gchar *mime_type; guchar *bytes; gsize size; }; struct dls_device_t_ { dleyna_connector_id_t connection; guint id; gchar *path; GPtrArray *contexts; dls_device_context_t *sleeping_context; guint wake_on_timeout_id; guint timeout_id; GHashTable *uploads; GHashTable *upload_jobs; guint upload_id; guint system_update_id; GVariant *search_caps; GVariant *sort_caps; GVariant *sort_ext_caps; GVariant *feature_list; gboolean shutting_down; gboolean has_last_change; guint construct_step; dls_device_icon_t icon; gboolean sleeping; dls_network_if_info_t *network_if_info; }; dls_device_context_t *dls_device_append_new_context(dls_device_t *device, const gchar *ip_address, GUPnPDeviceProxy *proxy, GUPnPDeviceInfo *device_info); void dls_device_delete(void *device); void dls_device_unsubscribe(void *device); void dls_device_construct( dls_device_t *dev, dls_device_context_t *context, dleyna_connector_id_t connection, const dleyna_connector_dispatch_cb_t *dispatch_table, GHashTable *property_map, const dleyna_task_queue_key_t *queue_id); dls_device_t *dls_device_new( dleyna_connector_id_t connection, GUPnPDeviceProxy *proxy, GUPnPDeviceInfo *device_info, const gchar *ip_address, const dleyna_connector_dispatch_cb_t *dispatch_table, GHashTable *filter_map, const char *udn, const dleyna_task_queue_key_t *queue_id); dls_device_t *dls_device_from_path(const gchar *path, GHashTable *device_list); dls_device_context_t *dls_device_get_context(const dls_device_t *device, dls_client_t *client); void dls_device_delete_context(dls_device_context_t *context); void dls_device_get_children(dls_client_t *client, dls_task_t *task, const gchar *upnp_filter, const gchar *sort_by); void dls_device_get_all_props(dls_client_t *client, dls_task_t *task, gboolean root_object); void dls_device_get_prop(dls_client_t *client, dls_task_t *task, dls_prop_map_t *prop_map, gboolean root_object); void dls_device_search(dls_client_t *client, dls_task_t *task, const gchar *upnp_filter, const gchar *upnp_query, const gchar *sort_by); void dls_device_browse_objects(dls_client_t *client, dls_task_t *task); void dls_device_get_resource(dls_client_t *client, dls_task_t *task, const gchar *upnp_filter); void dls_device_subscribe_to_service_changes(dls_device_t *device); void dls_device_upload(dls_client_t *client, dls_task_t *task, const gchar *parent_id); gboolean dls_device_get_upload_status(dls_task_t *task, GError **error); gboolean dls_device_cancel_upload(dls_task_t *task, GError **error); void dls_device_get_upload_ids(dls_task_t *task); void dls_device_delete_object(dls_client_t *client, dls_task_t *task); void dls_device_create_container(dls_client_t *client, dls_task_t *task, const gchar *parent_id); void dls_device_update_object(dls_client_t *client, dls_task_t *task, const gchar *upnp_filter); void dls_device_get_object_metadata(dls_client_t *client, dls_task_t *task, const gchar *parent_id); void dls_device_create_reference(dls_client_t *client, dls_task_t *task); void dls_device_get_icon(dls_client_t *client, dls_task_t *task); void dls_device_wake(dls_client_t *client, dls_task_t *task); #endif /* DLS_DEVICE_H__ */