Coverage Report

Created: 2025-07-01 07:09

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