Coverage Report

Created: 2025-11-11 06:44

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