Coverage Report

Created: 2026-02-26 06:27

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