Coverage Report

Created: 2025-11-24 06:59

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