Coverage Report

Created: 2025-11-24 06:59

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