Coverage Report

Created: 2026-02-26 06:27

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.63M
{
57
1.63M
    g_return_if_fail(st != NULL);
58
1.63M
    if (st->refcount == 0) {
59
0
        g_critical("FuStructCfuPayload refcount already zero");
60
0
        return;
61
0
    }
62
1.63M
    if (--st->refcount > 0)
63
0
        return;
64
1.63M
    if (st->buf != NULL)
65
1.63M
        g_byte_array_unref(st->buf);
66
1.63M
    g_free(st);
67
1.63M
}
68
/**
69
 * fu_struct_cfu_payload_new_internal: (skip):
70
 **/
71
static FuStructCfuPayload *
72
fu_struct_cfu_payload_new_internal(void)
73
1.63M
{
74
1.63M
    FuStructCfuPayload *st = g_new0(FuStructCfuPayload, 1);
75
1.63M
    st->refcount = 1;
76
1.63M
    return st;
77
1.63M
}
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
772k
{
86
772k
    g_return_val_if_fail(st != NULL, 0x0);
87
772k
    return fu_memread_uint32(st->buf->data + 0, G_LITTLE_ENDIAN);
88
772k
}
89
/**
90
 * fu_struct_cfu_payload_get_size: (skip):
91
 **/
92
guint8
93
fu_struct_cfu_payload_get_size(const FuStructCfuPayload *st)
94
772k
{
95
772k
    g_return_val_if_fail(st != NULL, 0x0);
96
772k
    return st->buf->data[4];
97
772k
}
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
861k
{
106
861k
    g_return_if_fail(st != NULL);
107
861k
    fu_memwrite_uint32(st->buf->data + 0, value, G_LITTLE_ENDIAN);
108
861k
}
109
/**
110
 * fu_struct_cfu_payload_set_size: (skip):
111
 **/
112
void
113
fu_struct_cfu_payload_set_size(FuStructCfuPayload *st, guint8 value)
114
861k
{
115
861k
    g_return_if_fail(st != NULL);
116
861k
    st->buf->data[4] = value;
117
861k
}
118
/**
119
 * fu_struct_cfu_payload_new: (skip):
120
 **/
121
FuStructCfuPayload *
122
fu_struct_cfu_payload_new(void)
123
861k
{
124
861k
    FuStructCfuPayload *st = fu_struct_cfu_payload_new_internal();
125
861k
    st->buf = g_byte_array_sized_new(5);
126
861k
    fu_byte_array_set_size(st->buf, 5, 0x0);
127
861k
    return st;
128
861k
}
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
772k
{
148
772k
    g_return_val_if_fail(st != NULL, FALSE);
149
772k
    return TRUE;
150
772k
}
151
static gboolean
152
fu_struct_cfu_payload_parse_internal(FuStructCfuPayload *st, GError **error)
153
772k
{
154
772k
    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
772k
    if (!fu_struct_cfu_payload_validate_internal(st, error))
159
0
        return FALSE;
160
772k
    return TRUE;
161
772k
}
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
772k
{
168
772k
    g_autoptr(FuStructCfuPayload) st = fu_struct_cfu_payload_new_internal();
169
772k
    st->buf = fu_input_stream_read_byte_array(stream, offset, 5, NULL, error);
170
772k
    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
772k
    if (st->buf->len != 5) {
175
31
        g_set_error(error,
176
31
                    FWUPD_ERROR,
177
31
                    FWUPD_ERROR_INVALID_DATA,
178
31
                    "FuStructCfuPayload requested 0x%x and got 0x%x",
179
31
                    (guint) 5,
180
31
                    (guint) st->buf->len);
181
31
        return NULL;
182
31
    }
183
772k
    if (!fu_struct_cfu_payload_parse_internal(st, error))
184
0
        return NULL;
185
772k
    return g_steal_pointer(&st);
186
772k
}
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
94
{
203
94
    g_return_if_fail(st != NULL);
204
94
    if (st->refcount == 0) {
205
0
        g_critical("FuStructCfuOffer refcount already zero");
206
0
        return;
207
0
    }
208
94
    if (--st->refcount > 0)
209
0
        return;
210
94
    if (st->buf != NULL)
211
76
        g_byte_array_unref(st->buf);
212
94
    g_free(st);
213
94
}
214
/**
215
 * fu_struct_cfu_offer_new_internal: (skip):
216
 **/
217
static FuStructCfuOffer *
218
fu_struct_cfu_offer_new_internal(void)
219
94
{
220
94
    FuStructCfuOffer *st = g_new0(FuStructCfuOffer, 1);
221
94
    st->refcount = 1;
222
94
    return st;
223
94
}
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
71
{
232
71
    g_return_val_if_fail(st != NULL, 0x0);
233
71
    return st->buf->data[0];
234
71
}
235
/**
236
 * fu_struct_cfu_offer_get_flags1: (skip):
237
 **/
238
guint8
239
fu_struct_cfu_offer_get_flags1(const FuStructCfuOffer *st)
240
71
{
241
71
    g_return_val_if_fail(st != NULL, 0x0);
242
71
    return st->buf->data[1];
243
71
}
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
71
{
250
71
    g_return_val_if_fail(st != NULL, 0x0);
251
71
    return st->buf->data[2];
252
71
}
253
/**
254
 * fu_struct_cfu_offer_get_token: (skip):
255
 **/
256
guint8
257
fu_struct_cfu_offer_get_token(const FuStructCfuOffer *st)
258
71
{
259
71
    g_return_val_if_fail(st != NULL, 0x0);
260
71
    return st->buf->data[3];
261
71
}
262
/**
263
 * fu_struct_cfu_offer_get_version: (skip):
264
 **/
265
guint32
266
fu_struct_cfu_offer_get_version(const FuStructCfuOffer *st)
267
71
{
268
71
    g_return_val_if_fail(st != NULL, 0x0);
269
71
    return fu_memread_uint32(st->buf->data + 4, G_LITTLE_ENDIAN);
270
71
}
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
71
{
277
71
    g_return_val_if_fail(st != NULL, 0x0);
278
71
    return fu_memread_uint32(st->buf->data + 8, G_LITTLE_ENDIAN);
279
71
}
280
/**
281
 * fu_struct_cfu_offer_get_flags2: (skip):
282
 **/
283
guint8
284
fu_struct_cfu_offer_get_flags2(const FuStructCfuOffer *st)
285
71
{
286
71
    g_return_val_if_fail(st != NULL, 0x0);
287
71
    return st->buf->data[12];
288
71
}
289
/**
290
 * fu_struct_cfu_offer_get_flags3: (skip):
291
 **/
292
guint8
293
fu_struct_cfu_offer_get_flags3(const FuStructCfuOffer *st)
294
71
{
295
71
    g_return_val_if_fail(st != NULL, 0x0);
296
71
    return st->buf->data[13];
297
71
}
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
71
{
304
71
    g_return_val_if_fail(st != NULL, 0x0);
305
71
    return fu_memread_uint16(st->buf->data + 14, G_LITTLE_ENDIAN);
306
71
}
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
18
{
315
18
    g_return_if_fail(st != NULL);
316
18
    st->buf->data[0] = value;
317
18
}
318
/**
319
 * fu_struct_cfu_offer_set_flags1: (skip):
320
 **/
321
void
322
fu_struct_cfu_offer_set_flags1(FuStructCfuOffer *st, guint8 value)
323
18
{
324
18
    g_return_if_fail(st != NULL);
325
18
    st->buf->data[1] = value;
326
18
}
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
18
{
333
18
    g_return_if_fail(st != NULL);
334
18
    st->buf->data[2] = value;
335
18
}
336
/**
337
 * fu_struct_cfu_offer_set_token: (skip):
338
 **/
339
void
340
fu_struct_cfu_offer_set_token(FuStructCfuOffer *st, guint8 value)
341
18
{
342
18
    g_return_if_fail(st != NULL);
343
18
    st->buf->data[3] = value;
344
18
}
345
/**
346
 * fu_struct_cfu_offer_set_version: (skip):
347
 **/
348
void
349
fu_struct_cfu_offer_set_version(FuStructCfuOffer *st, guint32 value)
350
18
{
351
18
    g_return_if_fail(st != NULL);
352
18
    fu_memwrite_uint32(st->buf->data + 4, value, G_LITTLE_ENDIAN);
353
18
}
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
18
{
360
18
    g_return_if_fail(st != NULL);
361
18
    fu_memwrite_uint32(st->buf->data + 8, value, G_LITTLE_ENDIAN);
362
18
}
363
/**
364
 * fu_struct_cfu_offer_set_flags2: (skip):
365
 **/
366
void
367
fu_struct_cfu_offer_set_flags2(FuStructCfuOffer *st, guint8 value)
368
18
{
369
18
    g_return_if_fail(st != NULL);
370
18
    st->buf->data[12] = value;
371
18
}
372
/**
373
 * fu_struct_cfu_offer_set_flags3: (skip):
374
 **/
375
void
376
fu_struct_cfu_offer_set_flags3(FuStructCfuOffer *st, guint8 value)
377
18
{
378
18
    g_return_if_fail(st != NULL);
379
18
    st->buf->data[13] = value;
380
18
}
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
18
{
387
18
    g_return_if_fail(st != NULL);
388
18
    fu_memwrite_uint16(st->buf->data + 14, value, G_LITTLE_ENDIAN);
389
18
}
390
/**
391
 * fu_struct_cfu_offer_new: (skip):
392
 **/
393
FuStructCfuOffer *
394
fu_struct_cfu_offer_new(void)
395
18
{
396
18
    FuStructCfuOffer *st = fu_struct_cfu_offer_new_internal();
397
18
    st->buf = g_byte_array_sized_new(16);
398
18
    fu_byte_array_set_size(st->buf, 16, 0x0);
399
18
    return st;
400
18
}
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
71
{
440
71
    g_return_val_if_fail(st != NULL, FALSE);
441
71
    return TRUE;
442
71
}
443
static gboolean
444
fu_struct_cfu_offer_parse_internal(FuStructCfuOffer *st, GError **error)
445
71
{
446
71
    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
71
    if (!fu_struct_cfu_offer_validate_internal(st, error))
451
0
        return FALSE;
452
71
    return TRUE;
453
71
}
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
76
{
460
76
    g_autoptr(FuStructCfuOffer) st = fu_struct_cfu_offer_new_internal();
461
76
    st->buf = fu_input_stream_read_byte_array(stream, offset, 16, NULL, error);
462
76
    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
76
    if (st->buf->len != 16) {
467
5
        g_set_error(error,
468
5
                    FWUPD_ERROR,
469
5
                    FWUPD_ERROR_INVALID_DATA,
470
5
                    "FuStructCfuOffer requested 0x%x and got 0x%x",
471
5
                    (guint) 16,
472
5
                    (guint) st->buf->len);
473
5
        return NULL;
474
5
    }
475
71
    if (!fu_struct_cfu_offer_parse_internal(st, error))
476
0
        return NULL;
477
71
    return g_steal_pointer(&st);
478
71
}