Coverage Report

Created: 2025-11-11 06:44

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