Coverage Report

Created: 2026-06-15 06:54

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.87k
{
214
1.87k
    g_return_if_fail(st != NULL);
215
1.87k
    if (st->refcount == 0) {
216
0
        g_critical("FuStructWacomUsbFirmwareHdr refcount already zero");
217
0
        return;
218
0
    }
219
1.87k
    if (--st->refcount > 0)
220
0
        return;
221
1.87k
    if (st->buf != NULL)
222
1.87k
        g_byte_array_unref(st->buf);
223
1.87k
    g_free(st);
224
1.87k
}
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.87k
{
231
1.87k
    FuStructWacomUsbFirmwareHdr *st = g_new0(FuStructWacomUsbFirmwareHdr, 1);
232
1.87k
    st->refcount = 1;
233
1.87k
    return st;
234
1.87k
}
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
47
{
243
47
    g_return_val_if_fail(st != NULL, NULL);
244
47
    return fu_memstrsafe(st->buf->data, st->buf->len, 0, 5, NULL);
245
47
}
246
247
/* setters */
248
static gboolean
249
fu_struct_wacom_usb_firmware_hdr_validate_internal(FuStructWacomUsbFirmwareHdr *st, GError **error)
250
1.86k
{
251
1.86k
    g_return_val_if_fail(st != NULL, FALSE);
252
1.86k
    if (strncmp((const gchar *) (st->buf->data + 0), "WACOM", 5) != 0) {
253
47
        g_autofree gchar *str = fu_struct_wacom_usb_firmware_hdr_get_magic(st);
254
47
        g_set_error(error,
255
47
                    FWUPD_ERROR,
256
47
                    FWUPD_ERROR_INVALID_DATA,
257
47
                    "constant FuStructWacomUsbFirmwareHdr.magic was not valid, "
258
47
                    "expected 'WACOM' and got '%s'",
259
47
                    str);
260
47
        return FALSE;
261
47
    }
262
1.81k
    return TRUE;
263
1.86k
}
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.87k
{
270
1.87k
    g_autoptr(FuStructWacomUsbFirmwareHdr) st = fu_struct_wacom_usb_firmware_hdr_new_internal();
271
1.87k
    g_return_val_if_fail(G_IS_INPUT_STREAM(stream), FALSE);
272
1.87k
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
273
1.87k
    st->buf = fu_input_stream_read_byte_array(stream, offset, 5, NULL, error);
274
1.87k
    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.87k
    if (st->buf->len != 5) {
279
9
        g_set_error(error,
280
9
                    FWUPD_ERROR,
281
9
                    FWUPD_ERROR_INVALID_DATA,
282
9
                    "FuStructWacomUsbFirmwareHdr requested 0x%x and got 0x%x",
283
9
                    (guint) 5,
284
9
                    (guint) st->buf->len);
285
9
        return FALSE;
286
9
    }
287
1.86k
    return fu_struct_wacom_usb_firmware_hdr_validate_internal(st, error);
288
1.87k
}
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_parse_internal(FuStructWtaBlockHeader *st, GError **error)
366
0
{
367
0
    if (g_log_get_debug_enabled()) {
368
0
        g_autofree gchar *str = fu_struct_wta_block_header_to_string(st);
369
0
        g_debug("%s", str);
370
0
    }
371
0
    return TRUE;
372
0
}
373
374
/**
375
 * fu_struct_wta_block_header_parse: (skip):
376
 **/
377
FuStructWtaBlockHeader *
378
fu_struct_wta_block_header_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
379
0
{
380
0
    g_autoptr(FuStructWtaBlockHeader) st = fu_struct_wta_block_header_new_internal();
381
0
    g_return_val_if_fail(buf != NULL, NULL);
382
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
383
0
    if (!fu_memchk_read(bufsz, offset, 8, error)) {
384
0
        g_prefix_error_literal(error, "invalid struct FuStructWtaBlockHeader: ");
385
0
        return NULL;
386
0
    }
387
0
    st->buf = g_byte_array_new();
388
0
    g_byte_array_append(st->buf, buf + offset, 8);
389
0
    if (!fu_struct_wta_block_header_parse_internal(st, error))
390
0
        return NULL;
391
0
    return g_steal_pointer(&st);
392
0
}
393
/**
394
 * fu_struct_wacom_usb_id9_unknown_cmd_ref: (skip):
395
 **/
396
FuStructWacomUsbId9UnknownCmd *
397
fu_struct_wacom_usb_id9_unknown_cmd_ref(FuStructWacomUsbId9UnknownCmd *st)
398
0
{
399
0
    g_return_val_if_fail(st != NULL, NULL);
400
0
    st->refcount++;
401
0
    return st;
402
0
}
403
/**
404
 * fu_struct_wacom_usb_id9_unknown_cmd_unref: (skip):
405
 **/
406
void
407
fu_struct_wacom_usb_id9_unknown_cmd_unref(FuStructWacomUsbId9UnknownCmd *st)
408
0
{
409
0
    g_return_if_fail(st != NULL);
410
0
    if (st->refcount == 0) {
411
0
        g_critical("FuStructWacomUsbId9UnknownCmd refcount already zero");
412
0
        return;
413
0
    }
414
0
    if (--st->refcount > 0)
415
0
        return;
416
0
    if (st->buf != NULL)
417
0
        g_byte_array_unref(st->buf);
418
0
    g_free(st);
419
0
}
420
/**
421
 * fu_struct_wacom_usb_id9_unknown_cmd_new_internal: (skip):
422
 **/
423
static FuStructWacomUsbId9UnknownCmd *
424
fu_struct_wacom_usb_id9_unknown_cmd_new_internal(void)
425
0
{
426
0
    FuStructWacomUsbId9UnknownCmd *st = g_new0(FuStructWacomUsbId9UnknownCmd, 1);
427
0
    st->refcount = 1;
428
0
    return st;
429
0
}
430
431
/* getters */
432
/**
433
 * fu_struct_wacom_usb_id9_unknown_cmd_get_unknown1: (skip):
434
 **/
435
static guint16
436
fu_struct_wacom_usb_id9_unknown_cmd_get_unknown1(const FuStructWacomUsbId9UnknownCmd *st)
437
0
{
438
0
    g_return_val_if_fail(st != NULL, 0x0);
439
0
    return fu_memread_uint16(st->buf->data + 0, G_BIG_ENDIAN);
440
0
}
441
/**
442
 * fu_struct_wacom_usb_id9_unknown_cmd_get_unknown2: (skip):
443
 **/
444
static guint32
445
fu_struct_wacom_usb_id9_unknown_cmd_get_unknown2(const FuStructWacomUsbId9UnknownCmd *st)
446
0
{
447
0
    g_return_val_if_fail(st != NULL, 0x0);
448
0
    return fu_memread_uint32(st->buf->data + 2, G_BIG_ENDIAN);
449
0
}
450
451
/* setters */
452
/**
453
 * fu_struct_wacom_usb_id9_unknown_cmd_set_unknown1: (skip):
454
 **/
455
static void
456
fu_struct_wacom_usb_id9_unknown_cmd_set_unknown1(FuStructWacomUsbId9UnknownCmd *st, guint16 value)
457
0
{
458
0
    g_return_if_fail(st != NULL);
459
0
    fu_memwrite_uint16(st->buf->data + 0, value, G_BIG_ENDIAN);
460
0
}
461
/**
462
 * fu_struct_wacom_usb_id9_unknown_cmd_set_unknown2: (skip):
463
 **/
464
static void
465
fu_struct_wacom_usb_id9_unknown_cmd_set_unknown2(FuStructWacomUsbId9UnknownCmd *st, guint32 value)
466
0
{
467
0
    g_return_if_fail(st != NULL);
468
0
    fu_memwrite_uint32(st->buf->data + 2, value, G_BIG_ENDIAN);
469
0
}
470
/**
471
 * fu_struct_wacom_usb_id9_unknown_cmd_set_size: (skip):
472
 **/
473
void
474
fu_struct_wacom_usb_id9_unknown_cmd_set_size(FuStructWacomUsbId9UnknownCmd *st, guint16 value)
475
0
{
476
0
    g_return_if_fail(st != NULL);
477
0
    fu_memwrite_uint16(st->buf->data + 6, value, G_BIG_ENDIAN);
478
0
}
479
/**
480
 * fu_struct_wacom_usb_id9_unknown_cmd_new: (skip):
481
 **/
482
FuStructWacomUsbId9UnknownCmd *
483
fu_struct_wacom_usb_id9_unknown_cmd_new(void)
484
0
{
485
0
    FuStructWacomUsbId9UnknownCmd *st = fu_struct_wacom_usb_id9_unknown_cmd_new_internal();
486
0
    st->buf = g_byte_array_sized_new(8);
487
0
    fu_byte_array_set_size(st->buf, 8, 0x0);
488
0
    fu_struct_wacom_usb_id9_unknown_cmd_set_unknown1(st, 0x7050);
489
0
    fu_struct_wacom_usb_id9_unknown_cmd_set_unknown2(st, 0);
490
0
    return st;
491
0
}
492
static gboolean
493
fu_struct_wacom_usb_id9_unknown_cmd_validate_internal(FuStructWacomUsbId9UnknownCmd *st, GError **error)
494
0
{
495
0
    g_return_val_if_fail(st != NULL, FALSE);
496
0
    if (fu_struct_wacom_usb_id9_unknown_cmd_get_unknown1(st) != 0x7050) {
497
0
        g_set_error(error,
498
0
                    FWUPD_ERROR,
499
0
                    FWUPD_ERROR_INVALID_DATA,
500
0
                    "constant FuStructWacomUsbId9UnknownCmd.unknown1 was not valid, "
501
0
                    "expected 0x%x and got 0x%x",
502
0
                    (guint) 0x7050,
503
0
                    (guint) fu_struct_wacom_usb_id9_unknown_cmd_get_unknown1(st));
504
0
        return FALSE;
505
0
    }
506
0
    if (fu_struct_wacom_usb_id9_unknown_cmd_get_unknown2(st) != 0) {
507
0
        g_set_error(error,
508
0
                    FWUPD_ERROR,
509
0
                    FWUPD_ERROR_INVALID_DATA,
510
0
                    "constant FuStructWacomUsbId9UnknownCmd.unknown2 was not valid, "
511
0
                    "expected 0x%x and got 0x%x",
512
0
                    (guint) 0,
513
0
                    (guint) fu_struct_wacom_usb_id9_unknown_cmd_get_unknown2(st));
514
0
        return FALSE;
515
0
    }
516
0
    return TRUE;
517
0
}
518
/**
519
 * fu_struct_wacom_usb_id9_spi_cmd_ref: (skip):
520
 **/
521
FuStructWacomUsbId9SpiCmd *
522
fu_struct_wacom_usb_id9_spi_cmd_ref(FuStructWacomUsbId9SpiCmd *st)
523
0
{
524
0
    g_return_val_if_fail(st != NULL, NULL);
525
0
    st->refcount++;
526
0
    return st;
527
0
}
528
/**
529
 * fu_struct_wacom_usb_id9_spi_cmd_unref: (skip):
530
 **/
531
void
532
fu_struct_wacom_usb_id9_spi_cmd_unref(FuStructWacomUsbId9SpiCmd *st)
533
0
{
534
0
    g_return_if_fail(st != NULL);
535
0
    if (st->refcount == 0) {
536
0
        g_critical("FuStructWacomUsbId9SpiCmd refcount already zero");
537
0
        return;
538
0
    }
539
0
    if (--st->refcount > 0)
540
0
        return;
541
0
    if (st->buf != NULL)
542
0
        g_byte_array_unref(st->buf);
543
0
    g_free(st);
544
0
}
545
/**
546
 * fu_struct_wacom_usb_id9_spi_cmd_new_internal: (skip):
547
 **/
548
static FuStructWacomUsbId9SpiCmd *
549
fu_struct_wacom_usb_id9_spi_cmd_new_internal(void)
550
0
{
551
0
    FuStructWacomUsbId9SpiCmd *st = g_new0(FuStructWacomUsbId9SpiCmd, 1);
552
0
    st->refcount = 1;
553
0
    return st;
554
0
}
555
556
/* getters */
557
/**
558
 * fu_struct_wacom_usb_id9_spi_cmd_get_command: (skip):
559
 **/
560
static guint8
561
fu_struct_wacom_usb_id9_spi_cmd_get_command(const FuStructWacomUsbId9SpiCmd *st)
562
0
{
563
0
    g_return_val_if_fail(st != NULL, 0x0);
564
0
    return st->buf->data[0];
565
0
}
566
/**
567
 * fu_struct_wacom_usb_id9_spi_cmd_get_start_addr: (skip):
568
 **/
569
static guint32
570
fu_struct_wacom_usb_id9_spi_cmd_get_start_addr(const FuStructWacomUsbId9SpiCmd *st)
571
0
{
572
0
    g_return_val_if_fail(st != NULL, 0x0);
573
0
    return fu_memread_uint32(st->buf->data + 1, G_BIG_ENDIAN);
574
0
}
575
576
/* setters */
577
/**
578
 * fu_struct_wacom_usb_id9_spi_cmd_set_command: (skip):
579
 **/
580
static void
581
fu_struct_wacom_usb_id9_spi_cmd_set_command(FuStructWacomUsbId9SpiCmd *st, guint8 value)
582
0
{
583
0
    g_return_if_fail(st != NULL);
584
0
    st->buf->data[0] = value;
585
0
}
586
/**
587
 * fu_struct_wacom_usb_id9_spi_cmd_set_start_addr: (skip):
588
 **/
589
static void
590
fu_struct_wacom_usb_id9_spi_cmd_set_start_addr(FuStructWacomUsbId9SpiCmd *st, guint32 value)
591
0
{
592
0
    g_return_if_fail(st != NULL);
593
0
    fu_memwrite_uint32(st->buf->data + 1, value, G_BIG_ENDIAN);
594
0
}
595
/**
596
 * fu_struct_wacom_usb_id9_spi_cmd_set_size: (skip):
597
 **/
598
void
599
fu_struct_wacom_usb_id9_spi_cmd_set_size(FuStructWacomUsbId9SpiCmd *st, guint16 value)
600
0
{
601
0
    g_return_if_fail(st != NULL);
602
0
    fu_memwrite_uint16(st->buf->data + 5, value, G_BIG_ENDIAN);
603
0
}
604
/**
605
 * fu_struct_wacom_usb_id9_spi_cmd_set_data: (skip):
606
 **/
607
gboolean
608
fu_struct_wacom_usb_id9_spi_cmd_set_data(FuStructWacomUsbId9SpiCmd *st, const FuStructWacomUsbId9UnknownCmd *st_donor, GError **error)
609
0
{
610
0
    g_return_val_if_fail(st != NULL, FALSE);
611
0
    g_return_val_if_fail(st_donor != NULL, FALSE);
612
0
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
613
614
0
    if (st_donor->buf->len > FU_STRUCT_WACOM_USB_ID9_UNKNOWN_CMD_SIZE) {
615
0
        g_set_error(error,
616
0
                    FWUPD_ERROR,
617
0
                    FWUPD_ERROR_INVALID_DATA,
618
0
                    "donor 'FuStructWacomUsbId9UnknownCmd' (0x%x bytes) does not fit in "
619
0
                    "FuStructWacomUsbId9SpiCmd.data (0x%x bytes)",
620
0
                    (guint) st_donor->buf->len,
621
0
                    (guint) FU_STRUCT_WACOM_USB_ID9_UNKNOWN_CMD_SIZE);
622
0
        return FALSE;
623
0
    }
624
0
    memcpy(st->buf->data + FU_STRUCT_WACOM_USB_ID9_SPI_CMD_OFFSET_DATA, st_donor->buf->data, st_donor->buf->len);
625
0
    return TRUE;
626
0
}
627
/**
628
 * fu_struct_wacom_usb_id9_spi_cmd_new: (skip):
629
 **/
630
FuStructWacomUsbId9SpiCmd *
631
fu_struct_wacom_usb_id9_spi_cmd_new(void)
632
0
{
633
0
    FuStructWacomUsbId9SpiCmd *st = fu_struct_wacom_usb_id9_spi_cmd_new_internal();
634
0
    st->buf = g_byte_array_sized_new(15);
635
0
    fu_byte_array_set_size(st->buf, 15, 0x0);
636
0
    {
637
0
        g_autoptr(FuStructWacomUsbId9UnknownCmd) st_donor = fu_struct_wacom_usb_id9_unknown_cmd_new();
638
0
        memcpy(st->buf->data + 0x7, st_donor->buf->data, st_donor->buf->len); /* nocheck:blocked */
639
0
    }
640
0
    fu_struct_wacom_usb_id9_spi_cmd_set_command(st, 0x91);
641
0
    fu_struct_wacom_usb_id9_spi_cmd_set_start_addr(st, 0);
642
0
    return st;
643
0
}
644
static gboolean
645
fu_struct_wacom_usb_id9_spi_cmd_validate_internal(FuStructWacomUsbId9SpiCmd *st, GError **error)
646
0
{
647
0
    g_return_val_if_fail(st != NULL, FALSE);
648
0
    if (fu_struct_wacom_usb_id9_spi_cmd_get_command(st) != 0x91) {
649
0
        g_set_error_literal(error,
650
0
                            FWUPD_ERROR,
651
0
                            FWUPD_ERROR_INVALID_DATA,
652
0
                            "constant FuStructWacomUsbId9SpiCmd.command was not valid");
653
0
        return FALSE;
654
0
    }
655
0
    if (fu_struct_wacom_usb_id9_spi_cmd_get_start_addr(st) != 0) {
656
0
        g_set_error(error,
657
0
                    FWUPD_ERROR,
658
0
                    FWUPD_ERROR_INVALID_DATA,
659
0
                    "constant FuStructWacomUsbId9SpiCmd.start_addr was not valid, "
660
0
                    "expected 0x%x and got 0x%x",
661
0
                    (guint) 0,
662
0
                    (guint) fu_struct_wacom_usb_id9_spi_cmd_get_start_addr(st));
663
0
        return FALSE;
664
0
    }
665
0
    {
666
0
        GByteArray buf_tmp = {
667
0
            .data = (guint8*) st->buf->data + 0x7,
668
0
            .len = 8,
669
0
        };
670
0
        FuStructWacomUsbId9UnknownCmd st_tmp = { .buf = &buf_tmp };
671
0
        if (!fu_struct_wacom_usb_id9_unknown_cmd_validate_internal(&st_tmp, error))
672
0
            return FALSE;
673
0
    }
674
0
    return TRUE;
675
0
}
676
/**
677
 * fu_struct_wacom_usb_id9_loader_cmd_ref: (skip):
678
 **/
679
FuStructWacomUsbId9LoaderCmd *
680
fu_struct_wacom_usb_id9_loader_cmd_ref(FuStructWacomUsbId9LoaderCmd *st)
681
0
{
682
0
    g_return_val_if_fail(st != NULL, NULL);
683
0
    st->refcount++;
684
0
    return st;
685
0
}
686
/**
687
 * fu_struct_wacom_usb_id9_loader_cmd_unref: (skip):
688
 **/
689
void
690
fu_struct_wacom_usb_id9_loader_cmd_unref(FuStructWacomUsbId9LoaderCmd *st)
691
0
{
692
0
    g_return_if_fail(st != NULL);
693
0
    if (st->refcount == 0) {
694
0
        g_critical("FuStructWacomUsbId9LoaderCmd refcount already zero");
695
0
        return;
696
0
    }
697
0
    if (--st->refcount > 0)
698
0
        return;
699
0
    if (st->buf != NULL)
700
0
        g_byte_array_unref(st->buf);
701
0
    g_free(st);
702
0
}
703
/**
704
 * fu_struct_wacom_usb_id9_loader_cmd_new_internal: (skip):
705
 **/
706
static FuStructWacomUsbId9LoaderCmd *
707
fu_struct_wacom_usb_id9_loader_cmd_new_internal(void)
708
0
{
709
0
    FuStructWacomUsbId9LoaderCmd *st = g_new0(FuStructWacomUsbId9LoaderCmd, 1);
710
0
    st->refcount = 1;
711
0
    return st;
712
0
}
713
714
/* getters */
715
716
/* setters */
717
/**
718
 * fu_struct_wacom_usb_id9_loader_cmd_set_command: (skip):
719
 **/
720
void
721
fu_struct_wacom_usb_id9_loader_cmd_set_command(FuStructWacomUsbId9LoaderCmd *st, guint8 value)
722
0
{
723
0
    g_return_if_fail(st != NULL);
724
0
    st->buf->data[0] = value;
725
0
}
726
/**
727
 * fu_struct_wacom_usb_id9_loader_cmd_set_size: (skip):
728
 **/
729
void
730
fu_struct_wacom_usb_id9_loader_cmd_set_size(FuStructWacomUsbId9LoaderCmd *st, guint16 value)
731
0
{
732
0
    g_return_if_fail(st != NULL);
733
0
    fu_memwrite_uint16(st->buf->data + 1, value, G_BIG_ENDIAN);
734
0
}
735
/**
736
 * fu_struct_wacom_usb_id9_loader_cmd_set_crc: (skip):
737
 **/
738
void
739
fu_struct_wacom_usb_id9_loader_cmd_set_crc(FuStructWacomUsbId9LoaderCmd *st, guint32 value)
740
0
{
741
0
    g_return_if_fail(st != NULL);
742
0
    fu_memwrite_uint32(st->buf->data + 3, value, G_BIG_ENDIAN);
743
0
}
744
/**
745
 * fu_struct_wacom_usb_id9_loader_cmd_set_data: (skip):
746
 **/
747
gboolean
748
fu_struct_wacom_usb_id9_loader_cmd_set_data(FuStructWacomUsbId9LoaderCmd *st, const FuStructWacomUsbId9SpiCmd *st_donor, GError **error)
749
0
{
750
0
    g_return_val_if_fail(st != NULL, FALSE);
751
0
    g_return_val_if_fail(st_donor != NULL, FALSE);
752
0
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
753
754
0
    if (st_donor->buf->len > FU_STRUCT_WACOM_USB_ID9_SPI_CMD_SIZE) {
755
0
        g_set_error(error,
756
0
                    FWUPD_ERROR,
757
0
                    FWUPD_ERROR_INVALID_DATA,
758
0
                    "donor 'FuStructWacomUsbId9SpiCmd' (0x%x bytes) does not fit in "
759
0
                    "FuStructWacomUsbId9LoaderCmd.data (0x%x bytes)",
760
0
                    (guint) st_donor->buf->len,
761
0
                    (guint) FU_STRUCT_WACOM_USB_ID9_SPI_CMD_SIZE);
762
0
        return FALSE;
763
0
    }
764
0
    memcpy(st->buf->data + FU_STRUCT_WACOM_USB_ID9_LOADER_CMD_OFFSET_DATA, st_donor->buf->data, st_donor->buf->len);
765
0
    return TRUE;
766
0
}
767
/**
768
 * fu_struct_wacom_usb_id9_loader_cmd_new: (skip):
769
 **/
770
FuStructWacomUsbId9LoaderCmd *
771
fu_struct_wacom_usb_id9_loader_cmd_new(void)
772
0
{
773
0
    FuStructWacomUsbId9LoaderCmd *st = fu_struct_wacom_usb_id9_loader_cmd_new_internal();
774
0
    st->buf = g_byte_array_sized_new(22);
775
0
    fu_byte_array_set_size(st->buf, 22, 0x0);
776
0
    {
777
0
        g_autoptr(FuStructWacomUsbId9SpiCmd) st_donor = fu_struct_wacom_usb_id9_spi_cmd_new();
778
0
        memcpy(st->buf->data + 0x7, st_donor->buf->data, st_donor->buf->len); /* nocheck:blocked */
779
0
    }
780
0
    return st;
781
0
}
782
/**
783
 * fu_struct_wacom_usb_id9_loader_cmd_to_bytes: (skip):
784
 **/
785
GBytes *
786
fu_struct_wacom_usb_id9_loader_cmd_to_bytes(const FuStructWacomUsbId9LoaderCmd *st)
787
0
{
788
0
    g_return_val_if_fail(st != NULL, NULL);
789
0
    return g_bytes_new(st->buf->data, st->buf->len);
790
0
}
791
static gboolean
792
fu_struct_wacom_usb_id9_loader_cmd_validate_internal(FuStructWacomUsbId9LoaderCmd *st, GError **error)
793
0
{
794
0
    g_return_val_if_fail(st != NULL, FALSE);
795
0
    {
796
0
        GByteArray buf_tmp = {
797
0
            .data = (guint8*) st->buf->data + 0x7,
798
0
            .len = 15,
799
0
        };
800
0
        FuStructWacomUsbId9SpiCmd st_tmp = { .buf = &buf_tmp };
801
0
        if (!fu_struct_wacom_usb_id9_spi_cmd_validate_internal(&st_tmp, error))
802
0
            return FALSE;
803
0
    }
804
0
    return TRUE;
805
0
}
806
/**
807
 * fu_struct_wacom_usb_id9_loader_cmd_validate: (skip):
808
 **/
809
gboolean
810
fu_struct_wacom_usb_id9_loader_cmd_validate(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
811
0
{
812
0
    GByteArray st_buf = {.data = (guint8 *) buf + offset, .len = bufsz - offset, };
813
0
    FuStructWacomUsbId9LoaderCmd st_tmp = {.buf = &st_buf };
814
0
    g_return_val_if_fail(buf != NULL, FALSE);
815
0
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
816
0
    if (!fu_memchk_read(bufsz, offset, 22, error)) {
817
0
        g_prefix_error_literal(error, "invalid struct FuStructWacomUsbId9LoaderCmd: ");
818
0
        return FALSE;
819
0
    }
820
0
    if (!fu_struct_wacom_usb_id9_loader_cmd_validate_internal(&st_tmp, error))
821
0
        return FALSE;
822
0
    return TRUE;
823
0
}
824
/**
825
 * fu_struct_wacom_usb_module_desc_ref: (skip):
826
 **/
827
FuStructWacomUsbModuleDesc *
828
fu_struct_wacom_usb_module_desc_ref(FuStructWacomUsbModuleDesc *st)
829
0
{
830
0
    g_return_val_if_fail(st != NULL, NULL);
831
0
    st->refcount++;
832
0
    return st;
833
0
}
834
/**
835
 * fu_struct_wacom_usb_module_desc_unref: (skip):
836
 **/
837
void
838
fu_struct_wacom_usb_module_desc_unref(FuStructWacomUsbModuleDesc *st)
839
0
{
840
0
    g_return_if_fail(st != NULL);
841
0
    if (st->refcount == 0) {
842
0
        g_critical("FuStructWacomUsbModuleDesc refcount already zero");
843
0
        return;
844
0
    }
845
0
    if (--st->refcount > 0)
846
0
        return;
847
0
    if (st->buf != NULL)
848
0
        g_byte_array_unref(st->buf);
849
0
    g_free(st);
850
0
}
851
/**
852
 * fu_struct_wacom_usb_module_desc_new_internal: (skip):
853
 **/
854
static FuStructWacomUsbModuleDesc *
855
fu_struct_wacom_usb_module_desc_new_internal(void)
856
0
{
857
0
    FuStructWacomUsbModuleDesc *st = g_new0(FuStructWacomUsbModuleDesc, 1);
858
0
    st->refcount = 1;
859
0
    return st;
860
0
}
861
862
/* getters */
863
/**
864
 * fu_struct_wacom_usb_module_desc_get_bootloader_version: (skip):
865
 **/
866
guint16
867
fu_struct_wacom_usb_module_desc_get_bootloader_version(const FuStructWacomUsbModuleDesc *st)
868
0
{
869
0
    g_return_val_if_fail(st != NULL, 0x0);
870
0
    return fu_memread_uint16(st->buf->data + 1, G_BIG_ENDIAN);
871
0
}
872
/**
873
 * fu_struct_wacom_usb_module_desc_get_number_modules: (skip):
874
 **/
875
guint8
876
fu_struct_wacom_usb_module_desc_get_number_modules(const FuStructWacomUsbModuleDesc *st)
877
0
{
878
0
    g_return_val_if_fail(st != NULL, 0x0);
879
0
    return st->buf->data[3];
880
0
}
881
882
/* setters */
883
/**
884
 * fu_struct_wacom_usb_module_desc_to_string: (skip):
885
 **/
886
static gchar *
887
fu_struct_wacom_usb_module_desc_to_string(const FuStructWacomUsbModuleDesc *st)
888
0
{
889
0
    g_autoptr(GString) str = g_string_new("FuStructWacomUsbModuleDesc:\n");
890
0
    g_return_val_if_fail(st != NULL, NULL);
891
0
    g_string_append_printf(str, "  bootloader_version: 0x%x\n",
892
0
                           (guint) fu_struct_wacom_usb_module_desc_get_bootloader_version(st));
893
0
    g_string_append_printf(str, "  number_modules: 0x%x\n",
894
0
                           (guint) fu_struct_wacom_usb_module_desc_get_number_modules(st));
895
0
    if (str->len > 0)
896
0
        g_string_set_size(str, str->len - 1);
897
0
    return g_string_free(g_steal_pointer(&str), FALSE);
898
0
}
899
static gboolean
900
fu_struct_wacom_usb_module_desc_parse_internal(FuStructWacomUsbModuleDesc *st, GError **error)
901
0
{
902
0
    if (g_log_get_debug_enabled()) {
903
0
        g_autofree gchar *str = fu_struct_wacom_usb_module_desc_to_string(st);
904
0
        g_debug("%s", str);
905
0
    }
906
0
    return TRUE;
907
0
}
908
909
/**
910
 * fu_struct_wacom_usb_module_desc_parse: (skip):
911
 **/
912
FuStructWacomUsbModuleDesc *
913
fu_struct_wacom_usb_module_desc_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
914
0
{
915
0
    g_autoptr(FuStructWacomUsbModuleDesc) st = fu_struct_wacom_usb_module_desc_new_internal();
916
0
    g_return_val_if_fail(buf != NULL, NULL);
917
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
918
0
    if (!fu_memchk_read(bufsz, offset, 4, error)) {
919
0
        g_prefix_error_literal(error, "invalid struct FuStructWacomUsbModuleDesc: ");
920
0
        return NULL;
921
0
    }
922
0
    st->buf = g_byte_array_new();
923
0
    g_byte_array_append(st->buf, buf + offset, 4);
924
0
    if (!fu_struct_wacom_usb_module_desc_parse_internal(st, error))
925
0
        return NULL;
926
0
    return g_steal_pointer(&st);
927
0
}
928
/**
929
 * fu_struct_wacom_usb_module_item_ref: (skip):
930
 **/
931
FuStructWacomUsbModuleItem *
932
fu_struct_wacom_usb_module_item_ref(FuStructWacomUsbModuleItem *st)
933
0
{
934
0
    g_return_val_if_fail(st != NULL, NULL);
935
0
    st->refcount++;
936
0
    return st;
937
0
}
938
/**
939
 * fu_struct_wacom_usb_module_item_unref: (skip):
940
 **/
941
void
942
fu_struct_wacom_usb_module_item_unref(FuStructWacomUsbModuleItem *st)
943
0
{
944
0
    g_return_if_fail(st != NULL);
945
0
    if (st->refcount == 0) {
946
0
        g_critical("FuStructWacomUsbModuleItem refcount already zero");
947
0
        return;
948
0
    }
949
0
    if (--st->refcount > 0)
950
0
        return;
951
0
    if (st->buf != NULL)
952
0
        g_byte_array_unref(st->buf);
953
0
    g_free(st);
954
0
}
955
/**
956
 * fu_struct_wacom_usb_module_item_new_internal: (skip):
957
 **/
958
static FuStructWacomUsbModuleItem *
959
fu_struct_wacom_usb_module_item_new_internal(void)
960
0
{
961
0
    FuStructWacomUsbModuleItem *st = g_new0(FuStructWacomUsbModuleItem, 1);
962
0
    st->refcount = 1;
963
0
    return st;
964
0
}
965
966
/* getters */
967
/**
968
 * fu_struct_wacom_usb_module_item_get_kind: (skip):
969
 **/
970
FuWacomUsbModuleFwType
971
fu_struct_wacom_usb_module_item_get_kind(const FuStructWacomUsbModuleItem *st)
972
0
{
973
0
    g_return_val_if_fail(st != NULL, 0x0);
974
0
    return st->buf->data[0];
975
0
}
976
/**
977
 * fu_struct_wacom_usb_module_item_get_version: (skip):
978
 **/
979
guint16
980
fu_struct_wacom_usb_module_item_get_version(const FuStructWacomUsbModuleItem *st)
981
0
{
982
0
    g_return_val_if_fail(st != NULL, 0x0);
983
0
    return fu_memread_uint16(st->buf->data + 1, G_BIG_ENDIAN);
984
0
}
985
/**
986
 * fu_struct_wacom_usb_module_item_get_version2: (skip):
987
 **/
988
guint8
989
fu_struct_wacom_usb_module_item_get_version2(const FuStructWacomUsbModuleItem *st)
990
0
{
991
0
    g_return_val_if_fail(st != NULL, 0x0);
992
0
    return st->buf->data[3];
993
0
}
994
995
/* setters */
996
/**
997
 * fu_struct_wacom_usb_module_item_to_string: (skip):
998
 **/
999
static gchar *
1000
fu_struct_wacom_usb_module_item_to_string(const FuStructWacomUsbModuleItem *st)
1001
0
{
1002
0
    g_autoptr(GString) str = g_string_new("FuStructWacomUsbModuleItem:\n");
1003
0
    g_return_val_if_fail(st != NULL, NULL);
1004
0
    {
1005
0
        const gchar *tmp = fu_wacom_usb_module_fw_type_to_string(fu_struct_wacom_usb_module_item_get_kind(st));
1006
0
        if (tmp != NULL) {
1007
0
            g_string_append_printf(str, "  kind: 0x%x [%s]\n", (guint) fu_struct_wacom_usb_module_item_get_kind(st), tmp);
1008
0
        } else {
1009
0
            g_string_append_printf(str, "  kind: 0x%x\n", (guint) fu_struct_wacom_usb_module_item_get_kind(st));
1010
0
        }
1011
0
    }
1012
0
    g_string_append_printf(str, "  version: 0x%x\n",
1013
0
                           (guint) fu_struct_wacom_usb_module_item_get_version(st));
1014
0
    g_string_append_printf(str, "  version2: 0x%x\n",
1015
0
                           (guint) fu_struct_wacom_usb_module_item_get_version2(st));
1016
0
    if (str->len > 0)
1017
0
        g_string_set_size(str, str->len - 1);
1018
0
    return g_string_free(g_steal_pointer(&str), FALSE);
1019
0
}
1020
static gboolean
1021
fu_struct_wacom_usb_module_item_parse_internal(FuStructWacomUsbModuleItem *st, GError **error)
1022
0
{
1023
0
    if (g_log_get_debug_enabled()) {
1024
0
        g_autofree gchar *str = fu_struct_wacom_usb_module_item_to_string(st);
1025
0
        g_debug("%s", str);
1026
0
    }
1027
0
    return TRUE;
1028
0
}
1029
1030
/**
1031
 * fu_struct_wacom_usb_module_item_parse: (skip):
1032
 **/
1033
FuStructWacomUsbModuleItem *
1034
fu_struct_wacom_usb_module_item_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
1035
0
{
1036
0
    g_autoptr(FuStructWacomUsbModuleItem) st = fu_struct_wacom_usb_module_item_new_internal();
1037
0
    g_return_val_if_fail(buf != NULL, NULL);
1038
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
1039
0
    if (!fu_memchk_read(bufsz, offset, 4, error)) {
1040
0
        g_prefix_error_literal(error, "invalid struct FuStructWacomUsbModuleItem: ");
1041
0
        return NULL;
1042
0
    }
1043
0
    st->buf = g_byte_array_new();
1044
0
    g_byte_array_append(st->buf, buf + offset, 4);
1045
0
    if (!fu_struct_wacom_usb_module_item_parse_internal(st, error))
1046
0
        return NULL;
1047
0
    return g_steal_pointer(&st);
1048
0
}