Coverage Report

Created: 2025-11-24 06:59

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/work/fu-synaprom-struct.c
Line
Count
Source
1
/* auto-generated, do not modify */
2
#include "config.h"
3
4
#include <glib.h>
5
6
#include "fu-synaprom-struct.h"
7
#include "fu-byte-array.h"
8
#include "fu-mem-private.h"
9
#include "fu-string.h"
10
11
#ifdef G_LOG_DOMAIN
12
  #undef G_LOG_DOMAIN
13
#endif
14
0
#define G_LOG_DOMAIN "FuStruct"
15
16
17
static const gchar *
18
fu_synaprom_product_to_string(FuSynapromProduct val)
19
0
{
20
0
    if (val == FU_SYNAPROM_PRODUCT_PROMETHEUS)
21
0
        return "prometheus";
22
0
    if (val == FU_SYNAPROM_PRODUCT_PROMETHEUSPBL)
23
0
        return "prometheuspbl";
24
0
    if (val == FU_SYNAPROM_PRODUCT_PROMETHEUSMSBL)
25
0
        return "prometheusmsbl";
26
0
    if (val == FU_SYNAPROM_PRODUCT_TRITON)
27
0
        return "triton";
28
0
    if (val == FU_SYNAPROM_PRODUCT_TRITONPBL)
29
0
        return "tritonpbl";
30
0
    if (val == FU_SYNAPROM_PRODUCT_TRITONMSBL)
31
0
        return "tritonmsbl";
32
0
    return NULL;
33
0
}
34
35
const gchar *
36
fu_synaprom_result_to_string(FuSynapromResult val)
37
0
{
38
0
    if (val == FU_SYNAPROM_RESULT_OK)
39
0
        return "ok";
40
0
    if (val == FU_SYNAPROM_RESULT_GEN_OPERATION_CANCELED)
41
0
        return "gen-operation-canceled";
42
0
    if (val == FU_SYNAPROM_RESULT_GEN_INVALID)
43
0
        return "gen-invalid";
44
0
    if (val == FU_SYNAPROM_RESULT_GEN_BAD_PARAM)
45
0
        return "gen-bad-param";
46
0
    if (val == FU_SYNAPROM_RESULT_GEN_NULL_POINTER)
47
0
        return "gen-null-pointer";
48
0
    if (val == FU_SYNAPROM_RESULT_GEN_UNEXPECTED_FORMAT)
49
0
        return "gen-unexpected-format";
50
0
    if (val == FU_SYNAPROM_RESULT_GEN_TIMEOUT)
51
0
        return "gen-timeout";
52
0
    if (val == FU_SYNAPROM_RESULT_GEN_OBJECT_DOESNT_EXIST)
53
0
        return "gen-object-doesnt-exist";
54
0
    if (val == FU_SYNAPROM_RESULT_GEN_ERROR)
55
0
        return "gen-error";
56
0
    if (val == FU_SYNAPROM_RESULT_SENSOR_MALFUNCTIONED)
57
0
        return "sensor-malfunctioned";
58
0
    if (val == FU_SYNAPROM_RESULT_SYS_OUT_OF_MEMORY)
59
0
        return "sys-out-of-memory";
60
0
    return NULL;
61
0
}
62
63
64
const gchar *
65
fu_synaprom_firmware_tag_to_string(FuSynapromFirmwareTag val)
66
4.50k
{
67
4.50k
    if (val == FU_SYNAPROM_FIRMWARE_TAG_MFW_UPDATE_HEADER)
68
144
        return "mfw-update-header";
69
4.36k
    if (val == FU_SYNAPROM_FIRMWARE_TAG_MFW_UPDATE_PAYLOAD)
70
50
        return "mfw-update-payload";
71
4.31k
    if (val == FU_SYNAPROM_FIRMWARE_TAG_CFG_UPDATE_HEADER)
72
35
        return "cfg-update-header";
73
4.27k
    if (val == FU_SYNAPROM_FIRMWARE_TAG_CFG_UPDATE_PAYLOAD)
74
36
        return "cfg-update-payload";
75
4.24k
    return NULL;
76
4.27k
}
77
/**
78
 * fu_struct_synaprom_request_ref: (skip):
79
 **/
80
FuStructSynapromRequest *
81
fu_struct_synaprom_request_ref(FuStructSynapromRequest *st)
82
0
{
83
0
    g_return_val_if_fail(st != NULL, NULL);
84
0
    st->refcount++;
85
0
    return st;
86
0
}
87
/**
88
 * fu_struct_synaprom_request_unref: (skip):
89
 **/
90
void
91
fu_struct_synaprom_request_unref(FuStructSynapromRequest *st)
92
0
{
93
0
    g_return_if_fail(st != NULL);
94
0
    if (st->refcount == 0) {
95
0
        g_critical("FuStructSynapromRequest refcount already zero");
96
0
        return;
97
0
    }
98
0
    if (--st->refcount > 0)
99
0
        return;
100
0
    if (st->buf != NULL)
101
0
        g_byte_array_unref(st->buf);
102
0
    g_free(st);
103
0
}
104
/**
105
 * fu_struct_synaprom_request_new_internal: (skip):
106
 **/
107
static FuStructSynapromRequest *
108
fu_struct_synaprom_request_new_internal(void)
109
0
{
110
0
    FuStructSynapromRequest *st = g_new0(FuStructSynapromRequest, 1);
111
0
    st->refcount = 1;
112
0
    return st;
113
0
}
114
115
/* getters */
116
117
/* setters */
118
/**
119
 * fu_struct_synaprom_request_set_cmd: (skip):
120
 **/
121
void
122
fu_struct_synaprom_request_set_cmd(FuStructSynapromRequest *st, FuSynapromCmd value)
123
0
{
124
0
    g_return_if_fail(st != NULL);
125
0
    st->buf->data[0] = value;
126
0
}
127
/**
128
 * fu_struct_synaprom_request_new: (skip):
129
 **/
130
FuStructSynapromRequest *
131
fu_struct_synaprom_request_new(void)
132
0
{
133
0
    FuStructSynapromRequest *st = fu_struct_synaprom_request_new_internal();
134
0
    st->buf = g_byte_array_sized_new(1);
135
0
    fu_byte_array_set_size(st->buf, 1, 0x0);
136
0
    return st;
137
0
}
138
/**
139
 * fu_struct_synaprom_reply_generic_ref: (skip):
140
 **/
141
FuStructSynapromReplyGeneric *
142
fu_struct_synaprom_reply_generic_ref(FuStructSynapromReplyGeneric *st)
143
0
{
144
0
    g_return_val_if_fail(st != NULL, NULL);
145
0
    st->refcount++;
146
0
    return st;
147
0
}
148
/**
149
 * fu_struct_synaprom_reply_generic_unref: (skip):
150
 **/
151
void
152
fu_struct_synaprom_reply_generic_unref(FuStructSynapromReplyGeneric *st)
153
0
{
154
0
    g_return_if_fail(st != NULL);
155
0
    if (st->refcount == 0) {
156
0
        g_critical("FuStructSynapromReplyGeneric refcount already zero");
157
0
        return;
158
0
    }
159
0
    if (--st->refcount > 0)
160
0
        return;
161
0
    if (st->buf != NULL)
162
0
        g_byte_array_unref(st->buf);
163
0
    g_free(st);
164
0
}
165
/**
166
 * fu_struct_synaprom_reply_generic_new_internal: (skip):
167
 **/
168
static FuStructSynapromReplyGeneric *
169
fu_struct_synaprom_reply_generic_new_internal(void)
170
0
{
171
0
    FuStructSynapromReplyGeneric *st = g_new0(FuStructSynapromReplyGeneric, 1);
172
0
    st->refcount = 1;
173
0
    return st;
174
0
}
175
176
/* getters */
177
/**
178
 * fu_struct_synaprom_reply_generic_get_status: (skip):
179
 **/
180
guint16
181
fu_struct_synaprom_reply_generic_get_status(const FuStructSynapromReplyGeneric *st)
182
0
{
183
0
    g_return_val_if_fail(st != NULL, 0x0);
184
0
    return fu_memread_uint16(st->buf->data + 0, G_LITTLE_ENDIAN);
185
0
}
186
187
/* setters */
188
/**
189
 * fu_struct_synaprom_reply_generic_to_string: (skip):
190
 **/
191
static gchar *
192
fu_struct_synaprom_reply_generic_to_string(const FuStructSynapromReplyGeneric *st)
193
0
{
194
0
    g_autoptr(GString) str = g_string_new("FuStructSynapromReplyGeneric:\n");
195
0
    g_return_val_if_fail(st != NULL, NULL);
196
0
    g_string_append_printf(str, "  status: 0x%x\n",
197
0
                           (guint) fu_struct_synaprom_reply_generic_get_status(st));
198
0
    if (str->len > 0)
199
0
        g_string_set_size(str, str->len - 1);
200
0
    return g_string_free(g_steal_pointer(&str), FALSE);
201
0
}
202
static gboolean
203
fu_struct_synaprom_reply_generic_validate_internal(FuStructSynapromReplyGeneric *st, GError **error)
204
0
{
205
0
    g_return_val_if_fail(st != NULL, FALSE);
206
0
    return TRUE;
207
0
}
208
static gboolean
209
fu_struct_synaprom_reply_generic_parse_internal(FuStructSynapromReplyGeneric *st, GError **error)
210
0
{
211
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
212
0
        g_autofree gchar *str = fu_struct_synaprom_reply_generic_to_string(st);
213
0
        g_debug("%s", str);
214
0
    }
215
0
    if (!fu_struct_synaprom_reply_generic_validate_internal(st, error))
216
0
        return FALSE;
217
0
    return TRUE;
218
0
}
219
220
/**
221
 * fu_struct_synaprom_reply_generic_parse: (skip):
222
 **/
223
FuStructSynapromReplyGeneric *
224
fu_struct_synaprom_reply_generic_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
225
0
{
226
0
    g_autoptr(FuStructSynapromReplyGeneric) st = fu_struct_synaprom_reply_generic_new_internal();
227
0
    g_return_val_if_fail(buf != NULL, NULL);
228
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
229
0
    if (!fu_memchk_read(bufsz, offset, 2, error)) {
230
0
        g_prefix_error_literal(error, "invalid struct FuStructSynapromReplyGeneric: ");
231
0
        return NULL;
232
0
    }
233
0
    st->buf = g_byte_array_new();
234
0
    g_byte_array_append(st->buf, buf + offset, 2);
235
0
    if (!fu_struct_synaprom_reply_generic_parse_internal(st, error))
236
0
        return NULL;
237
0
    return g_steal_pointer(&st);
238
0
}
239
/**
240
 * fu_struct_synaprom_reply_get_version_ref: (skip):
241
 **/
242
FuStructSynapromReplyGetVersion *
243
fu_struct_synaprom_reply_get_version_ref(FuStructSynapromReplyGetVersion *st)
244
0
{
245
0
    g_return_val_if_fail(st != NULL, NULL);
246
0
    st->refcount++;
247
0
    return st;
248
0
}
249
/**
250
 * fu_struct_synaprom_reply_get_version_unref: (skip):
251
 **/
252
void
253
fu_struct_synaprom_reply_get_version_unref(FuStructSynapromReplyGetVersion *st)
254
0
{
255
0
    g_return_if_fail(st != NULL);
256
0
    if (st->refcount == 0) {
257
0
        g_critical("FuStructSynapromReplyGetVersion refcount already zero");
258
0
        return;
259
0
    }
260
0
    if (--st->refcount > 0)
261
0
        return;
262
0
    if (st->buf != NULL)
263
0
        g_byte_array_unref(st->buf);
264
0
    g_free(st);
265
0
}
266
/**
267
 * fu_struct_synaprom_reply_get_version_new_internal: (skip):
268
 **/
269
static FuStructSynapromReplyGetVersion *
270
fu_struct_synaprom_reply_get_version_new_internal(void)
271
0
{
272
0
    FuStructSynapromReplyGetVersion *st = g_new0(FuStructSynapromReplyGetVersion, 1);
273
0
    st->refcount = 1;
274
0
    return st;
275
0
}
276
277
/* getters */
278
/**
279
 * fu_struct_synaprom_reply_get_version_get_status: (skip):
280
 **/
281
guint16
282
fu_struct_synaprom_reply_get_version_get_status(const FuStructSynapromReplyGetVersion *st)
283
0
{
284
0
    g_return_val_if_fail(st != NULL, 0x0);
285
0
    return fu_memread_uint16(st->buf->data + 0, G_LITTLE_ENDIAN);
286
0
}
287
/**
288
 * fu_struct_synaprom_reply_get_version_get_buildtime: (skip):
289
 **/
290
guint32
291
fu_struct_synaprom_reply_get_version_get_buildtime(const FuStructSynapromReplyGetVersion *st)
292
0
{
293
0
    g_return_val_if_fail(st != NULL, 0x0);
294
0
    return fu_memread_uint32(st->buf->data + 2, G_LITTLE_ENDIAN);
295
0
}
296
/**
297
 * fu_struct_synaprom_reply_get_version_get_buildnum: (skip):
298
 **/
299
guint32
300
fu_struct_synaprom_reply_get_version_get_buildnum(const FuStructSynapromReplyGetVersion *st)
301
0
{
302
0
    g_return_val_if_fail(st != NULL, 0x0);
303
0
    return fu_memread_uint32(st->buf->data + 6, G_LITTLE_ENDIAN);
304
0
}
305
/**
306
 * fu_struct_synaprom_reply_get_version_get_vmajor: (skip):
307
 **/
308
guint8
309
fu_struct_synaprom_reply_get_version_get_vmajor(const FuStructSynapromReplyGetVersion *st)
310
0
{
311
0
    g_return_val_if_fail(st != NULL, 0x0);
312
0
    return st->buf->data[10];
313
0
}
314
/**
315
 * fu_struct_synaprom_reply_get_version_get_vminor: (skip):
316
 **/
317
guint8
318
fu_struct_synaprom_reply_get_version_get_vminor(const FuStructSynapromReplyGetVersion *st)
319
0
{
320
0
    g_return_val_if_fail(st != NULL, 0x0);
321
0
    return st->buf->data[11];
322
0
}
323
/**
324
 * fu_struct_synaprom_reply_get_version_get_target: (skip):
325
 **/
326
guint8
327
fu_struct_synaprom_reply_get_version_get_target(const FuStructSynapromReplyGetVersion *st)
328
0
{
329
0
    g_return_val_if_fail(st != NULL, 0x0);
330
0
    return st->buf->data[12];
331
0
}
332
/**
333
 * fu_struct_synaprom_reply_get_version_get_product: (skip):
334
 **/
335
FuSynapromProduct
336
fu_struct_synaprom_reply_get_version_get_product(const FuStructSynapromReplyGetVersion *st)
337
0
{
338
0
    g_return_val_if_fail(st != NULL, 0x0);
339
0
    return st->buf->data[13];
340
0
}
341
/**
342
 * fu_struct_synaprom_reply_get_version_get_siliconrev: (skip):
343
 **/
344
guint8
345
fu_struct_synaprom_reply_get_version_get_siliconrev(const FuStructSynapromReplyGetVersion *st)
346
0
{
347
0
    g_return_val_if_fail(st != NULL, 0x0);
348
0
    return st->buf->data[14];
349
0
}
350
/**
351
 * fu_struct_synaprom_reply_get_version_get_formalrel: (skip):
352
 **/
353
guint8
354
fu_struct_synaprom_reply_get_version_get_formalrel(const FuStructSynapromReplyGetVersion *st)
355
0
{
356
0
    g_return_val_if_fail(st != NULL, 0x0);
357
0
    return st->buf->data[15];
358
0
}
359
/**
360
 * fu_struct_synaprom_reply_get_version_get_platform: (skip):
361
 **/
362
guint8
363
fu_struct_synaprom_reply_get_version_get_platform(const FuStructSynapromReplyGetVersion *st)
364
0
{
365
0
    g_return_val_if_fail(st != NULL, 0x0);
366
0
    return st->buf->data[16];
367
0
}
368
/**
369
 * fu_struct_synaprom_reply_get_version_get_patch: (skip):
370
 **/
371
guint8
372
fu_struct_synaprom_reply_get_version_get_patch(const FuStructSynapromReplyGetVersion *st)
373
0
{
374
0
    g_return_val_if_fail(st != NULL, 0x0);
375
0
    return st->buf->data[17];
376
0
}
377
/**
378
 * fu_struct_synaprom_reply_get_version_get_serial_number: (skip):
379
 **/
380
const guint8 *
381
fu_struct_synaprom_reply_get_version_get_serial_number(const FuStructSynapromReplyGetVersion *st, gsize *bufsz)
382
0
{
383
0
    g_return_val_if_fail(st != NULL, NULL);
384
0
    if (bufsz != NULL)
385
0
        *bufsz = 6;
386
0
    return st->buf->data + 18;
387
0
}
388
/**
389
 * fu_struct_synaprom_reply_get_version_get_security0: (skip):
390
 **/
391
guint8
392
fu_struct_synaprom_reply_get_version_get_security0(const FuStructSynapromReplyGetVersion *st)
393
0
{
394
0
    g_return_val_if_fail(st != NULL, 0x0);
395
0
    return st->buf->data[24];
396
0
}
397
/**
398
 * fu_struct_synaprom_reply_get_version_get_security1: (skip):
399
 **/
400
guint8
401
fu_struct_synaprom_reply_get_version_get_security1(const FuStructSynapromReplyGetVersion *st)
402
0
{
403
0
    g_return_val_if_fail(st != NULL, 0x0);
404
0
    return st->buf->data[25];
405
0
}
406
/**
407
 * fu_struct_synaprom_reply_get_version_get_patchsig: (skip):
408
 **/
409
guint32
410
fu_struct_synaprom_reply_get_version_get_patchsig(const FuStructSynapromReplyGetVersion *st)
411
0
{
412
0
    g_return_val_if_fail(st != NULL, 0x0);
413
0
    return fu_memread_uint32(st->buf->data + 26, G_LITTLE_ENDIAN);
414
0
}
415
/**
416
 * fu_struct_synaprom_reply_get_version_get_iface: (skip):
417
 **/
418
guint8
419
fu_struct_synaprom_reply_get_version_get_iface(const FuStructSynapromReplyGetVersion *st)
420
0
{
421
0
    g_return_val_if_fail(st != NULL, 0x0);
422
0
    return st->buf->data[30];
423
0
}
424
/**
425
 * fu_struct_synaprom_reply_get_version_get_otpsig: (skip):
426
 **/
427
const guint8 *
428
fu_struct_synaprom_reply_get_version_get_otpsig(const FuStructSynapromReplyGetVersion *st, gsize *bufsz)
429
0
{
430
0
    g_return_val_if_fail(st != NULL, NULL);
431
0
    if (bufsz != NULL)
432
0
        *bufsz = 3;
433
0
    return st->buf->data + 31;
434
0
}
435
/**
436
 * fu_struct_synaprom_reply_get_version_get_otpspare1: (skip):
437
 **/
438
guint16
439
fu_struct_synaprom_reply_get_version_get_otpspare1(const FuStructSynapromReplyGetVersion *st)
440
0
{
441
0
    g_return_val_if_fail(st != NULL, 0x0);
442
0
    return fu_memread_uint16(st->buf->data + 34, G_LITTLE_ENDIAN);
443
0
}
444
/**
445
 * fu_struct_synaprom_reply_get_version_get_device_type: (skip):
446
 **/
447
guint8
448
fu_struct_synaprom_reply_get_version_get_device_type(const FuStructSynapromReplyGetVersion *st)
449
0
{
450
0
    g_return_val_if_fail(st != NULL, 0x0);
451
0
    return st->buf->data[37];
452
0
}
453
454
/* setters */
455
/**
456
 * fu_struct_synaprom_reply_get_version_to_string: (skip):
457
 **/
458
static gchar *
459
fu_struct_synaprom_reply_get_version_to_string(const FuStructSynapromReplyGetVersion *st)
460
0
{
461
0
    g_autoptr(GString) str = g_string_new("FuStructSynapromReplyGetVersion:\n");
462
0
    g_return_val_if_fail(st != NULL, NULL);
463
0
    g_string_append_printf(str, "  status: 0x%x\n",
464
0
                           (guint) fu_struct_synaprom_reply_get_version_get_status(st));
465
0
    g_string_append_printf(str, "  buildtime: 0x%x\n",
466
0
                           (guint) fu_struct_synaprom_reply_get_version_get_buildtime(st));
467
0
    g_string_append_printf(str, "  buildnum: 0x%x\n",
468
0
                           (guint) fu_struct_synaprom_reply_get_version_get_buildnum(st));
469
0
    g_string_append_printf(str, "  vmajor: 0x%x\n",
470
0
                           (guint) fu_struct_synaprom_reply_get_version_get_vmajor(st));
471
0
    g_string_append_printf(str, "  vminor: 0x%x\n",
472
0
                           (guint) fu_struct_synaprom_reply_get_version_get_vminor(st));
473
0
    g_string_append_printf(str, "  target: 0x%x\n",
474
0
                           (guint) fu_struct_synaprom_reply_get_version_get_target(st));
475
0
    {
476
0
        const gchar *tmp = fu_synaprom_product_to_string(fu_struct_synaprom_reply_get_version_get_product(st));
477
0
        if (tmp != NULL) {
478
0
            g_string_append_printf(str, "  product: 0x%x [%s]\n", (guint) fu_struct_synaprom_reply_get_version_get_product(st), tmp);
479
0
        } else {
480
0
            g_string_append_printf(str, "  product: 0x%x\n", (guint) fu_struct_synaprom_reply_get_version_get_product(st));
481
0
        }
482
0
    }
483
0
    g_string_append_printf(str, "  siliconrev: 0x%x\n",
484
0
                           (guint) fu_struct_synaprom_reply_get_version_get_siliconrev(st));
485
0
    g_string_append_printf(str, "  formalrel: 0x%x\n",
486
0
                           (guint) fu_struct_synaprom_reply_get_version_get_formalrel(st));
487
0
    g_string_append_printf(str, "  platform: 0x%x\n",
488
0
                           (guint) fu_struct_synaprom_reply_get_version_get_platform(st));
489
0
    g_string_append_printf(str, "  patch: 0x%x\n",
490
0
                           (guint) fu_struct_synaprom_reply_get_version_get_patch(st));
491
0
    {
492
0
        gsize bufsz = 0;
493
0
        const guint8 *buf = fu_struct_synaprom_reply_get_version_get_serial_number(st, &bufsz);
494
0
        g_autoptr(GString) tmp = g_string_new(NULL);
495
0
        for (gsize i = 0; i < bufsz; i++)
496
0
            g_string_append_printf(tmp, "%02X", buf[i]);
497
0
        g_string_append_printf(str, "  serial_number: 0x%s\n", tmp->str);
498
0
    }
499
0
    g_string_append_printf(str, "  security0: 0x%x\n",
500
0
                           (guint) fu_struct_synaprom_reply_get_version_get_security0(st));
501
0
    g_string_append_printf(str, "  security1: 0x%x\n",
502
0
                           (guint) fu_struct_synaprom_reply_get_version_get_security1(st));
503
0
    g_string_append_printf(str, "  patchsig: 0x%x\n",
504
0
                           (guint) fu_struct_synaprom_reply_get_version_get_patchsig(st));
505
0
    g_string_append_printf(str, "  iface: 0x%x\n",
506
0
                           (guint) fu_struct_synaprom_reply_get_version_get_iface(st));
507
0
    {
508
0
        gsize bufsz = 0;
509
0
        const guint8 *buf = fu_struct_synaprom_reply_get_version_get_otpsig(st, &bufsz);
510
0
        g_autoptr(GString) tmp = g_string_new(NULL);
511
0
        for (gsize i = 0; i < bufsz; i++)
512
0
            g_string_append_printf(tmp, "%02X", buf[i]);
513
0
        g_string_append_printf(str, "  otpsig: 0x%s\n", tmp->str);
514
0
    }
515
0
    g_string_append_printf(str, "  otpspare1: 0x%x\n",
516
0
                           (guint) fu_struct_synaprom_reply_get_version_get_otpspare1(st));
517
0
    g_string_append_printf(str, "  device_type: 0x%x\n",
518
0
                           (guint) fu_struct_synaprom_reply_get_version_get_device_type(st));
519
0
    if (str->len > 0)
520
0
        g_string_set_size(str, str->len - 1);
521
0
    return g_string_free(g_steal_pointer(&str), FALSE);
522
0
}
523
static gboolean
524
fu_struct_synaprom_reply_get_version_validate_internal(FuStructSynapromReplyGetVersion *st, GError **error)
525
0
{
526
0
    g_return_val_if_fail(st != NULL, FALSE);
527
0
    return TRUE;
528
0
}
529
static gboolean
530
fu_struct_synaprom_reply_get_version_parse_internal(FuStructSynapromReplyGetVersion *st, GError **error)
531
0
{
532
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
533
0
        g_autofree gchar *str = fu_struct_synaprom_reply_get_version_to_string(st);
534
0
        g_debug("%s", str);
535
0
    }
536
0
    if (!fu_struct_synaprom_reply_get_version_validate_internal(st, error))
537
0
        return FALSE;
538
0
    return TRUE;
539
0
}
540
541
/**
542
 * fu_struct_synaprom_reply_get_version_parse: (skip):
543
 **/
544
FuStructSynapromReplyGetVersion *
545
fu_struct_synaprom_reply_get_version_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
546
0
{
547
0
    g_autoptr(FuStructSynapromReplyGetVersion) st = fu_struct_synaprom_reply_get_version_new_internal();
548
0
    g_return_val_if_fail(buf != NULL, NULL);
549
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
550
0
    if (!fu_memchk_read(bufsz, offset, 38, error)) {
551
0
        g_prefix_error_literal(error, "invalid struct FuStructSynapromReplyGetVersion: ");
552
0
        return NULL;
553
0
    }
554
0
    st->buf = g_byte_array_new();
555
0
    g_byte_array_append(st->buf, buf + offset, 38);
556
0
    if (!fu_struct_synaprom_reply_get_version_parse_internal(st, error))
557
0
        return NULL;
558
0
    return g_steal_pointer(&st);
559
0
}
560
/**
561
 * fu_struct_synaprom_mfw_hdr_ref: (skip):
562
 **/
563
FuStructSynapromMfwHdr *
564
fu_struct_synaprom_mfw_hdr_ref(FuStructSynapromMfwHdr *st)
565
0
{
566
0
    g_return_val_if_fail(st != NULL, NULL);
567
0
    st->refcount++;
568
0
    return st;
569
0
}
570
/**
571
 * fu_struct_synaprom_mfw_hdr_unref: (skip):
572
 **/
573
void
574
fu_struct_synaprom_mfw_hdr_unref(FuStructSynapromMfwHdr *st)
575
264
{
576
264
    g_return_if_fail(st != NULL);
577
264
    if (st->refcount == 0) {
578
0
        g_critical("FuStructSynapromMfwHdr refcount already zero");
579
0
        return;
580
0
    }
581
264
    if (--st->refcount > 0)
582
0
        return;
583
264
    if (st->buf != NULL)
584
264
        g_byte_array_unref(st->buf);
585
264
    g_free(st);
586
264
}
587
/**
588
 * fu_struct_synaprom_mfw_hdr_new_internal: (skip):
589
 **/
590
static FuStructSynapromMfwHdr *
591
fu_struct_synaprom_mfw_hdr_new_internal(void)
592
264
{
593
264
    FuStructSynapromMfwHdr *st = g_new0(FuStructSynapromMfwHdr, 1);
594
264
    st->refcount = 1;
595
264
    return st;
596
264
}
597
598
/* getters */
599
/**
600
 * fu_struct_synaprom_mfw_hdr_get_product: (skip):
601
 **/
602
guint32
603
fu_struct_synaprom_mfw_hdr_get_product(const FuStructSynapromMfwHdr *st)
604
144
{
605
144
    g_return_val_if_fail(st != NULL, 0x0);
606
144
    return fu_memread_uint32(st->buf->data + 0, G_LITTLE_ENDIAN);
607
144
}
608
/**
609
 * fu_struct_synaprom_mfw_hdr_get_id: (skip):
610
 **/
611
guint32
612
fu_struct_synaprom_mfw_hdr_get_id(const FuStructSynapromMfwHdr *st)
613
0
{
614
0
    g_return_val_if_fail(st != NULL, 0x0);
615
0
    return fu_memread_uint32(st->buf->data + 4, G_LITTLE_ENDIAN);
616
0
}
617
/**
618
 * fu_struct_synaprom_mfw_hdr_get_buildtime: (skip):
619
 **/
620
guint32
621
fu_struct_synaprom_mfw_hdr_get_buildtime(const FuStructSynapromMfwHdr *st)
622
0
{
623
0
    g_return_val_if_fail(st != NULL, 0x0);
624
0
    return fu_memread_uint32(st->buf->data + 8, G_LITTLE_ENDIAN);
625
0
}
626
/**
627
 * fu_struct_synaprom_mfw_hdr_get_buildnum: (skip):
628
 **/
629
guint32
630
fu_struct_synaprom_mfw_hdr_get_buildnum(const FuStructSynapromMfwHdr *st)
631
0
{
632
0
    g_return_val_if_fail(st != NULL, 0x0);
633
0
    return fu_memread_uint32(st->buf->data + 12, G_LITTLE_ENDIAN);
634
0
}
635
/**
636
 * fu_struct_synaprom_mfw_hdr_get_vmajor: (skip):
637
 **/
638
guint8
639
fu_struct_synaprom_mfw_hdr_get_vmajor(const FuStructSynapromMfwHdr *st)
640
144
{
641
144
    g_return_val_if_fail(st != NULL, 0x0);
642
144
    return st->buf->data[16];
643
144
}
644
/**
645
 * fu_struct_synaprom_mfw_hdr_get_vminor: (skip):
646
 **/
647
guint8
648
fu_struct_synaprom_mfw_hdr_get_vminor(const FuStructSynapromMfwHdr *st)
649
144
{
650
144
    g_return_val_if_fail(st != NULL, 0x0);
651
144
    return st->buf->data[17];
652
144
}
653
/**
654
 * fu_struct_synaprom_mfw_hdr_get_unused: (skip):
655
 **/
656
const guint8 *
657
fu_struct_synaprom_mfw_hdr_get_unused(const FuStructSynapromMfwHdr *st, gsize *bufsz)
658
0
{
659
0
    g_return_val_if_fail(st != NULL, NULL);
660
0
    if (bufsz != NULL)
661
0
        *bufsz = 6;
662
0
    return st->buf->data + 18;
663
0
}
664
665
/* setters */
666
/**
667
 * fu_struct_synaprom_mfw_hdr_set_product: (skip):
668
 **/
669
void
670
fu_struct_synaprom_mfw_hdr_set_product(FuStructSynapromMfwHdr *st, guint32 value)
671
120
{
672
120
    g_return_if_fail(st != NULL);
673
120
    fu_memwrite_uint32(st->buf->data + 0, value, G_LITTLE_ENDIAN);
674
120
}
675
/**
676
 * fu_struct_synaprom_mfw_hdr_set_id: (skip):
677
 **/
678
void
679
fu_struct_synaprom_mfw_hdr_set_id(FuStructSynapromMfwHdr *st, guint32 value)
680
120
{
681
120
    g_return_if_fail(st != NULL);
682
120
    fu_memwrite_uint32(st->buf->data + 4, value, G_LITTLE_ENDIAN);
683
120
}
684
/**
685
 * fu_struct_synaprom_mfw_hdr_set_buildtime: (skip):
686
 **/
687
void
688
fu_struct_synaprom_mfw_hdr_set_buildtime(FuStructSynapromMfwHdr *st, guint32 value)
689
120
{
690
120
    g_return_if_fail(st != NULL);
691
120
    fu_memwrite_uint32(st->buf->data + 8, value, G_LITTLE_ENDIAN);
692
120
}
693
/**
694
 * fu_struct_synaprom_mfw_hdr_set_buildnum: (skip):
695
 **/
696
void
697
fu_struct_synaprom_mfw_hdr_set_buildnum(FuStructSynapromMfwHdr *st, guint32 value)
698
120
{
699
120
    g_return_if_fail(st != NULL);
700
120
    fu_memwrite_uint32(st->buf->data + 12, value, G_LITTLE_ENDIAN);
701
120
}
702
/**
703
 * fu_struct_synaprom_mfw_hdr_set_vmajor: (skip):
704
 **/
705
void
706
fu_struct_synaprom_mfw_hdr_set_vmajor(FuStructSynapromMfwHdr *st, guint8 value)
707
120
{
708
120
    g_return_if_fail(st != NULL);
709
120
    st->buf->data[16] = value;
710
120
}
711
/**
712
 * fu_struct_synaprom_mfw_hdr_set_vminor: (skip):
713
 **/
714
void
715
fu_struct_synaprom_mfw_hdr_set_vminor(FuStructSynapromMfwHdr *st, guint8 value)
716
120
{
717
120
    g_return_if_fail(st != NULL);
718
120
    st->buf->data[17] = value;
719
120
}
720
/**
721
 * fu_struct_synaprom_mfw_hdr_set_unused: (skip):
722
 **/
723
gboolean
724
fu_struct_synaprom_mfw_hdr_set_unused(FuStructSynapromMfwHdr *st, const guint8 *buf, gsize bufsz, GError **error)
725
0
{
726
0
    g_return_val_if_fail(st != NULL, FALSE);
727
0
    g_return_val_if_fail(buf != NULL, FALSE);
728
0
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
729
0
    return fu_memcpy_safe(st->buf->data, st->buf->len, 18, buf, bufsz, 0x0, bufsz, error);
730
0
}
731
/**
732
 * fu_struct_synaprom_mfw_hdr_new: (skip):
733
 **/
734
FuStructSynapromMfwHdr *
735
fu_struct_synaprom_mfw_hdr_new(void)
736
120
{
737
120
    FuStructSynapromMfwHdr *st = fu_struct_synaprom_mfw_hdr_new_internal();
738
120
    st->buf = g_byte_array_sized_new(24);
739
120
    fu_byte_array_set_size(st->buf, 24, 0x0);
740
120
    fu_struct_synaprom_mfw_hdr_set_id(st, 0xFF);
741
120
    fu_struct_synaprom_mfw_hdr_set_buildtime(st, 0xFF);
742
120
    fu_struct_synaprom_mfw_hdr_set_buildnum(st, 0xFF);
743
120
    fu_struct_synaprom_mfw_hdr_set_vmajor(st, 10);
744
120
    fu_struct_synaprom_mfw_hdr_set_vminor(st, 1);
745
120
    return st;
746
120
}
747
/**
748
 * fu_struct_synaprom_mfw_hdr_to_string: (skip):
749
 **/
750
static gchar *
751
fu_struct_synaprom_mfw_hdr_to_string(const FuStructSynapromMfwHdr *st)
752
0
{
753
0
    g_autoptr(GString) str = g_string_new("FuStructSynapromMfwHdr:\n");
754
0
    g_return_val_if_fail(st != NULL, NULL);
755
0
    g_string_append_printf(str, "  product: 0x%x\n",
756
0
                           (guint) fu_struct_synaprom_mfw_hdr_get_product(st));
757
0
    g_string_append_printf(str, "  id: 0x%x\n",
758
0
                           (guint) fu_struct_synaprom_mfw_hdr_get_id(st));
759
0
    g_string_append_printf(str, "  buildtime: 0x%x\n",
760
0
                           (guint) fu_struct_synaprom_mfw_hdr_get_buildtime(st));
761
0
    g_string_append_printf(str, "  buildnum: 0x%x\n",
762
0
                           (guint) fu_struct_synaprom_mfw_hdr_get_buildnum(st));
763
0
    g_string_append_printf(str, "  vmajor: 0x%x\n",
764
0
                           (guint) fu_struct_synaprom_mfw_hdr_get_vmajor(st));
765
0
    g_string_append_printf(str, "  vminor: 0x%x\n",
766
0
                           (guint) fu_struct_synaprom_mfw_hdr_get_vminor(st));
767
0
    {
768
0
        gsize bufsz = 0;
769
0
        const guint8 *buf = fu_struct_synaprom_mfw_hdr_get_unused(st, &bufsz);
770
0
        g_autoptr(GString) tmp = g_string_new(NULL);
771
0
        for (gsize i = 0; i < bufsz; i++)
772
0
            g_string_append_printf(tmp, "%02X", buf[i]);
773
0
        g_string_append_printf(str, "  unused: 0x%s\n", tmp->str);
774
0
    }
775
0
    if (str->len > 0)
776
0
        g_string_set_size(str, str->len - 1);
777
0
    return g_string_free(g_steal_pointer(&str), FALSE);
778
0
}
779
static gboolean
780
fu_struct_synaprom_mfw_hdr_validate_internal(FuStructSynapromMfwHdr *st, GError **error)
781
144
{
782
144
    g_return_val_if_fail(st != NULL, FALSE);
783
144
    return TRUE;
784
144
}
785
static gboolean
786
fu_struct_synaprom_mfw_hdr_parse_internal(FuStructSynapromMfwHdr *st, GError **error)
787
144
{
788
144
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
789
0
        g_autofree gchar *str = fu_struct_synaprom_mfw_hdr_to_string(st);
790
0
        g_debug("%s", str);
791
0
    }
792
144
    if (!fu_struct_synaprom_mfw_hdr_validate_internal(st, error))
793
0
        return FALSE;
794
144
    return TRUE;
795
144
}
796
/**
797
 * fu_struct_synaprom_mfw_hdr_parse_stream: (skip):
798
 **/
799
FuStructSynapromMfwHdr *
800
fu_struct_synaprom_mfw_hdr_parse_stream(GInputStream *stream, gsize offset, GError **error)
801
144
{
802
144
    g_autoptr(FuStructSynapromMfwHdr) st = fu_struct_synaprom_mfw_hdr_new_internal();
803
144
    st->buf = fu_input_stream_read_byte_array(stream, offset, 24, NULL, error);
804
144
    if (st->buf == NULL) {
805
0
        g_prefix_error(error, "FuStructSynapromMfwHdr failed read of 0x%x: ", (guint) 24);
806
0
        return NULL;
807
0
    }
808
144
    if (st->buf->len != 24) {
809
0
        g_set_error(error,
810
0
                    FWUPD_ERROR,
811
0
                    FWUPD_ERROR_INVALID_DATA,
812
0
                    "FuStructSynapromMfwHdr requested 0x%x and got 0x%x",
813
0
                    (guint) 24,
814
0
                    (guint) st->buf->len);
815
0
        return NULL;
816
0
    }
817
144
    if (!fu_struct_synaprom_mfw_hdr_parse_internal(st, error))
818
0
        return NULL;
819
144
    return g_steal_pointer(&st);
820
144
}
821
/**
822
 * fu_struct_synaprom_hdr_ref: (skip):
823
 **/
824
FuStructSynapromHdr *
825
fu_struct_synaprom_hdr_ref(FuStructSynapromHdr *st)
826
0
{
827
0
    g_return_val_if_fail(st != NULL, NULL);
828
0
    st->refcount++;
829
0
    return st;
830
0
}
831
/**
832
 * fu_struct_synaprom_hdr_unref: (skip):
833
 **/
834
void
835
fu_struct_synaprom_hdr_unref(FuStructSynapromHdr *st)
836
4.83k
{
837
4.83k
    g_return_if_fail(st != NULL);
838
4.83k
    if (st->refcount == 0) {
839
0
        g_critical("FuStructSynapromHdr refcount already zero");
840
0
        return;
841
0
    }
842
4.83k
    if (--st->refcount > 0)
843
0
        return;
844
4.83k
    if (st->buf != NULL)
845
4.83k
        g_byte_array_unref(st->buf);
846
4.83k
    g_free(st);
847
4.83k
}
848
/**
849
 * fu_struct_synaprom_hdr_new_internal: (skip):
850
 **/
851
static FuStructSynapromHdr *
852
fu_struct_synaprom_hdr_new_internal(void)
853
4.83k
{
854
4.83k
    FuStructSynapromHdr *st = g_new0(FuStructSynapromHdr, 1);
855
4.83k
    st->refcount = 1;
856
4.83k
    return st;
857
4.83k
}
858
859
/* getters */
860
/**
861
 * fu_struct_synaprom_hdr_get_tag: (skip):
862
 **/
863
FuSynapromFirmwareTag
864
fu_struct_synaprom_hdr_get_tag(const FuStructSynapromHdr *st)
865
4.71k
{
866
4.71k
    g_return_val_if_fail(st != NULL, 0x0);
867
4.71k
    return fu_memread_uint16(st->buf->data + 0, G_LITTLE_ENDIAN);
868
4.71k
}
869
/**
870
 * fu_struct_synaprom_hdr_get_bufsz: (skip):
871
 **/
872
guint32
873
fu_struct_synaprom_hdr_get_bufsz(const FuStructSynapromHdr *st)
874
4.69k
{
875
4.69k
    g_return_val_if_fail(st != NULL, 0x0);
876
4.69k
    return fu_memread_uint32(st->buf->data + 2, G_LITTLE_ENDIAN);
877
4.69k
}
878
879
/* setters */
880
/**
881
 * fu_struct_synaprom_hdr_set_tag: (skip):
882
 **/
883
void
884
fu_struct_synaprom_hdr_set_tag(FuStructSynapromHdr *st, FuSynapromFirmwareTag value)
885
120
{
886
120
    g_return_if_fail(st != NULL);
887
120
    fu_memwrite_uint16(st->buf->data + 0, value, G_LITTLE_ENDIAN);
888
120
}
889
/**
890
 * fu_struct_synaprom_hdr_set_bufsz: (skip):
891
 **/
892
void
893
fu_struct_synaprom_hdr_set_bufsz(FuStructSynapromHdr *st, guint32 value)
894
120
{
895
120
    g_return_if_fail(st != NULL);
896
120
    fu_memwrite_uint32(st->buf->data + 2, value, G_LITTLE_ENDIAN);
897
120
}
898
/**
899
 * fu_struct_synaprom_hdr_new: (skip):
900
 **/
901
FuStructSynapromHdr *
902
fu_struct_synaprom_hdr_new(void)
903
120
{
904
120
    FuStructSynapromHdr *st = fu_struct_synaprom_hdr_new_internal();
905
120
    st->buf = g_byte_array_sized_new(6);
906
120
    fu_byte_array_set_size(st->buf, 6, 0x0);
907
120
    return st;
908
120
}
909
/**
910
 * fu_struct_synaprom_hdr_to_string: (skip):
911
 **/
912
static gchar *
913
fu_struct_synaprom_hdr_to_string(const FuStructSynapromHdr *st)
914
0
{
915
0
    g_autoptr(GString) str = g_string_new("FuStructSynapromHdr:\n");
916
0
    g_return_val_if_fail(st != NULL, NULL);
917
0
    {
918
0
        const gchar *tmp = fu_synaprom_firmware_tag_to_string(fu_struct_synaprom_hdr_get_tag(st));
919
0
        if (tmp != NULL) {
920
0
            g_string_append_printf(str, "  tag: 0x%x [%s]\n", (guint) fu_struct_synaprom_hdr_get_tag(st), tmp);
921
0
        } else {
922
0
            g_string_append_printf(str, "  tag: 0x%x\n", (guint) fu_struct_synaprom_hdr_get_tag(st));
923
0
        }
924
0
    }
925
0
    g_string_append_printf(str, "  bufsz: 0x%x\n",
926
0
                           (guint) fu_struct_synaprom_hdr_get_bufsz(st));
927
0
    if (str->len > 0)
928
0
        g_string_set_size(str, str->len - 1);
929
0
    return g_string_free(g_steal_pointer(&str), FALSE);
930
0
}
931
static gboolean
932
fu_struct_synaprom_hdr_validate_internal(FuStructSynapromHdr *st, GError **error)
933
4.71k
{
934
4.71k
    g_return_val_if_fail(st != NULL, FALSE);
935
4.71k
    return TRUE;
936
4.71k
}
937
static gboolean
938
fu_struct_synaprom_hdr_parse_internal(FuStructSynapromHdr *st, GError **error)
939
4.71k
{
940
4.71k
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
941
0
        g_autofree gchar *str = fu_struct_synaprom_hdr_to_string(st);
942
0
        g_debug("%s", str);
943
0
    }
944
4.71k
    if (!fu_struct_synaprom_hdr_validate_internal(st, error))
945
0
        return FALSE;
946
4.71k
    return TRUE;
947
4.71k
}
948
/**
949
 * fu_struct_synaprom_hdr_parse_stream: (skip):
950
 **/
951
FuStructSynapromHdr *
952
fu_struct_synaprom_hdr_parse_stream(GInputStream *stream, gsize offset, GError **error)
953
4.71k
{
954
4.71k
    g_autoptr(FuStructSynapromHdr) st = fu_struct_synaprom_hdr_new_internal();
955
4.71k
    st->buf = fu_input_stream_read_byte_array(stream, offset, 6, NULL, error);
956
4.71k
    if (st->buf == NULL) {
957
0
        g_prefix_error(error, "FuStructSynapromHdr failed read of 0x%x: ", (guint) 6);
958
0
        return NULL;
959
0
    }
960
4.71k
    if (st->buf->len != 6) {
961
0
        g_set_error(error,
962
0
                    FWUPD_ERROR,
963
0
                    FWUPD_ERROR_INVALID_DATA,
964
0
                    "FuStructSynapromHdr requested 0x%x and got 0x%x",
965
0
                    (guint) 6,
966
0
                    (guint) st->buf->len);
967
0
        return NULL;
968
0
    }
969
4.71k
    if (!fu_struct_synaprom_hdr_parse_internal(st, error))
970
0
        return NULL;
971
4.71k
    return g_steal_pointer(&st);
972
4.71k
}
973
/**
974
 * fu_struct_synaprom_cfg_hdr_ref: (skip):
975
 **/
976
FuStructSynapromCfgHdr *
977
fu_struct_synaprom_cfg_hdr_ref(FuStructSynapromCfgHdr *st)
978
0
{
979
0
    g_return_val_if_fail(st != NULL, NULL);
980
0
    st->refcount++;
981
0
    return st;
982
0
}
983
/**
984
 * fu_struct_synaprom_cfg_hdr_unref: (skip):
985
 **/
986
void
987
fu_struct_synaprom_cfg_hdr_unref(FuStructSynapromCfgHdr *st)
988
0
{
989
0
    g_return_if_fail(st != NULL);
990
0
    if (st->refcount == 0) {
991
0
        g_critical("FuStructSynapromCfgHdr refcount already zero");
992
0
        return;
993
0
    }
994
0
    if (--st->refcount > 0)
995
0
        return;
996
0
    if (st->buf != NULL)
997
0
        g_byte_array_unref(st->buf);
998
0
    g_free(st);
999
0
}
1000
/**
1001
 * fu_struct_synaprom_cfg_hdr_new_internal: (skip):
1002
 **/
1003
static FuStructSynapromCfgHdr *
1004
fu_struct_synaprom_cfg_hdr_new_internal(void)
1005
0
{
1006
0
    FuStructSynapromCfgHdr *st = g_new0(FuStructSynapromCfgHdr, 1);
1007
0
    st->refcount = 1;
1008
0
    return st;
1009
0
}
1010
1011
/* getters */
1012
/**
1013
 * fu_struct_synaprom_cfg_hdr_get_product: (skip):
1014
 **/
1015
guint32
1016
fu_struct_synaprom_cfg_hdr_get_product(const FuStructSynapromCfgHdr *st)
1017
0
{
1018
0
    g_return_val_if_fail(st != NULL, 0x0);
1019
0
    return fu_memread_uint32(st->buf->data + 0, G_LITTLE_ENDIAN);
1020
0
}
1021
/**
1022
 * fu_struct_synaprom_cfg_hdr_get_id1: (skip):
1023
 **/
1024
guint32
1025
fu_struct_synaprom_cfg_hdr_get_id1(const FuStructSynapromCfgHdr *st)
1026
0
{
1027
0
    g_return_val_if_fail(st != NULL, 0x0);
1028
0
    return fu_memread_uint32(st->buf->data + 4, G_LITTLE_ENDIAN);
1029
0
}
1030
/**
1031
 * fu_struct_synaprom_cfg_hdr_get_id2: (skip):
1032
 **/
1033
guint32
1034
fu_struct_synaprom_cfg_hdr_get_id2(const FuStructSynapromCfgHdr *st)
1035
0
{
1036
0
    g_return_val_if_fail(st != NULL, 0x0);
1037
0
    return fu_memread_uint32(st->buf->data + 8, G_LITTLE_ENDIAN);
1038
0
}
1039
/**
1040
 * fu_struct_synaprom_cfg_hdr_get_version: (skip):
1041
 **/
1042
guint16
1043
fu_struct_synaprom_cfg_hdr_get_version(const FuStructSynapromCfgHdr *st)
1044
0
{
1045
0
    g_return_val_if_fail(st != NULL, 0x0);
1046
0
    return fu_memread_uint16(st->buf->data + 12, G_LITTLE_ENDIAN);
1047
0
}
1048
1049
/* setters */
1050
/**
1051
 * fu_struct_synaprom_cfg_hdr_to_string: (skip):
1052
 **/
1053
static gchar *
1054
fu_struct_synaprom_cfg_hdr_to_string(const FuStructSynapromCfgHdr *st)
1055
0
{
1056
0
    g_autoptr(GString) str = g_string_new("FuStructSynapromCfgHdr:\n");
1057
0
    g_return_val_if_fail(st != NULL, NULL);
1058
0
    g_string_append_printf(str, "  product: 0x%x\n",
1059
0
                           (guint) fu_struct_synaprom_cfg_hdr_get_product(st));
1060
0
    g_string_append_printf(str, "  id1: 0x%x\n",
1061
0
                           (guint) fu_struct_synaprom_cfg_hdr_get_id1(st));
1062
0
    g_string_append_printf(str, "  id2: 0x%x\n",
1063
0
                           (guint) fu_struct_synaprom_cfg_hdr_get_id2(st));
1064
0
    g_string_append_printf(str, "  version: 0x%x\n",
1065
0
                           (guint) fu_struct_synaprom_cfg_hdr_get_version(st));
1066
0
    if (str->len > 0)
1067
0
        g_string_set_size(str, str->len - 1);
1068
0
    return g_string_free(g_steal_pointer(&str), FALSE);
1069
0
}
1070
static gboolean
1071
fu_struct_synaprom_cfg_hdr_validate_internal(FuStructSynapromCfgHdr *st, GError **error)
1072
0
{
1073
0
    g_return_val_if_fail(st != NULL, FALSE);
1074
0
    return TRUE;
1075
0
}
1076
static gboolean
1077
fu_struct_synaprom_cfg_hdr_parse_internal(FuStructSynapromCfgHdr *st, GError **error)
1078
0
{
1079
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
1080
0
        g_autofree gchar *str = fu_struct_synaprom_cfg_hdr_to_string(st);
1081
0
        g_debug("%s", str);
1082
0
    }
1083
0
    if (!fu_struct_synaprom_cfg_hdr_validate_internal(st, error))
1084
0
        return FALSE;
1085
0
    return TRUE;
1086
0
}
1087
/**
1088
 * fu_struct_synaprom_cfg_hdr_parse_stream: (skip):
1089
 **/
1090
FuStructSynapromCfgHdr *
1091
fu_struct_synaprom_cfg_hdr_parse_stream(GInputStream *stream, gsize offset, GError **error)
1092
0
{
1093
0
    g_autoptr(FuStructSynapromCfgHdr) st = fu_struct_synaprom_cfg_hdr_new_internal();
1094
0
    st->buf = fu_input_stream_read_byte_array(stream, offset, 16, NULL, error);
1095
0
    if (st->buf == NULL) {
1096
0
        g_prefix_error(error, "FuStructSynapromCfgHdr failed read of 0x%x: ", (guint) 16);
1097
0
        return NULL;
1098
0
    }
1099
0
    if (st->buf->len != 16) {
1100
0
        g_set_error(error,
1101
0
                    FWUPD_ERROR,
1102
0
                    FWUPD_ERROR_INVALID_DATA,
1103
0
                    "FuStructSynapromCfgHdr requested 0x%x and got 0x%x",
1104
0
                    (guint) 16,
1105
0
                    (guint) st->buf->len);
1106
0
        return NULL;
1107
0
    }
1108
0
    if (!fu_struct_synaprom_cfg_hdr_parse_internal(st, error))
1109
0
        return NULL;
1110
0
    return g_steal_pointer(&st);
1111
0
}
1112
/**
1113
 * fu_struct_synaprom_iota_config_version_ref: (skip):
1114
 **/
1115
FuStructSynapromIotaConfigVersion *
1116
fu_struct_synaprom_iota_config_version_ref(FuStructSynapromIotaConfigVersion *st)
1117
0
{
1118
0
    g_return_val_if_fail(st != NULL, NULL);
1119
0
    st->refcount++;
1120
0
    return st;
1121
0
}
1122
/**
1123
 * fu_struct_synaprom_iota_config_version_unref: (skip):
1124
 **/
1125
void
1126
fu_struct_synaprom_iota_config_version_unref(FuStructSynapromIotaConfigVersion *st)
1127
0
{
1128
0
    g_return_if_fail(st != NULL);
1129
0
    if (st->refcount == 0) {
1130
0
        g_critical("FuStructSynapromIotaConfigVersion refcount already zero");
1131
0
        return;
1132
0
    }
1133
0
    if (--st->refcount > 0)
1134
0
        return;
1135
0
    if (st->buf != NULL)
1136
0
        g_byte_array_unref(st->buf);
1137
0
    g_free(st);
1138
0
}
1139
/**
1140
 * fu_struct_synaprom_iota_config_version_new_internal: (skip):
1141
 **/
1142
static FuStructSynapromIotaConfigVersion *
1143
fu_struct_synaprom_iota_config_version_new_internal(void)
1144
0
{
1145
0
    FuStructSynapromIotaConfigVersion *st = g_new0(FuStructSynapromIotaConfigVersion, 1);
1146
0
    st->refcount = 1;
1147
0
    return st;
1148
0
}
1149
1150
/* getters */
1151
/**
1152
 * fu_struct_synaprom_iota_config_version_get_config_id1: (skip):
1153
 **/
1154
guint32
1155
fu_struct_synaprom_iota_config_version_get_config_id1(const FuStructSynapromIotaConfigVersion *st)
1156
0
{
1157
0
    g_return_val_if_fail(st != NULL, 0x0);
1158
0
    return fu_memread_uint32(st->buf->data + 0, G_LITTLE_ENDIAN);
1159
0
}
1160
/**
1161
 * fu_struct_synaprom_iota_config_version_get_config_id2: (skip):
1162
 **/
1163
guint32
1164
fu_struct_synaprom_iota_config_version_get_config_id2(const FuStructSynapromIotaConfigVersion *st)
1165
0
{
1166
0
    g_return_val_if_fail(st != NULL, 0x0);
1167
0
    return fu_memread_uint32(st->buf->data + 4, G_LITTLE_ENDIAN);
1168
0
}
1169
/**
1170
 * fu_struct_synaprom_iota_config_version_get_version: (skip):
1171
 **/
1172
guint16
1173
fu_struct_synaprom_iota_config_version_get_version(const FuStructSynapromIotaConfigVersion *st)
1174
0
{
1175
0
    g_return_val_if_fail(st != NULL, 0x0);
1176
0
    return fu_memread_uint16(st->buf->data + 8, G_LITTLE_ENDIAN);
1177
0
}
1178
1179
/* setters */
1180
/**
1181
 * fu_struct_synaprom_iota_config_version_to_string: (skip):
1182
 **/
1183
static gchar *
1184
fu_struct_synaprom_iota_config_version_to_string(const FuStructSynapromIotaConfigVersion *st)
1185
0
{
1186
0
    g_autoptr(GString) str = g_string_new("FuStructSynapromIotaConfigVersion:\n");
1187
0
    g_return_val_if_fail(st != NULL, NULL);
1188
0
    g_string_append_printf(str, "  config_id1: 0x%x\n",
1189
0
                           (guint) fu_struct_synaprom_iota_config_version_get_config_id1(st));
1190
0
    g_string_append_printf(str, "  config_id2: 0x%x\n",
1191
0
                           (guint) fu_struct_synaprom_iota_config_version_get_config_id2(st));
1192
0
    g_string_append_printf(str, "  version: 0x%x\n",
1193
0
                           (guint) fu_struct_synaprom_iota_config_version_get_version(st));
1194
0
    if (str->len > 0)
1195
0
        g_string_set_size(str, str->len - 1);
1196
0
    return g_string_free(g_steal_pointer(&str), FALSE);
1197
0
}
1198
static gboolean
1199
fu_struct_synaprom_iota_config_version_validate_internal(FuStructSynapromIotaConfigVersion *st, GError **error)
1200
0
{
1201
0
    g_return_val_if_fail(st != NULL, FALSE);
1202
0
    return TRUE;
1203
0
}
1204
static gboolean
1205
fu_struct_synaprom_iota_config_version_parse_internal(FuStructSynapromIotaConfigVersion *st, GError **error)
1206
0
{
1207
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
1208
0
        g_autofree gchar *str = fu_struct_synaprom_iota_config_version_to_string(st);
1209
0
        g_debug("%s", str);
1210
0
    }
1211
0
    if (!fu_struct_synaprom_iota_config_version_validate_internal(st, error))
1212
0
        return FALSE;
1213
0
    return TRUE;
1214
0
}
1215
1216
/**
1217
 * fu_struct_synaprom_iota_config_version_parse: (skip):
1218
 **/
1219
FuStructSynapromIotaConfigVersion *
1220
fu_struct_synaprom_iota_config_version_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
1221
0
{
1222
0
    g_autoptr(FuStructSynapromIotaConfigVersion) st = fu_struct_synaprom_iota_config_version_new_internal();
1223
0
    g_return_val_if_fail(buf != NULL, NULL);
1224
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
1225
0
    if (!fu_memchk_read(bufsz, offset, 16, error)) {
1226
0
        g_prefix_error_literal(error, "invalid struct FuStructSynapromIotaConfigVersion: ");
1227
0
        return NULL;
1228
0
    }
1229
0
    st->buf = g_byte_array_new();
1230
0
    g_byte_array_append(st->buf, buf + offset, 16);
1231
0
    if (!fu_struct_synaprom_iota_config_version_parse_internal(st, error))
1232
0
        return NULL;
1233
0
    return g_steal_pointer(&st);
1234
0
}
1235
/**
1236
 * fu_struct_synaprom_reply_iota_find_hdr_ref: (skip):
1237
 **/
1238
FuStructSynapromReplyIotaFindHdr *
1239
fu_struct_synaprom_reply_iota_find_hdr_ref(FuStructSynapromReplyIotaFindHdr *st)
1240
0
{
1241
0
    g_return_val_if_fail(st != NULL, NULL);
1242
0
    st->refcount++;
1243
0
    return st;
1244
0
}
1245
/**
1246
 * fu_struct_synaprom_reply_iota_find_hdr_unref: (skip):
1247
 **/
1248
void
1249
fu_struct_synaprom_reply_iota_find_hdr_unref(FuStructSynapromReplyIotaFindHdr *st)
1250
0
{
1251
0
    g_return_if_fail(st != NULL);
1252
0
    if (st->refcount == 0) {
1253
0
        g_critical("FuStructSynapromReplyIotaFindHdr refcount already zero");
1254
0
        return;
1255
0
    }
1256
0
    if (--st->refcount > 0)
1257
0
        return;
1258
0
    if (st->buf != NULL)
1259
0
        g_byte_array_unref(st->buf);
1260
0
    g_free(st);
1261
0
}
1262
/**
1263
 * fu_struct_synaprom_reply_iota_find_hdr_new_internal: (skip):
1264
 **/
1265
static FuStructSynapromReplyIotaFindHdr *
1266
fu_struct_synaprom_reply_iota_find_hdr_new_internal(void)
1267
0
{
1268
0
    FuStructSynapromReplyIotaFindHdr *st = g_new0(FuStructSynapromReplyIotaFindHdr, 1);
1269
0
    st->refcount = 1;
1270
0
    return st;
1271
0
}
1272
1273
/* getters */
1274
/**
1275
 * fu_struct_synaprom_reply_iota_find_hdr_get_status: (skip):
1276
 **/
1277
guint16
1278
fu_struct_synaprom_reply_iota_find_hdr_get_status(const FuStructSynapromReplyIotaFindHdr *st)
1279
0
{
1280
0
    g_return_val_if_fail(st != NULL, 0x0);
1281
0
    return fu_memread_uint16(st->buf->data + 0, G_LITTLE_ENDIAN);
1282
0
}
1283
/**
1284
 * fu_struct_synaprom_reply_iota_find_hdr_get_fullsize: (skip):
1285
 **/
1286
guint32
1287
fu_struct_synaprom_reply_iota_find_hdr_get_fullsize(const FuStructSynapromReplyIotaFindHdr *st)
1288
0
{
1289
0
    g_return_val_if_fail(st != NULL, 0x0);
1290
0
    return fu_memread_uint32(st->buf->data + 2, G_LITTLE_ENDIAN);
1291
0
}
1292
/**
1293
 * fu_struct_synaprom_reply_iota_find_hdr_get_nbytes: (skip):
1294
 **/
1295
guint16
1296
fu_struct_synaprom_reply_iota_find_hdr_get_nbytes(const FuStructSynapromReplyIotaFindHdr *st)
1297
0
{
1298
0
    g_return_val_if_fail(st != NULL, 0x0);
1299
0
    return fu_memread_uint16(st->buf->data + 6, G_LITTLE_ENDIAN);
1300
0
}
1301
/**
1302
 * fu_struct_synaprom_reply_iota_find_hdr_get_itype: (skip):
1303
 **/
1304
guint16
1305
fu_struct_synaprom_reply_iota_find_hdr_get_itype(const FuStructSynapromReplyIotaFindHdr *st)
1306
0
{
1307
0
    g_return_val_if_fail(st != NULL, 0x0);
1308
0
    return fu_memread_uint16(st->buf->data + 8, G_LITTLE_ENDIAN);
1309
0
}
1310
1311
/* setters */
1312
/**
1313
 * fu_struct_synaprom_reply_iota_find_hdr_to_string: (skip):
1314
 **/
1315
static gchar *
1316
fu_struct_synaprom_reply_iota_find_hdr_to_string(const FuStructSynapromReplyIotaFindHdr *st)
1317
0
{
1318
0
    g_autoptr(GString) str = g_string_new("FuStructSynapromReplyIotaFindHdr:\n");
1319
0
    g_return_val_if_fail(st != NULL, NULL);
1320
0
    g_string_append_printf(str, "  status: 0x%x\n",
1321
0
                           (guint) fu_struct_synaprom_reply_iota_find_hdr_get_status(st));
1322
0
    g_string_append_printf(str, "  fullsize: 0x%x\n",
1323
0
                           (guint) fu_struct_synaprom_reply_iota_find_hdr_get_fullsize(st));
1324
0
    g_string_append_printf(str, "  nbytes: 0x%x\n",
1325
0
                           (guint) fu_struct_synaprom_reply_iota_find_hdr_get_nbytes(st));
1326
0
    g_string_append_printf(str, "  itype: 0x%x\n",
1327
0
                           (guint) fu_struct_synaprom_reply_iota_find_hdr_get_itype(st));
1328
0
    if (str->len > 0)
1329
0
        g_string_set_size(str, str->len - 1);
1330
0
    return g_string_free(g_steal_pointer(&str), FALSE);
1331
0
}
1332
static gboolean
1333
fu_struct_synaprom_reply_iota_find_hdr_validate_internal(FuStructSynapromReplyIotaFindHdr *st, GError **error)
1334
0
{
1335
0
    g_return_val_if_fail(st != NULL, FALSE);
1336
0
    return TRUE;
1337
0
}
1338
static gboolean
1339
fu_struct_synaprom_reply_iota_find_hdr_parse_internal(FuStructSynapromReplyIotaFindHdr *st, GError **error)
1340
0
{
1341
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
1342
0
        g_autofree gchar *str = fu_struct_synaprom_reply_iota_find_hdr_to_string(st);
1343
0
        g_debug("%s", str);
1344
0
    }
1345
0
    if (!fu_struct_synaprom_reply_iota_find_hdr_validate_internal(st, error))
1346
0
        return FALSE;
1347
0
    return TRUE;
1348
0
}
1349
1350
/**
1351
 * fu_struct_synaprom_reply_iota_find_hdr_parse: (skip):
1352
 **/
1353
FuStructSynapromReplyIotaFindHdr *
1354
fu_struct_synaprom_reply_iota_find_hdr_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
1355
0
{
1356
0
    g_autoptr(FuStructSynapromReplyIotaFindHdr) st = fu_struct_synaprom_reply_iota_find_hdr_new_internal();
1357
0
    g_return_val_if_fail(buf != NULL, NULL);
1358
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
1359
0
    if (!fu_memchk_read(bufsz, offset, 10, error)) {
1360
0
        g_prefix_error_literal(error, "invalid struct FuStructSynapromReplyIotaFindHdr: ");
1361
0
        return NULL;
1362
0
    }
1363
0
    st->buf = g_byte_array_new();
1364
0
    g_byte_array_append(st->buf, buf + offset, 10);
1365
0
    if (!fu_struct_synaprom_reply_iota_find_hdr_parse_internal(st, error))
1366
0
        return NULL;
1367
0
    return g_steal_pointer(&st);
1368
0
}
1369
/**
1370
 * fu_struct_synaprom_cmd_iota_find_ref: (skip):
1371
 **/
1372
FuStructSynapromCmdIotaFind *
1373
fu_struct_synaprom_cmd_iota_find_ref(FuStructSynapromCmdIotaFind *st)
1374
0
{
1375
0
    g_return_val_if_fail(st != NULL, NULL);
1376
0
    st->refcount++;
1377
0
    return st;
1378
0
}
1379
/**
1380
 * fu_struct_synaprom_cmd_iota_find_unref: (skip):
1381
 **/
1382
void
1383
fu_struct_synaprom_cmd_iota_find_unref(FuStructSynapromCmdIotaFind *st)
1384
0
{
1385
0
    g_return_if_fail(st != NULL);
1386
0
    if (st->refcount == 0) {
1387
0
        g_critical("FuStructSynapromCmdIotaFind refcount already zero");
1388
0
        return;
1389
0
    }
1390
0
    if (--st->refcount > 0)
1391
0
        return;
1392
0
    if (st->buf != NULL)
1393
0
        g_byte_array_unref(st->buf);
1394
0
    g_free(st);
1395
0
}
1396
/**
1397
 * fu_struct_synaprom_cmd_iota_find_new_internal: (skip):
1398
 **/
1399
static FuStructSynapromCmdIotaFind *
1400
fu_struct_synaprom_cmd_iota_find_new_internal(void)
1401
0
{
1402
0
    FuStructSynapromCmdIotaFind *st = g_new0(FuStructSynapromCmdIotaFind, 1);
1403
0
    st->refcount = 1;
1404
0
    return st;
1405
0
}
1406
1407
/* getters */
1408
/**
1409
 * fu_struct_synaprom_cmd_iota_find_get_itype: (skip):
1410
 **/
1411
guint16
1412
fu_struct_synaprom_cmd_iota_find_get_itype(const FuStructSynapromCmdIotaFind *st)
1413
0
{
1414
0
    g_return_val_if_fail(st != NULL, 0x0);
1415
0
    return fu_memread_uint16(st->buf->data + 0, G_LITTLE_ENDIAN);
1416
0
}
1417
/**
1418
 * fu_struct_synaprom_cmd_iota_find_get_flags: (skip):
1419
 **/
1420
guint16
1421
fu_struct_synaprom_cmd_iota_find_get_flags(const FuStructSynapromCmdIotaFind *st)
1422
0
{
1423
0
    g_return_val_if_fail(st != NULL, 0x0);
1424
0
    return fu_memread_uint16(st->buf->data + 2, G_LITTLE_ENDIAN);
1425
0
}
1426
/**
1427
 * fu_struct_synaprom_cmd_iota_find_get_maxniotas: (skip):
1428
 **/
1429
guint8
1430
fu_struct_synaprom_cmd_iota_find_get_maxniotas(const FuStructSynapromCmdIotaFind *st)
1431
0
{
1432
0
    g_return_val_if_fail(st != NULL, 0x0);
1433
0
    return st->buf->data[4];
1434
0
}
1435
/**
1436
 * fu_struct_synaprom_cmd_iota_find_get_firstidx: (skip):
1437
 **/
1438
guint8
1439
fu_struct_synaprom_cmd_iota_find_get_firstidx(const FuStructSynapromCmdIotaFind *st)
1440
0
{
1441
0
    g_return_val_if_fail(st != NULL, 0x0);
1442
0
    return st->buf->data[5];
1443
0
}
1444
/**
1445
 * fu_struct_synaprom_cmd_iota_find_get_offset: (skip):
1446
 **/
1447
guint32
1448
fu_struct_synaprom_cmd_iota_find_get_offset(const FuStructSynapromCmdIotaFind *st)
1449
0
{
1450
0
    g_return_val_if_fail(st != NULL, 0x0);
1451
0
    return fu_memread_uint32(st->buf->data + 8, G_LITTLE_ENDIAN);
1452
0
}
1453
/**
1454
 * fu_struct_synaprom_cmd_iota_find_get_nbytes: (skip):
1455
 **/
1456
guint32
1457
fu_struct_synaprom_cmd_iota_find_get_nbytes(const FuStructSynapromCmdIotaFind *st)
1458
0
{
1459
0
    g_return_val_if_fail(st != NULL, 0x0);
1460
0
    return fu_memread_uint32(st->buf->data + 12, G_LITTLE_ENDIAN);
1461
0
}
1462
1463
/* setters */
1464
/**
1465
 * fu_struct_synaprom_cmd_iota_find_set_itype: (skip):
1466
 **/
1467
void
1468
fu_struct_synaprom_cmd_iota_find_set_itype(FuStructSynapromCmdIotaFind *st, guint16 value)
1469
0
{
1470
0
    g_return_if_fail(st != NULL);
1471
0
    fu_memwrite_uint16(st->buf->data + 0, value, G_LITTLE_ENDIAN);
1472
0
}
1473
/**
1474
 * fu_struct_synaprom_cmd_iota_find_set_flags: (skip):
1475
 **/
1476
void
1477
fu_struct_synaprom_cmd_iota_find_set_flags(FuStructSynapromCmdIotaFind *st, guint16 value)
1478
0
{
1479
0
    g_return_if_fail(st != NULL);
1480
0
    fu_memwrite_uint16(st->buf->data + 2, value, G_LITTLE_ENDIAN);
1481
0
}
1482
/**
1483
 * fu_struct_synaprom_cmd_iota_find_set_maxniotas: (skip):
1484
 **/
1485
void
1486
fu_struct_synaprom_cmd_iota_find_set_maxniotas(FuStructSynapromCmdIotaFind *st, guint8 value)
1487
0
{
1488
0
    g_return_if_fail(st != NULL);
1489
0
    st->buf->data[4] = value;
1490
0
}
1491
/**
1492
 * fu_struct_synaprom_cmd_iota_find_set_firstidx: (skip):
1493
 **/
1494
void
1495
fu_struct_synaprom_cmd_iota_find_set_firstidx(FuStructSynapromCmdIotaFind *st, guint8 value)
1496
0
{
1497
0
    g_return_if_fail(st != NULL);
1498
0
    st->buf->data[5] = value;
1499
0
}
1500
/**
1501
 * fu_struct_synaprom_cmd_iota_find_set_offset: (skip):
1502
 **/
1503
void
1504
fu_struct_synaprom_cmd_iota_find_set_offset(FuStructSynapromCmdIotaFind *st, guint32 value)
1505
0
{
1506
0
    g_return_if_fail(st != NULL);
1507
0
    fu_memwrite_uint32(st->buf->data + 8, value, G_LITTLE_ENDIAN);
1508
0
}
1509
/**
1510
 * fu_struct_synaprom_cmd_iota_find_set_nbytes: (skip):
1511
 **/
1512
void
1513
fu_struct_synaprom_cmd_iota_find_set_nbytes(FuStructSynapromCmdIotaFind *st, guint32 value)
1514
0
{
1515
0
    g_return_if_fail(st != NULL);
1516
0
    fu_memwrite_uint32(st->buf->data + 12, value, G_LITTLE_ENDIAN);
1517
0
}
1518
/**
1519
 * fu_struct_synaprom_cmd_iota_find_new: (skip):
1520
 **/
1521
FuStructSynapromCmdIotaFind *
1522
fu_struct_synaprom_cmd_iota_find_new(void)
1523
0
{
1524
0
    FuStructSynapromCmdIotaFind *st = fu_struct_synaprom_cmd_iota_find_new_internal();
1525
0
    st->buf = g_byte_array_sized_new(16);
1526
0
    fu_byte_array_set_size(st->buf, 16, 0x0);
1527
0
    return st;
1528
0
}