Coverage Report

Created: 2026-06-15 06:54

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.83M
{
57
1.83M
    g_return_if_fail(st != NULL);
58
1.83M
    if (st->refcount == 0) {
59
0
        g_critical("FuStructCfuPayload refcount already zero");
60
0
        return;
61
0
    }
62
1.83M
    if (--st->refcount > 0)
63
0
        return;
64
1.83M
    if (st->buf != NULL)
65
1.83M
        g_byte_array_unref(st->buf);
66
1.83M
    g_free(st);
67
1.83M
}
68
/**
69
 * fu_struct_cfu_payload_new_internal: (skip):
70
 **/
71
static FuStructCfuPayload *
72
fu_struct_cfu_payload_new_internal(void)
73
1.83M
{
74
1.83M
    FuStructCfuPayload *st = g_new0(FuStructCfuPayload, 1);
75
1.83M
    st->refcount = 1;
76
1.83M
    return st;
77
1.83M
}
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
770k
{
86
770k
    g_return_val_if_fail(st != NULL, 0x0);
87
770k
    return fu_memread_uint32(st->buf->data + 0, G_LITTLE_ENDIAN);
88
770k
}
89
/**
90
 * fu_struct_cfu_payload_get_size: (skip):
91
 **/
92
guint8
93
fu_struct_cfu_payload_get_size(const FuStructCfuPayload *st)
94
770k
{
95
770k
    g_return_val_if_fail(st != NULL, 0x0);
96
770k
    return st->buf->data[4];
97
770k
}
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.06M
{
106
1.06M
    g_return_if_fail(st != NULL);
107
1.06M
    fu_memwrite_uint32(st->buf->data + 0, value, G_LITTLE_ENDIAN);
108
1.06M
}
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.06M
{
115
1.06M
    g_return_if_fail(st != NULL);
116
1.06M
    st->buf->data[4] = value;
117
1.06M
}
118
/**
119
 * fu_struct_cfu_payload_new: (skip):
120
 **/
121
FuStructCfuPayload *
122
fu_struct_cfu_payload_new(void)
123
1.06M
{
124
1.06M
    FuStructCfuPayload *st = fu_struct_cfu_payload_new_internal();
125
1.06M
    st->buf = g_byte_array_sized_new(5);
126
1.06M
    fu_byte_array_set_size(st->buf, 5, 0x0);
127
1.06M
    return st;
128
1.06M
}
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_parse_internal(FuStructCfuPayload *st, GError **error)
147
770k
{
148
770k
    if (g_log_get_debug_enabled()) {
149
0
        g_autofree gchar *str = fu_struct_cfu_payload_to_string(st);
150
0
        g_debug("%s", str);
151
0
    }
152
770k
    return TRUE;
153
770k
}
154
/**
155
 * fu_struct_cfu_payload_parse_stream: (skip):
156
 **/
157
FuStructCfuPayload *
158
fu_struct_cfu_payload_parse_stream(GInputStream *stream, gsize offset, GError **error)
159
770k
{
160
770k
    g_autoptr(FuStructCfuPayload) st = fu_struct_cfu_payload_new_internal();
161
770k
    st->buf = fu_input_stream_read_byte_array(stream, offset, 5, NULL, error);
162
770k
    if (st->buf == NULL) {
163
0
        g_prefix_error(error, "FuStructCfuPayload failed read of 0x%x: ", (guint) 5);
164
0
        return NULL;
165
0
    }
166
770k
    if (st->buf->len != 5) {
167
28
        g_set_error(error,
168
28
                    FWUPD_ERROR,
169
28
                    FWUPD_ERROR_INVALID_DATA,
170
28
                    "FuStructCfuPayload requested 0x%x and got 0x%x",
171
28
                    (guint) 5,
172
28
                    (guint) st->buf->len);
173
28
        return NULL;
174
28
    }
175
770k
    if (!fu_struct_cfu_payload_parse_internal(st, error))
176
0
        return NULL;
177
770k
    return g_steal_pointer(&st);
178
770k
}
179
/**
180
 * fu_struct_cfu_offer_ref: (skip):
181
 **/
182
FuStructCfuOffer *
183
fu_struct_cfu_offer_ref(FuStructCfuOffer *st)
184
0
{
185
0
    g_return_val_if_fail(st != NULL, NULL);
186
0
    st->refcount++;
187
0
    return st;
188
0
}
189
/**
190
 * fu_struct_cfu_offer_unref: (skip):
191
 **/
192
void
193
fu_struct_cfu_offer_unref(FuStructCfuOffer *st)
194
107
{
195
107
    g_return_if_fail(st != NULL);
196
107
    if (st->refcount == 0) {
197
0
        g_critical("FuStructCfuOffer refcount already zero");
198
0
        return;
199
0
    }
200
107
    if (--st->refcount > 0)
201
0
        return;
202
107
    if (st->buf != NULL)
203
81
        g_byte_array_unref(st->buf);
204
107
    g_free(st);
205
107
}
206
/**
207
 * fu_struct_cfu_offer_new_internal: (skip):
208
 **/
209
static FuStructCfuOffer *
210
fu_struct_cfu_offer_new_internal(void)
211
107
{
212
107
    FuStructCfuOffer *st = g_new0(FuStructCfuOffer, 1);
213
107
    st->refcount = 1;
214
107
    return st;
215
107
}
216
217
/* getters */
218
/**
219
 * fu_struct_cfu_offer_get_segment_number: (skip):
220
 **/
221
guint8
222
fu_struct_cfu_offer_get_segment_number(const FuStructCfuOffer *st)
223
74
{
224
74
    g_return_val_if_fail(st != NULL, 0x0);
225
74
    return st->buf->data[0];
226
74
}
227
/**
228
 * fu_struct_cfu_offer_get_flags1: (skip):
229
 **/
230
guint8
231
fu_struct_cfu_offer_get_flags1(const FuStructCfuOffer *st)
232
74
{
233
74
    g_return_val_if_fail(st != NULL, 0x0);
234
74
    return st->buf->data[1];
235
74
}
236
/**
237
 * fu_struct_cfu_offer_get_component_id: (skip):
238
 **/
239
FuCfuOfferComponentId
240
fu_struct_cfu_offer_get_component_id(const FuStructCfuOffer *st)
241
74
{
242
74
    g_return_val_if_fail(st != NULL, 0x0);
243
74
    return st->buf->data[2];
244
74
}
245
/**
246
 * fu_struct_cfu_offer_get_token: (skip):
247
 **/
248
guint8
249
fu_struct_cfu_offer_get_token(const FuStructCfuOffer *st)
250
74
{
251
74
    g_return_val_if_fail(st != NULL, 0x0);
252
74
    return st->buf->data[3];
253
74
}
254
/**
255
 * fu_struct_cfu_offer_get_version: (skip):
256
 **/
257
guint32
258
fu_struct_cfu_offer_get_version(const FuStructCfuOffer *st)
259
74
{
260
74
    g_return_val_if_fail(st != NULL, 0x0);
261
74
    return fu_memread_uint32(st->buf->data + 4, G_LITTLE_ENDIAN);
262
74
}
263
/**
264
 * fu_struct_cfu_offer_get_compat_variant_mask: (skip):
265
 **/
266
guint32
267
fu_struct_cfu_offer_get_compat_variant_mask(const FuStructCfuOffer *st)
268
74
{
269
74
    g_return_val_if_fail(st != NULL, 0x0);
270
74
    return fu_memread_uint32(st->buf->data + 8, G_LITTLE_ENDIAN);
271
74
}
272
/**
273
 * fu_struct_cfu_offer_get_flags2: (skip):
274
 **/
275
guint8
276
fu_struct_cfu_offer_get_flags2(const FuStructCfuOffer *st)
277
74
{
278
74
    g_return_val_if_fail(st != NULL, 0x0);
279
74
    return st->buf->data[12];
280
74
}
281
/**
282
 * fu_struct_cfu_offer_get_flags3: (skip):
283
 **/
284
guint8
285
fu_struct_cfu_offer_get_flags3(const FuStructCfuOffer *st)
286
74
{
287
74
    g_return_val_if_fail(st != NULL, 0x0);
288
74
    return st->buf->data[13];
289
74
}
290
/**
291
 * fu_struct_cfu_offer_get_product_id: (skip):
292
 **/
293
guint16
294
fu_struct_cfu_offer_get_product_id(const FuStructCfuOffer *st)
295
74
{
296
74
    g_return_val_if_fail(st != NULL, 0x0);
297
74
    return fu_memread_uint16(st->buf->data + 14, G_LITTLE_ENDIAN);
298
74
}
299
300
/* setters */
301
/**
302
 * fu_struct_cfu_offer_set_segment_number: (skip):
303
 **/
304
void
305
fu_struct_cfu_offer_set_segment_number(FuStructCfuOffer *st, guint8 value)
306
26
{
307
26
    g_return_if_fail(st != NULL);
308
26
    st->buf->data[0] = value;
309
26
}
310
/**
311
 * fu_struct_cfu_offer_set_flags1: (skip):
312
 **/
313
void
314
fu_struct_cfu_offer_set_flags1(FuStructCfuOffer *st, guint8 value)
315
26
{
316
26
    g_return_if_fail(st != NULL);
317
26
    st->buf->data[1] = value;
318
26
}
319
/**
320
 * fu_struct_cfu_offer_set_component_id: (skip):
321
 **/
322
void
323
fu_struct_cfu_offer_set_component_id(FuStructCfuOffer *st, FuCfuOfferComponentId value)
324
26
{
325
26
    g_return_if_fail(st != NULL);
326
26
    st->buf->data[2] = value;
327
26
}
328
/**
329
 * fu_struct_cfu_offer_set_token: (skip):
330
 **/
331
void
332
fu_struct_cfu_offer_set_token(FuStructCfuOffer *st, guint8 value)
333
26
{
334
26
    g_return_if_fail(st != NULL);
335
26
    st->buf->data[3] = value;
336
26
}
337
/**
338
 * fu_struct_cfu_offer_set_version: (skip):
339
 **/
340
void
341
fu_struct_cfu_offer_set_version(FuStructCfuOffer *st, guint32 value)
342
26
{
343
26
    g_return_if_fail(st != NULL);
344
26
    fu_memwrite_uint32(st->buf->data + 4, value, G_LITTLE_ENDIAN);
345
26
}
346
/**
347
 * fu_struct_cfu_offer_set_compat_variant_mask: (skip):
348
 **/
349
void
350
fu_struct_cfu_offer_set_compat_variant_mask(FuStructCfuOffer *st, guint32 value)
351
26
{
352
26
    g_return_if_fail(st != NULL);
353
26
    fu_memwrite_uint32(st->buf->data + 8, value, G_LITTLE_ENDIAN);
354
26
}
355
/**
356
 * fu_struct_cfu_offer_set_flags2: (skip):
357
 **/
358
void
359
fu_struct_cfu_offer_set_flags2(FuStructCfuOffer *st, guint8 value)
360
26
{
361
26
    g_return_if_fail(st != NULL);
362
26
    st->buf->data[12] = value;
363
26
}
364
/**
365
 * fu_struct_cfu_offer_set_flags3: (skip):
366
 **/
367
void
368
fu_struct_cfu_offer_set_flags3(FuStructCfuOffer *st, guint8 value)
369
26
{
370
26
    g_return_if_fail(st != NULL);
371
26
    st->buf->data[13] = value;
372
26
}
373
/**
374
 * fu_struct_cfu_offer_set_product_id: (skip):
375
 **/
376
void
377
fu_struct_cfu_offer_set_product_id(FuStructCfuOffer *st, guint16 value)
378
26
{
379
26
    g_return_if_fail(st != NULL);
380
26
    fu_memwrite_uint16(st->buf->data + 14, value, G_LITTLE_ENDIAN);
381
26
}
382
/**
383
 * fu_struct_cfu_offer_new: (skip):
384
 **/
385
FuStructCfuOffer *
386
fu_struct_cfu_offer_new(void)
387
26
{
388
26
    FuStructCfuOffer *st = fu_struct_cfu_offer_new_internal();
389
26
    st->buf = g_byte_array_sized_new(16);
390
26
    fu_byte_array_set_size(st->buf, 16, 0x0);
391
26
    return st;
392
26
}
393
/**
394
 * fu_struct_cfu_offer_to_string: (skip):
395
 **/
396
static gchar *
397
fu_struct_cfu_offer_to_string(const FuStructCfuOffer *st)
398
0
{
399
0
    g_autoptr(GString) str = g_string_new("FuStructCfuOffer:\n");
400
0
    g_return_val_if_fail(st != NULL, NULL);
401
0
    g_string_append_printf(str, "  segment_number: 0x%x\n",
402
0
                           (guint) fu_struct_cfu_offer_get_segment_number(st));
403
0
    g_string_append_printf(str, "  flags1: 0x%x\n",
404
0
                           (guint) fu_struct_cfu_offer_get_flags1(st));
405
0
    {
406
0
        const gchar *tmp = fu_cfu_offer_component_id_to_string(fu_struct_cfu_offer_get_component_id(st));
407
0
        if (tmp != NULL) {
408
0
            g_string_append_printf(str, "  component_id: 0x%x [%s]\n", (guint) fu_struct_cfu_offer_get_component_id(st), tmp);
409
0
        } else {
410
0
            g_string_append_printf(str, "  component_id: 0x%x\n", (guint) fu_struct_cfu_offer_get_component_id(st));
411
0
        }
412
0
    }
413
0
    g_string_append_printf(str, "  token: 0x%x\n",
414
0
                           (guint) fu_struct_cfu_offer_get_token(st));
415
0
    g_string_append_printf(str, "  version: 0x%x\n",
416
0
                           (guint) fu_struct_cfu_offer_get_version(st));
417
0
    g_string_append_printf(str, "  compat_variant_mask: 0x%x\n",
418
0
                           (guint) fu_struct_cfu_offer_get_compat_variant_mask(st));
419
0
    g_string_append_printf(str, "  flags2: 0x%x\n",
420
0
                           (guint) fu_struct_cfu_offer_get_flags2(st));
421
0
    g_string_append_printf(str, "  flags3: 0x%x\n",
422
0
                           (guint) fu_struct_cfu_offer_get_flags3(st));
423
0
    g_string_append_printf(str, "  product_id: 0x%x\n",
424
0
                           (guint) fu_struct_cfu_offer_get_product_id(st));
425
0
    if (str->len > 0)
426
0
        g_string_set_size(str, str->len - 1);
427
0
    return g_string_free(g_steal_pointer(&str), FALSE);
428
0
}
429
static gboolean
430
fu_struct_cfu_offer_parse_internal(FuStructCfuOffer *st, GError **error)
431
74
{
432
74
    if (g_log_get_debug_enabled()) {
433
0
        g_autofree gchar *str = fu_struct_cfu_offer_to_string(st);
434
0
        g_debug("%s", str);
435
0
    }
436
74
    return TRUE;
437
74
}
438
/**
439
 * fu_struct_cfu_offer_parse_stream: (skip):
440
 **/
441
FuStructCfuOffer *
442
fu_struct_cfu_offer_parse_stream(GInputStream *stream, gsize offset, GError **error)
443
81
{
444
81
    g_autoptr(FuStructCfuOffer) st = fu_struct_cfu_offer_new_internal();
445
81
    st->buf = fu_input_stream_read_byte_array(stream, offset, 16, NULL, error);
446
81
    if (st->buf == NULL) {
447
0
        g_prefix_error(error, "FuStructCfuOffer failed read of 0x%x: ", (guint) 16);
448
0
        return NULL;
449
0
    }
450
81
    if (st->buf->len != 16) {
451
7
        g_set_error(error,
452
7
                    FWUPD_ERROR,
453
7
                    FWUPD_ERROR_INVALID_DATA,
454
7
                    "FuStructCfuOffer requested 0x%x and got 0x%x",
455
7
                    (guint) 16,
456
7
                    (guint) st->buf->len);
457
7
        return NULL;
458
7
    }
459
74
    if (!fu_struct_cfu_offer_parse_internal(st, error))
460
0
        return NULL;
461
74
    return g_steal_pointer(&st);
462
74
}