Coverage Report

Created: 2026-03-11 07:30

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/work/fu-cfu-firmware-struct.c
Line
Count
Source
1
/*
2
 * This file is auto-generated, do not modify!
3
 *
4
 * SPDX-License-Identifier: LGPL-2.1-or-later
5
 */
6
7
#include "config.h"
8
9
#include <glib.h>
10
11
#include "fu-cfu-firmware-struct.h"
12
#include "fu-byte-array.h"
13
#include "fu-bytes.h"
14
#include "fu-mem-private.h"
15
#include "fu-string.h"
16
17
#ifdef G_LOG_DOMAIN
18
  #undef G_LOG_DOMAIN
19
#endif
20
0
#define G_LOG_DOMAIN "FuStruct"
21
22
/**
23
 * fu_cfu_offer_component_id_to_string:
24
 * @val: value, e.g. %FU_CFU_OFFER_COMPONENT_ID_OFFER_INFORMATION
25
 *
26
 * Converts an enumerated value to a string.
27
 *
28
 * Returns: identifier string
29
 **/
30
static const gchar *
31
fu_cfu_offer_component_id_to_string(FuCfuOfferComponentId val)
32
0
{
33
0
    if (val == FU_CFU_OFFER_COMPONENT_ID_NOT_USED)
34
0
        return "not-used";
35
0
    if (val == FU_CFU_OFFER_COMPONENT_ID_OFFER_INFORMATION)
36
0
        return "offer-information";
37
0
    if (val == FU_CFU_OFFER_COMPONENT_ID_OFFER_INFORMATION2)
38
0
        return "offer-information2";
39
0
    return NULL;
40
0
}
41
/**
42
 * fu_struct_cfu_payload_ref: (skip):
43
 **/
44
FuStructCfuPayload *
45
fu_struct_cfu_payload_ref(FuStructCfuPayload *st)
46
0
{
47
0
    g_return_val_if_fail(st != NULL, NULL);
48
0
    st->refcount++;
49
0
    return st;
50
0
}
51
/**
52
 * fu_struct_cfu_payload_unref: (skip):
53
 **/
54
void
55
fu_struct_cfu_payload_unref(FuStructCfuPayload *st)
56
1.88M
{
57
1.88M
    g_return_if_fail(st != NULL);
58
1.88M
    if (st->refcount == 0) {
59
0
        g_critical("FuStructCfuPayload refcount already zero");
60
0
        return;
61
0
    }
62
1.88M
    if (--st->refcount > 0)
63
0
        return;
64
1.88M
    if (st->buf != NULL)
65
1.88M
        g_byte_array_unref(st->buf);
66
1.88M
    g_free(st);
67
1.88M
}
68
/**
69
 * fu_struct_cfu_payload_new_internal: (skip):
70
 **/
71
static FuStructCfuPayload *
72
fu_struct_cfu_payload_new_internal(void)
73
1.88M
{
74
1.88M
    FuStructCfuPayload *st = g_new0(FuStructCfuPayload, 1);
75
1.88M
    st->refcount = 1;
76
1.88M
    return st;
77
1.88M
}
78
79
/* getters */
80
/**
81
 * fu_struct_cfu_payload_get_addr: (skip):
82
 **/
83
guint32
84
fu_struct_cfu_payload_get_addr(const FuStructCfuPayload *st)
85
843k
{
86
843k
    g_return_val_if_fail(st != NULL, 0x0);
87
843k
    return fu_memread_uint32(st->buf->data + 0, G_LITTLE_ENDIAN);
88
843k
}
89
/**
90
 * fu_struct_cfu_payload_get_size: (skip):
91
 **/
92
guint8
93
fu_struct_cfu_payload_get_size(const FuStructCfuPayload *st)
94
843k
{
95
843k
    g_return_val_if_fail(st != NULL, 0x0);
96
843k
    return st->buf->data[4];
97
843k
}
98
99
/* setters */
100
/**
101
 * fu_struct_cfu_payload_set_addr: (skip):
102
 **/
103
void
104
fu_struct_cfu_payload_set_addr(FuStructCfuPayload *st, guint32 value)
105
1.03M
{
106
1.03M
    g_return_if_fail(st != NULL);
107
1.03M
    fu_memwrite_uint32(st->buf->data + 0, value, G_LITTLE_ENDIAN);
108
1.03M
}
109
/**
110
 * fu_struct_cfu_payload_set_size: (skip):
111
 **/
112
void
113
fu_struct_cfu_payload_set_size(FuStructCfuPayload *st, guint8 value)
114
1.03M
{
115
1.03M
    g_return_if_fail(st != NULL);
116
1.03M
    st->buf->data[4] = value;
117
1.03M
}
118
/**
119
 * fu_struct_cfu_payload_new: (skip):
120
 **/
121
FuStructCfuPayload *
122
fu_struct_cfu_payload_new(void)
123
1.03M
{
124
1.03M
    FuStructCfuPayload *st = fu_struct_cfu_payload_new_internal();
125
1.03M
    st->buf = g_byte_array_sized_new(5);
126
1.03M
    fu_byte_array_set_size(st->buf, 5, 0x0);
127
1.03M
    return st;
128
1.03M
}
129
/**
130
 * fu_struct_cfu_payload_to_string: (skip):
131
 **/
132
static gchar *
133
fu_struct_cfu_payload_to_string(const FuStructCfuPayload *st)
134
0
{
135
0
    g_autoptr(GString) str = g_string_new("FuStructCfuPayload:\n");
136
0
    g_return_val_if_fail(st != NULL, NULL);
137
0
    g_string_append_printf(str, "  addr: 0x%x\n",
138
0
                           (guint) fu_struct_cfu_payload_get_addr(st));
139
0
    g_string_append_printf(str, "  size: 0x%x\n",
140
0
                           (guint) fu_struct_cfu_payload_get_size(st));
141
0
    if (str->len > 0)
142
0
        g_string_set_size(str, str->len - 1);
143
0
    return g_string_free(g_steal_pointer(&str), FALSE);
144
0
}
145
static gboolean
146
fu_struct_cfu_payload_validate_internal(FuStructCfuPayload *st, GError **error)
147
843k
{
148
843k
    g_return_val_if_fail(st != NULL, FALSE);
149
843k
    return TRUE;
150
843k
}
151
static gboolean
152
fu_struct_cfu_payload_parse_internal(FuStructCfuPayload *st, GError **error)
153
843k
{
154
843k
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
155
0
        g_autofree gchar *str = fu_struct_cfu_payload_to_string(st);
156
0
        g_debug("%s", str);
157
0
    }
158
843k
    if (!fu_struct_cfu_payload_validate_internal(st, error))
159
0
        return FALSE;
160
843k
    return TRUE;
161
843k
}
162
/**
163
 * fu_struct_cfu_payload_parse_stream: (skip):
164
 **/
165
FuStructCfuPayload *
166
fu_struct_cfu_payload_parse_stream(GInputStream *stream, gsize offset, GError **error)
167
843k
{
168
843k
    g_autoptr(FuStructCfuPayload) st = fu_struct_cfu_payload_new_internal();
169
843k
    st->buf = fu_input_stream_read_byte_array(stream, offset, 5, NULL, error);
170
843k
    if (st->buf == NULL) {
171
0
        g_prefix_error(error, "FuStructCfuPayload failed read of 0x%x: ", (guint) 5);
172
0
        return NULL;
173
0
    }
174
843k
    if (st->buf->len != 5) {
175
32
        g_set_error(error,
176
32
                    FWUPD_ERROR,
177
32
                    FWUPD_ERROR_INVALID_DATA,
178
32
                    "FuStructCfuPayload requested 0x%x and got 0x%x",
179
32
                    (guint) 5,
180
32
                    (guint) st->buf->len);
181
32
        return NULL;
182
32
    }
183
843k
    if (!fu_struct_cfu_payload_parse_internal(st, error))
184
0
        return NULL;
185
843k
    return g_steal_pointer(&st);
186
843k
}
187
/**
188
 * fu_struct_cfu_offer_ref: (skip):
189
 **/
190
FuStructCfuOffer *
191
fu_struct_cfu_offer_ref(FuStructCfuOffer *st)
192
0
{
193
0
    g_return_val_if_fail(st != NULL, NULL);
194
0
    st->refcount++;
195
0
    return st;
196
0
}
197
/**
198
 * fu_struct_cfu_offer_unref: (skip):
199
 **/
200
void
201
fu_struct_cfu_offer_unref(FuStructCfuOffer *st)
202
113
{
203
113
    g_return_if_fail(st != NULL);
204
113
    if (st->refcount == 0) {
205
0
        g_critical("FuStructCfuOffer refcount already zero");
206
0
        return;
207
0
    }
208
113
    if (--st->refcount > 0)
209
0
        return;
210
113
    if (st->buf != NULL)
211
89
        g_byte_array_unref(st->buf);
212
113
    g_free(st);
213
113
}
214
/**
215
 * fu_struct_cfu_offer_new_internal: (skip):
216
 **/
217
static FuStructCfuOffer *
218
fu_struct_cfu_offer_new_internal(void)
219
113
{
220
113
    FuStructCfuOffer *st = g_new0(FuStructCfuOffer, 1);
221
113
    st->refcount = 1;
222
113
    return st;
223
113
}
224
225
/* getters */
226
/**
227
 * fu_struct_cfu_offer_get_segment_number: (skip):
228
 **/
229
guint8
230
fu_struct_cfu_offer_get_segment_number(const FuStructCfuOffer *st)
231
83
{
232
83
    g_return_val_if_fail(st != NULL, 0x0);
233
83
    return st->buf->data[0];
234
83
}
235
/**
236
 * fu_struct_cfu_offer_get_flags1: (skip):
237
 **/
238
guint8
239
fu_struct_cfu_offer_get_flags1(const FuStructCfuOffer *st)
240
83
{
241
83
    g_return_val_if_fail(st != NULL, 0x0);
242
83
    return st->buf->data[1];
243
83
}
244
/**
245
 * fu_struct_cfu_offer_get_component_id: (skip):
246
 **/
247
FuCfuOfferComponentId
248
fu_struct_cfu_offer_get_component_id(const FuStructCfuOffer *st)
249
83
{
250
83
    g_return_val_if_fail(st != NULL, 0x0);
251
83
    return st->buf->data[2];
252
83
}
253
/**
254
 * fu_struct_cfu_offer_get_token: (skip):
255
 **/
256
guint8
257
fu_struct_cfu_offer_get_token(const FuStructCfuOffer *st)
258
83
{
259
83
    g_return_val_if_fail(st != NULL, 0x0);
260
83
    return st->buf->data[3];
261
83
}
262
/**
263
 * fu_struct_cfu_offer_get_version: (skip):
264
 **/
265
guint32
266
fu_struct_cfu_offer_get_version(const FuStructCfuOffer *st)
267
83
{
268
83
    g_return_val_if_fail(st != NULL, 0x0);
269
83
    return fu_memread_uint32(st->buf->data + 4, G_LITTLE_ENDIAN);
270
83
}
271
/**
272
 * fu_struct_cfu_offer_get_compat_variant_mask: (skip):
273
 **/
274
guint32
275
fu_struct_cfu_offer_get_compat_variant_mask(const FuStructCfuOffer *st)
276
83
{
277
83
    g_return_val_if_fail(st != NULL, 0x0);
278
83
    return fu_memread_uint32(st->buf->data + 8, G_LITTLE_ENDIAN);
279
83
}
280
/**
281
 * fu_struct_cfu_offer_get_flags2: (skip):
282
 **/
283
guint8
284
fu_struct_cfu_offer_get_flags2(const FuStructCfuOffer *st)
285
83
{
286
83
    g_return_val_if_fail(st != NULL, 0x0);
287
83
    return st->buf->data[12];
288
83
}
289
/**
290
 * fu_struct_cfu_offer_get_flags3: (skip):
291
 **/
292
guint8
293
fu_struct_cfu_offer_get_flags3(const FuStructCfuOffer *st)
294
83
{
295
83
    g_return_val_if_fail(st != NULL, 0x0);
296
83
    return st->buf->data[13];
297
83
}
298
/**
299
 * fu_struct_cfu_offer_get_product_id: (skip):
300
 **/
301
guint16
302
fu_struct_cfu_offer_get_product_id(const FuStructCfuOffer *st)
303
83
{
304
83
    g_return_val_if_fail(st != NULL, 0x0);
305
83
    return fu_memread_uint16(st->buf->data + 14, G_LITTLE_ENDIAN);
306
83
}
307
308
/* setters */
309
/**
310
 * fu_struct_cfu_offer_set_segment_number: (skip):
311
 **/
312
void
313
fu_struct_cfu_offer_set_segment_number(FuStructCfuOffer *st, guint8 value)
314
24
{
315
24
    g_return_if_fail(st != NULL);
316
24
    st->buf->data[0] = value;
317
24
}
318
/**
319
 * fu_struct_cfu_offer_set_flags1: (skip):
320
 **/
321
void
322
fu_struct_cfu_offer_set_flags1(FuStructCfuOffer *st, guint8 value)
323
24
{
324
24
    g_return_if_fail(st != NULL);
325
24
    st->buf->data[1] = value;
326
24
}
327
/**
328
 * fu_struct_cfu_offer_set_component_id: (skip):
329
 **/
330
void
331
fu_struct_cfu_offer_set_component_id(FuStructCfuOffer *st, FuCfuOfferComponentId value)
332
24
{
333
24
    g_return_if_fail(st != NULL);
334
24
    st->buf->data[2] = value;
335
24
}
336
/**
337
 * fu_struct_cfu_offer_set_token: (skip):
338
 **/
339
void
340
fu_struct_cfu_offer_set_token(FuStructCfuOffer *st, guint8 value)
341
24
{
342
24
    g_return_if_fail(st != NULL);
343
24
    st->buf->data[3] = value;
344
24
}
345
/**
346
 * fu_struct_cfu_offer_set_version: (skip):
347
 **/
348
void
349
fu_struct_cfu_offer_set_version(FuStructCfuOffer *st, guint32 value)
350
24
{
351
24
    g_return_if_fail(st != NULL);
352
24
    fu_memwrite_uint32(st->buf->data + 4, value, G_LITTLE_ENDIAN);
353
24
}
354
/**
355
 * fu_struct_cfu_offer_set_compat_variant_mask: (skip):
356
 **/
357
void
358
fu_struct_cfu_offer_set_compat_variant_mask(FuStructCfuOffer *st, guint32 value)
359
24
{
360
24
    g_return_if_fail(st != NULL);
361
24
    fu_memwrite_uint32(st->buf->data + 8, value, G_LITTLE_ENDIAN);
362
24
}
363
/**
364
 * fu_struct_cfu_offer_set_flags2: (skip):
365
 **/
366
void
367
fu_struct_cfu_offer_set_flags2(FuStructCfuOffer *st, guint8 value)
368
24
{
369
24
    g_return_if_fail(st != NULL);
370
24
    st->buf->data[12] = value;
371
24
}
372
/**
373
 * fu_struct_cfu_offer_set_flags3: (skip):
374
 **/
375
void
376
fu_struct_cfu_offer_set_flags3(FuStructCfuOffer *st, guint8 value)
377
24
{
378
24
    g_return_if_fail(st != NULL);
379
24
    st->buf->data[13] = value;
380
24
}
381
/**
382
 * fu_struct_cfu_offer_set_product_id: (skip):
383
 **/
384
void
385
fu_struct_cfu_offer_set_product_id(FuStructCfuOffer *st, guint16 value)
386
24
{
387
24
    g_return_if_fail(st != NULL);
388
24
    fu_memwrite_uint16(st->buf->data + 14, value, G_LITTLE_ENDIAN);
389
24
}
390
/**
391
 * fu_struct_cfu_offer_new: (skip):
392
 **/
393
FuStructCfuOffer *
394
fu_struct_cfu_offer_new(void)
395
24
{
396
24
    FuStructCfuOffer *st = fu_struct_cfu_offer_new_internal();
397
24
    st->buf = g_byte_array_sized_new(16);
398
24
    fu_byte_array_set_size(st->buf, 16, 0x0);
399
24
    return st;
400
24
}
401
/**
402
 * fu_struct_cfu_offer_to_string: (skip):
403
 **/
404
static gchar *
405
fu_struct_cfu_offer_to_string(const FuStructCfuOffer *st)
406
0
{
407
0
    g_autoptr(GString) str = g_string_new("FuStructCfuOffer:\n");
408
0
    g_return_val_if_fail(st != NULL, NULL);
409
0
    g_string_append_printf(str, "  segment_number: 0x%x\n",
410
0
                           (guint) fu_struct_cfu_offer_get_segment_number(st));
411
0
    g_string_append_printf(str, "  flags1: 0x%x\n",
412
0
                           (guint) fu_struct_cfu_offer_get_flags1(st));
413
0
    {
414
0
        const gchar *tmp = fu_cfu_offer_component_id_to_string(fu_struct_cfu_offer_get_component_id(st));
415
0
        if (tmp != NULL) {
416
0
            g_string_append_printf(str, "  component_id: 0x%x [%s]\n", (guint) fu_struct_cfu_offer_get_component_id(st), tmp);
417
0
        } else {
418
0
            g_string_append_printf(str, "  component_id: 0x%x\n", (guint) fu_struct_cfu_offer_get_component_id(st));
419
0
        }
420
0
    }
421
0
    g_string_append_printf(str, "  token: 0x%x\n",
422
0
                           (guint) fu_struct_cfu_offer_get_token(st));
423
0
    g_string_append_printf(str, "  version: 0x%x\n",
424
0
                           (guint) fu_struct_cfu_offer_get_version(st));
425
0
    g_string_append_printf(str, "  compat_variant_mask: 0x%x\n",
426
0
                           (guint) fu_struct_cfu_offer_get_compat_variant_mask(st));
427
0
    g_string_append_printf(str, "  flags2: 0x%x\n",
428
0
                           (guint) fu_struct_cfu_offer_get_flags2(st));
429
0
    g_string_append_printf(str, "  flags3: 0x%x\n",
430
0
                           (guint) fu_struct_cfu_offer_get_flags3(st));
431
0
    g_string_append_printf(str, "  product_id: 0x%x\n",
432
0
                           (guint) fu_struct_cfu_offer_get_product_id(st));
433
0
    if (str->len > 0)
434
0
        g_string_set_size(str, str->len - 1);
435
0
    return g_string_free(g_steal_pointer(&str), FALSE);
436
0
}
437
static gboolean
438
fu_struct_cfu_offer_validate_internal(FuStructCfuOffer *st, GError **error)
439
83
{
440
83
    g_return_val_if_fail(st != NULL, FALSE);
441
83
    return TRUE;
442
83
}
443
static gboolean
444
fu_struct_cfu_offer_parse_internal(FuStructCfuOffer *st, GError **error)
445
83
{
446
83
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
447
0
        g_autofree gchar *str = fu_struct_cfu_offer_to_string(st);
448
0
        g_debug("%s", str);
449
0
    }
450
83
    if (!fu_struct_cfu_offer_validate_internal(st, error))
451
0
        return FALSE;
452
83
    return TRUE;
453
83
}
454
/**
455
 * fu_struct_cfu_offer_parse_stream: (skip):
456
 **/
457
FuStructCfuOffer *
458
fu_struct_cfu_offer_parse_stream(GInputStream *stream, gsize offset, GError **error)
459
89
{
460
89
    g_autoptr(FuStructCfuOffer) st = fu_struct_cfu_offer_new_internal();
461
89
    st->buf = fu_input_stream_read_byte_array(stream, offset, 16, NULL, error);
462
89
    if (st->buf == NULL) {
463
0
        g_prefix_error(error, "FuStructCfuOffer failed read of 0x%x: ", (guint) 16);
464
0
        return NULL;
465
0
    }
466
89
    if (st->buf->len != 16) {
467
6
        g_set_error(error,
468
6
                    FWUPD_ERROR,
469
6
                    FWUPD_ERROR_INVALID_DATA,
470
6
                    "FuStructCfuOffer requested 0x%x and got 0x%x",
471
6
                    (guint) 16,
472
6
                    (guint) st->buf->len);
473
6
        return NULL;
474
6
    }
475
83
    if (!fu_struct_cfu_offer_parse_internal(st, error))
476
0
        return NULL;
477
83
    return g_steal_pointer(&st);
478
83
}