Coverage Report

Created: 2025-07-11 06:31

/work/fu-synaptics-cape-struct.c
Line
Count
Source (jump to first uncovered line)
1
/* auto-generated, do not modify */
2
#include "config.h"
3
4
#include "fu-synaptics-cape-struct.h"
5
#include "fu-byte-array.h"
6
#include "fu-mem-private.h"
7
#include "fu-string.h"
8
9
#ifdef G_LOG_DOMAIN
10
  #undef G_LOG_DOMAIN
11
#endif
12
0
#define G_LOG_DOMAIN "FuStruct"
13
14
15
16
17
18
/* getters */
19
/**
20
 * fu_synaptics_cape_msg_get_data_len: (skip):
21
 **/
22
guint16
23
fu_synaptics_cape_msg_get_data_len(const FuSynapticsCapeMsg *st)
24
0
{
25
0
    g_return_val_if_fail(st != NULL, 0x0);
26
0
    return fu_memread_uint16(st->data + 0, G_LITTLE_ENDIAN);
27
0
}
28
/**
29
 * fu_synaptics_cape_msg_get_cmd_id: (skip):
30
 **/
31
FuSynapticsCapeCmd
32
fu_synaptics_cape_msg_get_cmd_id(const FuSynapticsCapeMsg *st)
33
0
{
34
0
    g_return_val_if_fail(st != NULL, 0x0);
35
0
    return fu_memread_uint16(st->data + 2, G_LITTLE_ENDIAN);
36
0
}
37
/**
38
 * fu_synaptics_cape_msg_get_module_id: (skip):
39
 **/
40
FuSynapticsCapeModuleId
41
fu_synaptics_cape_msg_get_module_id(const FuSynapticsCapeMsg *st)
42
0
{
43
0
    g_return_val_if_fail(st != NULL, 0x0);
44
0
    return fu_memread_uint32(st->data + 4, G_LITTLE_ENDIAN);
45
0
}
46
/**
47
 * fu_synaptics_cape_msg_get_data: (skip):
48
 **/
49
guint32
50
fu_synaptics_cape_msg_get_data(const FuSynapticsCapeMsg *st, guint idx)
51
0
{
52
0
    g_return_val_if_fail(st != NULL, 0x0);
53
0
    return fu_memread_uint32(st->data + 8 + (sizeof(guint32) * idx),
54
0
                                        G_LITTLE_ENDIAN);
55
0
}
56
57
/* setters */
58
/**
59
 * fu_synaptics_cape_msg_set_data_len: (skip):
60
 **/
61
void
62
fu_synaptics_cape_msg_set_data_len(FuSynapticsCapeMsg *st, guint16 value)
63
0
{
64
0
    g_return_if_fail(st != NULL);
65
0
    fu_memwrite_uint16(st->data + 0, value, G_LITTLE_ENDIAN);
66
0
}
67
/**
68
 * fu_synaptics_cape_msg_set_cmd_id: (skip):
69
 **/
70
void
71
fu_synaptics_cape_msg_set_cmd_id(FuSynapticsCapeMsg *st, FuSynapticsCapeCmd value)
72
0
{
73
0
    g_return_if_fail(st != NULL);
74
0
    fu_memwrite_uint16(st->data + 2, value, G_LITTLE_ENDIAN);
75
0
}
76
/**
77
 * fu_synaptics_cape_msg_set_module_id: (skip):
78
 **/
79
void
80
fu_synaptics_cape_msg_set_module_id(FuSynapticsCapeMsg *st, FuSynapticsCapeModuleId value)
81
0
{
82
0
    g_return_if_fail(st != NULL);
83
0
    fu_memwrite_uint32(st->data + 4, value, G_LITTLE_ENDIAN);
84
0
}
85
/**
86
 * fu_synaptics_cape_msg_set_data: (skip):
87
 **/
88
void
89
fu_synaptics_cape_msg_set_data(FuSynapticsCapeMsg *st, guint idx, guint32 value)
90
0
{
91
0
    g_return_if_fail(st != NULL);
92
0
    g_return_if_fail(idx < 13);
93
0
    fu_memwrite_uint32(st->data + 8 + (sizeof(guint32) * idx),
94
0
                                  value,
95
0
                                  G_LITTLE_ENDIAN);
96
0
}
97
/**
98
 * fu_synaptics_cape_msg_new: (skip):
99
 **/
100
FuSynapticsCapeMsg *
101
fu_synaptics_cape_msg_new(void)
102
0
{
103
0
    FuSynapticsCapeMsg *st = g_byte_array_sized_new(60);
104
0
    fu_byte_array_set_size(st, 60, 0x0);
105
0
    fu_synaptics_cape_msg_set_module_id(st, FU_SYNAPTICS_CAPE_MODULE_ID_APP_CTRL);
106
0
    return st;
107
0
}
108
/* getters */
109
/**
110
 * fu_synaptics_cape_cmd_hid_report_get_msg: (skip):
111
 **/
112
FuSynapticsCapeMsg *
113
fu_synaptics_cape_cmd_hid_report_get_msg(const FuSynapticsCapeCmdHidReport *st)
114
0
{
115
0
    g_autoptr(GByteArray) buf = g_byte_array_new();
116
0
    g_return_val_if_fail(st != NULL, NULL);
117
0
    g_byte_array_append(buf, st->data + FU_SYNAPTICS_CAPE_CMD_HID_REPORT_OFFSET_MSG, 60);
118
0
    return g_steal_pointer(&buf);
119
0
}
120
121
/* setters */
122
/**
123
 * fu_synaptics_cape_cmd_hid_report_set_report_id: (skip):
124
 **/
125
static void
126
fu_synaptics_cape_cmd_hid_report_set_report_id(FuSynapticsCapeCmdHidReport *st, guint16 value)
127
0
{
128
0
    g_return_if_fail(st != NULL);
129
0
    fu_memwrite_uint16(st->data + 0, value, G_LITTLE_ENDIAN);
130
0
}
131
/**
132
 * fu_synaptics_cape_cmd_hid_report_set_msg: (skip):
133
 **/
134
gboolean
135
fu_synaptics_cape_cmd_hid_report_set_msg(FuSynapticsCapeCmdHidReport *st, const FuSynapticsCapeMsg *st_donor, GError **error)
136
0
{
137
0
    g_return_val_if_fail(st != NULL, FALSE);
138
0
    g_return_val_if_fail(st_donor != NULL, FALSE);
139
0
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
140
141
0
    if (st_donor->len > FU_SYNAPTICS_CAPE_MSG_SIZE) {
142
0
        g_set_error(error,
143
0
                    FWUPD_ERROR,
144
0
                    FWUPD_ERROR_INVALID_DATA,
145
0
                    "donor 'FuSynapticsCapeMsg' (0x%x bytes) does not fit in "
146
0
                    "FuSynapticsCapeCmdHidReport.msg (0x%x bytes)",
147
0
                    (guint) st_donor->len,
148
0
                    (guint) FU_SYNAPTICS_CAPE_MSG_SIZE);
149
0
        return FALSE;
150
0
    }
151
0
    memcpy(st->data + FU_SYNAPTICS_CAPE_CMD_HID_REPORT_OFFSET_MSG, st_donor->data, st_donor->len);
152
0
    return TRUE;
153
0
}
154
/**
155
 * fu_synaptics_cape_cmd_hid_report_new: (skip):
156
 **/
157
FuSynapticsCapeCmdHidReport *
158
fu_synaptics_cape_cmd_hid_report_new(void)
159
0
{
160
0
    FuSynapticsCapeCmdHidReport *st = g_byte_array_sized_new(62);
161
0
    fu_byte_array_set_size(st, 62, 0x0);
162
0
    {
163
0
        g_autoptr(GByteArray) st_donor = fu_synaptics_cape_msg_new();
164
0
        memcpy(st->data + 0x2, st_donor->data, st_donor->len); /* nocheck:blocked */
165
0
    }
166
0
    fu_synaptics_cape_cmd_hid_report_set_report_id(st, 1);
167
0
    return st;
168
0
}
169
/* getters */
170
/**
171
 * fu_struct_synaptics_cape_hid_hdr_get_vid: (skip):
172
 **/
173
guint32
174
fu_struct_synaptics_cape_hid_hdr_get_vid(const FuStructSynapticsCapeHidHdr *st)
175
0
{
176
0
    g_return_val_if_fail(st != NULL, 0x0);
177
0
    return fu_memread_uint32(st->data + 0, G_LITTLE_ENDIAN);
178
0
}
179
/**
180
 * fu_struct_synaptics_cape_hid_hdr_get_pid: (skip):
181
 **/
182
guint32
183
fu_struct_synaptics_cape_hid_hdr_get_pid(const FuStructSynapticsCapeHidHdr *st)
184
0
{
185
0
    g_return_val_if_fail(st != NULL, 0x0);
186
0
    return fu_memread_uint32(st->data + 4, G_LITTLE_ENDIAN);
187
0
}
188
/**
189
 * fu_struct_synaptics_cape_hid_hdr_get_update_type: (skip):
190
 **/
191
guint32
192
fu_struct_synaptics_cape_hid_hdr_get_update_type(const FuStructSynapticsCapeHidHdr *st)
193
0
{
194
0
    g_return_val_if_fail(st != NULL, 0x0);
195
0
    return fu_memread_uint32(st->data + 8, G_LITTLE_ENDIAN);
196
0
}
197
/**
198
 * fu_struct_synaptics_cape_hid_hdr_get_signature: (skip):
199
 **/
200
static guint32
201
fu_struct_synaptics_cape_hid_hdr_get_signature(const FuStructSynapticsCapeHidHdr *st)
202
0
{
203
0
    g_return_val_if_fail(st != NULL, 0x0);
204
0
    return fu_memread_uint32(st->data + 12, G_LITTLE_ENDIAN);
205
0
}
206
/**
207
 * fu_struct_synaptics_cape_hid_hdr_get_crc: (skip):
208
 **/
209
guint32
210
fu_struct_synaptics_cape_hid_hdr_get_crc(const FuStructSynapticsCapeHidHdr *st)
211
0
{
212
0
    g_return_val_if_fail(st != NULL, 0x0);
213
0
    return fu_memread_uint32(st->data + 16, G_LITTLE_ENDIAN);
214
0
}
215
/**
216
 * fu_struct_synaptics_cape_hid_hdr_get_ver_w: (skip):
217
 **/
218
guint16
219
fu_struct_synaptics_cape_hid_hdr_get_ver_w(const FuStructSynapticsCapeHidHdr *st)
220
0
{
221
0
    g_return_val_if_fail(st != NULL, 0x0);
222
0
    return fu_memread_uint16(st->data + 20, G_LITTLE_ENDIAN);
223
0
}
224
/**
225
 * fu_struct_synaptics_cape_hid_hdr_get_ver_x: (skip):
226
 **/
227
guint16
228
fu_struct_synaptics_cape_hid_hdr_get_ver_x(const FuStructSynapticsCapeHidHdr *st)
229
0
{
230
0
    g_return_val_if_fail(st != NULL, 0x0);
231
0
    return fu_memread_uint16(st->data + 22, G_LITTLE_ENDIAN);
232
0
}
233
/**
234
 * fu_struct_synaptics_cape_hid_hdr_get_ver_y: (skip):
235
 **/
236
guint16
237
fu_struct_synaptics_cape_hid_hdr_get_ver_y(const FuStructSynapticsCapeHidHdr *st)
238
0
{
239
0
    g_return_val_if_fail(st != NULL, 0x0);
240
0
    return fu_memread_uint16(st->data + 24, G_LITTLE_ENDIAN);
241
0
}
242
/**
243
 * fu_struct_synaptics_cape_hid_hdr_get_ver_z: (skip):
244
 **/
245
guint16
246
fu_struct_synaptics_cape_hid_hdr_get_ver_z(const FuStructSynapticsCapeHidHdr *st)
247
0
{
248
0
    g_return_val_if_fail(st != NULL, 0x0);
249
0
    return fu_memread_uint16(st->data + 26, G_LITTLE_ENDIAN);
250
0
}
251
252
/* setters */
253
/**
254
 * fu_struct_synaptics_cape_hid_hdr_set_vid: (skip):
255
 **/
256
void
257
fu_struct_synaptics_cape_hid_hdr_set_vid(FuStructSynapticsCapeHidHdr *st, guint32 value)
258
0
{
259
0
    g_return_if_fail(st != NULL);
260
0
    fu_memwrite_uint32(st->data + 0, value, G_LITTLE_ENDIAN);
261
0
}
262
/**
263
 * fu_struct_synaptics_cape_hid_hdr_set_pid: (skip):
264
 **/
265
void
266
fu_struct_synaptics_cape_hid_hdr_set_pid(FuStructSynapticsCapeHidHdr *st, guint32 value)
267
0
{
268
0
    g_return_if_fail(st != NULL);
269
0
    fu_memwrite_uint32(st->data + 4, value, G_LITTLE_ENDIAN);
270
0
}
271
/**
272
 * fu_struct_synaptics_cape_hid_hdr_set_update_type: (skip):
273
 **/
274
void
275
fu_struct_synaptics_cape_hid_hdr_set_update_type(FuStructSynapticsCapeHidHdr *st, guint32 value)
276
0
{
277
0
    g_return_if_fail(st != NULL);
278
0
    fu_memwrite_uint32(st->data + 8, value, G_LITTLE_ENDIAN);
279
0
}
280
/**
281
 * fu_struct_synaptics_cape_hid_hdr_set_signature: (skip):
282
 **/
283
static void
284
fu_struct_synaptics_cape_hid_hdr_set_signature(FuStructSynapticsCapeHidHdr *st, guint32 value)
285
0
{
286
0
    g_return_if_fail(st != NULL);
287
0
    fu_memwrite_uint32(st->data + 12, value, G_LITTLE_ENDIAN);
288
0
}
289
/**
290
 * fu_struct_synaptics_cape_hid_hdr_set_crc: (skip):
291
 **/
292
void
293
fu_struct_synaptics_cape_hid_hdr_set_crc(FuStructSynapticsCapeHidHdr *st, guint32 value)
294
0
{
295
0
    g_return_if_fail(st != NULL);
296
0
    fu_memwrite_uint32(st->data + 16, value, G_LITTLE_ENDIAN);
297
0
}
298
/**
299
 * fu_struct_synaptics_cape_hid_hdr_set_ver_w: (skip):
300
 **/
301
void
302
fu_struct_synaptics_cape_hid_hdr_set_ver_w(FuStructSynapticsCapeHidHdr *st, guint16 value)
303
0
{
304
0
    g_return_if_fail(st != NULL);
305
0
    fu_memwrite_uint16(st->data + 20, value, G_LITTLE_ENDIAN);
306
0
}
307
/**
308
 * fu_struct_synaptics_cape_hid_hdr_set_ver_x: (skip):
309
 **/
310
void
311
fu_struct_synaptics_cape_hid_hdr_set_ver_x(FuStructSynapticsCapeHidHdr *st, guint16 value)
312
0
{
313
0
    g_return_if_fail(st != NULL);
314
0
    fu_memwrite_uint16(st->data + 22, value, G_LITTLE_ENDIAN);
315
0
}
316
/**
317
 * fu_struct_synaptics_cape_hid_hdr_set_ver_y: (skip):
318
 **/
319
void
320
fu_struct_synaptics_cape_hid_hdr_set_ver_y(FuStructSynapticsCapeHidHdr *st, guint16 value)
321
0
{
322
0
    g_return_if_fail(st != NULL);
323
0
    fu_memwrite_uint16(st->data + 24, value, G_LITTLE_ENDIAN);
324
0
}
325
/**
326
 * fu_struct_synaptics_cape_hid_hdr_set_ver_z: (skip):
327
 **/
328
void
329
fu_struct_synaptics_cape_hid_hdr_set_ver_z(FuStructSynapticsCapeHidHdr *st, guint16 value)
330
0
{
331
0
    g_return_if_fail(st != NULL);
332
0
    fu_memwrite_uint16(st->data + 26, value, G_LITTLE_ENDIAN);
333
0
}
334
/**
335
 * fu_struct_synaptics_cape_hid_hdr_new: (skip):
336
 **/
337
FuStructSynapticsCapeHidHdr *
338
fu_struct_synaptics_cape_hid_hdr_new(void)
339
0
{
340
0
    FuStructSynapticsCapeHidHdr *st = g_byte_array_sized_new(32);
341
0
    fu_byte_array_set_size(st, 32, 0x0);
342
0
    fu_struct_synaptics_cape_hid_hdr_set_signature(st, 0x43534645);
343
0
    return st;
344
0
}
345
/**
346
 * fu_struct_synaptics_cape_hid_hdr_to_string: (skip):
347
 **/
348
static gchar *
349
fu_struct_synaptics_cape_hid_hdr_to_string(const FuStructSynapticsCapeHidHdr *st)
350
0
{
351
0
    g_autoptr(GString) str = g_string_new("FuStructSynapticsCapeHidHdr:\n");
352
0
    g_return_val_if_fail(st != NULL, NULL);
353
0
    g_string_append_printf(str, "  vid: 0x%x\n",
354
0
                           (guint) fu_struct_synaptics_cape_hid_hdr_get_vid(st));
355
0
    g_string_append_printf(str, "  pid: 0x%x\n",
356
0
                           (guint) fu_struct_synaptics_cape_hid_hdr_get_pid(st));
357
0
    g_string_append_printf(str, "  update_type: 0x%x\n",
358
0
                           (guint) fu_struct_synaptics_cape_hid_hdr_get_update_type(st));
359
0
    g_string_append_printf(str, "  crc: 0x%x\n",
360
0
                           (guint) fu_struct_synaptics_cape_hid_hdr_get_crc(st));
361
0
    g_string_append_printf(str, "  ver_w: 0x%x\n",
362
0
                           (guint) fu_struct_synaptics_cape_hid_hdr_get_ver_w(st));
363
0
    g_string_append_printf(str, "  ver_x: 0x%x\n",
364
0
                           (guint) fu_struct_synaptics_cape_hid_hdr_get_ver_x(st));
365
0
    g_string_append_printf(str, "  ver_y: 0x%x\n",
366
0
                           (guint) fu_struct_synaptics_cape_hid_hdr_get_ver_y(st));
367
0
    g_string_append_printf(str, "  ver_z: 0x%x\n",
368
0
                           (guint) fu_struct_synaptics_cape_hid_hdr_get_ver_z(st));
369
0
    if (str->len > 0)
370
0
        g_string_set_size(str, str->len - 1);
371
0
    return g_string_free(g_steal_pointer(&str), FALSE);
372
0
}
373
static gboolean
374
fu_struct_synaptics_cape_hid_hdr_validate_internal(FuStructSynapticsCapeHidHdr *st, GError **error)
375
0
{
376
0
    g_return_val_if_fail(st != NULL, FALSE);
377
0
    if (fu_struct_synaptics_cape_hid_hdr_get_signature(st) != 0x43534645) {
378
0
        g_set_error(error,
379
0
                    FWUPD_ERROR,
380
0
                    FWUPD_ERROR_INVALID_DATA,
381
0
                    "constant FuStructSynapticsCapeHidHdr.signature was not valid, "
382
0
                    "expected 0x%x and got 0x%x",
383
0
                    (guint) 0x43534645,
384
0
                    (guint) fu_struct_synaptics_cape_hid_hdr_get_signature(st));
385
0
        return FALSE;
386
0
    }
387
0
    return TRUE;
388
0
}
389
static gboolean
390
fu_struct_synaptics_cape_hid_hdr_parse_internal(FuStructSynapticsCapeHidHdr *st, GError **error)
391
0
{
392
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
393
0
        g_autofree gchar *str = fu_struct_synaptics_cape_hid_hdr_to_string(st);
394
0
        g_debug("%s", str);
395
0
    }
396
0
    if (!fu_struct_synaptics_cape_hid_hdr_validate_internal(st, error))
397
0
        return FALSE;
398
0
    return TRUE;
399
0
}
400
/**
401
 * fu_struct_synaptics_cape_hid_hdr_parse_stream: (skip):
402
 **/
403
FuStructSynapticsCapeHidHdr *
404
fu_struct_synaptics_cape_hid_hdr_parse_stream(GInputStream *stream, gsize offset, GError **error)
405
0
{
406
0
    g_autoptr(GByteArray) st = NULL;
407
0
    st = fu_input_stream_read_byte_array(stream, offset, 32, NULL, error);
408
0
    if (st == NULL) {
409
0
        g_prefix_error(error, "FuStructSynapticsCapeHidHdr failed read of 0x%x: ", (guint) 32);
410
0
        return NULL;
411
0
    }
412
0
    if (st->len != 32) {
413
0
        g_set_error(error,
414
0
                    FWUPD_ERROR,
415
0
                    FWUPD_ERROR_INVALID_DATA,
416
0
                    "FuStructSynapticsCapeHidHdr requested 0x%x and got 0x%x",
417
0
                    (guint) 32,
418
0
                    (guint) st->len);
419
0
        return NULL;
420
0
    }
421
0
    if (!fu_struct_synaptics_cape_hid_hdr_parse_internal(st, error))
422
0
        return NULL;
423
0
    return g_steal_pointer(&st);
424
0
}
425
/* getters */
426
/**
427
 * fu_struct_synaptics_cape_sngl_hdr_get_magic: (skip):
428
 **/
429
static guint32
430
fu_struct_synaptics_cape_sngl_hdr_get_magic(const FuStructSynapticsCapeSnglHdr *st)
431
0
{
432
0
    g_return_val_if_fail(st != NULL, 0x0);
433
0
    return fu_memread_uint32(st->data + 0, G_LITTLE_ENDIAN);
434
0
}
435
/**
436
 * fu_struct_synaptics_cape_sngl_hdr_get_file_crc: (skip):
437
 **/
438
guint32
439
fu_struct_synaptics_cape_sngl_hdr_get_file_crc(const FuStructSynapticsCapeSnglHdr *st)
440
0
{
441
0
    g_return_val_if_fail(st != NULL, 0x0);
442
0
    return fu_memread_uint32(st->data + 4, G_LITTLE_ENDIAN);
443
0
}
444
/**
445
 * fu_struct_synaptics_cape_sngl_hdr_get_file_size: (skip):
446
 **/
447
guint32
448
fu_struct_synaptics_cape_sngl_hdr_get_file_size(const FuStructSynapticsCapeSnglHdr *st)
449
0
{
450
0
    g_return_val_if_fail(st != NULL, 0x0);
451
0
    return fu_memread_uint32(st->data + 8, G_LITTLE_ENDIAN);
452
0
}
453
/**
454
 * fu_struct_synaptics_cape_sngl_hdr_get_magic2: (skip):
455
 **/
456
guint32
457
fu_struct_synaptics_cape_sngl_hdr_get_magic2(const FuStructSynapticsCapeSnglHdr *st)
458
0
{
459
0
    g_return_val_if_fail(st != NULL, 0x0);
460
0
    return fu_memread_uint32(st->data + 12, G_LITTLE_ENDIAN);
461
0
}
462
/**
463
 * fu_struct_synaptics_cape_sngl_hdr_get_img_type: (skip):
464
 **/
465
guint32
466
fu_struct_synaptics_cape_sngl_hdr_get_img_type(const FuStructSynapticsCapeSnglHdr *st)
467
0
{
468
0
    g_return_val_if_fail(st != NULL, 0x0);
469
0
    return fu_memread_uint32(st->data + 16, G_LITTLE_ENDIAN);
470
0
}
471
/**
472
 * fu_struct_synaptics_cape_sngl_hdr_get_fw_version: (skip):
473
 **/
474
guint32
475
fu_struct_synaptics_cape_sngl_hdr_get_fw_version(const FuStructSynapticsCapeSnglHdr *st)
476
0
{
477
0
    g_return_val_if_fail(st != NULL, 0x0);
478
0
    return fu_memread_uint32(st->data + 20, G_LITTLE_ENDIAN);
479
0
}
480
/**
481
 * fu_struct_synaptics_cape_sngl_hdr_get_vid: (skip):
482
 **/
483
guint16
484
fu_struct_synaptics_cape_sngl_hdr_get_vid(const FuStructSynapticsCapeSnglHdr *st)
485
0
{
486
0
    g_return_val_if_fail(st != NULL, 0x0);
487
0
    return fu_memread_uint16(st->data + 24, G_LITTLE_ENDIAN);
488
0
}
489
/**
490
 * fu_struct_synaptics_cape_sngl_hdr_get_pid: (skip):
491
 **/
492
guint16
493
fu_struct_synaptics_cape_sngl_hdr_get_pid(const FuStructSynapticsCapeSnglHdr *st)
494
0
{
495
0
    g_return_val_if_fail(st != NULL, 0x0);
496
0
    return fu_memread_uint16(st->data + 26, G_LITTLE_ENDIAN);
497
0
}
498
/**
499
 * fu_struct_synaptics_cape_sngl_hdr_get_fw_file_num: (skip):
500
 **/
501
guint32
502
fu_struct_synaptics_cape_sngl_hdr_get_fw_file_num(const FuStructSynapticsCapeSnglHdr *st)
503
0
{
504
0
    g_return_val_if_fail(st != NULL, 0x0);
505
0
    return fu_memread_uint32(st->data + 28, G_LITTLE_ENDIAN);
506
0
}
507
/**
508
 * fu_struct_synaptics_cape_sngl_hdr_get_version: (skip):
509
 **/
510
guint32
511
fu_struct_synaptics_cape_sngl_hdr_get_version(const FuStructSynapticsCapeSnglHdr *st)
512
0
{
513
0
    g_return_val_if_fail(st != NULL, 0x0);
514
0
    return fu_memread_uint32(st->data + 32, G_LITTLE_ENDIAN);
515
0
}
516
/**
517
 * fu_struct_synaptics_cape_sngl_hdr_get_fw_crc: (skip):
518
 **/
519
guint32
520
fu_struct_synaptics_cape_sngl_hdr_get_fw_crc(const FuStructSynapticsCapeSnglHdr *st)
521
0
{
522
0
    g_return_val_if_fail(st != NULL, 0x0);
523
0
    return fu_memread_uint32(st->data + 36, G_LITTLE_ENDIAN);
524
0
}
525
/**
526
 * fu_struct_synaptics_cape_sngl_hdr_get_machine_name: (skip):
527
 **/
528
gchar *
529
fu_struct_synaptics_cape_sngl_hdr_get_machine_name(const FuStructSynapticsCapeSnglHdr *st)
530
0
{
531
0
    g_return_val_if_fail(st != NULL, NULL);
532
0
    return fu_memstrsafe(st->data, st->len, 48, 16, NULL);
533
0
}
534
/**
535
 * fu_struct_synaptics_cape_sngl_hdr_get_time_stamp: (skip):
536
 **/
537
gchar *
538
fu_struct_synaptics_cape_sngl_hdr_get_time_stamp(const FuStructSynapticsCapeSnglHdr *st)
539
0
{
540
0
    g_return_val_if_fail(st != NULL, NULL);
541
0
    return fu_memstrsafe(st->data, st->len, 64, 16, NULL);
542
0
}
543
544
/* setters */
545
/**
546
 * fu_struct_synaptics_cape_sngl_hdr_set_magic: (skip):
547
 **/
548
static void
549
fu_struct_synaptics_cape_sngl_hdr_set_magic(FuStructSynapticsCapeSnglHdr *st, guint32 value)
550
0
{
551
0
    g_return_if_fail(st != NULL);
552
0
    fu_memwrite_uint32(st->data + 0, value, G_LITTLE_ENDIAN);
553
0
}
554
/**
555
 * fu_struct_synaptics_cape_sngl_hdr_set_file_crc: (skip):
556
 **/
557
void
558
fu_struct_synaptics_cape_sngl_hdr_set_file_crc(FuStructSynapticsCapeSnglHdr *st, guint32 value)
559
0
{
560
0
    g_return_if_fail(st != NULL);
561
0
    fu_memwrite_uint32(st->data + 4, value, G_LITTLE_ENDIAN);
562
0
}
563
/**
564
 * fu_struct_synaptics_cape_sngl_hdr_set_file_size: (skip):
565
 **/
566
void
567
fu_struct_synaptics_cape_sngl_hdr_set_file_size(FuStructSynapticsCapeSnglHdr *st, guint32 value)
568
0
{
569
0
    g_return_if_fail(st != NULL);
570
0
    fu_memwrite_uint32(st->data + 8, value, G_LITTLE_ENDIAN);
571
0
}
572
/**
573
 * fu_struct_synaptics_cape_sngl_hdr_set_magic2: (skip):
574
 **/
575
void
576
fu_struct_synaptics_cape_sngl_hdr_set_magic2(FuStructSynapticsCapeSnglHdr *st, guint32 value)
577
0
{
578
0
    g_return_if_fail(st != NULL);
579
0
    fu_memwrite_uint32(st->data + 12, value, G_LITTLE_ENDIAN);
580
0
}
581
/**
582
 * fu_struct_synaptics_cape_sngl_hdr_set_img_type: (skip):
583
 **/
584
void
585
fu_struct_synaptics_cape_sngl_hdr_set_img_type(FuStructSynapticsCapeSnglHdr *st, guint32 value)
586
0
{
587
0
    g_return_if_fail(st != NULL);
588
0
    fu_memwrite_uint32(st->data + 16, value, G_LITTLE_ENDIAN);
589
0
}
590
/**
591
 * fu_struct_synaptics_cape_sngl_hdr_set_fw_version: (skip):
592
 **/
593
void
594
fu_struct_synaptics_cape_sngl_hdr_set_fw_version(FuStructSynapticsCapeSnglHdr *st, guint32 value)
595
0
{
596
0
    g_return_if_fail(st != NULL);
597
0
    fu_memwrite_uint32(st->data + 20, value, G_LITTLE_ENDIAN);
598
0
}
599
/**
600
 * fu_struct_synaptics_cape_sngl_hdr_set_vid: (skip):
601
 **/
602
void
603
fu_struct_synaptics_cape_sngl_hdr_set_vid(FuStructSynapticsCapeSnglHdr *st, guint16 value)
604
0
{
605
0
    g_return_if_fail(st != NULL);
606
0
    fu_memwrite_uint16(st->data + 24, value, G_LITTLE_ENDIAN);
607
0
}
608
/**
609
 * fu_struct_synaptics_cape_sngl_hdr_set_pid: (skip):
610
 **/
611
void
612
fu_struct_synaptics_cape_sngl_hdr_set_pid(FuStructSynapticsCapeSnglHdr *st, guint16 value)
613
0
{
614
0
    g_return_if_fail(st != NULL);
615
0
    fu_memwrite_uint16(st->data + 26, value, G_LITTLE_ENDIAN);
616
0
}
617
/**
618
 * fu_struct_synaptics_cape_sngl_hdr_set_fw_file_num: (skip):
619
 **/
620
void
621
fu_struct_synaptics_cape_sngl_hdr_set_fw_file_num(FuStructSynapticsCapeSnglHdr *st, guint32 value)
622
0
{
623
0
    g_return_if_fail(st != NULL);
624
0
    fu_memwrite_uint32(st->data + 28, value, G_LITTLE_ENDIAN);
625
0
}
626
/**
627
 * fu_struct_synaptics_cape_sngl_hdr_set_version: (skip):
628
 **/
629
void
630
fu_struct_synaptics_cape_sngl_hdr_set_version(FuStructSynapticsCapeSnglHdr *st, guint32 value)
631
0
{
632
0
    g_return_if_fail(st != NULL);
633
0
    fu_memwrite_uint32(st->data + 32, value, G_LITTLE_ENDIAN);
634
0
}
635
/**
636
 * fu_struct_synaptics_cape_sngl_hdr_set_fw_crc: (skip):
637
 **/
638
void
639
fu_struct_synaptics_cape_sngl_hdr_set_fw_crc(FuStructSynapticsCapeSnglHdr *st, guint32 value)
640
0
{
641
0
    g_return_if_fail(st != NULL);
642
0
    fu_memwrite_uint32(st->data + 36, value, G_LITTLE_ENDIAN);
643
0
}
644
/**
645
 * fu_struct_synaptics_cape_sngl_hdr_set_machine_name: (skip):
646
 **/
647
gboolean
648
fu_struct_synaptics_cape_sngl_hdr_set_machine_name(FuStructSynapticsCapeSnglHdr *st, const gchar *value, GError **error)
649
0
{
650
0
    gsize len;
651
0
    g_return_val_if_fail(st != NULL, FALSE);
652
0
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
653
0
    if (value == NULL) {
654
0
        memset(st->data + 48, 0x0, 16);
655
0
        return TRUE;
656
0
    }
657
0
    len = strlen(value);
658
0
    if (len > 16) {
659
0
        g_set_error(error,
660
0
                    FWUPD_ERROR,
661
0
                    FWUPD_ERROR_INVALID_DATA,
662
0
                    "string '%s' (0x%x bytes) does not fit in FuStructSynapticsCapeSnglHdr.machine_name (0x%x bytes)",
663
0
                    value, (guint) len, (guint) 16);
664
0
        return FALSE;
665
0
    }
666
0
    return fu_memcpy_safe(st->data, st->len, 48, (const guint8 *)value, len, 0x0, len, error);
667
0
}
668
/**
669
 * fu_struct_synaptics_cape_sngl_hdr_set_time_stamp: (skip):
670
 **/
671
gboolean
672
fu_struct_synaptics_cape_sngl_hdr_set_time_stamp(FuStructSynapticsCapeSnglHdr *st, const gchar *value, GError **error)
673
0
{
674
0
    gsize len;
675
0
    g_return_val_if_fail(st != NULL, FALSE);
676
0
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
677
0
    if (value == NULL) {
678
0
        memset(st->data + 64, 0x0, 16);
679
0
        return TRUE;
680
0
    }
681
0
    len = strlen(value);
682
0
    if (len > 16) {
683
0
        g_set_error(error,
684
0
                    FWUPD_ERROR,
685
0
                    FWUPD_ERROR_INVALID_DATA,
686
0
                    "string '%s' (0x%x bytes) does not fit in FuStructSynapticsCapeSnglHdr.time_stamp (0x%x bytes)",
687
0
                    value, (guint) len, (guint) 16);
688
0
        return FALSE;
689
0
    }
690
0
    return fu_memcpy_safe(st->data, st->len, 64, (const guint8 *)value, len, 0x0, len, error);
691
0
}
692
/**
693
 * fu_struct_synaptics_cape_sngl_hdr_new: (skip):
694
 **/
695
FuStructSynapticsCapeSnglHdr *
696
fu_struct_synaptics_cape_sngl_hdr_new(void)
697
0
{
698
0
    FuStructSynapticsCapeSnglHdr *st = g_byte_array_sized_new(80);
699
0
    fu_byte_array_set_size(st, 80, 0x0);
700
0
    fu_struct_synaptics_cape_sngl_hdr_set_magic(st, 0x4C474E53);
701
0
    return st;
702
0
}
703
/**
704
 * fu_struct_synaptics_cape_sngl_hdr_to_string: (skip):
705
 **/
706
static gchar *
707
fu_struct_synaptics_cape_sngl_hdr_to_string(const FuStructSynapticsCapeSnglHdr *st)
708
0
{
709
0
    g_autoptr(GString) str = g_string_new("FuStructSynapticsCapeSnglHdr:\n");
710
0
    g_return_val_if_fail(st != NULL, NULL);
711
0
    g_string_append_printf(str, "  file_crc: 0x%x\n",
712
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_file_crc(st));
713
0
    g_string_append_printf(str, "  file_size: 0x%x\n",
714
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_file_size(st));
715
0
    g_string_append_printf(str, "  magic2: 0x%x\n",
716
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_magic2(st));
717
0
    g_string_append_printf(str, "  img_type: 0x%x\n",
718
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_img_type(st));
719
0
    g_string_append_printf(str, "  fw_version: 0x%x\n",
720
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_fw_version(st));
721
0
    g_string_append_printf(str, "  vid: 0x%x\n",
722
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_vid(st));
723
0
    g_string_append_printf(str, "  pid: 0x%x\n",
724
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_pid(st));
725
0
    g_string_append_printf(str, "  fw_file_num: 0x%x\n",
726
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_fw_file_num(st));
727
0
    g_string_append_printf(str, "  version: 0x%x\n",
728
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_version(st));
729
0
    g_string_append_printf(str, "  fw_crc: 0x%x\n",
730
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_fw_crc(st));
731
0
    {
732
0
        g_autofree gchar *tmp = fu_struct_synaptics_cape_sngl_hdr_get_machine_name(st);
733
0
        if (tmp != NULL)
734
0
            g_string_append_printf(str, "  machine_name: %s\n", tmp);
735
0
    }
736
0
    {
737
0
        g_autofree gchar *tmp = fu_struct_synaptics_cape_sngl_hdr_get_time_stamp(st);
738
0
        if (tmp != NULL)
739
0
            g_string_append_printf(str, "  time_stamp: %s\n", tmp);
740
0
    }
741
0
    if (str->len > 0)
742
0
        g_string_set_size(str, str->len - 1);
743
0
    return g_string_free(g_steal_pointer(&str), FALSE);
744
0
}
745
static gboolean
746
fu_struct_synaptics_cape_sngl_hdr_validate_internal(FuStructSynapticsCapeSnglHdr *st, GError **error)
747
0
{
748
0
    g_return_val_if_fail(st != NULL, FALSE);
749
0
    if (fu_struct_synaptics_cape_sngl_hdr_get_magic(st) != 0x4C474E53) {
750
0
        g_set_error(error,
751
0
                    FWUPD_ERROR,
752
0
                    FWUPD_ERROR_INVALID_DATA,
753
0
                    "constant FuStructSynapticsCapeSnglHdr.magic was not valid, "
754
0
                    "expected 0x%x and got 0x%x",
755
0
                    (guint) 0x4C474E53,
756
0
                    (guint) fu_struct_synaptics_cape_sngl_hdr_get_magic(st));
757
0
        return FALSE;
758
0
    }
759
0
    return TRUE;
760
0
}
761
static gboolean
762
fu_struct_synaptics_cape_sngl_hdr_parse_internal(FuStructSynapticsCapeSnglHdr *st, GError **error)
763
0
{
764
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
765
0
        g_autofree gchar *str = fu_struct_synaptics_cape_sngl_hdr_to_string(st);
766
0
        g_debug("%s", str);
767
0
    }
768
0
    if (!fu_struct_synaptics_cape_sngl_hdr_validate_internal(st, error))
769
0
        return FALSE;
770
0
    return TRUE;
771
0
}
772
/**
773
 * fu_struct_synaptics_cape_sngl_hdr_parse_stream: (skip):
774
 **/
775
FuStructSynapticsCapeSnglHdr *
776
fu_struct_synaptics_cape_sngl_hdr_parse_stream(GInputStream *stream, gsize offset, GError **error)
777
0
{
778
0
    g_autoptr(GByteArray) st = NULL;
779
0
    st = fu_input_stream_read_byte_array(stream, offset, 80, NULL, error);
780
0
    if (st == NULL) {
781
0
        g_prefix_error(error, "FuStructSynapticsCapeSnglHdr failed read of 0x%x: ", (guint) 80);
782
0
        return NULL;
783
0
    }
784
0
    if (st->len != 80) {
785
0
        g_set_error(error,
786
0
                    FWUPD_ERROR,
787
0
                    FWUPD_ERROR_INVALID_DATA,
788
0
                    "FuStructSynapticsCapeSnglHdr requested 0x%x and got 0x%x",
789
0
                    (guint) 80,
790
0
                    (guint) st->len);
791
0
        return NULL;
792
0
    }
793
0
    if (!fu_struct_synaptics_cape_sngl_hdr_parse_internal(st, error))
794
0
        return NULL;
795
0
    return g_steal_pointer(&st);
796
0
}
797
/* getters */
798
799
/* setters */