Coverage Report

Created: 2025-12-14 06:56

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/work/fu-synaptics-cape-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-synaptics-cape-struct.h"
12
#include "fu-byte-array.h"
13
#include "fu-mem-private.h"
14
#include "fu-string.h"
15
16
#ifdef G_LOG_DOMAIN
17
  #undef G_LOG_DOMAIN
18
#endif
19
0
#define G_LOG_DOMAIN "FuStruct"
20
21
22
/**
23
 * fu_synaptics_cape_error_to_string:
24
 * @val: value, e.g. %FU_SYNAPTICS_CAPE_ERROR_SFU_FAIL
25
 *
26
 * Converts an enumerated value to a string.
27
 *
28
 * Returns: identifier string
29
 **/
30
const gchar *
31
fu_synaptics_cape_error_to_string(FuSynapticsCapeError val)
32
0
{
33
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_EAGAIN)
34
0
        return "eagain";
35
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_SFU_FAIL)
36
0
        return "sfu-fail";
37
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_SFU_WRITE_FAIL)
38
0
        return "sfu-write-fail";
39
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_SFU_READ_FAIL)
40
0
        return "sfu-read-fail";
41
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_SFU_CRC_ERROR)
42
0
        return "sfu-crc-error";
43
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_SFU_USB_ID_NOT_MATCH)
44
0
        return "sfu-usb-id-not-match";
45
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_SFU_VERSION_DOWNGRADE)
46
0
        return "sfu-version-downgrade";
47
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_SFU_HEADER_CORRUPTION)
48
0
        return "sfu-header-corruption";
49
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_SFU_IMAGE_CORRUPTION)
50
0
        return "sfu-image-corruption";
51
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_SFU_ALREADY_ACTIVE)
52
0
        return "sfu-already-active";
53
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_SFU_NOT_READY)
54
0
        return "sfu-not-ready";
55
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_SFU_SIGN_TRANSFER_CORRUPTION)
56
0
        return "sfu-sign-transfer-corruption";
57
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_SFU_SIGNATURE_VERIFICATION)
58
0
        return "sfu-signature-verification";
59
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_SFU_TASK_NOT_RUNNING)
60
0
        return "sfu-task-not-running";
61
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_GENERIC_FAILURE)
62
0
        return "generic-failure";
63
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_ALREADY_EXISTS)
64
0
        return "already-exists";
65
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_NULL_APP_POINTER)
66
0
        return "null-app-pointer";
67
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_NULL_MODULE_POINTER)
68
0
        return "null-module-pointer";
69
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_NULL_STREAM_POINTER)
70
0
        return "null-stream-pointer";
71
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_NULL_POINTER)
72
0
        return "null-pointer";
73
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_BAD_APP_ID)
74
0
        return "bad-app-id";
75
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_MODULE_TYPE_HAS_NO_API)
76
0
        return "module-type-has-no-api";
77
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_BAD_MAGIC_NUMBER)
78
0
        return "bad-magic-number";
79
0
    if (val == FU_SYNAPTICS_CAPE_ERROR_CMD_MODE_UNSUPPORTED)
80
0
        return "cmd-mode-unsupported";
81
0
    return NULL;
82
0
}
83
84
85
86
/**
87
 * fu_synaptics_cape_msg_ref: (skip):
88
 **/
89
FuSynapticsCapeMsg *
90
fu_synaptics_cape_msg_ref(FuSynapticsCapeMsg *st)
91
0
{
92
0
    g_return_val_if_fail(st != NULL, NULL);
93
0
    st->refcount++;
94
0
    return st;
95
0
}
96
/**
97
 * fu_synaptics_cape_msg_unref: (skip):
98
 **/
99
void
100
fu_synaptics_cape_msg_unref(FuSynapticsCapeMsg *st)
101
0
{
102
0
    g_return_if_fail(st != NULL);
103
0
    if (st->refcount == 0) {
104
0
        g_critical("FuSynapticsCapeMsg refcount already zero");
105
0
        return;
106
0
    }
107
0
    if (--st->refcount > 0)
108
0
        return;
109
0
    if (st->buf != NULL)
110
0
        g_byte_array_unref(st->buf);
111
0
    g_free(st);
112
0
}
113
/**
114
 * fu_synaptics_cape_msg_new_internal: (skip):
115
 **/
116
static FuSynapticsCapeMsg *
117
fu_synaptics_cape_msg_new_internal(void)
118
0
{
119
0
    FuSynapticsCapeMsg *st = g_new0(FuSynapticsCapeMsg, 1);
120
0
    st->refcount = 1;
121
0
    return st;
122
0
}
123
124
/* getters */
125
/**
126
 * fu_synaptics_cape_msg_get_data_len: (skip):
127
 **/
128
guint16
129
fu_synaptics_cape_msg_get_data_len(const FuSynapticsCapeMsg *st)
130
0
{
131
0
    g_return_val_if_fail(st != NULL, 0x0);
132
0
    return fu_memread_uint16(st->buf->data + 0, G_LITTLE_ENDIAN);
133
0
}
134
/**
135
 * fu_synaptics_cape_msg_get_cmd_id: (skip):
136
 **/
137
FuSynapticsCapeCmd
138
fu_synaptics_cape_msg_get_cmd_id(const FuSynapticsCapeMsg *st)
139
0
{
140
0
    g_return_val_if_fail(st != NULL, 0x0);
141
0
    return fu_memread_uint16(st->buf->data + 2, G_LITTLE_ENDIAN);
142
0
}
143
/**
144
 * fu_synaptics_cape_msg_get_module_id: (skip):
145
 **/
146
FuSynapticsCapeModuleId
147
fu_synaptics_cape_msg_get_module_id(const FuSynapticsCapeMsg *st)
148
0
{
149
0
    g_return_val_if_fail(st != NULL, 0x0);
150
0
    return fu_memread_uint32(st->buf->data + 4, G_LITTLE_ENDIAN);
151
0
}
152
/**
153
 * fu_synaptics_cape_msg_get_data: (skip):
154
 **/
155
guint32
156
fu_synaptics_cape_msg_get_data(const FuSynapticsCapeMsg *st, guint idx)
157
0
{
158
0
    g_return_val_if_fail(st != NULL, 0x0);
159
0
    return fu_memread_uint32(st->buf->data + 8 + (sizeof(guint32) * idx),
160
0
                                        G_LITTLE_ENDIAN);
161
0
}
162
163
/* setters */
164
/**
165
 * fu_synaptics_cape_msg_set_data_len: (skip):
166
 **/
167
void
168
fu_synaptics_cape_msg_set_data_len(FuSynapticsCapeMsg *st, guint16 value)
169
0
{
170
0
    g_return_if_fail(st != NULL);
171
0
    fu_memwrite_uint16(st->buf->data + 0, value, G_LITTLE_ENDIAN);
172
0
}
173
/**
174
 * fu_synaptics_cape_msg_set_cmd_id: (skip):
175
 **/
176
void
177
fu_synaptics_cape_msg_set_cmd_id(FuSynapticsCapeMsg *st, FuSynapticsCapeCmd value)
178
0
{
179
0
    g_return_if_fail(st != NULL);
180
0
    fu_memwrite_uint16(st->buf->data + 2, value, G_LITTLE_ENDIAN);
181
0
}
182
/**
183
 * fu_synaptics_cape_msg_set_module_id: (skip):
184
 **/
185
void
186
fu_synaptics_cape_msg_set_module_id(FuSynapticsCapeMsg *st, FuSynapticsCapeModuleId value)
187
0
{
188
0
    g_return_if_fail(st != NULL);
189
0
    fu_memwrite_uint32(st->buf->data + 4, value, G_LITTLE_ENDIAN);
190
0
}
191
/**
192
 * fu_synaptics_cape_msg_set_data: (skip):
193
 **/
194
void
195
fu_synaptics_cape_msg_set_data(FuSynapticsCapeMsg *st, guint idx, guint32 value)
196
0
{
197
0
    g_return_if_fail(st != NULL);
198
0
    g_return_if_fail(idx < 13);
199
0
    fu_memwrite_uint32(st->buf->data + 8 + (sizeof(guint32) * idx),
200
0
                                  value,
201
0
                                  G_LITTLE_ENDIAN);
202
0
}
203
/**
204
 * fu_synaptics_cape_msg_new: (skip):
205
 **/
206
FuSynapticsCapeMsg *
207
fu_synaptics_cape_msg_new(void)
208
0
{
209
0
    FuSynapticsCapeMsg *st = fu_synaptics_cape_msg_new_internal();
210
0
    st->buf = g_byte_array_sized_new(60);
211
0
    fu_byte_array_set_size(st->buf, 60, 0x0);
212
0
    fu_synaptics_cape_msg_set_module_id(st, FU_SYNAPTICS_CAPE_MODULE_ID_APP_CTRL);
213
0
    return st;
214
0
}
215
/**
216
 * fu_synaptics_cape_cmd_hid_report_ref: (skip):
217
 **/
218
FuSynapticsCapeCmdHidReport *
219
fu_synaptics_cape_cmd_hid_report_ref(FuSynapticsCapeCmdHidReport *st)
220
0
{
221
0
    g_return_val_if_fail(st != NULL, NULL);
222
0
    st->refcount++;
223
0
    return st;
224
0
}
225
/**
226
 * fu_synaptics_cape_cmd_hid_report_unref: (skip):
227
 **/
228
void
229
fu_synaptics_cape_cmd_hid_report_unref(FuSynapticsCapeCmdHidReport *st)
230
0
{
231
0
    g_return_if_fail(st != NULL);
232
0
    if (st->refcount == 0) {
233
0
        g_critical("FuSynapticsCapeCmdHidReport refcount already zero");
234
0
        return;
235
0
    }
236
0
    if (--st->refcount > 0)
237
0
        return;
238
0
    if (st->buf != NULL)
239
0
        g_byte_array_unref(st->buf);
240
0
    g_free(st);
241
0
}
242
/**
243
 * fu_synaptics_cape_cmd_hid_report_new_internal: (skip):
244
 **/
245
static FuSynapticsCapeCmdHidReport *
246
fu_synaptics_cape_cmd_hid_report_new_internal(void)
247
0
{
248
0
    FuSynapticsCapeCmdHidReport *st = g_new0(FuSynapticsCapeCmdHidReport, 1);
249
0
    st->refcount = 1;
250
0
    return st;
251
0
}
252
253
/* getters */
254
/**
255
 * fu_synaptics_cape_cmd_hid_report_get_msg: (skip):
256
 **/
257
FuSynapticsCapeMsg *
258
fu_synaptics_cape_cmd_hid_report_get_msg(const FuSynapticsCapeCmdHidReport *st)
259
0
{
260
0
    g_autoptr(FuSynapticsCapeMsg) st_tmp = fu_synaptics_cape_msg_new_internal();
261
0
    g_return_val_if_fail(st != NULL, NULL);
262
0
    st_tmp->buf = g_byte_array_new();
263
0
    g_byte_array_append(st_tmp->buf, st->buf->data + FU_SYNAPTICS_CAPE_CMD_HID_REPORT_OFFSET_MSG, 60);
264
0
    return g_steal_pointer(&st_tmp);
265
0
}
266
267
/* setters */
268
/**
269
 * fu_synaptics_cape_cmd_hid_report_set_report_id: (skip):
270
 **/
271
static void
272
fu_synaptics_cape_cmd_hid_report_set_report_id(FuSynapticsCapeCmdHidReport *st, guint16 value)
273
0
{
274
0
    g_return_if_fail(st != NULL);
275
0
    fu_memwrite_uint16(st->buf->data + 0, value, G_LITTLE_ENDIAN);
276
0
}
277
/**
278
 * fu_synaptics_cape_cmd_hid_report_set_msg: (skip):
279
 **/
280
gboolean
281
fu_synaptics_cape_cmd_hid_report_set_msg(FuSynapticsCapeCmdHidReport *st, const FuSynapticsCapeMsg *st_donor, GError **error)
282
0
{
283
0
    g_return_val_if_fail(st != NULL, FALSE);
284
0
    g_return_val_if_fail(st_donor != NULL, FALSE);
285
0
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
286
287
0
    if (st_donor->buf->len > FU_SYNAPTICS_CAPE_MSG_SIZE) {
288
0
        g_set_error(error,
289
0
                    FWUPD_ERROR,
290
0
                    FWUPD_ERROR_INVALID_DATA,
291
0
                    "donor 'FuSynapticsCapeMsg' (0x%x bytes) does not fit in "
292
0
                    "FuSynapticsCapeCmdHidReport.msg (0x%x bytes)",
293
0
                    (guint) st_donor->buf->len,
294
0
                    (guint) FU_SYNAPTICS_CAPE_MSG_SIZE);
295
0
        return FALSE;
296
0
    }
297
0
    memcpy(st->buf->data + FU_SYNAPTICS_CAPE_CMD_HID_REPORT_OFFSET_MSG, st_donor->buf->data, st_donor->buf->len);
298
0
    return TRUE;
299
0
}
300
/**
301
 * fu_synaptics_cape_cmd_hid_report_new: (skip):
302
 **/
303
FuSynapticsCapeCmdHidReport *
304
fu_synaptics_cape_cmd_hid_report_new(void)
305
0
{
306
0
    FuSynapticsCapeCmdHidReport *st = fu_synaptics_cape_cmd_hid_report_new_internal();
307
0
    st->buf = g_byte_array_sized_new(62);
308
0
    fu_byte_array_set_size(st->buf, 62, 0x0);
309
0
    {
310
0
        g_autoptr(FuSynapticsCapeMsg) st_donor = fu_synaptics_cape_msg_new();
311
0
        memcpy(st->buf->data + 0x2, st_donor->buf->data, st_donor->buf->len); /* nocheck:blocked */
312
0
    }
313
0
    fu_synaptics_cape_cmd_hid_report_set_report_id(st, 1);
314
0
    return st;
315
0
}
316
/**
317
 * fu_struct_synaptics_cape_hid_hdr_ref: (skip):
318
 **/
319
FuStructSynapticsCapeHidHdr *
320
fu_struct_synaptics_cape_hid_hdr_ref(FuStructSynapticsCapeHidHdr *st)
321
0
{
322
0
    g_return_val_if_fail(st != NULL, NULL);
323
0
    st->refcount++;
324
0
    return st;
325
0
}
326
/**
327
 * fu_struct_synaptics_cape_hid_hdr_unref: (skip):
328
 **/
329
void
330
fu_struct_synaptics_cape_hid_hdr_unref(FuStructSynapticsCapeHidHdr *st)
331
0
{
332
0
    g_return_if_fail(st != NULL);
333
0
    if (st->refcount == 0) {
334
0
        g_critical("FuStructSynapticsCapeHidHdr refcount already zero");
335
0
        return;
336
0
    }
337
0
    if (--st->refcount > 0)
338
0
        return;
339
0
    if (st->buf != NULL)
340
0
        g_byte_array_unref(st->buf);
341
0
    g_free(st);
342
0
}
343
/**
344
 * fu_struct_synaptics_cape_hid_hdr_new_internal: (skip):
345
 **/
346
static FuStructSynapticsCapeHidHdr *
347
fu_struct_synaptics_cape_hid_hdr_new_internal(void)
348
0
{
349
0
    FuStructSynapticsCapeHidHdr *st = g_new0(FuStructSynapticsCapeHidHdr, 1);
350
0
    st->refcount = 1;
351
0
    return st;
352
0
}
353
354
/* getters */
355
/**
356
 * fu_struct_synaptics_cape_hid_hdr_get_vid: (skip):
357
 **/
358
guint32
359
fu_struct_synaptics_cape_hid_hdr_get_vid(const FuStructSynapticsCapeHidHdr *st)
360
0
{
361
0
    g_return_val_if_fail(st != NULL, 0x0);
362
0
    return fu_memread_uint32(st->buf->data + 0, G_LITTLE_ENDIAN);
363
0
}
364
/**
365
 * fu_struct_synaptics_cape_hid_hdr_get_pid: (skip):
366
 **/
367
guint32
368
fu_struct_synaptics_cape_hid_hdr_get_pid(const FuStructSynapticsCapeHidHdr *st)
369
0
{
370
0
    g_return_val_if_fail(st != NULL, 0x0);
371
0
    return fu_memread_uint32(st->buf->data + 4, G_LITTLE_ENDIAN);
372
0
}
373
/**
374
 * fu_struct_synaptics_cape_hid_hdr_get_update_type: (skip):
375
 **/
376
guint32
377
fu_struct_synaptics_cape_hid_hdr_get_update_type(const FuStructSynapticsCapeHidHdr *st)
378
0
{
379
0
    g_return_val_if_fail(st != NULL, 0x0);
380
0
    return fu_memread_uint32(st->buf->data + 8, G_LITTLE_ENDIAN);
381
0
}
382
/**
383
 * fu_struct_synaptics_cape_hid_hdr_get_signature: (skip):
384
 **/
385
static guint32
386
fu_struct_synaptics_cape_hid_hdr_get_signature(const FuStructSynapticsCapeHidHdr *st)
387
0
{
388
0
    g_return_val_if_fail(st != NULL, 0x0);
389
0
    return fu_memread_uint32(st->buf->data + 12, G_LITTLE_ENDIAN);
390
0
}
391
/**
392
 * fu_struct_synaptics_cape_hid_hdr_get_crc: (skip):
393
 **/
394
guint32
395
fu_struct_synaptics_cape_hid_hdr_get_crc(const FuStructSynapticsCapeHidHdr *st)
396
0
{
397
0
    g_return_val_if_fail(st != NULL, 0x0);
398
0
    return fu_memread_uint32(st->buf->data + 16, G_LITTLE_ENDIAN);
399
0
}
400
/**
401
 * fu_struct_synaptics_cape_hid_hdr_get_ver_w: (skip):
402
 **/
403
guint16
404
fu_struct_synaptics_cape_hid_hdr_get_ver_w(const FuStructSynapticsCapeHidHdr *st)
405
0
{
406
0
    g_return_val_if_fail(st != NULL, 0x0);
407
0
    return fu_memread_uint16(st->buf->data + 20, G_LITTLE_ENDIAN);
408
0
}
409
/**
410
 * fu_struct_synaptics_cape_hid_hdr_get_ver_x: (skip):
411
 **/
412
guint16
413
fu_struct_synaptics_cape_hid_hdr_get_ver_x(const FuStructSynapticsCapeHidHdr *st)
414
0
{
415
0
    g_return_val_if_fail(st != NULL, 0x0);
416
0
    return fu_memread_uint16(st->buf->data + 22, G_LITTLE_ENDIAN);
417
0
}
418
/**
419
 * fu_struct_synaptics_cape_hid_hdr_get_ver_y: (skip):
420
 **/
421
guint16
422
fu_struct_synaptics_cape_hid_hdr_get_ver_y(const FuStructSynapticsCapeHidHdr *st)
423
0
{
424
0
    g_return_val_if_fail(st != NULL, 0x0);
425
0
    return fu_memread_uint16(st->buf->data + 24, G_LITTLE_ENDIAN);
426
0
}
427
/**
428
 * fu_struct_synaptics_cape_hid_hdr_get_ver_z: (skip):
429
 **/
430
guint16
431
fu_struct_synaptics_cape_hid_hdr_get_ver_z(const FuStructSynapticsCapeHidHdr *st)
432
0
{
433
0
    g_return_val_if_fail(st != NULL, 0x0);
434
0
    return fu_memread_uint16(st->buf->data + 26, G_LITTLE_ENDIAN);
435
0
}
436
437
/* setters */
438
/**
439
 * fu_struct_synaptics_cape_hid_hdr_set_vid: (skip):
440
 **/
441
void
442
fu_struct_synaptics_cape_hid_hdr_set_vid(FuStructSynapticsCapeHidHdr *st, guint32 value)
443
0
{
444
0
    g_return_if_fail(st != NULL);
445
0
    fu_memwrite_uint32(st->buf->data + 0, value, G_LITTLE_ENDIAN);
446
0
}
447
/**
448
 * fu_struct_synaptics_cape_hid_hdr_set_pid: (skip):
449
 **/
450
void
451
fu_struct_synaptics_cape_hid_hdr_set_pid(FuStructSynapticsCapeHidHdr *st, guint32 value)
452
0
{
453
0
    g_return_if_fail(st != NULL);
454
0
    fu_memwrite_uint32(st->buf->data + 4, value, G_LITTLE_ENDIAN);
455
0
}
456
/**
457
 * fu_struct_synaptics_cape_hid_hdr_set_update_type: (skip):
458
 **/
459
void
460
fu_struct_synaptics_cape_hid_hdr_set_update_type(FuStructSynapticsCapeHidHdr *st, guint32 value)
461
0
{
462
0
    g_return_if_fail(st != NULL);
463
0
    fu_memwrite_uint32(st->buf->data + 8, value, G_LITTLE_ENDIAN);
464
0
}
465
/**
466
 * fu_struct_synaptics_cape_hid_hdr_set_signature: (skip):
467
 **/
468
static void
469
fu_struct_synaptics_cape_hid_hdr_set_signature(FuStructSynapticsCapeHidHdr *st, guint32 value)
470
0
{
471
0
    g_return_if_fail(st != NULL);
472
0
    fu_memwrite_uint32(st->buf->data + 12, value, G_LITTLE_ENDIAN);
473
0
}
474
/**
475
 * fu_struct_synaptics_cape_hid_hdr_set_crc: (skip):
476
 **/
477
void
478
fu_struct_synaptics_cape_hid_hdr_set_crc(FuStructSynapticsCapeHidHdr *st, guint32 value)
479
0
{
480
0
    g_return_if_fail(st != NULL);
481
0
    fu_memwrite_uint32(st->buf->data + 16, value, G_LITTLE_ENDIAN);
482
0
}
483
/**
484
 * fu_struct_synaptics_cape_hid_hdr_set_ver_w: (skip):
485
 **/
486
void
487
fu_struct_synaptics_cape_hid_hdr_set_ver_w(FuStructSynapticsCapeHidHdr *st, guint16 value)
488
0
{
489
0
    g_return_if_fail(st != NULL);
490
0
    fu_memwrite_uint16(st->buf->data + 20, value, G_LITTLE_ENDIAN);
491
0
}
492
/**
493
 * fu_struct_synaptics_cape_hid_hdr_set_ver_x: (skip):
494
 **/
495
void
496
fu_struct_synaptics_cape_hid_hdr_set_ver_x(FuStructSynapticsCapeHidHdr *st, guint16 value)
497
0
{
498
0
    g_return_if_fail(st != NULL);
499
0
    fu_memwrite_uint16(st->buf->data + 22, value, G_LITTLE_ENDIAN);
500
0
}
501
/**
502
 * fu_struct_synaptics_cape_hid_hdr_set_ver_y: (skip):
503
 **/
504
void
505
fu_struct_synaptics_cape_hid_hdr_set_ver_y(FuStructSynapticsCapeHidHdr *st, guint16 value)
506
0
{
507
0
    g_return_if_fail(st != NULL);
508
0
    fu_memwrite_uint16(st->buf->data + 24, value, G_LITTLE_ENDIAN);
509
0
}
510
/**
511
 * fu_struct_synaptics_cape_hid_hdr_set_ver_z: (skip):
512
 **/
513
void
514
fu_struct_synaptics_cape_hid_hdr_set_ver_z(FuStructSynapticsCapeHidHdr *st, guint16 value)
515
0
{
516
0
    g_return_if_fail(st != NULL);
517
0
    fu_memwrite_uint16(st->buf->data + 26, value, G_LITTLE_ENDIAN);
518
0
}
519
/**
520
 * fu_struct_synaptics_cape_hid_hdr_new: (skip):
521
 **/
522
FuStructSynapticsCapeHidHdr *
523
fu_struct_synaptics_cape_hid_hdr_new(void)
524
0
{
525
0
    FuStructSynapticsCapeHidHdr *st = fu_struct_synaptics_cape_hid_hdr_new_internal();
526
0
    st->buf = g_byte_array_sized_new(32);
527
0
    fu_byte_array_set_size(st->buf, 32, 0x0);
528
0
    fu_struct_synaptics_cape_hid_hdr_set_signature(st, 0x43534645);
529
0
    return st;
530
0
}
531
/**
532
 * fu_struct_synaptics_cape_hid_hdr_to_string: (skip):
533
 **/
534
static gchar *
535
fu_struct_synaptics_cape_hid_hdr_to_string(const FuStructSynapticsCapeHidHdr *st)
536
0
{
537
0
    g_autoptr(GString) str = g_string_new("FuStructSynapticsCapeHidHdr:\n");
538
0
    g_return_val_if_fail(st != NULL, NULL);
539
0
    g_string_append_printf(str, "  vid: 0x%x\n",
540
0
                           (guint) fu_struct_synaptics_cape_hid_hdr_get_vid(st));
541
0
    g_string_append_printf(str, "  pid: 0x%x\n",
542
0
                           (guint) fu_struct_synaptics_cape_hid_hdr_get_pid(st));
543
0
    g_string_append_printf(str, "  update_type: 0x%x\n",
544
0
                           (guint) fu_struct_synaptics_cape_hid_hdr_get_update_type(st));
545
0
    g_string_append_printf(str, "  crc: 0x%x\n",
546
0
                           (guint) fu_struct_synaptics_cape_hid_hdr_get_crc(st));
547
0
    g_string_append_printf(str, "  ver_w: 0x%x\n",
548
0
                           (guint) fu_struct_synaptics_cape_hid_hdr_get_ver_w(st));
549
0
    g_string_append_printf(str, "  ver_x: 0x%x\n",
550
0
                           (guint) fu_struct_synaptics_cape_hid_hdr_get_ver_x(st));
551
0
    g_string_append_printf(str, "  ver_y: 0x%x\n",
552
0
                           (guint) fu_struct_synaptics_cape_hid_hdr_get_ver_y(st));
553
0
    g_string_append_printf(str, "  ver_z: 0x%x\n",
554
0
                           (guint) fu_struct_synaptics_cape_hid_hdr_get_ver_z(st));
555
0
    if (str->len > 0)
556
0
        g_string_set_size(str, str->len - 1);
557
0
    return g_string_free(g_steal_pointer(&str), FALSE);
558
0
}
559
static gboolean
560
fu_struct_synaptics_cape_hid_hdr_validate_internal(FuStructSynapticsCapeHidHdr *st, GError **error)
561
0
{
562
0
    g_return_val_if_fail(st != NULL, FALSE);
563
0
    if (fu_struct_synaptics_cape_hid_hdr_get_signature(st) != 0x43534645) {
564
0
        g_set_error(error,
565
0
                    FWUPD_ERROR,
566
0
                    FWUPD_ERROR_INVALID_DATA,
567
0
                    "constant FuStructSynapticsCapeHidHdr.signature was not valid, "
568
0
                    "expected 0x%x and got 0x%x",
569
0
                    (guint) 0x43534645,
570
0
                    (guint) fu_struct_synaptics_cape_hid_hdr_get_signature(st));
571
0
        return FALSE;
572
0
    }
573
0
    return TRUE;
574
0
}
575
static gboolean
576
fu_struct_synaptics_cape_hid_hdr_parse_internal(FuStructSynapticsCapeHidHdr *st, GError **error)
577
0
{
578
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
579
0
        g_autofree gchar *str = fu_struct_synaptics_cape_hid_hdr_to_string(st);
580
0
        g_debug("%s", str);
581
0
    }
582
0
    if (!fu_struct_synaptics_cape_hid_hdr_validate_internal(st, error))
583
0
        return FALSE;
584
0
    return TRUE;
585
0
}
586
/**
587
 * fu_struct_synaptics_cape_hid_hdr_parse_stream: (skip):
588
 **/
589
FuStructSynapticsCapeHidHdr *
590
fu_struct_synaptics_cape_hid_hdr_parse_stream(GInputStream *stream, gsize offset, GError **error)
591
0
{
592
0
    g_autoptr(FuStructSynapticsCapeHidHdr) st = fu_struct_synaptics_cape_hid_hdr_new_internal();
593
0
    st->buf = fu_input_stream_read_byte_array(stream, offset, 32, NULL, error);
594
0
    if (st->buf == NULL) {
595
0
        g_prefix_error(error, "FuStructSynapticsCapeHidHdr failed read of 0x%x: ", (guint) 32);
596
0
        return NULL;
597
0
    }
598
0
    if (st->buf->len != 32) {
599
0
        g_set_error(error,
600
0
                    FWUPD_ERROR,
601
0
                    FWUPD_ERROR_INVALID_DATA,
602
0
                    "FuStructSynapticsCapeHidHdr requested 0x%x and got 0x%x",
603
0
                    (guint) 32,
604
0
                    (guint) st->buf->len);
605
0
        return NULL;
606
0
    }
607
0
    if (!fu_struct_synaptics_cape_hid_hdr_parse_internal(st, error))
608
0
        return NULL;
609
0
    return g_steal_pointer(&st);
610
0
}
611
/**
612
 * fu_struct_synaptics_cape_sngl_hdr_ref: (skip):
613
 **/
614
FuStructSynapticsCapeSnglHdr *
615
fu_struct_synaptics_cape_sngl_hdr_ref(FuStructSynapticsCapeSnglHdr *st)
616
0
{
617
0
    g_return_val_if_fail(st != NULL, NULL);
618
0
    st->refcount++;
619
0
    return st;
620
0
}
621
/**
622
 * fu_struct_synaptics_cape_sngl_hdr_unref: (skip):
623
 **/
624
void
625
fu_struct_synaptics_cape_sngl_hdr_unref(FuStructSynapticsCapeSnglHdr *st)
626
0
{
627
0
    g_return_if_fail(st != NULL);
628
0
    if (st->refcount == 0) {
629
0
        g_critical("FuStructSynapticsCapeSnglHdr refcount already zero");
630
0
        return;
631
0
    }
632
0
    if (--st->refcount > 0)
633
0
        return;
634
0
    if (st->buf != NULL)
635
0
        g_byte_array_unref(st->buf);
636
0
    g_free(st);
637
0
}
638
/**
639
 * fu_struct_synaptics_cape_sngl_hdr_new_internal: (skip):
640
 **/
641
static FuStructSynapticsCapeSnglHdr *
642
fu_struct_synaptics_cape_sngl_hdr_new_internal(void)
643
0
{
644
0
    FuStructSynapticsCapeSnglHdr *st = g_new0(FuStructSynapticsCapeSnglHdr, 1);
645
0
    st->refcount = 1;
646
0
    return st;
647
0
}
648
649
/* getters */
650
/**
651
 * fu_struct_synaptics_cape_sngl_hdr_get_magic: (skip):
652
 **/
653
static guint32
654
fu_struct_synaptics_cape_sngl_hdr_get_magic(const FuStructSynapticsCapeSnglHdr *st)
655
0
{
656
0
    g_return_val_if_fail(st != NULL, 0x0);
657
0
    return fu_memread_uint32(st->buf->data + 0, G_LITTLE_ENDIAN);
658
0
}
659
/**
660
 * fu_struct_synaptics_cape_sngl_hdr_get_file_crc: (skip):
661
 **/
662
guint32
663
fu_struct_synaptics_cape_sngl_hdr_get_file_crc(const FuStructSynapticsCapeSnglHdr *st)
664
0
{
665
0
    g_return_val_if_fail(st != NULL, 0x0);
666
0
    return fu_memread_uint32(st->buf->data + 4, G_LITTLE_ENDIAN);
667
0
}
668
/**
669
 * fu_struct_synaptics_cape_sngl_hdr_get_file_size: (skip):
670
 **/
671
guint32
672
fu_struct_synaptics_cape_sngl_hdr_get_file_size(const FuStructSynapticsCapeSnglHdr *st)
673
0
{
674
0
    g_return_val_if_fail(st != NULL, 0x0);
675
0
    return fu_memread_uint32(st->buf->data + 8, G_LITTLE_ENDIAN);
676
0
}
677
/**
678
 * fu_struct_synaptics_cape_sngl_hdr_get_magic2: (skip):
679
 **/
680
guint32
681
fu_struct_synaptics_cape_sngl_hdr_get_magic2(const FuStructSynapticsCapeSnglHdr *st)
682
0
{
683
0
    g_return_val_if_fail(st != NULL, 0x0);
684
0
    return fu_memread_uint32(st->buf->data + 12, G_LITTLE_ENDIAN);
685
0
}
686
/**
687
 * fu_struct_synaptics_cape_sngl_hdr_get_img_type: (skip):
688
 **/
689
guint32
690
fu_struct_synaptics_cape_sngl_hdr_get_img_type(const FuStructSynapticsCapeSnglHdr *st)
691
0
{
692
0
    g_return_val_if_fail(st != NULL, 0x0);
693
0
    return fu_memread_uint32(st->buf->data + 16, G_LITTLE_ENDIAN);
694
0
}
695
/**
696
 * fu_struct_synaptics_cape_sngl_hdr_get_fw_version: (skip):
697
 **/
698
guint32
699
fu_struct_synaptics_cape_sngl_hdr_get_fw_version(const FuStructSynapticsCapeSnglHdr *st)
700
0
{
701
0
    g_return_val_if_fail(st != NULL, 0x0);
702
0
    return fu_memread_uint32(st->buf->data + 20, G_LITTLE_ENDIAN);
703
0
}
704
/**
705
 * fu_struct_synaptics_cape_sngl_hdr_get_vid: (skip):
706
 **/
707
guint16
708
fu_struct_synaptics_cape_sngl_hdr_get_vid(const FuStructSynapticsCapeSnglHdr *st)
709
0
{
710
0
    g_return_val_if_fail(st != NULL, 0x0);
711
0
    return fu_memread_uint16(st->buf->data + 24, G_LITTLE_ENDIAN);
712
0
}
713
/**
714
 * fu_struct_synaptics_cape_sngl_hdr_get_pid: (skip):
715
 **/
716
guint16
717
fu_struct_synaptics_cape_sngl_hdr_get_pid(const FuStructSynapticsCapeSnglHdr *st)
718
0
{
719
0
    g_return_val_if_fail(st != NULL, 0x0);
720
0
    return fu_memread_uint16(st->buf->data + 26, G_LITTLE_ENDIAN);
721
0
}
722
/**
723
 * fu_struct_synaptics_cape_sngl_hdr_get_fw_file_num: (skip):
724
 **/
725
guint32
726
fu_struct_synaptics_cape_sngl_hdr_get_fw_file_num(const FuStructSynapticsCapeSnglHdr *st)
727
0
{
728
0
    g_return_val_if_fail(st != NULL, 0x0);
729
0
    return fu_memread_uint32(st->buf->data + 28, G_LITTLE_ENDIAN);
730
0
}
731
/**
732
 * fu_struct_synaptics_cape_sngl_hdr_get_version: (skip):
733
 **/
734
guint32
735
fu_struct_synaptics_cape_sngl_hdr_get_version(const FuStructSynapticsCapeSnglHdr *st)
736
0
{
737
0
    g_return_val_if_fail(st != NULL, 0x0);
738
0
    return fu_memread_uint32(st->buf->data + 32, G_LITTLE_ENDIAN);
739
0
}
740
/**
741
 * fu_struct_synaptics_cape_sngl_hdr_get_fw_crc: (skip):
742
 **/
743
guint32
744
fu_struct_synaptics_cape_sngl_hdr_get_fw_crc(const FuStructSynapticsCapeSnglHdr *st)
745
0
{
746
0
    g_return_val_if_fail(st != NULL, 0x0);
747
0
    return fu_memread_uint32(st->buf->data + 36, G_LITTLE_ENDIAN);
748
0
}
749
/**
750
 * fu_struct_synaptics_cape_sngl_hdr_get_machine_name: (skip):
751
 **/
752
gchar *
753
fu_struct_synaptics_cape_sngl_hdr_get_machine_name(const FuStructSynapticsCapeSnglHdr *st)
754
0
{
755
0
    g_return_val_if_fail(st != NULL, NULL);
756
0
    return fu_memstrsafe(st->buf->data, st->buf->len, 48, 16, NULL);
757
0
}
758
/**
759
 * fu_struct_synaptics_cape_sngl_hdr_get_time_stamp: (skip):
760
 **/
761
gchar *
762
fu_struct_synaptics_cape_sngl_hdr_get_time_stamp(const FuStructSynapticsCapeSnglHdr *st)
763
0
{
764
0
    g_return_val_if_fail(st != NULL, NULL);
765
0
    return fu_memstrsafe(st->buf->data, st->buf->len, 64, 16, NULL);
766
0
}
767
768
/* setters */
769
/**
770
 * fu_struct_synaptics_cape_sngl_hdr_set_magic: (skip):
771
 **/
772
static void
773
fu_struct_synaptics_cape_sngl_hdr_set_magic(FuStructSynapticsCapeSnglHdr *st, guint32 value)
774
0
{
775
0
    g_return_if_fail(st != NULL);
776
0
    fu_memwrite_uint32(st->buf->data + 0, value, G_LITTLE_ENDIAN);
777
0
}
778
/**
779
 * fu_struct_synaptics_cape_sngl_hdr_set_file_crc: (skip):
780
 **/
781
void
782
fu_struct_synaptics_cape_sngl_hdr_set_file_crc(FuStructSynapticsCapeSnglHdr *st, guint32 value)
783
0
{
784
0
    g_return_if_fail(st != NULL);
785
0
    fu_memwrite_uint32(st->buf->data + 4, value, G_LITTLE_ENDIAN);
786
0
}
787
/**
788
 * fu_struct_synaptics_cape_sngl_hdr_set_file_size: (skip):
789
 **/
790
void
791
fu_struct_synaptics_cape_sngl_hdr_set_file_size(FuStructSynapticsCapeSnglHdr *st, guint32 value)
792
0
{
793
0
    g_return_if_fail(st != NULL);
794
0
    fu_memwrite_uint32(st->buf->data + 8, value, G_LITTLE_ENDIAN);
795
0
}
796
/**
797
 * fu_struct_synaptics_cape_sngl_hdr_set_magic2: (skip):
798
 **/
799
void
800
fu_struct_synaptics_cape_sngl_hdr_set_magic2(FuStructSynapticsCapeSnglHdr *st, guint32 value)
801
0
{
802
0
    g_return_if_fail(st != NULL);
803
0
    fu_memwrite_uint32(st->buf->data + 12, value, G_LITTLE_ENDIAN);
804
0
}
805
/**
806
 * fu_struct_synaptics_cape_sngl_hdr_set_img_type: (skip):
807
 **/
808
void
809
fu_struct_synaptics_cape_sngl_hdr_set_img_type(FuStructSynapticsCapeSnglHdr *st, guint32 value)
810
0
{
811
0
    g_return_if_fail(st != NULL);
812
0
    fu_memwrite_uint32(st->buf->data + 16, value, G_LITTLE_ENDIAN);
813
0
}
814
/**
815
 * fu_struct_synaptics_cape_sngl_hdr_set_fw_version: (skip):
816
 **/
817
void
818
fu_struct_synaptics_cape_sngl_hdr_set_fw_version(FuStructSynapticsCapeSnglHdr *st, guint32 value)
819
0
{
820
0
    g_return_if_fail(st != NULL);
821
0
    fu_memwrite_uint32(st->buf->data + 20, value, G_LITTLE_ENDIAN);
822
0
}
823
/**
824
 * fu_struct_synaptics_cape_sngl_hdr_set_vid: (skip):
825
 **/
826
void
827
fu_struct_synaptics_cape_sngl_hdr_set_vid(FuStructSynapticsCapeSnglHdr *st, guint16 value)
828
0
{
829
0
    g_return_if_fail(st != NULL);
830
0
    fu_memwrite_uint16(st->buf->data + 24, value, G_LITTLE_ENDIAN);
831
0
}
832
/**
833
 * fu_struct_synaptics_cape_sngl_hdr_set_pid: (skip):
834
 **/
835
void
836
fu_struct_synaptics_cape_sngl_hdr_set_pid(FuStructSynapticsCapeSnglHdr *st, guint16 value)
837
0
{
838
0
    g_return_if_fail(st != NULL);
839
0
    fu_memwrite_uint16(st->buf->data + 26, value, G_LITTLE_ENDIAN);
840
0
}
841
/**
842
 * fu_struct_synaptics_cape_sngl_hdr_set_fw_file_num: (skip):
843
 **/
844
void
845
fu_struct_synaptics_cape_sngl_hdr_set_fw_file_num(FuStructSynapticsCapeSnglHdr *st, guint32 value)
846
0
{
847
0
    g_return_if_fail(st != NULL);
848
0
    fu_memwrite_uint32(st->buf->data + 28, value, G_LITTLE_ENDIAN);
849
0
}
850
/**
851
 * fu_struct_synaptics_cape_sngl_hdr_set_version: (skip):
852
 **/
853
void
854
fu_struct_synaptics_cape_sngl_hdr_set_version(FuStructSynapticsCapeSnglHdr *st, guint32 value)
855
0
{
856
0
    g_return_if_fail(st != NULL);
857
0
    fu_memwrite_uint32(st->buf->data + 32, value, G_LITTLE_ENDIAN);
858
0
}
859
/**
860
 * fu_struct_synaptics_cape_sngl_hdr_set_fw_crc: (skip):
861
 **/
862
void
863
fu_struct_synaptics_cape_sngl_hdr_set_fw_crc(FuStructSynapticsCapeSnglHdr *st, guint32 value)
864
0
{
865
0
    g_return_if_fail(st != NULL);
866
0
    fu_memwrite_uint32(st->buf->data + 36, value, G_LITTLE_ENDIAN);
867
0
}
868
/**
869
 * fu_struct_synaptics_cape_sngl_hdr_set_machine_name: (skip):
870
 **/
871
gboolean
872
fu_struct_synaptics_cape_sngl_hdr_set_machine_name(FuStructSynapticsCapeSnglHdr *st, const gchar *value, GError **error)
873
0
{
874
0
    gsize len;
875
0
    g_return_val_if_fail(st != NULL, FALSE);
876
0
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
877
0
    if (value == NULL) {
878
0
        memset(st->buf->data + 48, 0x0, 16);
879
0
        return TRUE;
880
0
    }
881
0
    len = strlen(value);
882
0
    if (len > 16) {
883
0
        g_set_error(error,
884
0
                    FWUPD_ERROR,
885
0
                    FWUPD_ERROR_INVALID_DATA,
886
0
                    "string '%s' (0x%x bytes) does not fit in FuStructSynapticsCapeSnglHdr.machine_name (0x%x bytes)",
887
0
                    value, (guint) len, (guint) 16);
888
0
        return FALSE;
889
0
    }
890
0
    return fu_memcpy_safe(st->buf->data, st->buf->len, 48, (const guint8 *)value, len, 0x0, len, error);
891
0
}
892
/**
893
 * fu_struct_synaptics_cape_sngl_hdr_set_time_stamp: (skip):
894
 **/
895
gboolean
896
fu_struct_synaptics_cape_sngl_hdr_set_time_stamp(FuStructSynapticsCapeSnglHdr *st, const gchar *value, GError **error)
897
0
{
898
0
    gsize len;
899
0
    g_return_val_if_fail(st != NULL, FALSE);
900
0
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
901
0
    if (value == NULL) {
902
0
        memset(st->buf->data + 64, 0x0, 16);
903
0
        return TRUE;
904
0
    }
905
0
    len = strlen(value);
906
0
    if (len > 16) {
907
0
        g_set_error(error,
908
0
                    FWUPD_ERROR,
909
0
                    FWUPD_ERROR_INVALID_DATA,
910
0
                    "string '%s' (0x%x bytes) does not fit in FuStructSynapticsCapeSnglHdr.time_stamp (0x%x bytes)",
911
0
                    value, (guint) len, (guint) 16);
912
0
        return FALSE;
913
0
    }
914
0
    return fu_memcpy_safe(st->buf->data, st->buf->len, 64, (const guint8 *)value, len, 0x0, len, error);
915
0
}
916
/**
917
 * fu_struct_synaptics_cape_sngl_hdr_new: (skip):
918
 **/
919
FuStructSynapticsCapeSnglHdr *
920
fu_struct_synaptics_cape_sngl_hdr_new(void)
921
0
{
922
0
    FuStructSynapticsCapeSnglHdr *st = fu_struct_synaptics_cape_sngl_hdr_new_internal();
923
0
    st->buf = g_byte_array_sized_new(80);
924
0
    fu_byte_array_set_size(st->buf, 80, 0x0);
925
0
    fu_struct_synaptics_cape_sngl_hdr_set_magic(st, 0x4C474E53);
926
0
    return st;
927
0
}
928
/**
929
 * fu_struct_synaptics_cape_sngl_hdr_to_string: (skip):
930
 **/
931
static gchar *
932
fu_struct_synaptics_cape_sngl_hdr_to_string(const FuStructSynapticsCapeSnglHdr *st)
933
0
{
934
0
    g_autoptr(GString) str = g_string_new("FuStructSynapticsCapeSnglHdr:\n");
935
0
    g_return_val_if_fail(st != NULL, NULL);
936
0
    g_string_append_printf(str, "  file_crc: 0x%x\n",
937
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_file_crc(st));
938
0
    g_string_append_printf(str, "  file_size: 0x%x\n",
939
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_file_size(st));
940
0
    g_string_append_printf(str, "  magic2: 0x%x\n",
941
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_magic2(st));
942
0
    g_string_append_printf(str, "  img_type: 0x%x\n",
943
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_img_type(st));
944
0
    g_string_append_printf(str, "  fw_version: 0x%x\n",
945
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_fw_version(st));
946
0
    g_string_append_printf(str, "  vid: 0x%x\n",
947
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_vid(st));
948
0
    g_string_append_printf(str, "  pid: 0x%x\n",
949
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_pid(st));
950
0
    g_string_append_printf(str, "  fw_file_num: 0x%x\n",
951
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_fw_file_num(st));
952
0
    g_string_append_printf(str, "  version: 0x%x\n",
953
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_version(st));
954
0
    g_string_append_printf(str, "  fw_crc: 0x%x\n",
955
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_fw_crc(st));
956
0
    {
957
0
        g_autofree gchar *tmp = fu_struct_synaptics_cape_sngl_hdr_get_machine_name(st);
958
0
        if (tmp != NULL)
959
0
            g_string_append_printf(str, "  machine_name: %s\n", tmp);
960
0
    }
961
0
    {
962
0
        g_autofree gchar *tmp = fu_struct_synaptics_cape_sngl_hdr_get_time_stamp(st);
963
0
        if (tmp != NULL)
964
0
            g_string_append_printf(str, "  time_stamp: %s\n", tmp);
965
0
    }
966
0
    if (str->len > 0)
967
0
        g_string_set_size(str, str->len - 1);
968
0
    return g_string_free(g_steal_pointer(&str), FALSE);
969
0
}
970
static gboolean
971
fu_struct_synaptics_cape_sngl_hdr_validate_internal(FuStructSynapticsCapeSnglHdr *st, GError **error)
972
0
{
973
0
    g_return_val_if_fail(st != NULL, FALSE);
974
0
    if (fu_struct_synaptics_cape_sngl_hdr_get_magic(st) != 0x4C474E53) {
975
0
        g_set_error(error,
976
0
                    FWUPD_ERROR,
977
0
                    FWUPD_ERROR_INVALID_DATA,
978
0
                    "constant FuStructSynapticsCapeSnglHdr.magic was not valid, "
979
0
                    "expected 0x%x and got 0x%x",
980
0
                    (guint) 0x4C474E53,
981
0
                    (guint) fu_struct_synaptics_cape_sngl_hdr_get_magic(st));
982
0
        return FALSE;
983
0
    }
984
0
    return TRUE;
985
0
}
986
static gboolean
987
fu_struct_synaptics_cape_sngl_hdr_parse_internal(FuStructSynapticsCapeSnglHdr *st, GError **error)
988
0
{
989
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
990
0
        g_autofree gchar *str = fu_struct_synaptics_cape_sngl_hdr_to_string(st);
991
0
        g_debug("%s", str);
992
0
    }
993
0
    if (!fu_struct_synaptics_cape_sngl_hdr_validate_internal(st, error))
994
0
        return FALSE;
995
0
    return TRUE;
996
0
}
997
/**
998
 * fu_struct_synaptics_cape_sngl_hdr_parse_stream: (skip):
999
 **/
1000
FuStructSynapticsCapeSnglHdr *
1001
fu_struct_synaptics_cape_sngl_hdr_parse_stream(GInputStream *stream, gsize offset, GError **error)
1002
0
{
1003
0
    g_autoptr(FuStructSynapticsCapeSnglHdr) st = fu_struct_synaptics_cape_sngl_hdr_new_internal();
1004
0
    st->buf = fu_input_stream_read_byte_array(stream, offset, 80, NULL, error);
1005
0
    if (st->buf == NULL) {
1006
0
        g_prefix_error(error, "FuStructSynapticsCapeSnglHdr failed read of 0x%x: ", (guint) 80);
1007
0
        return NULL;
1008
0
    }
1009
0
    if (st->buf->len != 80) {
1010
0
        g_set_error(error,
1011
0
                    FWUPD_ERROR,
1012
0
                    FWUPD_ERROR_INVALID_DATA,
1013
0
                    "FuStructSynapticsCapeSnglHdr requested 0x%x and got 0x%x",
1014
0
                    (guint) 80,
1015
0
                    (guint) st->buf->len);
1016
0
        return NULL;
1017
0
    }
1018
0
    if (!fu_struct_synaptics_cape_sngl_hdr_parse_internal(st, error))
1019
0
        return NULL;
1020
0
    return g_steal_pointer(&st);
1021
0
}
1022
/**
1023
 * fu_struct_synaptics_cape_sngl_file_ref: (skip):
1024
 **/
1025
FuStructSynapticsCapeSnglFile *
1026
fu_struct_synaptics_cape_sngl_file_ref(FuStructSynapticsCapeSnglFile *st)
1027
0
{
1028
0
    g_return_val_if_fail(st != NULL, NULL);
1029
0
    st->refcount++;
1030
0
    return st;
1031
0
}
1032
/**
1033
 * fu_struct_synaptics_cape_sngl_file_unref: (skip):
1034
 **/
1035
void
1036
fu_struct_synaptics_cape_sngl_file_unref(FuStructSynapticsCapeSnglFile *st)
1037
0
{
1038
0
    g_return_if_fail(st != NULL);
1039
0
    if (st->refcount == 0) {
1040
0
        g_critical("FuStructSynapticsCapeSnglFile refcount already zero");
1041
0
        return;
1042
0
    }
1043
0
    if (--st->refcount > 0)
1044
0
        return;
1045
0
    if (st->buf != NULL)
1046
0
        g_byte_array_unref(st->buf);
1047
0
    g_free(st);
1048
0
}
1049
1050
/* getters */
1051
1052
/* setters */