Coverage Report

Created: 2026-01-09 07:21

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
365
{
332
365
    g_return_if_fail(st != NULL);
333
365
    if (st->refcount == 0) {
334
0
        g_critical("FuStructSynapticsCapeHidHdr refcount already zero");
335
0
        return;
336
0
    }
337
365
    if (--st->refcount > 0)
338
0
        return;
339
365
    if (st->buf != NULL)
340
220
        g_byte_array_unref(st->buf);
341
365
    g_free(st);
342
365
}
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
365
{
349
365
    FuStructSynapticsCapeHidHdr *st = g_new0(FuStructSynapticsCapeHidHdr, 1);
350
365
    st->refcount = 1;
351
365
    return st;
352
365
}
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
151
{
361
151
    g_return_val_if_fail(st != NULL, 0x0);
362
151
    return fu_memread_uint32(st->buf->data + 0, G_LITTLE_ENDIAN);
363
151
}
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
151
{
370
151
    g_return_val_if_fail(st != NULL, 0x0);
371
151
    return fu_memread_uint32(st->buf->data + 4, G_LITTLE_ENDIAN);
372
151
}
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
265
{
388
265
    g_return_val_if_fail(st != NULL, 0x0);
389
265
    return fu_memread_uint32(st->buf->data + 12, G_LITTLE_ENDIAN);
390
265
}
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
151
{
406
151
    g_return_val_if_fail(st != NULL, 0x0);
407
151
    return fu_memread_uint16(st->buf->data + 20, G_LITTLE_ENDIAN);
408
151
}
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
151
{
415
151
    g_return_val_if_fail(st != NULL, 0x0);
416
151
    return fu_memread_uint16(st->buf->data + 22, G_LITTLE_ENDIAN);
417
151
}
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
151
{
424
151
    g_return_val_if_fail(st != NULL, 0x0);
425
151
    return fu_memread_uint16(st->buf->data + 24, G_LITTLE_ENDIAN);
426
151
}
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
151
{
433
151
    g_return_val_if_fail(st != NULL, 0x0);
434
151
    return fu_memread_uint16(st->buf->data + 26, G_LITTLE_ENDIAN);
435
151
}
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
151
{
444
151
    g_return_if_fail(st != NULL);
445
151
    fu_memwrite_uint32(st->buf->data + 0, value, G_LITTLE_ENDIAN);
446
151
}
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
151
{
453
151
    g_return_if_fail(st != NULL);
454
151
    fu_memwrite_uint32(st->buf->data + 4, value, G_LITTLE_ENDIAN);
455
151
}
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
151
{
471
151
    g_return_if_fail(st != NULL);
472
151
    fu_memwrite_uint32(st->buf->data + 12, value, G_LITTLE_ENDIAN);
473
151
}
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
151
{
480
151
    g_return_if_fail(st != NULL);
481
151
    fu_memwrite_uint32(st->buf->data + 16, value, G_LITTLE_ENDIAN);
482
151
}
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
151
{
489
151
    g_return_if_fail(st != NULL);
490
151
    fu_memwrite_uint16(st->buf->data + 20, value, G_LITTLE_ENDIAN);
491
151
}
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
151
{
498
151
    g_return_if_fail(st != NULL);
499
151
    fu_memwrite_uint16(st->buf->data + 22, value, G_LITTLE_ENDIAN);
500
151
}
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
151
{
507
151
    g_return_if_fail(st != NULL);
508
151
    fu_memwrite_uint16(st->buf->data + 24, value, G_LITTLE_ENDIAN);
509
151
}
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
151
{
516
151
    g_return_if_fail(st != NULL);
517
151
    fu_memwrite_uint16(st->buf->data + 26, value, G_LITTLE_ENDIAN);
518
151
}
519
/**
520
 * fu_struct_synaptics_cape_hid_hdr_new: (skip):
521
 **/
522
FuStructSynapticsCapeHidHdr *
523
fu_struct_synaptics_cape_hid_hdr_new(void)
524
151
{
525
151
    FuStructSynapticsCapeHidHdr *st = fu_struct_synaptics_cape_hid_hdr_new_internal();
526
151
    st->buf = g_byte_array_sized_new(32);
527
151
    fu_byte_array_set_size(st->buf, 32, 0x0);
528
151
    fu_struct_synaptics_cape_hid_hdr_set_signature(st, 0x43534645);
529
151
    return st;
530
151
}
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, "  signature: 0x%x\n",
546
0
                           (guint) fu_struct_synaptics_cape_hid_hdr_get_signature(st));
547
0
    g_string_append_printf(str, "  crc: 0x%x\n",
548
0
                           (guint) fu_struct_synaptics_cape_hid_hdr_get_crc(st));
549
0
    g_string_append_printf(str, "  ver_w: 0x%x\n",
550
0
                           (guint) fu_struct_synaptics_cape_hid_hdr_get_ver_w(st));
551
0
    g_string_append_printf(str, "  ver_x: 0x%x\n",
552
0
                           (guint) fu_struct_synaptics_cape_hid_hdr_get_ver_x(st));
553
0
    g_string_append_printf(str, "  ver_y: 0x%x\n",
554
0
                           (guint) fu_struct_synaptics_cape_hid_hdr_get_ver_y(st));
555
0
    g_string_append_printf(str, "  ver_z: 0x%x\n",
556
0
                           (guint) fu_struct_synaptics_cape_hid_hdr_get_ver_z(st));
557
0
    if (str->len > 0)
558
0
        g_string_set_size(str, str->len - 1);
559
0
    return g_string_free(g_steal_pointer(&str), FALSE);
560
0
}
561
static gboolean
562
fu_struct_synaptics_cape_hid_hdr_validate_internal(FuStructSynapticsCapeHidHdr *st, GError **error)
563
208
{
564
208
    g_return_val_if_fail(st != NULL, FALSE);
565
208
    if (fu_struct_synaptics_cape_hid_hdr_get_signature(st) != 0x43534645) {
566
57
        g_set_error(error,
567
57
                    FWUPD_ERROR,
568
57
                    FWUPD_ERROR_INVALID_DATA,
569
57
                    "constant FuStructSynapticsCapeHidHdr.signature was not valid, "
570
57
                    "expected 0x%x and got 0x%x",
571
57
                    (guint) 0x43534645,
572
57
                    (guint) fu_struct_synaptics_cape_hid_hdr_get_signature(st));
573
57
        return FALSE;
574
57
    }
575
151
    return TRUE;
576
208
}
577
static gboolean
578
fu_struct_synaptics_cape_hid_hdr_parse_internal(FuStructSynapticsCapeHidHdr *st, GError **error)
579
208
{
580
208
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
581
0
        g_autofree gchar *str = fu_struct_synaptics_cape_hid_hdr_to_string(st);
582
0
        g_debug("%s", str);
583
0
    }
584
208
    if (!fu_struct_synaptics_cape_hid_hdr_validate_internal(st, error))
585
57
        return FALSE;
586
151
    return TRUE;
587
208
}
588
/**
589
 * fu_struct_synaptics_cape_hid_hdr_parse_stream: (skip):
590
 **/
591
FuStructSynapticsCapeHidHdr *
592
fu_struct_synaptics_cape_hid_hdr_parse_stream(GInputStream *stream, gsize offset, GError **error)
593
214
{
594
214
    g_autoptr(FuStructSynapticsCapeHidHdr) st = fu_struct_synaptics_cape_hid_hdr_new_internal();
595
214
    st->buf = fu_input_stream_read_byte_array(stream, offset, 32, NULL, error);
596
214
    if (st->buf == NULL) {
597
0
        g_prefix_error(error, "FuStructSynapticsCapeHidHdr failed read of 0x%x: ", (guint) 32);
598
0
        return NULL;
599
0
    }
600
214
    if (st->buf->len != 32) {
601
6
        g_set_error(error,
602
6
                    FWUPD_ERROR,
603
6
                    FWUPD_ERROR_INVALID_DATA,
604
6
                    "FuStructSynapticsCapeHidHdr requested 0x%x and got 0x%x",
605
6
                    (guint) 32,
606
6
                    (guint) st->buf->len);
607
6
        return NULL;
608
6
    }
609
208
    if (!fu_struct_synaptics_cape_hid_hdr_parse_internal(st, error))
610
57
        return NULL;
611
151
    return g_steal_pointer(&st);
612
208
}
613
/**
614
 * fu_struct_synaptics_cape_sngl_hdr_ref: (skip):
615
 **/
616
FuStructSynapticsCapeSnglHdr *
617
fu_struct_synaptics_cape_sngl_hdr_ref(FuStructSynapticsCapeSnglHdr *st)
618
0
{
619
0
    g_return_val_if_fail(st != NULL, NULL);
620
0
    st->refcount++;
621
0
    return st;
622
0
}
623
/**
624
 * fu_struct_synaptics_cape_sngl_hdr_unref: (skip):
625
 **/
626
void
627
fu_struct_synaptics_cape_sngl_hdr_unref(FuStructSynapticsCapeSnglHdr *st)
628
0
{
629
0
    g_return_if_fail(st != NULL);
630
0
    if (st->refcount == 0) {
631
0
        g_critical("FuStructSynapticsCapeSnglHdr refcount already zero");
632
0
        return;
633
0
    }
634
0
    if (--st->refcount > 0)
635
0
        return;
636
0
    if (st->buf != NULL)
637
0
        g_byte_array_unref(st->buf);
638
0
    g_free(st);
639
0
}
640
/**
641
 * fu_struct_synaptics_cape_sngl_hdr_new_internal: (skip):
642
 **/
643
static FuStructSynapticsCapeSnglHdr *
644
fu_struct_synaptics_cape_sngl_hdr_new_internal(void)
645
0
{
646
0
    FuStructSynapticsCapeSnglHdr *st = g_new0(FuStructSynapticsCapeSnglHdr, 1);
647
0
    st->refcount = 1;
648
0
    return st;
649
0
}
650
651
/* getters */
652
/**
653
 * fu_struct_synaptics_cape_sngl_hdr_get_magic: (skip):
654
 **/
655
static guint32
656
fu_struct_synaptics_cape_sngl_hdr_get_magic(const FuStructSynapticsCapeSnglHdr *st)
657
0
{
658
0
    g_return_val_if_fail(st != NULL, 0x0);
659
0
    return fu_memread_uint32(st->buf->data + 0, G_LITTLE_ENDIAN);
660
0
}
661
/**
662
 * fu_struct_synaptics_cape_sngl_hdr_get_file_crc: (skip):
663
 **/
664
guint32
665
fu_struct_synaptics_cape_sngl_hdr_get_file_crc(const FuStructSynapticsCapeSnglHdr *st)
666
0
{
667
0
    g_return_val_if_fail(st != NULL, 0x0);
668
0
    return fu_memread_uint32(st->buf->data + 4, G_LITTLE_ENDIAN);
669
0
}
670
/**
671
 * fu_struct_synaptics_cape_sngl_hdr_get_file_size: (skip):
672
 **/
673
guint32
674
fu_struct_synaptics_cape_sngl_hdr_get_file_size(const FuStructSynapticsCapeSnglHdr *st)
675
0
{
676
0
    g_return_val_if_fail(st != NULL, 0x0);
677
0
    return fu_memread_uint32(st->buf->data + 8, G_LITTLE_ENDIAN);
678
0
}
679
/**
680
 * fu_struct_synaptics_cape_sngl_hdr_get_magic2: (skip):
681
 **/
682
guint32
683
fu_struct_synaptics_cape_sngl_hdr_get_magic2(const FuStructSynapticsCapeSnglHdr *st)
684
0
{
685
0
    g_return_val_if_fail(st != NULL, 0x0);
686
0
    return fu_memread_uint32(st->buf->data + 12, G_LITTLE_ENDIAN);
687
0
}
688
/**
689
 * fu_struct_synaptics_cape_sngl_hdr_get_img_type: (skip):
690
 **/
691
guint32
692
fu_struct_synaptics_cape_sngl_hdr_get_img_type(const FuStructSynapticsCapeSnglHdr *st)
693
0
{
694
0
    g_return_val_if_fail(st != NULL, 0x0);
695
0
    return fu_memread_uint32(st->buf->data + 16, G_LITTLE_ENDIAN);
696
0
}
697
/**
698
 * fu_struct_synaptics_cape_sngl_hdr_get_fw_version: (skip):
699
 **/
700
guint32
701
fu_struct_synaptics_cape_sngl_hdr_get_fw_version(const FuStructSynapticsCapeSnglHdr *st)
702
0
{
703
0
    g_return_val_if_fail(st != NULL, 0x0);
704
0
    return fu_memread_uint32(st->buf->data + 20, G_LITTLE_ENDIAN);
705
0
}
706
/**
707
 * fu_struct_synaptics_cape_sngl_hdr_get_vid: (skip):
708
 **/
709
guint16
710
fu_struct_synaptics_cape_sngl_hdr_get_vid(const FuStructSynapticsCapeSnglHdr *st)
711
0
{
712
0
    g_return_val_if_fail(st != NULL, 0x0);
713
0
    return fu_memread_uint16(st->buf->data + 24, G_LITTLE_ENDIAN);
714
0
}
715
/**
716
 * fu_struct_synaptics_cape_sngl_hdr_get_pid: (skip):
717
 **/
718
guint16
719
fu_struct_synaptics_cape_sngl_hdr_get_pid(const FuStructSynapticsCapeSnglHdr *st)
720
0
{
721
0
    g_return_val_if_fail(st != NULL, 0x0);
722
0
    return fu_memread_uint16(st->buf->data + 26, G_LITTLE_ENDIAN);
723
0
}
724
/**
725
 * fu_struct_synaptics_cape_sngl_hdr_get_fw_file_num: (skip):
726
 **/
727
guint32
728
fu_struct_synaptics_cape_sngl_hdr_get_fw_file_num(const FuStructSynapticsCapeSnglHdr *st)
729
0
{
730
0
    g_return_val_if_fail(st != NULL, 0x0);
731
0
    return fu_memread_uint32(st->buf->data + 28, G_LITTLE_ENDIAN);
732
0
}
733
/**
734
 * fu_struct_synaptics_cape_sngl_hdr_get_version: (skip):
735
 **/
736
guint32
737
fu_struct_synaptics_cape_sngl_hdr_get_version(const FuStructSynapticsCapeSnglHdr *st)
738
0
{
739
0
    g_return_val_if_fail(st != NULL, 0x0);
740
0
    return fu_memread_uint32(st->buf->data + 32, G_LITTLE_ENDIAN);
741
0
}
742
/**
743
 * fu_struct_synaptics_cape_sngl_hdr_get_fw_crc: (skip):
744
 **/
745
guint32
746
fu_struct_synaptics_cape_sngl_hdr_get_fw_crc(const FuStructSynapticsCapeSnglHdr *st)
747
0
{
748
0
    g_return_val_if_fail(st != NULL, 0x0);
749
0
    return fu_memread_uint32(st->buf->data + 36, G_LITTLE_ENDIAN);
750
0
}
751
/**
752
 * fu_struct_synaptics_cape_sngl_hdr_get_machine_name: (skip):
753
 **/
754
gchar *
755
fu_struct_synaptics_cape_sngl_hdr_get_machine_name(const FuStructSynapticsCapeSnglHdr *st)
756
0
{
757
0
    g_return_val_if_fail(st != NULL, NULL);
758
0
    return fu_memstrsafe(st->buf->data, st->buf->len, 48, 16, NULL);
759
0
}
760
/**
761
 * fu_struct_synaptics_cape_sngl_hdr_get_time_stamp: (skip):
762
 **/
763
gchar *
764
fu_struct_synaptics_cape_sngl_hdr_get_time_stamp(const FuStructSynapticsCapeSnglHdr *st)
765
0
{
766
0
    g_return_val_if_fail(st != NULL, NULL);
767
0
    return fu_memstrsafe(st->buf->data, st->buf->len, 64, 16, NULL);
768
0
}
769
770
/* setters */
771
/**
772
 * fu_struct_synaptics_cape_sngl_hdr_set_magic: (skip):
773
 **/
774
static void
775
fu_struct_synaptics_cape_sngl_hdr_set_magic(FuStructSynapticsCapeSnglHdr *st, guint32 value)
776
0
{
777
0
    g_return_if_fail(st != NULL);
778
0
    fu_memwrite_uint32(st->buf->data + 0, value, G_LITTLE_ENDIAN);
779
0
}
780
/**
781
 * fu_struct_synaptics_cape_sngl_hdr_set_file_crc: (skip):
782
 **/
783
void
784
fu_struct_synaptics_cape_sngl_hdr_set_file_crc(FuStructSynapticsCapeSnglHdr *st, guint32 value)
785
0
{
786
0
    g_return_if_fail(st != NULL);
787
0
    fu_memwrite_uint32(st->buf->data + 4, value, G_LITTLE_ENDIAN);
788
0
}
789
/**
790
 * fu_struct_synaptics_cape_sngl_hdr_set_file_size: (skip):
791
 **/
792
void
793
fu_struct_synaptics_cape_sngl_hdr_set_file_size(FuStructSynapticsCapeSnglHdr *st, guint32 value)
794
0
{
795
0
    g_return_if_fail(st != NULL);
796
0
    fu_memwrite_uint32(st->buf->data + 8, value, G_LITTLE_ENDIAN);
797
0
}
798
/**
799
 * fu_struct_synaptics_cape_sngl_hdr_set_magic2: (skip):
800
 **/
801
void
802
fu_struct_synaptics_cape_sngl_hdr_set_magic2(FuStructSynapticsCapeSnglHdr *st, guint32 value)
803
0
{
804
0
    g_return_if_fail(st != NULL);
805
0
    fu_memwrite_uint32(st->buf->data + 12, value, G_LITTLE_ENDIAN);
806
0
}
807
/**
808
 * fu_struct_synaptics_cape_sngl_hdr_set_img_type: (skip):
809
 **/
810
void
811
fu_struct_synaptics_cape_sngl_hdr_set_img_type(FuStructSynapticsCapeSnglHdr *st, guint32 value)
812
0
{
813
0
    g_return_if_fail(st != NULL);
814
0
    fu_memwrite_uint32(st->buf->data + 16, value, G_LITTLE_ENDIAN);
815
0
}
816
/**
817
 * fu_struct_synaptics_cape_sngl_hdr_set_fw_version: (skip):
818
 **/
819
void
820
fu_struct_synaptics_cape_sngl_hdr_set_fw_version(FuStructSynapticsCapeSnglHdr *st, guint32 value)
821
0
{
822
0
    g_return_if_fail(st != NULL);
823
0
    fu_memwrite_uint32(st->buf->data + 20, value, G_LITTLE_ENDIAN);
824
0
}
825
/**
826
 * fu_struct_synaptics_cape_sngl_hdr_set_vid: (skip):
827
 **/
828
void
829
fu_struct_synaptics_cape_sngl_hdr_set_vid(FuStructSynapticsCapeSnglHdr *st, guint16 value)
830
0
{
831
0
    g_return_if_fail(st != NULL);
832
0
    fu_memwrite_uint16(st->buf->data + 24, value, G_LITTLE_ENDIAN);
833
0
}
834
/**
835
 * fu_struct_synaptics_cape_sngl_hdr_set_pid: (skip):
836
 **/
837
void
838
fu_struct_synaptics_cape_sngl_hdr_set_pid(FuStructSynapticsCapeSnglHdr *st, guint16 value)
839
0
{
840
0
    g_return_if_fail(st != NULL);
841
0
    fu_memwrite_uint16(st->buf->data + 26, value, G_LITTLE_ENDIAN);
842
0
}
843
/**
844
 * fu_struct_synaptics_cape_sngl_hdr_set_fw_file_num: (skip):
845
 **/
846
void
847
fu_struct_synaptics_cape_sngl_hdr_set_fw_file_num(FuStructSynapticsCapeSnglHdr *st, guint32 value)
848
0
{
849
0
    g_return_if_fail(st != NULL);
850
0
    fu_memwrite_uint32(st->buf->data + 28, value, G_LITTLE_ENDIAN);
851
0
}
852
/**
853
 * fu_struct_synaptics_cape_sngl_hdr_set_version: (skip):
854
 **/
855
void
856
fu_struct_synaptics_cape_sngl_hdr_set_version(FuStructSynapticsCapeSnglHdr *st, guint32 value)
857
0
{
858
0
    g_return_if_fail(st != NULL);
859
0
    fu_memwrite_uint32(st->buf->data + 32, value, G_LITTLE_ENDIAN);
860
0
}
861
/**
862
 * fu_struct_synaptics_cape_sngl_hdr_set_fw_crc: (skip):
863
 **/
864
void
865
fu_struct_synaptics_cape_sngl_hdr_set_fw_crc(FuStructSynapticsCapeSnglHdr *st, guint32 value)
866
0
{
867
0
    g_return_if_fail(st != NULL);
868
0
    fu_memwrite_uint32(st->buf->data + 36, value, G_LITTLE_ENDIAN);
869
0
}
870
/**
871
 * fu_struct_synaptics_cape_sngl_hdr_set_machine_name: (skip):
872
 **/
873
gboolean
874
fu_struct_synaptics_cape_sngl_hdr_set_machine_name(FuStructSynapticsCapeSnglHdr *st, const gchar *value, GError **error)
875
0
{
876
0
    gsize len;
877
0
    g_return_val_if_fail(st != NULL, FALSE);
878
0
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
879
0
    if (value == NULL) {
880
0
        memset(st->buf->data + 48, 0x0, 16);
881
0
        return TRUE;
882
0
    }
883
0
    len = strlen(value);
884
0
    if (len > 16) {
885
0
        g_set_error(error,
886
0
                    FWUPD_ERROR,
887
0
                    FWUPD_ERROR_INVALID_DATA,
888
0
                    "string '%s' (0x%x bytes) does not fit in FuStructSynapticsCapeSnglHdr.machine_name (0x%x bytes)",
889
0
                    value, (guint) len, (guint) 16);
890
0
        return FALSE;
891
0
    }
892
0
    return fu_memcpy_safe(st->buf->data, st->buf->len, 48, (const guint8 *)value, len, 0x0, len, error);
893
0
}
894
/**
895
 * fu_struct_synaptics_cape_sngl_hdr_set_time_stamp: (skip):
896
 **/
897
gboolean
898
fu_struct_synaptics_cape_sngl_hdr_set_time_stamp(FuStructSynapticsCapeSnglHdr *st, const gchar *value, GError **error)
899
0
{
900
0
    gsize len;
901
0
    g_return_val_if_fail(st != NULL, FALSE);
902
0
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
903
0
    if (value == NULL) {
904
0
        memset(st->buf->data + 64, 0x0, 16);
905
0
        return TRUE;
906
0
    }
907
0
    len = strlen(value);
908
0
    if (len > 16) {
909
0
        g_set_error(error,
910
0
                    FWUPD_ERROR,
911
0
                    FWUPD_ERROR_INVALID_DATA,
912
0
                    "string '%s' (0x%x bytes) does not fit in FuStructSynapticsCapeSnglHdr.time_stamp (0x%x bytes)",
913
0
                    value, (guint) len, (guint) 16);
914
0
        return FALSE;
915
0
    }
916
0
    return fu_memcpy_safe(st->buf->data, st->buf->len, 64, (const guint8 *)value, len, 0x0, len, error);
917
0
}
918
/**
919
 * fu_struct_synaptics_cape_sngl_hdr_new: (skip):
920
 **/
921
FuStructSynapticsCapeSnglHdr *
922
fu_struct_synaptics_cape_sngl_hdr_new(void)
923
0
{
924
0
    FuStructSynapticsCapeSnglHdr *st = fu_struct_synaptics_cape_sngl_hdr_new_internal();
925
0
    st->buf = g_byte_array_sized_new(80);
926
0
    fu_byte_array_set_size(st->buf, 80, 0x0);
927
0
    fu_struct_synaptics_cape_sngl_hdr_set_magic(st, 0x4C474E53);
928
0
    return st;
929
0
}
930
/**
931
 * fu_struct_synaptics_cape_sngl_hdr_to_string: (skip):
932
 **/
933
static gchar *
934
fu_struct_synaptics_cape_sngl_hdr_to_string(const FuStructSynapticsCapeSnglHdr *st)
935
0
{
936
0
    g_autoptr(GString) str = g_string_new("FuStructSynapticsCapeSnglHdr:\n");
937
0
    g_return_val_if_fail(st != NULL, NULL);
938
0
    g_string_append_printf(str, "  magic: 0x%x\n",
939
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_magic(st));
940
0
    g_string_append_printf(str, "  file_crc: 0x%x\n",
941
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_file_crc(st));
942
0
    g_string_append_printf(str, "  file_size: 0x%x\n",
943
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_file_size(st));
944
0
    g_string_append_printf(str, "  magic2: 0x%x\n",
945
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_magic2(st));
946
0
    g_string_append_printf(str, "  img_type: 0x%x\n",
947
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_img_type(st));
948
0
    g_string_append_printf(str, "  fw_version: 0x%x\n",
949
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_fw_version(st));
950
0
    g_string_append_printf(str, "  vid: 0x%x\n",
951
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_vid(st));
952
0
    g_string_append_printf(str, "  pid: 0x%x\n",
953
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_pid(st));
954
0
    g_string_append_printf(str, "  fw_file_num: 0x%x\n",
955
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_fw_file_num(st));
956
0
    g_string_append_printf(str, "  version: 0x%x\n",
957
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_version(st));
958
0
    g_string_append_printf(str, "  fw_crc: 0x%x\n",
959
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_fw_crc(st));
960
0
    {
961
0
        g_autofree gchar *tmp = fu_struct_synaptics_cape_sngl_hdr_get_machine_name(st);
962
0
        if (tmp != NULL)
963
0
            g_string_append_printf(str, "  machine_name: %s\n", tmp);
964
0
    }
965
0
    {
966
0
        g_autofree gchar *tmp = fu_struct_synaptics_cape_sngl_hdr_get_time_stamp(st);
967
0
        if (tmp != NULL)
968
0
            g_string_append_printf(str, "  time_stamp: %s\n", tmp);
969
0
    }
970
0
    if (str->len > 0)
971
0
        g_string_set_size(str, str->len - 1);
972
0
    return g_string_free(g_steal_pointer(&str), FALSE);
973
0
}
974
static gboolean
975
fu_struct_synaptics_cape_sngl_hdr_validate_internal(FuStructSynapticsCapeSnglHdr *st, GError **error)
976
0
{
977
0
    g_return_val_if_fail(st != NULL, FALSE);
978
0
    if (fu_struct_synaptics_cape_sngl_hdr_get_magic(st) != 0x4C474E53) {
979
0
        g_set_error(error,
980
0
                    FWUPD_ERROR,
981
0
                    FWUPD_ERROR_INVALID_DATA,
982
0
                    "constant FuStructSynapticsCapeSnglHdr.magic was not valid, "
983
0
                    "expected 0x%x and got 0x%x",
984
0
                    (guint) 0x4C474E53,
985
0
                    (guint) fu_struct_synaptics_cape_sngl_hdr_get_magic(st));
986
0
        return FALSE;
987
0
    }
988
0
    return TRUE;
989
0
}
990
static gboolean
991
fu_struct_synaptics_cape_sngl_hdr_parse_internal(FuStructSynapticsCapeSnglHdr *st, GError **error)
992
0
{
993
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
994
0
        g_autofree gchar *str = fu_struct_synaptics_cape_sngl_hdr_to_string(st);
995
0
        g_debug("%s", str);
996
0
    }
997
0
    if (!fu_struct_synaptics_cape_sngl_hdr_validate_internal(st, error))
998
0
        return FALSE;
999
0
    return TRUE;
1000
0
}
1001
/**
1002
 * fu_struct_synaptics_cape_sngl_hdr_parse_stream: (skip):
1003
 **/
1004
FuStructSynapticsCapeSnglHdr *
1005
fu_struct_synaptics_cape_sngl_hdr_parse_stream(GInputStream *stream, gsize offset, GError **error)
1006
0
{
1007
0
    g_autoptr(FuStructSynapticsCapeSnglHdr) st = fu_struct_synaptics_cape_sngl_hdr_new_internal();
1008
0
    st->buf = fu_input_stream_read_byte_array(stream, offset, 80, NULL, error);
1009
0
    if (st->buf == NULL) {
1010
0
        g_prefix_error(error, "FuStructSynapticsCapeSnglHdr failed read of 0x%x: ", (guint) 80);
1011
0
        return NULL;
1012
0
    }
1013
0
    if (st->buf->len != 80) {
1014
0
        g_set_error(error,
1015
0
                    FWUPD_ERROR,
1016
0
                    FWUPD_ERROR_INVALID_DATA,
1017
0
                    "FuStructSynapticsCapeSnglHdr requested 0x%x and got 0x%x",
1018
0
                    (guint) 80,
1019
0
                    (guint) st->buf->len);
1020
0
        return NULL;
1021
0
    }
1022
0
    if (!fu_struct_synaptics_cape_sngl_hdr_parse_internal(st, error))
1023
0
        return NULL;
1024
0
    return g_steal_pointer(&st);
1025
0
}
1026
/**
1027
 * fu_struct_synaptics_cape_sngl_file_ref: (skip):
1028
 **/
1029
FuStructSynapticsCapeSnglFile *
1030
fu_struct_synaptics_cape_sngl_file_ref(FuStructSynapticsCapeSnglFile *st)
1031
0
{
1032
0
    g_return_val_if_fail(st != NULL, NULL);
1033
0
    st->refcount++;
1034
0
    return st;
1035
0
}
1036
/**
1037
 * fu_struct_synaptics_cape_sngl_file_unref: (skip):
1038
 **/
1039
void
1040
fu_struct_synaptics_cape_sngl_file_unref(FuStructSynapticsCapeSnglFile *st)
1041
0
{
1042
0
    g_return_if_fail(st != NULL);
1043
0
    if (st->refcount == 0) {
1044
0
        g_critical("FuStructSynapticsCapeSnglFile refcount already zero");
1045
0
        return;
1046
0
    }
1047
0
    if (--st->refcount > 0)
1048
0
        return;
1049
0
    if (st->buf != NULL)
1050
0
        g_byte_array_unref(st->buf);
1051
0
    g_free(st);
1052
0
}
1053
1054
/* getters */
1055
1056
/* setters */