Coverage Report

Created: 2026-02-26 06:27

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/work/fu-wacom-usb-struct.c
Line
Count
Source
1
/*
2
 * This file is auto-generated, do not modify!
3
 *
4
 * SPDX-License-Identifier: LGPL-2.1-or-later
5
 */
6
7
#include "config.h"
8
9
#include <glib.h>
10
11
#include "fu-wacom-usb-struct.h"
12
#include "fu-byte-array.h"
13
#include "fu-bytes.h"
14
#include "fu-mem-private.h"
15
#include "fu-string.h"
16
17
#ifdef G_LOG_DOMAIN
18
  #undef G_LOG_DOMAIN
19
#endif
20
0
#define G_LOG_DOMAIN "FuStruct"
21
22
/**
23
 * fu_wacom_usb_report_id_to_string:
24
 * @val: value, e.g. %FU_WACOM_USB_REPORT_ID_SWITCH_TO_FLASH_LOADER
25
 *
26
 * Converts an enumerated value to a string.
27
 *
28
 * Returns: identifier string
29
 **/
30
const gchar *
31
fu_wacom_usb_report_id_to_string(FuWacomUsbReportId val)
32
0
{
33
0
    if (val == FU_WACOM_USB_REPORT_ID_FW_DESCRIPTOR)
34
0
        return "fw-descriptor";
35
0
    if (val == FU_WACOM_USB_REPORT_ID_SWITCH_TO_FLASH_LOADER)
36
0
        return "switch-to-flash-loader";
37
0
    if (val == FU_WACOM_USB_REPORT_ID_QUIT_AND_RESET)
38
0
        return "quit-and-reset";
39
0
    if (val == FU_WACOM_USB_REPORT_ID_READ_BLOCK_DATA)
40
0
        return "read-block-data";
41
0
    if (val == FU_WACOM_USB_REPORT_ID_WRITE_BLOCK)
42
0
        return "write-block";
43
0
    if (val == FU_WACOM_USB_REPORT_ID_ERASE_BLOCK)
44
0
        return "erase-block";
45
0
    if (val == FU_WACOM_USB_REPORT_ID_SET_READ_ADDRESS)
46
0
        return "set-read-address";
47
0
    if (val == FU_WACOM_USB_REPORT_ID_GET_STATUS)
48
0
        return "get-status";
49
0
    if (val == FU_WACOM_USB_REPORT_ID_UPDATE_RESET)
50
0
        return "update-reset";
51
0
    if (val == FU_WACOM_USB_REPORT_ID_WRITE_WORD)
52
0
        return "write-word";
53
0
    if (val == FU_WACOM_USB_REPORT_ID_GET_PARAMETERS)
54
0
        return "get-parameters";
55
0
    if (val == FU_WACOM_USB_REPORT_ID_GET_FLASH_DESCRIPTOR)
56
0
        return "get-flash-descriptor";
57
0
    if (val == FU_WACOM_USB_REPORT_ID_GET_CHECKSUMS)
58
0
        return "get-checksums";
59
0
    if (val == FU_WACOM_USB_REPORT_ID_SET_CHECKSUM_FOR_BLOCK)
60
0
        return "set-checksum-for-block";
61
0
    if (val == FU_WACOM_USB_REPORT_ID_CALCULATE_CHECKSUM_FOR_BLOCK)
62
0
        return "calculate-checksum-for-block";
63
0
    if (val == FU_WACOM_USB_REPORT_ID_WRITE_CHECKSUM_TABLE)
64
0
        return "write-checksum-table";
65
0
    if (val == FU_WACOM_USB_REPORT_ID_GET_CURRENT_FIRMWARE_IDX)
66
0
        return "get-current-firmware-idx";
67
0
    if (val == FU_WACOM_USB_REPORT_ID_MODULE)
68
0
        return "module";
69
0
    return NULL;
70
0
}
71
72
/**
73
 * fu_wacom_usb_module_fw_type_to_string:
74
 * @val: value, e.g. %FU_WACOM_USB_MODULE_FW_TYPE_BLUETOOTH
75
 *
76
 * Converts an enumerated value to a string.
77
 *
78
 * Returns: identifier string
79
 **/
80
const gchar *
81
fu_wacom_usb_module_fw_type_to_string(FuWacomUsbModuleFwType val)
82
0
{
83
0
    if (val == FU_WACOM_USB_MODULE_FW_TYPE_TOUCH)
84
0
        return "touch";
85
0
    if (val == FU_WACOM_USB_MODULE_FW_TYPE_BLUETOOTH)
86
0
        return "bluetooth";
87
0
    if (val == FU_WACOM_USB_MODULE_FW_TYPE_EMR_CORRECTION)
88
0
        return "emr-correction";
89
0
    if (val == FU_WACOM_USB_MODULE_FW_TYPE_BLUETOOTH_HID)
90
0
        return "bluetooth-hid";
91
0
    if (val == FU_WACOM_USB_MODULE_FW_TYPE_SCALER)
92
0
        return "scaler";
93
0
    if (val == FU_WACOM_USB_MODULE_FW_TYPE_BLUETOOTH_ID6)
94
0
        return "bluetooth-id6";
95
0
    if (val == FU_WACOM_USB_MODULE_FW_TYPE_TOUCH_ID7)
96
0
        return "touch-id7";
97
0
    if (val == FU_WACOM_USB_MODULE_FW_TYPE_BLUETOOTH_ID9)
98
0
        return "bluetooth-id9";
99
0
    if (val == FU_WACOM_USB_MODULE_FW_TYPE_SUB_CPU)
100
0
        return "sub-cpu";
101
0
    if (val == FU_WACOM_USB_MODULE_FW_TYPE_MAIN)
102
0
        return "main";
103
0
    return NULL;
104
0
}
105
106
/**
107
 * fu_wacom_usb_module_command_to_string:
108
 * @val: value, e.g. %FU_WACOM_USB_MODULE_COMMAND_DATA
109
 *
110
 * Converts an enumerated value to a string.
111
 *
112
 * Returns: identifier string
113
 **/
114
const gchar *
115
fu_wacom_usb_module_command_to_string(FuWacomUsbModuleCommand val)
116
0
{
117
0
    if (val == FU_WACOM_USB_MODULE_COMMAND_START)
118
0
        return "start";
119
0
    if (val == FU_WACOM_USB_MODULE_COMMAND_DATA)
120
0
        return "data";
121
0
    if (val == FU_WACOM_USB_MODULE_COMMAND_END)
122
0
        return "end";
123
0
    return NULL;
124
0
}
125
126
/**
127
 * fu_wacom_usb_module_status_to_string:
128
 * @val: value, e.g. %FU_WACOM_USB_MODULE_STATUS_BUSY
129
 *
130
 * Converts an enumerated value to a string.
131
 *
132
 * Returns: identifier string
133
 **/
134
const gchar *
135
fu_wacom_usb_module_status_to_string(FuWacomUsbModuleStatus val)
136
0
{
137
0
    if (val == FU_WACOM_USB_MODULE_STATUS_OK)
138
0
        return "ok";
139
0
    if (val == FU_WACOM_USB_MODULE_STATUS_BUSY)
140
0
        return "busy";
141
0
    if (val == FU_WACOM_USB_MODULE_STATUS_ERR_CRC)
142
0
        return "err-crc";
143
0
    if (val == FU_WACOM_USB_MODULE_STATUS_ERR_CMD)
144
0
        return "err-cmd";
145
0
    if (val == FU_WACOM_USB_MODULE_STATUS_ERR_HW_ACCESS_FAIL)
146
0
        return "err-hw-access-fail";
147
0
    if (val == FU_WACOM_USB_MODULE_STATUS_ERR_FLASH_NO_SUPPORT)
148
0
        return "err-flash-no-support";
149
0
    if (val == FU_WACOM_USB_MODULE_STATUS_ERR_MODE_WRONG)
150
0
        return "err-mode-wrong";
151
0
    if (val == FU_WACOM_USB_MODULE_STATUS_ERR_MPU_NO_SUPPORT)
152
0
        return "err-mpu-no-support";
153
0
    if (val == FU_WACOM_USB_MODULE_STATUS_ERR_VERSION_NO_SUPPORT)
154
0
        return "err-version-no-support";
155
0
    if (val == FU_WACOM_USB_MODULE_STATUS_ERR_ERASE)
156
0
        return "err-erase";
157
0
    if (val == FU_WACOM_USB_MODULE_STATUS_ERR_WRITE)
158
0
        return "err-write";
159
0
    if (val == FU_WACOM_USB_MODULE_STATUS_ERR_EXIT)
160
0
        return "err-exit";
161
0
    if (val == FU_WACOM_USB_MODULE_STATUS_ERR)
162
0
        return "err";
163
0
    if (val == FU_WACOM_USB_MODULE_STATUS_ERR_INVALID_OP)
164
0
        return "err-invalid-op";
165
0
    if (val == FU_WACOM_USB_MODULE_STATUS_ERR_WRONG_IMAGE)
166
0
        return "err-wrong-image";
167
0
    return NULL;
168
0
}
169
170
/**
171
 * fu_wacom_usb_device_status_to_string:
172
 * @val: value, e.g. %FU_WACOM_USB_DEVICE_STATUS_WRITING
173
 *
174
 * Converts an enumerated value to a string.
175
 *
176
 * Returns: identifier string
177
 *
178
 **/
179
gchar *
180
fu_wacom_usb_device_status_to_string(FuWacomUsbDeviceStatus val)
181
0
{
182
0
    const gchar *data[6] = {0};
183
0
    guint idx = 0;
184
0
    if (val == FU_WACOM_USB_DEVICE_STATUS_UNKNOWN)
185
0
        return g_strdup("unknown");
186
0
    if (val & FU_WACOM_USB_DEVICE_STATUS_WRITING)
187
0
        data[idx++] = "writing";
188
0
    if (val & FU_WACOM_USB_DEVICE_STATUS_ERASING)
189
0
        data[idx++] = "erasing";
190
0
    if (val & FU_WACOM_USB_DEVICE_STATUS_ERROR_WRITE)
191
0
        data[idx++] = "error-write";
192
0
    if (val & FU_WACOM_USB_DEVICE_STATUS_ERROR_ERASE)
193
0
        data[idx++] = "error-erase";
194
0
    if (val & FU_WACOM_USB_DEVICE_STATUS_WRITE_PROTECTED)
195
0
        data[idx++] = "write-protected";
196
0
    return g_strjoinv(",", (gchar **)data);
197
0
}
198
/**
199
 * fu_struct_wacom_usb_firmware_hdr_ref: (skip):
200
 **/
201
FuStructWacomUsbFirmwareHdr *
202
fu_struct_wacom_usb_firmware_hdr_ref(FuStructWacomUsbFirmwareHdr *st)
203
0
{
204
0
    g_return_val_if_fail(st != NULL, NULL);
205
0
    st->refcount++;
206
0
    return st;
207
0
}
208
/**
209
 * fu_struct_wacom_usb_firmware_hdr_unref: (skip):
210
 **/
211
void
212
fu_struct_wacom_usb_firmware_hdr_unref(FuStructWacomUsbFirmwareHdr *st)
213
1.93k
{
214
1.93k
    g_return_if_fail(st != NULL);
215
1.93k
    if (st->refcount == 0) {
216
0
        g_critical("FuStructWacomUsbFirmwareHdr refcount already zero");
217
0
        return;
218
0
    }
219
1.93k
    if (--st->refcount > 0)
220
0
        return;
221
1.93k
    if (st->buf != NULL)
222
1.93k
        g_byte_array_unref(st->buf);
223
1.93k
    g_free(st);
224
1.93k
}
225
/**
226
 * fu_struct_wacom_usb_firmware_hdr_new_internal: (skip):
227
 **/
228
static FuStructWacomUsbFirmwareHdr *
229
fu_struct_wacom_usb_firmware_hdr_new_internal(void)
230
1.93k
{
231
1.93k
    FuStructWacomUsbFirmwareHdr *st = g_new0(FuStructWacomUsbFirmwareHdr, 1);
232
1.93k
    st->refcount = 1;
233
1.93k
    return st;
234
1.93k
}
235
236
/* getters */
237
/**
238
 * fu_struct_wacom_usb_firmware_hdr_get_magic: (skip):
239
 **/
240
static gchar *
241
fu_struct_wacom_usb_firmware_hdr_get_magic(const FuStructWacomUsbFirmwareHdr *st)
242
55
{
243
55
    g_return_val_if_fail(st != NULL, NULL);
244
55
    return fu_memstrsafe(st->buf->data, st->buf->len, 0, 5, NULL);
245
55
}
246
247
/* setters */
248
static gboolean
249
fu_struct_wacom_usb_firmware_hdr_validate_internal(FuStructWacomUsbFirmwareHdr *st, GError **error)
250
1.92k
{
251
1.92k
    g_return_val_if_fail(st != NULL, FALSE);
252
1.92k
    if (strncmp((const gchar *) (st->buf->data + 0), "WACOM", 5) != 0) {
253
55
        g_autofree gchar *str = fu_struct_wacom_usb_firmware_hdr_get_magic(st);
254
55
        g_set_error(error,
255
55
                    FWUPD_ERROR,
256
55
                    FWUPD_ERROR_INVALID_DATA,
257
55
                    "constant FuStructWacomUsbFirmwareHdr.magic was not valid, "
258
55
                    "expected 'WACOM' and got '%s'",
259
55
                    str);
260
55
        return FALSE;
261
55
    }
262
1.87k
    return TRUE;
263
1.92k
}
264
/**
265
 * fu_struct_wacom_usb_firmware_hdr_validate_stream: (skip):
266
 **/
267
gboolean
268
fu_struct_wacom_usb_firmware_hdr_validate_stream(GInputStream *stream, gsize offset, GError **error)
269
1.93k
{
270
1.93k
    g_autoptr(FuStructWacomUsbFirmwareHdr) st = fu_struct_wacom_usb_firmware_hdr_new_internal();
271
1.93k
    g_return_val_if_fail(G_IS_INPUT_STREAM(stream), FALSE);
272
1.93k
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
273
1.93k
    st->buf = fu_input_stream_read_byte_array(stream, offset, 5, NULL, error);
274
1.93k
    if (st->buf == NULL) {
275
0
        g_prefix_error(error, "FuStructWacomUsbFirmwareHdr failed read of 0x%x: ", (guint) 5);
276
0
        return FALSE;
277
0
    }
278
1.93k
    if (st->buf->len != 5) {
279
7
        g_set_error(error,
280
7
                    FWUPD_ERROR,
281
7
                    FWUPD_ERROR_INVALID_DATA,
282
7
                    "FuStructWacomUsbFirmwareHdr requested 0x%x and got 0x%x",
283
7
                    (guint) 5,
284
7
                    (guint) st->buf->len);
285
7
        return FALSE;
286
7
    }
287
1.92k
    return fu_struct_wacom_usb_firmware_hdr_validate_internal(st, error);
288
1.93k
}
289
/**
290
 * fu_struct_wta_block_header_ref: (skip):
291
 **/
292
FuStructWtaBlockHeader *
293
fu_struct_wta_block_header_ref(FuStructWtaBlockHeader *st)
294
0
{
295
0
    g_return_val_if_fail(st != NULL, NULL);
296
0
    st->refcount++;
297
0
    return st;
298
0
}
299
/**
300
 * fu_struct_wta_block_header_unref: (skip):
301
 **/
302
void
303
fu_struct_wta_block_header_unref(FuStructWtaBlockHeader *st)
304
0
{
305
0
    g_return_if_fail(st != NULL);
306
0
    if (st->refcount == 0) {
307
0
        g_critical("FuStructWtaBlockHeader refcount already zero");
308
0
        return;
309
0
    }
310
0
    if (--st->refcount > 0)
311
0
        return;
312
0
    if (st->buf != NULL)
313
0
        g_byte_array_unref(st->buf);
314
0
    g_free(st);
315
0
}
316
/**
317
 * fu_struct_wta_block_header_new_internal: (skip):
318
 **/
319
static FuStructWtaBlockHeader *
320
fu_struct_wta_block_header_new_internal(void)
321
0
{
322
0
    FuStructWtaBlockHeader *st = g_new0(FuStructWtaBlockHeader, 1);
323
0
    st->refcount = 1;
324
0
    return st;
325
0
}
326
327
/* getters */
328
/**
329
 * fu_struct_wta_block_header_get_block_start: (skip):
330
 **/
331
guint32
332
fu_struct_wta_block_header_get_block_start(const FuStructWtaBlockHeader *st)
333
0
{
334
0
    g_return_val_if_fail(st != NULL, 0x0);
335
0
    return fu_memread_uint32(st->buf->data + 0, G_LITTLE_ENDIAN);
336
0
}
337
/**
338
 * fu_struct_wta_block_header_get_block_size: (skip):
339
 **/
340
guint32
341
fu_struct_wta_block_header_get_block_size(const FuStructWtaBlockHeader *st)
342
0
{
343
0
    g_return_val_if_fail(st != NULL, 0x0);
344
0
    return fu_memread_uint32(st->buf->data + 4, G_LITTLE_ENDIAN);
345
0
}
346
347
/* setters */
348
/**
349
 * fu_struct_wta_block_header_to_string: (skip):
350
 **/
351
static gchar *
352
fu_struct_wta_block_header_to_string(const FuStructWtaBlockHeader *st)
353
0
{
354
0
    g_autoptr(GString) str = g_string_new("FuStructWtaBlockHeader:\n");
355
0
    g_return_val_if_fail(st != NULL, NULL);
356
0
    g_string_append_printf(str, "  block_start: 0x%x\n",
357
0
                           (guint) fu_struct_wta_block_header_get_block_start(st));
358
0
    g_string_append_printf(str, "  block_size: 0x%x\n",
359
0
                           (guint) fu_struct_wta_block_header_get_block_size(st));
360
0
    if (str->len > 0)
361
0
        g_string_set_size(str, str->len - 1);
362
0
    return g_string_free(g_steal_pointer(&str), FALSE);
363
0
}
364
static gboolean
365
fu_struct_wta_block_header_validate_internal(FuStructWtaBlockHeader *st, GError **error)
366
0
{
367
0
    g_return_val_if_fail(st != NULL, FALSE);
368
0
    return TRUE;
369
0
}
370
static gboolean
371
fu_struct_wta_block_header_parse_internal(FuStructWtaBlockHeader *st, GError **error)
372
0
{
373
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
374
0
        g_autofree gchar *str = fu_struct_wta_block_header_to_string(st);
375
0
        g_debug("%s", str);
376
0
    }
377
0
    if (!fu_struct_wta_block_header_validate_internal(st, error))
378
0
        return FALSE;
379
0
    return TRUE;
380
0
}
381
382
/**
383
 * fu_struct_wta_block_header_parse: (skip):
384
 **/
385
FuStructWtaBlockHeader *
386
fu_struct_wta_block_header_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
387
0
{
388
0
    g_autoptr(FuStructWtaBlockHeader) st = fu_struct_wta_block_header_new_internal();
389
0
    g_return_val_if_fail(buf != NULL, NULL);
390
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
391
0
    if (!fu_memchk_read(bufsz, offset, 8, error)) {
392
0
        g_prefix_error_literal(error, "invalid struct FuStructWtaBlockHeader: ");
393
0
        return NULL;
394
0
    }
395
0
    st->buf = g_byte_array_new();
396
0
    g_byte_array_append(st->buf, buf + offset, 8);
397
0
    if (!fu_struct_wta_block_header_parse_internal(st, error))
398
0
        return NULL;
399
0
    return g_steal_pointer(&st);
400
0
}
401
/**
402
 * fu_struct_wacom_usb_id9_unknown_cmd_ref: (skip):
403
 **/
404
FuStructWacomUsbId9UnknownCmd *
405
fu_struct_wacom_usb_id9_unknown_cmd_ref(FuStructWacomUsbId9UnknownCmd *st)
406
0
{
407
0
    g_return_val_if_fail(st != NULL, NULL);
408
0
    st->refcount++;
409
0
    return st;
410
0
}
411
/**
412
 * fu_struct_wacom_usb_id9_unknown_cmd_unref: (skip):
413
 **/
414
void
415
fu_struct_wacom_usb_id9_unknown_cmd_unref(FuStructWacomUsbId9UnknownCmd *st)
416
0
{
417
0
    g_return_if_fail(st != NULL);
418
0
    if (st->refcount == 0) {
419
0
        g_critical("FuStructWacomUsbId9UnknownCmd refcount already zero");
420
0
        return;
421
0
    }
422
0
    if (--st->refcount > 0)
423
0
        return;
424
0
    if (st->buf != NULL)
425
0
        g_byte_array_unref(st->buf);
426
0
    g_free(st);
427
0
}
428
/**
429
 * fu_struct_wacom_usb_id9_unknown_cmd_new_internal: (skip):
430
 **/
431
static FuStructWacomUsbId9UnknownCmd *
432
fu_struct_wacom_usb_id9_unknown_cmd_new_internal(void)
433
0
{
434
0
    FuStructWacomUsbId9UnknownCmd *st = g_new0(FuStructWacomUsbId9UnknownCmd, 1);
435
0
    st->refcount = 1;
436
0
    return st;
437
0
}
438
439
/* getters */
440
/**
441
 * fu_struct_wacom_usb_id9_unknown_cmd_get_unknown1: (skip):
442
 **/
443
static guint16
444
fu_struct_wacom_usb_id9_unknown_cmd_get_unknown1(const FuStructWacomUsbId9UnknownCmd *st)
445
0
{
446
0
    g_return_val_if_fail(st != NULL, 0x0);
447
0
    return fu_memread_uint16(st->buf->data + 0, G_BIG_ENDIAN);
448
0
}
449
/**
450
 * fu_struct_wacom_usb_id9_unknown_cmd_get_unknown2: (skip):
451
 **/
452
static guint32
453
fu_struct_wacom_usb_id9_unknown_cmd_get_unknown2(const FuStructWacomUsbId9UnknownCmd *st)
454
0
{
455
0
    g_return_val_if_fail(st != NULL, 0x0);
456
0
    return fu_memread_uint32(st->buf->data + 2, G_BIG_ENDIAN);
457
0
}
458
459
/* setters */
460
/**
461
 * fu_struct_wacom_usb_id9_unknown_cmd_set_unknown1: (skip):
462
 **/
463
static void
464
fu_struct_wacom_usb_id9_unknown_cmd_set_unknown1(FuStructWacomUsbId9UnknownCmd *st, guint16 value)
465
0
{
466
0
    g_return_if_fail(st != NULL);
467
0
    fu_memwrite_uint16(st->buf->data + 0, value, G_BIG_ENDIAN);
468
0
}
469
/**
470
 * fu_struct_wacom_usb_id9_unknown_cmd_set_unknown2: (skip):
471
 **/
472
static void
473
fu_struct_wacom_usb_id9_unknown_cmd_set_unknown2(FuStructWacomUsbId9UnknownCmd *st, guint32 value)
474
0
{
475
0
    g_return_if_fail(st != NULL);
476
0
    fu_memwrite_uint32(st->buf->data + 2, value, G_BIG_ENDIAN);
477
0
}
478
/**
479
 * fu_struct_wacom_usb_id9_unknown_cmd_set_size: (skip):
480
 **/
481
void
482
fu_struct_wacom_usb_id9_unknown_cmd_set_size(FuStructWacomUsbId9UnknownCmd *st, guint16 value)
483
0
{
484
0
    g_return_if_fail(st != NULL);
485
0
    fu_memwrite_uint16(st->buf->data + 6, value, G_BIG_ENDIAN);
486
0
}
487
/**
488
 * fu_struct_wacom_usb_id9_unknown_cmd_new: (skip):
489
 **/
490
FuStructWacomUsbId9UnknownCmd *
491
fu_struct_wacom_usb_id9_unknown_cmd_new(void)
492
0
{
493
0
    FuStructWacomUsbId9UnknownCmd *st = fu_struct_wacom_usb_id9_unknown_cmd_new_internal();
494
0
    st->buf = g_byte_array_sized_new(8);
495
0
    fu_byte_array_set_size(st->buf, 8, 0x0);
496
0
    fu_struct_wacom_usb_id9_unknown_cmd_set_unknown1(st, 0x7050);
497
0
    fu_struct_wacom_usb_id9_unknown_cmd_set_unknown2(st, 0);
498
0
    return st;
499
0
}
500
static gboolean
501
fu_struct_wacom_usb_id9_unknown_cmd_validate_internal(FuStructWacomUsbId9UnknownCmd *st, GError **error)
502
0
{
503
0
    g_return_val_if_fail(st != NULL, FALSE);
504
0
    if (fu_struct_wacom_usb_id9_unknown_cmd_get_unknown1(st) != 0x7050) {
505
0
        g_set_error(error,
506
0
                    FWUPD_ERROR,
507
0
                    FWUPD_ERROR_INVALID_DATA,
508
0
                    "constant FuStructWacomUsbId9UnknownCmd.unknown1 was not valid, "
509
0
                    "expected 0x%x and got 0x%x",
510
0
                    (guint) 0x7050,
511
0
                    (guint) fu_struct_wacom_usb_id9_unknown_cmd_get_unknown1(st));
512
0
        return FALSE;
513
0
    }
514
0
    if (fu_struct_wacom_usb_id9_unknown_cmd_get_unknown2(st) != 0) {
515
0
        g_set_error(error,
516
0
                    FWUPD_ERROR,
517
0
                    FWUPD_ERROR_INVALID_DATA,
518
0
                    "constant FuStructWacomUsbId9UnknownCmd.unknown2 was not valid, "
519
0
                    "expected 0x%x and got 0x%x",
520
0
                    (guint) 0,
521
0
                    (guint) fu_struct_wacom_usb_id9_unknown_cmd_get_unknown2(st));
522
0
        return FALSE;
523
0
    }
524
0
    return TRUE;
525
0
}
526
/**
527
 * fu_struct_wacom_usb_id9_spi_cmd_ref: (skip):
528
 **/
529
FuStructWacomUsbId9SpiCmd *
530
fu_struct_wacom_usb_id9_spi_cmd_ref(FuStructWacomUsbId9SpiCmd *st)
531
0
{
532
0
    g_return_val_if_fail(st != NULL, NULL);
533
0
    st->refcount++;
534
0
    return st;
535
0
}
536
/**
537
 * fu_struct_wacom_usb_id9_spi_cmd_unref: (skip):
538
 **/
539
void
540
fu_struct_wacom_usb_id9_spi_cmd_unref(FuStructWacomUsbId9SpiCmd *st)
541
0
{
542
0
    g_return_if_fail(st != NULL);
543
0
    if (st->refcount == 0) {
544
0
        g_critical("FuStructWacomUsbId9SpiCmd refcount already zero");
545
0
        return;
546
0
    }
547
0
    if (--st->refcount > 0)
548
0
        return;
549
0
    if (st->buf != NULL)
550
0
        g_byte_array_unref(st->buf);
551
0
    g_free(st);
552
0
}
553
/**
554
 * fu_struct_wacom_usb_id9_spi_cmd_new_internal: (skip):
555
 **/
556
static FuStructWacomUsbId9SpiCmd *
557
fu_struct_wacom_usb_id9_spi_cmd_new_internal(void)
558
0
{
559
0
    FuStructWacomUsbId9SpiCmd *st = g_new0(FuStructWacomUsbId9SpiCmd, 1);
560
0
    st->refcount = 1;
561
0
    return st;
562
0
}
563
564
/* getters */
565
/**
566
 * fu_struct_wacom_usb_id9_spi_cmd_get_command: (skip):
567
 **/
568
static guint8
569
fu_struct_wacom_usb_id9_spi_cmd_get_command(const FuStructWacomUsbId9SpiCmd *st)
570
0
{
571
0
    g_return_val_if_fail(st != NULL, 0x0);
572
0
    return st->buf->data[0];
573
0
}
574
/**
575
 * fu_struct_wacom_usb_id9_spi_cmd_get_start_addr: (skip):
576
 **/
577
static guint32
578
fu_struct_wacom_usb_id9_spi_cmd_get_start_addr(const FuStructWacomUsbId9SpiCmd *st)
579
0
{
580
0
    g_return_val_if_fail(st != NULL, 0x0);
581
0
    return fu_memread_uint32(st->buf->data + 1, G_BIG_ENDIAN);
582
0
}
583
584
/* setters */
585
/**
586
 * fu_struct_wacom_usb_id9_spi_cmd_set_command: (skip):
587
 **/
588
static void
589
fu_struct_wacom_usb_id9_spi_cmd_set_command(FuStructWacomUsbId9SpiCmd *st, guint8 value)
590
0
{
591
0
    g_return_if_fail(st != NULL);
592
0
    st->buf->data[0] = value;
593
0
}
594
/**
595
 * fu_struct_wacom_usb_id9_spi_cmd_set_start_addr: (skip):
596
 **/
597
static void
598
fu_struct_wacom_usb_id9_spi_cmd_set_start_addr(FuStructWacomUsbId9SpiCmd *st, guint32 value)
599
0
{
600
0
    g_return_if_fail(st != NULL);
601
0
    fu_memwrite_uint32(st->buf->data + 1, value, G_BIG_ENDIAN);
602
0
}
603
/**
604
 * fu_struct_wacom_usb_id9_spi_cmd_set_size: (skip):
605
 **/
606
void
607
fu_struct_wacom_usb_id9_spi_cmd_set_size(FuStructWacomUsbId9SpiCmd *st, guint16 value)
608
0
{
609
0
    g_return_if_fail(st != NULL);
610
0
    fu_memwrite_uint16(st->buf->data + 5, value, G_BIG_ENDIAN);
611
0
}
612
/**
613
 * fu_struct_wacom_usb_id9_spi_cmd_set_data: (skip):
614
 **/
615
gboolean
616
fu_struct_wacom_usb_id9_spi_cmd_set_data(FuStructWacomUsbId9SpiCmd *st, const FuStructWacomUsbId9UnknownCmd *st_donor, GError **error)
617
0
{
618
0
    g_return_val_if_fail(st != NULL, FALSE);
619
0
    g_return_val_if_fail(st_donor != NULL, FALSE);
620
0
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
621
622
0
    if (st_donor->buf->len > FU_STRUCT_WACOM_USB_ID9_UNKNOWN_CMD_SIZE) {
623
0
        g_set_error(error,
624
0
                    FWUPD_ERROR,
625
0
                    FWUPD_ERROR_INVALID_DATA,
626
0
                    "donor 'FuStructWacomUsbId9UnknownCmd' (0x%x bytes) does not fit in "
627
0
                    "FuStructWacomUsbId9SpiCmd.data (0x%x bytes)",
628
0
                    (guint) st_donor->buf->len,
629
0
                    (guint) FU_STRUCT_WACOM_USB_ID9_UNKNOWN_CMD_SIZE);
630
0
        return FALSE;
631
0
    }
632
0
    memcpy(st->buf->data + FU_STRUCT_WACOM_USB_ID9_SPI_CMD_OFFSET_DATA, st_donor->buf->data, st_donor->buf->len);
633
0
    return TRUE;
634
0
}
635
/**
636
 * fu_struct_wacom_usb_id9_spi_cmd_new: (skip):
637
 **/
638
FuStructWacomUsbId9SpiCmd *
639
fu_struct_wacom_usb_id9_spi_cmd_new(void)
640
0
{
641
0
    FuStructWacomUsbId9SpiCmd *st = fu_struct_wacom_usb_id9_spi_cmd_new_internal();
642
0
    st->buf = g_byte_array_sized_new(15);
643
0
    fu_byte_array_set_size(st->buf, 15, 0x0);
644
0
    {
645
0
        g_autoptr(FuStructWacomUsbId9UnknownCmd) st_donor = fu_struct_wacom_usb_id9_unknown_cmd_new();
646
0
        memcpy(st->buf->data + 0x7, st_donor->buf->data, st_donor->buf->len); /* nocheck:blocked */
647
0
    }
648
0
    fu_struct_wacom_usb_id9_spi_cmd_set_command(st, 0x91);
649
0
    fu_struct_wacom_usb_id9_spi_cmd_set_start_addr(st, 0);
650
0
    return st;
651
0
}
652
static gboolean
653
fu_struct_wacom_usb_id9_spi_cmd_validate_internal(FuStructWacomUsbId9SpiCmd *st, GError **error)
654
0
{
655
0
    g_return_val_if_fail(st != NULL, FALSE);
656
0
    if (fu_struct_wacom_usb_id9_spi_cmd_get_command(st) != 0x91) {
657
0
        g_set_error_literal(error,
658
0
                            FWUPD_ERROR,
659
0
                            FWUPD_ERROR_INVALID_DATA,
660
0
                            "constant FuStructWacomUsbId9SpiCmd.command was not valid");
661
0
        return FALSE;
662
0
    }
663
0
    if (fu_struct_wacom_usb_id9_spi_cmd_get_start_addr(st) != 0) {
664
0
        g_set_error(error,
665
0
                    FWUPD_ERROR,
666
0
                    FWUPD_ERROR_INVALID_DATA,
667
0
                    "constant FuStructWacomUsbId9SpiCmd.start_addr was not valid, "
668
0
                    "expected 0x%x and got 0x%x",
669
0
                    (guint) 0,
670
0
                    (guint) fu_struct_wacom_usb_id9_spi_cmd_get_start_addr(st));
671
0
        return FALSE;
672
0
    }
673
0
    {
674
0
        GByteArray buf_tmp = {
675
0
            .data = (guint8*) st->buf->data + 0x7,
676
0
            .len = 8,
677
0
        };
678
0
        FuStructWacomUsbId9UnknownCmd st_tmp = { .buf = &buf_tmp };
679
0
        if (!fu_struct_wacom_usb_id9_unknown_cmd_validate_internal(&st_tmp, error))
680
0
            return FALSE;
681
0
    }
682
0
    return TRUE;
683
0
}
684
/**
685
 * fu_struct_wacom_usb_id9_loader_cmd_ref: (skip):
686
 **/
687
FuStructWacomUsbId9LoaderCmd *
688
fu_struct_wacom_usb_id9_loader_cmd_ref(FuStructWacomUsbId9LoaderCmd *st)
689
0
{
690
0
    g_return_val_if_fail(st != NULL, NULL);
691
0
    st->refcount++;
692
0
    return st;
693
0
}
694
/**
695
 * fu_struct_wacom_usb_id9_loader_cmd_unref: (skip):
696
 **/
697
void
698
fu_struct_wacom_usb_id9_loader_cmd_unref(FuStructWacomUsbId9LoaderCmd *st)
699
0
{
700
0
    g_return_if_fail(st != NULL);
701
0
    if (st->refcount == 0) {
702
0
        g_critical("FuStructWacomUsbId9LoaderCmd refcount already zero");
703
0
        return;
704
0
    }
705
0
    if (--st->refcount > 0)
706
0
        return;
707
0
    if (st->buf != NULL)
708
0
        g_byte_array_unref(st->buf);
709
0
    g_free(st);
710
0
}
711
/**
712
 * fu_struct_wacom_usb_id9_loader_cmd_new_internal: (skip):
713
 **/
714
static FuStructWacomUsbId9LoaderCmd *
715
fu_struct_wacom_usb_id9_loader_cmd_new_internal(void)
716
0
{
717
0
    FuStructWacomUsbId9LoaderCmd *st = g_new0(FuStructWacomUsbId9LoaderCmd, 1);
718
0
    st->refcount = 1;
719
0
    return st;
720
0
}
721
722
/* getters */
723
724
/* setters */
725
/**
726
 * fu_struct_wacom_usb_id9_loader_cmd_set_command: (skip):
727
 **/
728
void
729
fu_struct_wacom_usb_id9_loader_cmd_set_command(FuStructWacomUsbId9LoaderCmd *st, guint8 value)
730
0
{
731
0
    g_return_if_fail(st != NULL);
732
0
    st->buf->data[0] = value;
733
0
}
734
/**
735
 * fu_struct_wacom_usb_id9_loader_cmd_set_size: (skip):
736
 **/
737
void
738
fu_struct_wacom_usb_id9_loader_cmd_set_size(FuStructWacomUsbId9LoaderCmd *st, guint16 value)
739
0
{
740
0
    g_return_if_fail(st != NULL);
741
0
    fu_memwrite_uint16(st->buf->data + 1, value, G_BIG_ENDIAN);
742
0
}
743
/**
744
 * fu_struct_wacom_usb_id9_loader_cmd_set_crc: (skip):
745
 **/
746
void
747
fu_struct_wacom_usb_id9_loader_cmd_set_crc(FuStructWacomUsbId9LoaderCmd *st, guint32 value)
748
0
{
749
0
    g_return_if_fail(st != NULL);
750
0
    fu_memwrite_uint32(st->buf->data + 3, value, G_BIG_ENDIAN);
751
0
}
752
/**
753
 * fu_struct_wacom_usb_id9_loader_cmd_set_data: (skip):
754
 **/
755
gboolean
756
fu_struct_wacom_usb_id9_loader_cmd_set_data(FuStructWacomUsbId9LoaderCmd *st, const FuStructWacomUsbId9SpiCmd *st_donor, GError **error)
757
0
{
758
0
    g_return_val_if_fail(st != NULL, FALSE);
759
0
    g_return_val_if_fail(st_donor != NULL, FALSE);
760
0
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
761
762
0
    if (st_donor->buf->len > FU_STRUCT_WACOM_USB_ID9_SPI_CMD_SIZE) {
763
0
        g_set_error(error,
764
0
                    FWUPD_ERROR,
765
0
                    FWUPD_ERROR_INVALID_DATA,
766
0
                    "donor 'FuStructWacomUsbId9SpiCmd' (0x%x bytes) does not fit in "
767
0
                    "FuStructWacomUsbId9LoaderCmd.data (0x%x bytes)",
768
0
                    (guint) st_donor->buf->len,
769
0
                    (guint) FU_STRUCT_WACOM_USB_ID9_SPI_CMD_SIZE);
770
0
        return FALSE;
771
0
    }
772
0
    memcpy(st->buf->data + FU_STRUCT_WACOM_USB_ID9_LOADER_CMD_OFFSET_DATA, st_donor->buf->data, st_donor->buf->len);
773
0
    return TRUE;
774
0
}
775
/**
776
 * fu_struct_wacom_usb_id9_loader_cmd_new: (skip):
777
 **/
778
FuStructWacomUsbId9LoaderCmd *
779
fu_struct_wacom_usb_id9_loader_cmd_new(void)
780
0
{
781
0
    FuStructWacomUsbId9LoaderCmd *st = fu_struct_wacom_usb_id9_loader_cmd_new_internal();
782
0
    st->buf = g_byte_array_sized_new(22);
783
0
    fu_byte_array_set_size(st->buf, 22, 0x0);
784
0
    {
785
0
        g_autoptr(FuStructWacomUsbId9SpiCmd) st_donor = fu_struct_wacom_usb_id9_spi_cmd_new();
786
0
        memcpy(st->buf->data + 0x7, st_donor->buf->data, st_donor->buf->len); /* nocheck:blocked */
787
0
    }
788
0
    return st;
789
0
}
790
/**
791
 * fu_struct_wacom_usb_id9_loader_cmd_to_bytes: (skip):
792
 **/
793
GBytes *
794
fu_struct_wacom_usb_id9_loader_cmd_to_bytes(const FuStructWacomUsbId9LoaderCmd *st)
795
0
{
796
0
    g_return_val_if_fail(st != NULL, NULL);
797
0
    return g_bytes_new(st->buf->data, st->buf->len);
798
0
}
799
static gboolean
800
fu_struct_wacom_usb_id9_loader_cmd_validate_internal(FuStructWacomUsbId9LoaderCmd *st, GError **error)
801
0
{
802
0
    g_return_val_if_fail(st != NULL, FALSE);
803
0
    {
804
0
        GByteArray buf_tmp = {
805
0
            .data = (guint8*) st->buf->data + 0x7,
806
0
            .len = 15,
807
0
        };
808
0
        FuStructWacomUsbId9SpiCmd st_tmp = { .buf = &buf_tmp };
809
0
        if (!fu_struct_wacom_usb_id9_spi_cmd_validate_internal(&st_tmp, error))
810
0
            return FALSE;
811
0
    }
812
0
    return TRUE;
813
0
}
814
/**
815
 * fu_struct_wacom_usb_id9_loader_cmd_validate: (skip):
816
 **/
817
gboolean
818
fu_struct_wacom_usb_id9_loader_cmd_validate(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
819
0
{
820
0
    GByteArray st_buf = {.data = (guint8 *) buf + offset, .len = bufsz - offset, };
821
0
    FuStructWacomUsbId9LoaderCmd st_tmp = {.buf = &st_buf };
822
0
    g_return_val_if_fail(buf != NULL, FALSE);
823
0
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
824
0
    if (!fu_memchk_read(bufsz, offset, 22, error)) {
825
0
        g_prefix_error_literal(error, "invalid struct FuStructWacomUsbId9LoaderCmd: ");
826
0
        return FALSE;
827
0
    }
828
0
    if (!fu_struct_wacom_usb_id9_loader_cmd_validate_internal(&st_tmp, error))
829
0
        return FALSE;
830
0
    return TRUE;
831
0
}
832
/**
833
 * fu_struct_wacom_usb_module_desc_ref: (skip):
834
 **/
835
FuStructWacomUsbModuleDesc *
836
fu_struct_wacom_usb_module_desc_ref(FuStructWacomUsbModuleDesc *st)
837
0
{
838
0
    g_return_val_if_fail(st != NULL, NULL);
839
0
    st->refcount++;
840
0
    return st;
841
0
}
842
/**
843
 * fu_struct_wacom_usb_module_desc_unref: (skip):
844
 **/
845
void
846
fu_struct_wacom_usb_module_desc_unref(FuStructWacomUsbModuleDesc *st)
847
0
{
848
0
    g_return_if_fail(st != NULL);
849
0
    if (st->refcount == 0) {
850
0
        g_critical("FuStructWacomUsbModuleDesc refcount already zero");
851
0
        return;
852
0
    }
853
0
    if (--st->refcount > 0)
854
0
        return;
855
0
    if (st->buf != NULL)
856
0
        g_byte_array_unref(st->buf);
857
0
    g_free(st);
858
0
}
859
/**
860
 * fu_struct_wacom_usb_module_desc_new_internal: (skip):
861
 **/
862
static FuStructWacomUsbModuleDesc *
863
fu_struct_wacom_usb_module_desc_new_internal(void)
864
0
{
865
0
    FuStructWacomUsbModuleDesc *st = g_new0(FuStructWacomUsbModuleDesc, 1);
866
0
    st->refcount = 1;
867
0
    return st;
868
0
}
869
870
/* getters */
871
/**
872
 * fu_struct_wacom_usb_module_desc_get_bootloader_version: (skip):
873
 **/
874
guint16
875
fu_struct_wacom_usb_module_desc_get_bootloader_version(const FuStructWacomUsbModuleDesc *st)
876
0
{
877
0
    g_return_val_if_fail(st != NULL, 0x0);
878
0
    return fu_memread_uint16(st->buf->data + 1, G_BIG_ENDIAN);
879
0
}
880
/**
881
 * fu_struct_wacom_usb_module_desc_get_number_modules: (skip):
882
 **/
883
guint8
884
fu_struct_wacom_usb_module_desc_get_number_modules(const FuStructWacomUsbModuleDesc *st)
885
0
{
886
0
    g_return_val_if_fail(st != NULL, 0x0);
887
0
    return st->buf->data[3];
888
0
}
889
890
/* setters */
891
/**
892
 * fu_struct_wacom_usb_module_desc_to_string: (skip):
893
 **/
894
static gchar *
895
fu_struct_wacom_usb_module_desc_to_string(const FuStructWacomUsbModuleDesc *st)
896
0
{
897
0
    g_autoptr(GString) str = g_string_new("FuStructWacomUsbModuleDesc:\n");
898
0
    g_return_val_if_fail(st != NULL, NULL);
899
0
    g_string_append_printf(str, "  bootloader_version: 0x%x\n",
900
0
                           (guint) fu_struct_wacom_usb_module_desc_get_bootloader_version(st));
901
0
    g_string_append_printf(str, "  number_modules: 0x%x\n",
902
0
                           (guint) fu_struct_wacom_usb_module_desc_get_number_modules(st));
903
0
    if (str->len > 0)
904
0
        g_string_set_size(str, str->len - 1);
905
0
    return g_string_free(g_steal_pointer(&str), FALSE);
906
0
}
907
static gboolean
908
fu_struct_wacom_usb_module_desc_validate_internal(FuStructWacomUsbModuleDesc *st, GError **error)
909
0
{
910
0
    g_return_val_if_fail(st != NULL, FALSE);
911
0
    return TRUE;
912
0
}
913
static gboolean
914
fu_struct_wacom_usb_module_desc_parse_internal(FuStructWacomUsbModuleDesc *st, GError **error)
915
0
{
916
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
917
0
        g_autofree gchar *str = fu_struct_wacom_usb_module_desc_to_string(st);
918
0
        g_debug("%s", str);
919
0
    }
920
0
    if (!fu_struct_wacom_usb_module_desc_validate_internal(st, error))
921
0
        return FALSE;
922
0
    return TRUE;
923
0
}
924
925
/**
926
 * fu_struct_wacom_usb_module_desc_parse: (skip):
927
 **/
928
FuStructWacomUsbModuleDesc *
929
fu_struct_wacom_usb_module_desc_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
930
0
{
931
0
    g_autoptr(FuStructWacomUsbModuleDesc) st = fu_struct_wacom_usb_module_desc_new_internal();
932
0
    g_return_val_if_fail(buf != NULL, NULL);
933
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
934
0
    if (!fu_memchk_read(bufsz, offset, 4, error)) {
935
0
        g_prefix_error_literal(error, "invalid struct FuStructWacomUsbModuleDesc: ");
936
0
        return NULL;
937
0
    }
938
0
    st->buf = g_byte_array_new();
939
0
    g_byte_array_append(st->buf, buf + offset, 4);
940
0
    if (!fu_struct_wacom_usb_module_desc_parse_internal(st, error))
941
0
        return NULL;
942
0
    return g_steal_pointer(&st);
943
0
}
944
/**
945
 * fu_struct_wacom_usb_module_item_ref: (skip):
946
 **/
947
FuStructWacomUsbModuleItem *
948
fu_struct_wacom_usb_module_item_ref(FuStructWacomUsbModuleItem *st)
949
0
{
950
0
    g_return_val_if_fail(st != NULL, NULL);
951
0
    st->refcount++;
952
0
    return st;
953
0
}
954
/**
955
 * fu_struct_wacom_usb_module_item_unref: (skip):
956
 **/
957
void
958
fu_struct_wacom_usb_module_item_unref(FuStructWacomUsbModuleItem *st)
959
0
{
960
0
    g_return_if_fail(st != NULL);
961
0
    if (st->refcount == 0) {
962
0
        g_critical("FuStructWacomUsbModuleItem refcount already zero");
963
0
        return;
964
0
    }
965
0
    if (--st->refcount > 0)
966
0
        return;
967
0
    if (st->buf != NULL)
968
0
        g_byte_array_unref(st->buf);
969
0
    g_free(st);
970
0
}
971
/**
972
 * fu_struct_wacom_usb_module_item_new_internal: (skip):
973
 **/
974
static FuStructWacomUsbModuleItem *
975
fu_struct_wacom_usb_module_item_new_internal(void)
976
0
{
977
0
    FuStructWacomUsbModuleItem *st = g_new0(FuStructWacomUsbModuleItem, 1);
978
0
    st->refcount = 1;
979
0
    return st;
980
0
}
981
982
/* getters */
983
/**
984
 * fu_struct_wacom_usb_module_item_get_kind: (skip):
985
 **/
986
FuWacomUsbModuleFwType
987
fu_struct_wacom_usb_module_item_get_kind(const FuStructWacomUsbModuleItem *st)
988
0
{
989
0
    g_return_val_if_fail(st != NULL, 0x0);
990
0
    return st->buf->data[0];
991
0
}
992
/**
993
 * fu_struct_wacom_usb_module_item_get_version: (skip):
994
 **/
995
guint16
996
fu_struct_wacom_usb_module_item_get_version(const FuStructWacomUsbModuleItem *st)
997
0
{
998
0
    g_return_val_if_fail(st != NULL, 0x0);
999
0
    return fu_memread_uint16(st->buf->data + 1, G_BIG_ENDIAN);
1000
0
}
1001
/**
1002
 * fu_struct_wacom_usb_module_item_get_version2: (skip):
1003
 **/
1004
guint8
1005
fu_struct_wacom_usb_module_item_get_version2(const FuStructWacomUsbModuleItem *st)
1006
0
{
1007
0
    g_return_val_if_fail(st != NULL, 0x0);
1008
0
    return st->buf->data[3];
1009
0
}
1010
1011
/* setters */
1012
/**
1013
 * fu_struct_wacom_usb_module_item_to_string: (skip):
1014
 **/
1015
static gchar *
1016
fu_struct_wacom_usb_module_item_to_string(const FuStructWacomUsbModuleItem *st)
1017
0
{
1018
0
    g_autoptr(GString) str = g_string_new("FuStructWacomUsbModuleItem:\n");
1019
0
    g_return_val_if_fail(st != NULL, NULL);
1020
0
    {
1021
0
        const gchar *tmp = fu_wacom_usb_module_fw_type_to_string(fu_struct_wacom_usb_module_item_get_kind(st));
1022
0
        if (tmp != NULL) {
1023
0
            g_string_append_printf(str, "  kind: 0x%x [%s]\n", (guint) fu_struct_wacom_usb_module_item_get_kind(st), tmp);
1024
0
        } else {
1025
0
            g_string_append_printf(str, "  kind: 0x%x\n", (guint) fu_struct_wacom_usb_module_item_get_kind(st));
1026
0
        }
1027
0
    }
1028
0
    g_string_append_printf(str, "  version: 0x%x\n",
1029
0
                           (guint) fu_struct_wacom_usb_module_item_get_version(st));
1030
0
    g_string_append_printf(str, "  version2: 0x%x\n",
1031
0
                           (guint) fu_struct_wacom_usb_module_item_get_version2(st));
1032
0
    if (str->len > 0)
1033
0
        g_string_set_size(str, str->len - 1);
1034
0
    return g_string_free(g_steal_pointer(&str), FALSE);
1035
0
}
1036
static gboolean
1037
fu_struct_wacom_usb_module_item_validate_internal(FuStructWacomUsbModuleItem *st, GError **error)
1038
0
{
1039
0
    g_return_val_if_fail(st != NULL, FALSE);
1040
0
    return TRUE;
1041
0
}
1042
static gboolean
1043
fu_struct_wacom_usb_module_item_parse_internal(FuStructWacomUsbModuleItem *st, GError **error)
1044
0
{
1045
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
1046
0
        g_autofree gchar *str = fu_struct_wacom_usb_module_item_to_string(st);
1047
0
        g_debug("%s", str);
1048
0
    }
1049
0
    if (!fu_struct_wacom_usb_module_item_validate_internal(st, error))
1050
0
        return FALSE;
1051
0
    return TRUE;
1052
0
}
1053
1054
/**
1055
 * fu_struct_wacom_usb_module_item_parse: (skip):
1056
 **/
1057
FuStructWacomUsbModuleItem *
1058
fu_struct_wacom_usb_module_item_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
1059
0
{
1060
0
    g_autoptr(FuStructWacomUsbModuleItem) st = fu_struct_wacom_usb_module_item_new_internal();
1061
0
    g_return_val_if_fail(buf != NULL, NULL);
1062
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
1063
0
    if (!fu_memchk_read(bufsz, offset, 4, error)) {
1064
0
        g_prefix_error_literal(error, "invalid struct FuStructWacomUsbModuleItem: ");
1065
0
        return NULL;
1066
0
    }
1067
0
    st->buf = g_byte_array_new();
1068
0
    g_byte_array_append(st->buf, buf + offset, 4);
1069
0
    if (!fu_struct_wacom_usb_module_item_parse_internal(st, error))
1070
0
        return NULL;
1071
0
    return g_steal_pointer(&st);
1072
0
}