Coverage Report

Created: 2025-07-18 06:26

/src/fwupd/plugins/synaptics-cape/fu-synaptics-cape-firmware.c
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright 2021 Synaptics Incorporated <simon.ho@synaptics.com>
3
 *
4
 * SPDX-License-Identifier: LGPL-2.1-or-later
5
 */
6
7
#include "config.h"
8
9
#include "fu-synaptics-cape-firmware.h"
10
#include "fu-synaptics-cape-struct.h"
11
12
typedef struct {
13
  guint16 vid;
14
  guint16 pid;
15
} FuSynapticsCapeFirmwarePrivate;
16
17
G_DEFINE_TYPE_WITH_PRIVATE(FuSynapticsCapeFirmware, fu_synaptics_cape_firmware, FU_TYPE_FIRMWARE)
18
0
#define GET_PRIVATE(o) (fu_synaptics_cape_firmware_get_instance_private(o))
19
20
guint16
21
fu_synaptics_cape_firmware_get_vid(FuSynapticsCapeFirmware *self)
22
0
{
23
0
  FuSynapticsCapeFirmwarePrivate *priv = GET_PRIVATE(self);
24
0
  g_return_val_if_fail(FU_IS_SYNAPTICS_CAPE_FIRMWARE(self), 0);
25
0
  return priv->vid;
26
0
}
27
28
void
29
fu_synaptics_cape_firmware_set_vid(FuSynapticsCapeFirmware *self, guint16 vid)
30
0
{
31
0
  FuSynapticsCapeFirmwarePrivate *priv = GET_PRIVATE(self);
32
0
  g_return_if_fail(FU_IS_SYNAPTICS_CAPE_FIRMWARE(self));
33
0
  priv->vid = vid;
34
0
}
35
36
guint16
37
fu_synaptics_cape_firmware_get_pid(FuSynapticsCapeFirmware *self)
38
0
{
39
0
  FuSynapticsCapeFirmwarePrivate *priv = GET_PRIVATE(self);
40
0
  g_return_val_if_fail(FU_IS_SYNAPTICS_CAPE_FIRMWARE(self), 0);
41
0
  return priv->pid;
42
0
}
43
44
void
45
fu_synaptics_cape_firmware_set_pid(FuSynapticsCapeFirmware *self, guint16 pid)
46
0
{
47
0
  FuSynapticsCapeFirmwarePrivate *priv = GET_PRIVATE(self);
48
0
  g_return_if_fail(FU_IS_SYNAPTICS_CAPE_FIRMWARE(self));
49
0
  priv->pid = pid;
50
0
}
51
52
static void
53
fu_synaptics_cape_firmware_export(FuFirmware *firmware,
54
          FuFirmwareExportFlags flags,
55
          XbBuilderNode *bn)
56
0
{
57
0
  FuSynapticsCapeFirmware *self = FU_SYNAPTICS_CAPE_FIRMWARE(firmware);
58
0
  FuSynapticsCapeFirmwarePrivate *priv = GET_PRIVATE(self);
59
0
  fu_xmlb_builder_insert_kx(bn, "vid", priv->vid);
60
0
  fu_xmlb_builder_insert_kx(bn, "pid", priv->pid);
61
0
}
62
63
static gboolean
64
fu_synaptics_cape_firmware_build(FuFirmware *firmware, XbNode *n, GError **error)
65
0
{
66
0
  FuSynapticsCapeFirmware *self = FU_SYNAPTICS_CAPE_FIRMWARE(firmware);
67
0
  FuSynapticsCapeFirmwarePrivate *priv = GET_PRIVATE(self);
68
0
  guint64 tmp;
69
70
  /* optional properties */
71
0
  tmp = xb_node_query_text_as_uint(n, "vid", NULL);
72
0
  if (tmp != G_MAXUINT64 && tmp <= G_MAXUINT16)
73
0
    priv->vid = tmp;
74
0
  tmp = xb_node_query_text_as_uint(n, "pid", NULL);
75
0
  if (tmp != G_MAXUINT64 && tmp <= G_MAXUINT16)
76
0
    priv->pid = tmp;
77
78
  /* success */
79
0
  return TRUE;
80
0
}
81
82
static void
83
fu_synaptics_cape_firmware_init(FuSynapticsCapeFirmware *self)
84
53
{
85
53
  fu_firmware_add_flag(FU_FIRMWARE(self), FU_FIRMWARE_FLAG_HAS_VID_PID);
86
53
}
87
88
static void
89
fu_synaptics_cape_firmware_class_init(FuSynapticsCapeFirmwareClass *klass)
90
1
{
91
1
  FuFirmwareClass *firmware_class = FU_FIRMWARE_CLASS(klass);
92
1
  firmware_class->export = fu_synaptics_cape_firmware_export;
93
1
  firmware_class->build = fu_synaptics_cape_firmware_build;
94
1
}