Coverage Report

Created: 2026-01-09 07:21

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