Coverage Report

Created: 2025-07-01 07:09

/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_literal(error,
379
0
                            FWUPD_ERROR,
380
0
                            FWUPD_ERROR_INVALID_DATA,
381
0
                            "constant FuStructSynapticsCapeHidHdr.signature was not valid");
382
0
        return FALSE;
383
0
    }
384
0
    return TRUE;
385
0
}
386
static gboolean
387
fu_struct_synaptics_cape_hid_hdr_parse_internal(FuStructSynapticsCapeHidHdr *st, GError **error)
388
0
{
389
0
    if (!fu_struct_synaptics_cape_hid_hdr_validate_internal(st, error))
390
0
        return FALSE;
391
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
392
0
        g_autofree gchar *str = fu_struct_synaptics_cape_hid_hdr_to_string(st);
393
0
        g_debug("%s", str);
394
0
    }
395
0
    return TRUE;
396
0
}
397
/**
398
 * fu_struct_synaptics_cape_hid_hdr_parse_stream: (skip):
399
 **/
400
FuStructSynapticsCapeHidHdr *
401
fu_struct_synaptics_cape_hid_hdr_parse_stream(GInputStream *stream, gsize offset, GError **error)
402
0
{
403
0
    g_autoptr(GByteArray) st = NULL;
404
0
    st = fu_input_stream_read_byte_array(stream, offset, 32, NULL, error);
405
0
    if (st == NULL) {
406
0
        g_prefix_error(error, "FuStructSynapticsCapeHidHdr failed read of 0x%x: ", (guint) 32);
407
0
        return NULL;
408
0
    }
409
0
    if (st->len != 32) {
410
0
        g_set_error(error,
411
0
                    FWUPD_ERROR,
412
0
                    FWUPD_ERROR_INVALID_DATA,
413
0
                    "FuStructSynapticsCapeHidHdr requested 0x%x and got 0x%x",
414
0
                    (guint) 32,
415
0
                    (guint) st->len);
416
0
        return NULL;
417
0
    }
418
0
    if (!fu_struct_synaptics_cape_hid_hdr_parse_internal(st, error))
419
0
        return NULL;
420
0
    return g_steal_pointer(&st);
421
0
}
422
/* getters */
423
/**
424
 * fu_struct_synaptics_cape_sngl_hdr_get_magic: (skip):
425
 **/
426
static guint32
427
fu_struct_synaptics_cape_sngl_hdr_get_magic(const FuStructSynapticsCapeSnglHdr *st)
428
0
{
429
0
    g_return_val_if_fail(st != NULL, 0x0);
430
0
    return fu_memread_uint32(st->data + 0, G_LITTLE_ENDIAN);
431
0
}
432
/**
433
 * fu_struct_synaptics_cape_sngl_hdr_get_file_crc: (skip):
434
 **/
435
guint32
436
fu_struct_synaptics_cape_sngl_hdr_get_file_crc(const FuStructSynapticsCapeSnglHdr *st)
437
0
{
438
0
    g_return_val_if_fail(st != NULL, 0x0);
439
0
    return fu_memread_uint32(st->data + 4, G_LITTLE_ENDIAN);
440
0
}
441
/**
442
 * fu_struct_synaptics_cape_sngl_hdr_get_file_size: (skip):
443
 **/
444
guint32
445
fu_struct_synaptics_cape_sngl_hdr_get_file_size(const FuStructSynapticsCapeSnglHdr *st)
446
0
{
447
0
    g_return_val_if_fail(st != NULL, 0x0);
448
0
    return fu_memread_uint32(st->data + 8, G_LITTLE_ENDIAN);
449
0
}
450
/**
451
 * fu_struct_synaptics_cape_sngl_hdr_get_magic2: (skip):
452
 **/
453
guint32
454
fu_struct_synaptics_cape_sngl_hdr_get_magic2(const FuStructSynapticsCapeSnglHdr *st)
455
0
{
456
0
    g_return_val_if_fail(st != NULL, 0x0);
457
0
    return fu_memread_uint32(st->data + 12, G_LITTLE_ENDIAN);
458
0
}
459
/**
460
 * fu_struct_synaptics_cape_sngl_hdr_get_img_type: (skip):
461
 **/
462
guint32
463
fu_struct_synaptics_cape_sngl_hdr_get_img_type(const FuStructSynapticsCapeSnglHdr *st)
464
0
{
465
0
    g_return_val_if_fail(st != NULL, 0x0);
466
0
    return fu_memread_uint32(st->data + 16, G_LITTLE_ENDIAN);
467
0
}
468
/**
469
 * fu_struct_synaptics_cape_sngl_hdr_get_fw_version: (skip):
470
 **/
471
guint32
472
fu_struct_synaptics_cape_sngl_hdr_get_fw_version(const FuStructSynapticsCapeSnglHdr *st)
473
0
{
474
0
    g_return_val_if_fail(st != NULL, 0x0);
475
0
    return fu_memread_uint32(st->data + 20, G_LITTLE_ENDIAN);
476
0
}
477
/**
478
 * fu_struct_synaptics_cape_sngl_hdr_get_vid: (skip):
479
 **/
480
guint16
481
fu_struct_synaptics_cape_sngl_hdr_get_vid(const FuStructSynapticsCapeSnglHdr *st)
482
0
{
483
0
    g_return_val_if_fail(st != NULL, 0x0);
484
0
    return fu_memread_uint16(st->data + 24, G_LITTLE_ENDIAN);
485
0
}
486
/**
487
 * fu_struct_synaptics_cape_sngl_hdr_get_pid: (skip):
488
 **/
489
guint16
490
fu_struct_synaptics_cape_sngl_hdr_get_pid(const FuStructSynapticsCapeSnglHdr *st)
491
0
{
492
0
    g_return_val_if_fail(st != NULL, 0x0);
493
0
    return fu_memread_uint16(st->data + 26, G_LITTLE_ENDIAN);
494
0
}
495
/**
496
 * fu_struct_synaptics_cape_sngl_hdr_get_fw_file_num: (skip):
497
 **/
498
guint32
499
fu_struct_synaptics_cape_sngl_hdr_get_fw_file_num(const FuStructSynapticsCapeSnglHdr *st)
500
0
{
501
0
    g_return_val_if_fail(st != NULL, 0x0);
502
0
    return fu_memread_uint32(st->data + 28, G_LITTLE_ENDIAN);
503
0
}
504
/**
505
 * fu_struct_synaptics_cape_sngl_hdr_get_version: (skip):
506
 **/
507
guint32
508
fu_struct_synaptics_cape_sngl_hdr_get_version(const FuStructSynapticsCapeSnglHdr *st)
509
0
{
510
0
    g_return_val_if_fail(st != NULL, 0x0);
511
0
    return fu_memread_uint32(st->data + 32, G_LITTLE_ENDIAN);
512
0
}
513
/**
514
 * fu_struct_synaptics_cape_sngl_hdr_get_fw_crc: (skip):
515
 **/
516
guint32
517
fu_struct_synaptics_cape_sngl_hdr_get_fw_crc(const FuStructSynapticsCapeSnglHdr *st)
518
0
{
519
0
    g_return_val_if_fail(st != NULL, 0x0);
520
0
    return fu_memread_uint32(st->data + 36, G_LITTLE_ENDIAN);
521
0
}
522
/**
523
 * fu_struct_synaptics_cape_sngl_hdr_get_machine_name: (skip):
524
 **/
525
gchar *
526
fu_struct_synaptics_cape_sngl_hdr_get_machine_name(const FuStructSynapticsCapeSnglHdr *st)
527
0
{
528
0
    g_return_val_if_fail(st != NULL, NULL);
529
0
    return fu_memstrsafe(st->data, st->len, 48, 16, NULL);
530
0
}
531
/**
532
 * fu_struct_synaptics_cape_sngl_hdr_get_time_stamp: (skip):
533
 **/
534
gchar *
535
fu_struct_synaptics_cape_sngl_hdr_get_time_stamp(const FuStructSynapticsCapeSnglHdr *st)
536
0
{
537
0
    g_return_val_if_fail(st != NULL, NULL);
538
0
    return fu_memstrsafe(st->data, st->len, 64, 16, NULL);
539
0
}
540
541
/* setters */
542
/**
543
 * fu_struct_synaptics_cape_sngl_hdr_set_magic: (skip):
544
 **/
545
static void
546
fu_struct_synaptics_cape_sngl_hdr_set_magic(FuStructSynapticsCapeSnglHdr *st, guint32 value)
547
0
{
548
0
    g_return_if_fail(st != NULL);
549
0
    fu_memwrite_uint32(st->data + 0, value, G_LITTLE_ENDIAN);
550
0
}
551
/**
552
 * fu_struct_synaptics_cape_sngl_hdr_set_file_crc: (skip):
553
 **/
554
void
555
fu_struct_synaptics_cape_sngl_hdr_set_file_crc(FuStructSynapticsCapeSnglHdr *st, guint32 value)
556
0
{
557
0
    g_return_if_fail(st != NULL);
558
0
    fu_memwrite_uint32(st->data + 4, value, G_LITTLE_ENDIAN);
559
0
}
560
/**
561
 * fu_struct_synaptics_cape_sngl_hdr_set_file_size: (skip):
562
 **/
563
void
564
fu_struct_synaptics_cape_sngl_hdr_set_file_size(FuStructSynapticsCapeSnglHdr *st, guint32 value)
565
0
{
566
0
    g_return_if_fail(st != NULL);
567
0
    fu_memwrite_uint32(st->data + 8, value, G_LITTLE_ENDIAN);
568
0
}
569
/**
570
 * fu_struct_synaptics_cape_sngl_hdr_set_magic2: (skip):
571
 **/
572
void
573
fu_struct_synaptics_cape_sngl_hdr_set_magic2(FuStructSynapticsCapeSnglHdr *st, guint32 value)
574
0
{
575
0
    g_return_if_fail(st != NULL);
576
0
    fu_memwrite_uint32(st->data + 12, value, G_LITTLE_ENDIAN);
577
0
}
578
/**
579
 * fu_struct_synaptics_cape_sngl_hdr_set_img_type: (skip):
580
 **/
581
void
582
fu_struct_synaptics_cape_sngl_hdr_set_img_type(FuStructSynapticsCapeSnglHdr *st, guint32 value)
583
0
{
584
0
    g_return_if_fail(st != NULL);
585
0
    fu_memwrite_uint32(st->data + 16, value, G_LITTLE_ENDIAN);
586
0
}
587
/**
588
 * fu_struct_synaptics_cape_sngl_hdr_set_fw_version: (skip):
589
 **/
590
void
591
fu_struct_synaptics_cape_sngl_hdr_set_fw_version(FuStructSynapticsCapeSnglHdr *st, guint32 value)
592
0
{
593
0
    g_return_if_fail(st != NULL);
594
0
    fu_memwrite_uint32(st->data + 20, value, G_LITTLE_ENDIAN);
595
0
}
596
/**
597
 * fu_struct_synaptics_cape_sngl_hdr_set_vid: (skip):
598
 **/
599
void
600
fu_struct_synaptics_cape_sngl_hdr_set_vid(FuStructSynapticsCapeSnglHdr *st, guint16 value)
601
0
{
602
0
    g_return_if_fail(st != NULL);
603
0
    fu_memwrite_uint16(st->data + 24, value, G_LITTLE_ENDIAN);
604
0
}
605
/**
606
 * fu_struct_synaptics_cape_sngl_hdr_set_pid: (skip):
607
 **/
608
void
609
fu_struct_synaptics_cape_sngl_hdr_set_pid(FuStructSynapticsCapeSnglHdr *st, guint16 value)
610
0
{
611
0
    g_return_if_fail(st != NULL);
612
0
    fu_memwrite_uint16(st->data + 26, value, G_LITTLE_ENDIAN);
613
0
}
614
/**
615
 * fu_struct_synaptics_cape_sngl_hdr_set_fw_file_num: (skip):
616
 **/
617
void
618
fu_struct_synaptics_cape_sngl_hdr_set_fw_file_num(FuStructSynapticsCapeSnglHdr *st, guint32 value)
619
0
{
620
0
    g_return_if_fail(st != NULL);
621
0
    fu_memwrite_uint32(st->data + 28, value, G_LITTLE_ENDIAN);
622
0
}
623
/**
624
 * fu_struct_synaptics_cape_sngl_hdr_set_version: (skip):
625
 **/
626
void
627
fu_struct_synaptics_cape_sngl_hdr_set_version(FuStructSynapticsCapeSnglHdr *st, guint32 value)
628
0
{
629
0
    g_return_if_fail(st != NULL);
630
0
    fu_memwrite_uint32(st->data + 32, value, G_LITTLE_ENDIAN);
631
0
}
632
/**
633
 * fu_struct_synaptics_cape_sngl_hdr_set_fw_crc: (skip):
634
 **/
635
void
636
fu_struct_synaptics_cape_sngl_hdr_set_fw_crc(FuStructSynapticsCapeSnglHdr *st, guint32 value)
637
0
{
638
0
    g_return_if_fail(st != NULL);
639
0
    fu_memwrite_uint32(st->data + 36, value, G_LITTLE_ENDIAN);
640
0
}
641
/**
642
 * fu_struct_synaptics_cape_sngl_hdr_set_machine_name: (skip):
643
 **/
644
gboolean
645
fu_struct_synaptics_cape_sngl_hdr_set_machine_name(FuStructSynapticsCapeSnglHdr *st, const gchar *value, GError **error)
646
0
{
647
0
    gsize len;
648
0
    g_return_val_if_fail(st != NULL, FALSE);
649
0
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
650
0
    if (value == NULL) {
651
0
        memset(st->data + 48, 0x0, 16);
652
0
        return TRUE;
653
0
    }
654
0
    len = strlen(value);
655
0
    if (len > 16) {
656
0
        g_set_error(error,
657
0
                    FWUPD_ERROR,
658
0
                    FWUPD_ERROR_INVALID_DATA,
659
0
                    "string '%s' (0x%x bytes) does not fit in FuStructSynapticsCapeSnglHdr.machine_name (0x%x bytes)",
660
0
                    value, (guint) len, (guint) 16);
661
0
        return FALSE;
662
0
    }
663
0
    return fu_memcpy_safe(st->data, st->len, 48, (const guint8 *)value, len, 0x0, len, error);
664
0
}
665
/**
666
 * fu_struct_synaptics_cape_sngl_hdr_set_time_stamp: (skip):
667
 **/
668
gboolean
669
fu_struct_synaptics_cape_sngl_hdr_set_time_stamp(FuStructSynapticsCapeSnglHdr *st, const gchar *value, GError **error)
670
0
{
671
0
    gsize len;
672
0
    g_return_val_if_fail(st != NULL, FALSE);
673
0
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
674
0
    if (value == NULL) {
675
0
        memset(st->data + 64, 0x0, 16);
676
0
        return TRUE;
677
0
    }
678
0
    len = strlen(value);
679
0
    if (len > 16) {
680
0
        g_set_error(error,
681
0
                    FWUPD_ERROR,
682
0
                    FWUPD_ERROR_INVALID_DATA,
683
0
                    "string '%s' (0x%x bytes) does not fit in FuStructSynapticsCapeSnglHdr.time_stamp (0x%x bytes)",
684
0
                    value, (guint) len, (guint) 16);
685
0
        return FALSE;
686
0
    }
687
0
    return fu_memcpy_safe(st->data, st->len, 64, (const guint8 *)value, len, 0x0, len, error);
688
0
}
689
/**
690
 * fu_struct_synaptics_cape_sngl_hdr_new: (skip):
691
 **/
692
FuStructSynapticsCapeSnglHdr *
693
fu_struct_synaptics_cape_sngl_hdr_new(void)
694
0
{
695
0
    FuStructSynapticsCapeSnglHdr *st = g_byte_array_sized_new(80);
696
0
    fu_byte_array_set_size(st, 80, 0x0);
697
0
    fu_struct_synaptics_cape_sngl_hdr_set_magic(st, 0x4C474E53);
698
0
    return st;
699
0
}
700
/**
701
 * fu_struct_synaptics_cape_sngl_hdr_to_string: (skip):
702
 **/
703
static gchar *
704
fu_struct_synaptics_cape_sngl_hdr_to_string(const FuStructSynapticsCapeSnglHdr *st)
705
0
{
706
0
    g_autoptr(GString) str = g_string_new("FuStructSynapticsCapeSnglHdr:\n");
707
0
    g_return_val_if_fail(st != NULL, NULL);
708
0
    g_string_append_printf(str, "  file_crc: 0x%x\n",
709
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_file_crc(st));
710
0
    g_string_append_printf(str, "  file_size: 0x%x\n",
711
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_file_size(st));
712
0
    g_string_append_printf(str, "  magic2: 0x%x\n",
713
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_magic2(st));
714
0
    g_string_append_printf(str, "  img_type: 0x%x\n",
715
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_img_type(st));
716
0
    g_string_append_printf(str, "  fw_version: 0x%x\n",
717
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_fw_version(st));
718
0
    g_string_append_printf(str, "  vid: 0x%x\n",
719
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_vid(st));
720
0
    g_string_append_printf(str, "  pid: 0x%x\n",
721
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_pid(st));
722
0
    g_string_append_printf(str, "  fw_file_num: 0x%x\n",
723
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_fw_file_num(st));
724
0
    g_string_append_printf(str, "  version: 0x%x\n",
725
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_version(st));
726
0
    g_string_append_printf(str, "  fw_crc: 0x%x\n",
727
0
                           (guint) fu_struct_synaptics_cape_sngl_hdr_get_fw_crc(st));
728
0
    {
729
0
        g_autofree gchar *tmp = fu_struct_synaptics_cape_sngl_hdr_get_machine_name(st);
730
0
        if (tmp != NULL)
731
0
            g_string_append_printf(str, "  machine_name: %s\n", tmp);
732
0
    }
733
0
    {
734
0
        g_autofree gchar *tmp = fu_struct_synaptics_cape_sngl_hdr_get_time_stamp(st);
735
0
        if (tmp != NULL)
736
0
            g_string_append_printf(str, "  time_stamp: %s\n", tmp);
737
0
    }
738
0
    if (str->len > 0)
739
0
        g_string_set_size(str, str->len - 1);
740
0
    return g_string_free(g_steal_pointer(&str), FALSE);
741
0
}
742
static gboolean
743
fu_struct_synaptics_cape_sngl_hdr_validate_internal(FuStructSynapticsCapeSnglHdr *st, GError **error)
744
0
{
745
0
    g_return_val_if_fail(st != NULL, FALSE);
746
0
    if (fu_struct_synaptics_cape_sngl_hdr_get_magic(st) != 0x4C474E53) {
747
0
        g_set_error_literal(error,
748
0
                            FWUPD_ERROR,
749
0
                            FWUPD_ERROR_INVALID_DATA,
750
0
                            "constant FuStructSynapticsCapeSnglHdr.magic was not valid");
751
0
        return FALSE;
752
0
    }
753
0
    return TRUE;
754
0
}
755
static gboolean
756
fu_struct_synaptics_cape_sngl_hdr_parse_internal(FuStructSynapticsCapeSnglHdr *st, GError **error)
757
0
{
758
0
    if (!fu_struct_synaptics_cape_sngl_hdr_validate_internal(st, error))
759
0
        return FALSE;
760
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
761
0
        g_autofree gchar *str = fu_struct_synaptics_cape_sngl_hdr_to_string(st);
762
0
        g_debug("%s", str);
763
0
    }
764
0
    return TRUE;
765
0
}
766
/**
767
 * fu_struct_synaptics_cape_sngl_hdr_parse_stream: (skip):
768
 **/
769
FuStructSynapticsCapeSnglHdr *
770
fu_struct_synaptics_cape_sngl_hdr_parse_stream(GInputStream *stream, gsize offset, GError **error)
771
0
{
772
0
    g_autoptr(GByteArray) st = NULL;
773
0
    st = fu_input_stream_read_byte_array(stream, offset, 80, NULL, error);
774
0
    if (st == NULL) {
775
0
        g_prefix_error(error, "FuStructSynapticsCapeSnglHdr failed read of 0x%x: ", (guint) 80);
776
0
        return NULL;
777
0
    }
778
0
    if (st->len != 80) {
779
0
        g_set_error(error,
780
0
                    FWUPD_ERROR,
781
0
                    FWUPD_ERROR_INVALID_DATA,
782
0
                    "FuStructSynapticsCapeSnglHdr requested 0x%x and got 0x%x",
783
0
                    (guint) 80,
784
0
                    (guint) st->len);
785
0
        return NULL;
786
0
    }
787
0
    if (!fu_struct_synaptics_cape_sngl_hdr_parse_internal(st, error))
788
0
        return NULL;
789
0
    return g_steal_pointer(&st);
790
0
}
791
/* getters */
792
793
/* setters */