blob: 4b121402c736449671a3f95e9176ab8b37bd7805 [file] [log] [blame]
Richard Hughes02c90d82018-08-09 12:13:03 +01001/*
Richard Hughes9dde04f2017-09-13 12:07:15 +01002 * Copyright (C) 2017 Richard Hughes <richard@hughsie.com>
3 *
Mario Limonciello51308e62018-05-28 20:05:46 -05004 * SPDX-License-Identifier: LGPL-2.1+
Richard Hughes9dde04f2017-09-13 12:07:15 +01005 */
6
Richard Hughesbfd946e2019-02-09 08:21:40 +00007#pragma once
Richard Hughes9dde04f2017-09-13 12:07:15 +01008
9#include <fu-device.h>
Mario Limonciello7a3df4b2019-01-31 10:27:22 -060010#include <xmlb.h>
Richard Hughes9dde04f2017-09-13 12:07:15 +010011
Richard Hughes51a869a2019-10-07 11:23:42 +010012#define fu_device_set_plugin(d,v) fwupd_device_set_plugin(FWUPD_DEVICE(d),v)
13
Mario Limonciello39602652019-04-29 21:08:58 -050014/**
15 * FuDeviceInstanceFlags:
16 * @FU_DEVICE_INSTANCE_FLAG_NONE: No flags set
17 * @FU_DEVICE_INSTANCE_FLAG_ONLY_QUIRKS: Only use instance ID for quirk matching
18 *
19 * The flags to use when interacting with a device instance
20 **/
Richard Hughes8ef139f2019-04-23 19:33:28 +010021typedef enum {
22 FU_DEVICE_INSTANCE_FLAG_NONE = 0,
23 FU_DEVICE_INSTANCE_FLAG_ONLY_QUIRKS = 1 << 0,
Mario Limonciello39602652019-04-29 21:08:58 -050024 /*< private >*/
Richard Hughes8ef139f2019-04-23 19:33:28 +010025 FU_DEVICE_INSTANCE_FLAG_LAST
26} FuDeviceInstanceFlags;
27
Richard Hughes2c0635a2018-09-04 14:52:46 +010028GPtrArray *fu_device_get_parent_guids (FuDevice *self);
29gboolean fu_device_has_parent_guid (FuDevice *self,
Richard Hughes5e447292018-04-27 14:25:54 +010030 const gchar *guid);
Richard Hughes841c1802018-09-07 15:32:32 +010031void fu_device_set_parent (FuDevice *self,
32 FuDevice *parent);
Richard Hughes2c0635a2018-09-04 14:52:46 +010033guint fu_device_get_order (FuDevice *self);
34void fu_device_set_order (FuDevice *self,
Richard Hughes9f86ade2018-05-10 21:11:22 +010035 guint order);
Richard Hughes2c0635a2018-09-04 14:52:46 +010036guint fu_device_get_priority (FuDevice *self);
37void fu_device_set_priority (FuDevice *self,
Richard Hughes81c427c2018-08-06 15:20:17 +010038 guint priority);
Richard Hughes2c0635a2018-09-04 14:52:46 +010039void fu_device_set_alternate (FuDevice *self,
Richard Hughese48351e2018-06-22 12:32:39 +010040 FuDevice *alternate);
Richard Hughesd8a8d5e2019-10-08 13:05:02 +010041GType fu_device_get_specialized_gtype (FuDevice *self);
Richard Hughesc125ec02018-09-05 19:35:17 +010042gboolean fu_device_ensure_id (FuDevice *self,
43 GError **error);
Mario Limonciello7a3df4b2019-01-31 10:27:22 -060044void fu_device_incorporate_from_component (FuDevice *device,
45 XbNode *component);
Richard Hughes1bc43232019-02-05 19:07:42 +000046void fu_device_convert_instance_ids (FuDevice *self);
Richard Hughes8ef139f2019-04-23 19:33:28 +010047void fu_device_add_instance_id_full (FuDevice *self,
48 const gchar *instance_id,
49 FuDeviceInstanceFlags flags);
Richard Hughesd8a8d5e2019-10-08 13:05:02 +010050gchar *fu_device_get_guids_as_str (FuDevice *self);
Richard Hughes51a869a2019-10-07 11:23:42 +010051GPtrArray *fu_device_get_possible_plugins (FuDevice *self);