Coverage Report

Created: 2026-04-12 07:04

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