Coverage Report

Created: 2025-08-26 06:55

/work/fu-heci-struct.c
Line
Count
Source (jump to first uncovered line)
1
/* auto-generated, do not modify */
2
#include "config.h"
3
4
#include "fu-heci-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
15
const gchar *
16
fu_mkhi_status_to_string(FuMkhiStatus val)
17
0
{
18
0
    if (val == FU_MKHI_STATUS_SUCCESS)
19
0
        return "success";
20
0
    if (val == FU_MKHI_STATUS_INVALID_STATE)
21
0
        return "invalid-state";
22
0
    if (val == FU_MKHI_STATUS_MESSAGE_SKIPPED)
23
0
        return "message-skipped";
24
0
    if (val == FU_MKHI_STATUS_SIZE_ERROR)
25
0
        return "size-error";
26
0
    if (val == FU_MKHI_STATUS_UNKNOWN_PERHAPS_NOT_SUPPORTED)
27
0
        return "unknown-perhaps-not-supported";
28
0
    if (val == FU_MKHI_STATUS_NOT_SET)
29
0
        return "not-set";
30
0
    if (val == FU_MKHI_STATUS_NOT_AVAILABLE)
31
0
        return "not-available";
32
0
    if (val == FU_MKHI_STATUS_INVALID_ACCESS)
33
0
        return "invalid-access";
34
0
    if (val == FU_MKHI_STATUS_INVALID_PARAMS)
35
0
        return "invalid-params";
36
0
    if (val == FU_MKHI_STATUS_NOT_READY)
37
0
        return "not-ready";
38
0
    if (val == FU_MKHI_STATUS_NOT_SUPPORTED)
39
0
        return "not-supported";
40
0
    if (val == FU_MKHI_STATUS_INVALID_ADDRESS)
41
0
        return "invalid-address";
42
0
    if (val == FU_MKHI_STATUS_INVALID_COMMAND)
43
0
        return "invalid-command";
44
0
    if (val == FU_MKHI_STATUS_FAILURE)
45
0
        return "failure";
46
0
    if (val == FU_MKHI_STATUS_INVALID_RESOURCE)
47
0
        return "invalid-resource";
48
0
    if (val == FU_MKHI_STATUS_RESOURCE_IN_USE)
49
0
        return "resource-in-use";
50
0
    if (val == FU_MKHI_STATUS_NO_RESOURCE)
51
0
        return "no-resource";
52
0
    if (val == FU_MKHI_STATUS_GENERAL_ERROR)
53
0
        return "general-error";
54
0
    return NULL;
55
0
}
56
57
58
static const gchar *
59
fu_mkhi_arbh_svn_info_entry_usage_id_to_string(FuMkhiArbhSvnInfoEntryUsageId val)
60
0
{
61
0
    if (val == FU_MKHI_ARBH_SVN_INFO_ENTRY_USAGE_ID_CSE_RBE)
62
0
        return "cse-rbe";
63
0
    return NULL;
64
0
}
65
/* getters */
66
67
/* setters */
68
/**
69
 * fu_mkhi_read_file_request_set_group_id: (skip):
70
 **/
71
static void
72
fu_mkhi_read_file_request_set_group_id(FuMkhiReadFileRequest *st, FuMkhiGroupId value)
73
0
{
74
0
    g_return_if_fail(st != NULL);
75
0
    st->data[0] = value;
76
0
}
77
/**
78
 * fu_mkhi_read_file_request_set_command: (skip):
79
 **/
80
static void
81
fu_mkhi_read_file_request_set_command(FuMkhiReadFileRequest *st, FuMkhiCommand value)
82
0
{
83
0
    g_return_if_fail(st != NULL);
84
0
    st->data[1] = value;
85
0
}
86
/**
87
 * fu_mkhi_read_file_request_set_result: (skip):
88
 **/
89
static void
90
fu_mkhi_read_file_request_set_result(FuMkhiReadFileRequest *st, guint8 value)
91
0
{
92
0
    g_return_if_fail(st != NULL);
93
0
    st->data[3] = value;
94
0
}
95
/**
96
 * fu_mkhi_read_file_request_set_filename: (skip):
97
 **/
98
gboolean
99
fu_mkhi_read_file_request_set_filename(FuMkhiReadFileRequest *st, const gchar *value, GError **error)
100
0
{
101
0
    gsize len;
102
0
    g_return_val_if_fail(st != NULL, FALSE);
103
0
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
104
0
    if (value == NULL) {
105
0
        memset(st->data + 4, 0x0, 64);
106
0
        return TRUE;
107
0
    }
108
0
    len = strlen(value);
109
0
    if (len > 64) {
110
0
        g_set_error(error,
111
0
                    FWUPD_ERROR,
112
0
                    FWUPD_ERROR_INVALID_DATA,
113
0
                    "string '%s' (0x%x bytes) does not fit in FuMkhiReadFileRequest.filename (0x%x bytes)",
114
0
                    value, (guint) len, (guint) 64);
115
0
        return FALSE;
116
0
    }
117
0
    return fu_memcpy_safe(st->data, st->len, 4, (const guint8 *)value, len, 0x0, len, error);
118
0
}
119
/**
120
 * fu_mkhi_read_file_request_set_offset: (skip):
121
 **/
122
static void
123
fu_mkhi_read_file_request_set_offset(FuMkhiReadFileRequest *st, guint32 value)
124
0
{
125
0
    g_return_if_fail(st != NULL);
126
0
    fu_memwrite_uint32(st->data + 68, value, G_LITTLE_ENDIAN);
127
0
}
128
/**
129
 * fu_mkhi_read_file_request_set_data_size: (skip):
130
 **/
131
void
132
fu_mkhi_read_file_request_set_data_size(FuMkhiReadFileRequest *st, guint32 value)
133
0
{
134
0
    g_return_if_fail(st != NULL);
135
0
    fu_memwrite_uint32(st->data + 72, value, G_LITTLE_ENDIAN);
136
0
}
137
/**
138
 * fu_mkhi_read_file_request_set_flags: (skip):
139
 **/
140
void
141
fu_mkhi_read_file_request_set_flags(FuMkhiReadFileRequest *st, guint8 value)
142
0
{
143
0
    g_return_if_fail(st != NULL);
144
0
    st->data[76] = value;
145
0
}
146
/**
147
 * fu_mkhi_read_file_request_new: (skip):
148
 **/
149
FuMkhiReadFileRequest *
150
fu_mkhi_read_file_request_new(void)
151
0
{
152
0
    FuMkhiReadFileRequest *st = g_byte_array_sized_new(77);
153
0
    fu_byte_array_set_size(st, 77, 0x0);
154
0
    fu_mkhi_read_file_request_set_group_id(st, FU_MKHI_GROUP_ID_MCA);
155
0
    fu_mkhi_read_file_request_set_command(st, FU_MKHI_COMMAND_READ_FILE);
156
0
    fu_mkhi_read_file_request_set_result(st, 0x0);
157
0
    fu_mkhi_read_file_request_set_offset(st, 0x0);
158
0
    return st;
159
0
}
160
/* getters */
161
/**
162
 * fu_mkhi_read_file_response_get_group_id: (skip):
163
 **/
164
static FuMkhiGroupId
165
fu_mkhi_read_file_response_get_group_id(const FuMkhiReadFileResponse *st)
166
0
{
167
0
    g_return_val_if_fail(st != NULL, 0x0);
168
0
    return st->data[0];
169
0
}
170
/**
171
 * fu_mkhi_read_file_response_get_command: (skip):
172
 **/
173
static FuMkhiCommand
174
fu_mkhi_read_file_response_get_command(const FuMkhiReadFileResponse *st)
175
0
{
176
0
    g_return_val_if_fail(st != NULL, 0x0);
177
0
    return st->data[1];
178
0
}
179
/**
180
 * fu_mkhi_read_file_response_get_result: (skip):
181
 **/
182
guint8
183
fu_mkhi_read_file_response_get_result(const FuMkhiReadFileResponse *st)
184
0
{
185
0
    g_return_val_if_fail(st != NULL, 0x0);
186
0
    return st->data[3];
187
0
}
188
/**
189
 * fu_mkhi_read_file_response_get_data_size: (skip):
190
 **/
191
guint32
192
fu_mkhi_read_file_response_get_data_size(const FuMkhiReadFileResponse *st)
193
0
{
194
0
    g_return_val_if_fail(st != NULL, 0x0);
195
0
    return fu_memread_uint32(st->data + 4, G_LITTLE_ENDIAN);
196
0
}
197
198
/* setters */
199
/**
200
 * fu_mkhi_read_file_response_to_string: (skip):
201
 **/
202
static gchar *
203
fu_mkhi_read_file_response_to_string(const FuMkhiReadFileResponse *st)
204
0
{
205
0
    g_autoptr(GString) str = g_string_new("FuMkhiReadFileResponse:\n");
206
0
    g_return_val_if_fail(st != NULL, NULL);
207
0
    g_string_append_printf(str, "  result: 0x%x\n",
208
0
                           (guint) fu_mkhi_read_file_response_get_result(st));
209
0
    g_string_append_printf(str, "  data_size: 0x%x\n",
210
0
                           (guint) fu_mkhi_read_file_response_get_data_size(st));
211
0
    if (str->len > 0)
212
0
        g_string_set_size(str, str->len - 1);
213
0
    return g_string_free(g_steal_pointer(&str), FALSE);
214
0
}
215
static gboolean
216
fu_mkhi_read_file_response_validate_internal(FuMkhiReadFileResponse *st, GError **error)
217
0
{
218
0
    g_return_val_if_fail(st != NULL, FALSE);
219
0
    if (fu_mkhi_read_file_response_get_group_id(st) != FU_MKHI_GROUP_ID_MCA) {
220
0
        g_set_error_literal(error,
221
0
                            FWUPD_ERROR,
222
0
                            FWUPD_ERROR_INVALID_DATA,
223
0
                            "constant FuMkhiReadFileResponse.group_id was not valid");
224
0
        return FALSE;
225
0
    }
226
0
    if (fu_mkhi_read_file_response_get_command(st) != FU_MKHI_COMMAND_READ_FILE_RESPONSE) {
227
0
        g_set_error_literal(error,
228
0
                            FWUPD_ERROR,
229
0
                            FWUPD_ERROR_INVALID_DATA,
230
0
                            "constant FuMkhiReadFileResponse.command was not valid");
231
0
        return FALSE;
232
0
    }
233
0
    return TRUE;
234
0
}
235
static gboolean
236
fu_mkhi_read_file_response_parse_internal(FuMkhiReadFileResponse *st, GError **error)
237
0
{
238
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
239
0
        g_autofree gchar *str = fu_mkhi_read_file_response_to_string(st);
240
0
        g_debug("%s", str);
241
0
    }
242
0
    if (!fu_mkhi_read_file_response_validate_internal(st, error))
243
0
        return FALSE;
244
0
    return TRUE;
245
0
}
246
247
/**
248
 * fu_mkhi_read_file_response_parse: (skip):
249
 **/
250
FuMkhiReadFileResponse *
251
fu_mkhi_read_file_response_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
252
0
{
253
0
    g_autoptr(GByteArray) st = g_byte_array_new();
254
0
    g_return_val_if_fail(buf != NULL, NULL);
255
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
256
0
    if (!fu_memchk_read(bufsz, offset, 8, error)) {
257
0
        g_prefix_error_literal(error, "invalid struct FuMkhiReadFileResponse: ");
258
0
        return NULL;
259
0
    }
260
0
    g_byte_array_append(st, buf + offset, 8);
261
0
    if (!fu_mkhi_read_file_response_parse_internal(st, error))
262
0
        return NULL;
263
0
    return g_steal_pointer(&st);
264
0
}
265
/* getters */
266
267
/* setters */
268
/**
269
 * fu_mkhi_read_file_ex_request_set_group_id: (skip):
270
 **/
271
static void
272
fu_mkhi_read_file_ex_request_set_group_id(FuMkhiReadFileExRequest *st, FuMkhiGroupId value)
273
0
{
274
0
    g_return_if_fail(st != NULL);
275
0
    st->data[0] = value;
276
0
}
277
/**
278
 * fu_mkhi_read_file_ex_request_set_command: (skip):
279
 **/
280
static void
281
fu_mkhi_read_file_ex_request_set_command(FuMkhiReadFileExRequest *st, FuMkhiCommand value)
282
0
{
283
0
    g_return_if_fail(st != NULL);
284
0
    st->data[1] = value;
285
0
}
286
/**
287
 * fu_mkhi_read_file_ex_request_set_result: (skip):
288
 **/
289
static void
290
fu_mkhi_read_file_ex_request_set_result(FuMkhiReadFileExRequest *st, guint8 value)
291
0
{
292
0
    g_return_if_fail(st != NULL);
293
0
    st->data[3] = value;
294
0
}
295
/**
296
 * fu_mkhi_read_file_ex_request_set_file_id: (skip):
297
 **/
298
void
299
fu_mkhi_read_file_ex_request_set_file_id(FuMkhiReadFileExRequest *st, guint32 value)
300
0
{
301
0
    g_return_if_fail(st != NULL);
302
0
    fu_memwrite_uint32(st->data + 4, value, G_LITTLE_ENDIAN);
303
0
}
304
/**
305
 * fu_mkhi_read_file_ex_request_set_offset: (skip):
306
 **/
307
static void
308
fu_mkhi_read_file_ex_request_set_offset(FuMkhiReadFileExRequest *st, guint32 value)
309
0
{
310
0
    g_return_if_fail(st != NULL);
311
0
    fu_memwrite_uint32(st->data + 8, value, G_LITTLE_ENDIAN);
312
0
}
313
/**
314
 * fu_mkhi_read_file_ex_request_set_data_size: (skip):
315
 **/
316
void
317
fu_mkhi_read_file_ex_request_set_data_size(FuMkhiReadFileExRequest *st, guint32 value)
318
0
{
319
0
    g_return_if_fail(st != NULL);
320
0
    fu_memwrite_uint32(st->data + 12, value, G_LITTLE_ENDIAN);
321
0
}
322
/**
323
 * fu_mkhi_read_file_ex_request_set_flags: (skip):
324
 **/
325
void
326
fu_mkhi_read_file_ex_request_set_flags(FuMkhiReadFileExRequest *st, guint8 value)
327
0
{
328
0
    g_return_if_fail(st != NULL);
329
0
    st->data[16] = value;
330
0
}
331
/**
332
 * fu_mkhi_read_file_ex_request_new: (skip):
333
 **/
334
FuMkhiReadFileExRequest *
335
fu_mkhi_read_file_ex_request_new(void)
336
0
{
337
0
    FuMkhiReadFileExRequest *st = g_byte_array_sized_new(17);
338
0
    fu_byte_array_set_size(st, 17, 0x0);
339
0
    fu_mkhi_read_file_ex_request_set_group_id(st, FU_MKHI_GROUP_ID_MCA);
340
0
    fu_mkhi_read_file_ex_request_set_command(st, FU_MKHI_COMMAND_READ_FILE_EX);
341
0
    fu_mkhi_read_file_ex_request_set_result(st, 0x0);
342
0
    fu_mkhi_read_file_ex_request_set_offset(st, 0x0);
343
0
    return st;
344
0
}
345
/* getters */
346
/**
347
 * fu_mkhi_read_file_ex_response_get_group_id: (skip):
348
 **/
349
static FuMkhiGroupId
350
fu_mkhi_read_file_ex_response_get_group_id(const FuMkhiReadFileExResponse *st)
351
0
{
352
0
    g_return_val_if_fail(st != NULL, 0x0);
353
0
    return st->data[0];
354
0
}
355
/**
356
 * fu_mkhi_read_file_ex_response_get_command: (skip):
357
 **/
358
static FuMkhiCommand
359
fu_mkhi_read_file_ex_response_get_command(const FuMkhiReadFileExResponse *st)
360
0
{
361
0
    g_return_val_if_fail(st != NULL, 0x0);
362
0
    return st->data[1];
363
0
}
364
/**
365
 * fu_mkhi_read_file_ex_response_get_result: (skip):
366
 **/
367
guint8
368
fu_mkhi_read_file_ex_response_get_result(const FuMkhiReadFileExResponse *st)
369
0
{
370
0
    g_return_val_if_fail(st != NULL, 0x0);
371
0
    return st->data[3];
372
0
}
373
/**
374
 * fu_mkhi_read_file_ex_response_get_data_size: (skip):
375
 **/
376
guint32
377
fu_mkhi_read_file_ex_response_get_data_size(const FuMkhiReadFileExResponse *st)
378
0
{
379
0
    g_return_val_if_fail(st != NULL, 0x0);
380
0
    return fu_memread_uint32(st->data + 4, G_LITTLE_ENDIAN);
381
0
}
382
383
/* setters */
384
/**
385
 * fu_mkhi_read_file_ex_response_to_string: (skip):
386
 **/
387
static gchar *
388
fu_mkhi_read_file_ex_response_to_string(const FuMkhiReadFileExResponse *st)
389
0
{
390
0
    g_autoptr(GString) str = g_string_new("FuMkhiReadFileExResponse:\n");
391
0
    g_return_val_if_fail(st != NULL, NULL);
392
0
    g_string_append_printf(str, "  result: 0x%x\n",
393
0
                           (guint) fu_mkhi_read_file_ex_response_get_result(st));
394
0
    g_string_append_printf(str, "  data_size: 0x%x\n",
395
0
                           (guint) fu_mkhi_read_file_ex_response_get_data_size(st));
396
0
    if (str->len > 0)
397
0
        g_string_set_size(str, str->len - 1);
398
0
    return g_string_free(g_steal_pointer(&str), FALSE);
399
0
}
400
static gboolean
401
fu_mkhi_read_file_ex_response_validate_internal(FuMkhiReadFileExResponse *st, GError **error)
402
0
{
403
0
    g_return_val_if_fail(st != NULL, FALSE);
404
0
    if (fu_mkhi_read_file_ex_response_get_group_id(st) != FU_MKHI_GROUP_ID_MCA) {
405
0
        g_set_error_literal(error,
406
0
                            FWUPD_ERROR,
407
0
                            FWUPD_ERROR_INVALID_DATA,
408
0
                            "constant FuMkhiReadFileExResponse.group_id was not valid");
409
0
        return FALSE;
410
0
    }
411
0
    if (fu_mkhi_read_file_ex_response_get_command(st) != FU_MKHI_COMMAND_READ_FILE_EX_RESPONSE) {
412
0
        g_set_error_literal(error,
413
0
                            FWUPD_ERROR,
414
0
                            FWUPD_ERROR_INVALID_DATA,
415
0
                            "constant FuMkhiReadFileExResponse.command was not valid");
416
0
        return FALSE;
417
0
    }
418
0
    return TRUE;
419
0
}
420
static gboolean
421
fu_mkhi_read_file_ex_response_parse_internal(FuMkhiReadFileExResponse *st, GError **error)
422
0
{
423
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
424
0
        g_autofree gchar *str = fu_mkhi_read_file_ex_response_to_string(st);
425
0
        g_debug("%s", str);
426
0
    }
427
0
    if (!fu_mkhi_read_file_ex_response_validate_internal(st, error))
428
0
        return FALSE;
429
0
    return TRUE;
430
0
}
431
432
/**
433
 * fu_mkhi_read_file_ex_response_parse: (skip):
434
 **/
435
FuMkhiReadFileExResponse *
436
fu_mkhi_read_file_ex_response_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
437
0
{
438
0
    g_autoptr(GByteArray) st = g_byte_array_new();
439
0
    g_return_val_if_fail(buf != NULL, NULL);
440
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
441
0
    if (!fu_memchk_read(bufsz, offset, 8, error)) {
442
0
        g_prefix_error_literal(error, "invalid struct FuMkhiReadFileExResponse: ");
443
0
        return NULL;
444
0
    }
445
0
    g_byte_array_append(st, buf + offset, 8);
446
0
    if (!fu_mkhi_read_file_ex_response_parse_internal(st, error))
447
0
        return NULL;
448
0
    return g_steal_pointer(&st);
449
0
}
450
/* getters */
451
/**
452
 * fu_mkhi_arbh_svn_info_entry_get_usage_id: (skip):
453
 **/
454
FuMkhiArbhSvnInfoEntryUsageId
455
fu_mkhi_arbh_svn_info_entry_get_usage_id(const FuMkhiArbhSvnInfoEntry *st)
456
0
{
457
0
    g_return_val_if_fail(st != NULL, 0x0);
458
0
    return st->data[0];
459
0
}
460
/**
461
 * fu_mkhi_arbh_svn_info_entry_get_executing: (skip):
462
 **/
463
guint8
464
fu_mkhi_arbh_svn_info_entry_get_executing(const FuMkhiArbhSvnInfoEntry *st)
465
0
{
466
0
    g_return_val_if_fail(st != NULL, 0x0);
467
0
    return st->data[2];
468
0
}
469
/**
470
 * fu_mkhi_arbh_svn_info_entry_get_min_allowed: (skip):
471
 **/
472
guint8
473
fu_mkhi_arbh_svn_info_entry_get_min_allowed(const FuMkhiArbhSvnInfoEntry *st)
474
0
{
475
0
    g_return_val_if_fail(st != NULL, 0x0);
476
0
    return st->data[3];
477
0
}
478
479
/* setters */
480
/**
481
 * fu_mkhi_arbh_svn_info_entry_to_string: (skip):
482
 **/
483
static gchar *
484
fu_mkhi_arbh_svn_info_entry_to_string(const FuMkhiArbhSvnInfoEntry *st)
485
0
{
486
0
    g_autoptr(GString) str = g_string_new("FuMkhiArbhSvnInfoEntry:\n");
487
0
    g_return_val_if_fail(st != NULL, NULL);
488
0
    {
489
0
        const gchar *tmp = fu_mkhi_arbh_svn_info_entry_usage_id_to_string(fu_mkhi_arbh_svn_info_entry_get_usage_id(st));
490
0
        if (tmp != NULL) {
491
0
            g_string_append_printf(str, "  usage_id: 0x%x [%s]\n", (guint) fu_mkhi_arbh_svn_info_entry_get_usage_id(st), tmp);
492
0
        } else {
493
0
            g_string_append_printf(str, "  usage_id: 0x%x\n", (guint) fu_mkhi_arbh_svn_info_entry_get_usage_id(st));
494
0
        }
495
0
    }
496
0
    g_string_append_printf(str, "  executing: 0x%x\n",
497
0
                           (guint) fu_mkhi_arbh_svn_info_entry_get_executing(st));
498
0
    g_string_append_printf(str, "  min_allowed: 0x%x\n",
499
0
                           (guint) fu_mkhi_arbh_svn_info_entry_get_min_allowed(st));
500
0
    if (str->len > 0)
501
0
        g_string_set_size(str, str->len - 1);
502
0
    return g_string_free(g_steal_pointer(&str), FALSE);
503
0
}
504
static gboolean
505
fu_mkhi_arbh_svn_info_entry_validate_internal(FuMkhiArbhSvnInfoEntry *st, GError **error)
506
0
{
507
0
    g_return_val_if_fail(st != NULL, FALSE);
508
0
    return TRUE;
509
0
}
510
static gboolean
511
fu_mkhi_arbh_svn_info_entry_parse_internal(FuMkhiArbhSvnInfoEntry *st, GError **error)
512
0
{
513
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
514
0
        g_autofree gchar *str = fu_mkhi_arbh_svn_info_entry_to_string(st);
515
0
        g_debug("%s", str);
516
0
    }
517
0
    if (!fu_mkhi_arbh_svn_info_entry_validate_internal(st, error))
518
0
        return FALSE;
519
0
    return TRUE;
520
0
}
521
522
/**
523
 * fu_mkhi_arbh_svn_info_entry_parse: (skip):
524
 **/
525
FuMkhiArbhSvnInfoEntry *
526
fu_mkhi_arbh_svn_info_entry_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
527
0
{
528
0
    g_autoptr(GByteArray) st = g_byte_array_new();
529
0
    g_return_val_if_fail(buf != NULL, NULL);
530
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
531
0
    if (!fu_memchk_read(bufsz, offset, 4, error)) {
532
0
        g_prefix_error_literal(error, "invalid struct FuMkhiArbhSvnInfoEntry: ");
533
0
        return NULL;
534
0
    }
535
0
    g_byte_array_append(st, buf + offset, 4);
536
0
    if (!fu_mkhi_arbh_svn_info_entry_parse_internal(st, error))
537
0
        return NULL;
538
0
    return g_steal_pointer(&st);
539
0
}
540
/* getters */
541
542
/* setters */
543
/**
544
 * fu_mkhi_arbh_svn_get_info_request_set_group_id: (skip):
545
 **/
546
static void
547
fu_mkhi_arbh_svn_get_info_request_set_group_id(FuMkhiArbhSvnGetInfoRequest *st, FuMkhiGroupId value)
548
0
{
549
0
    g_return_if_fail(st != NULL);
550
0
    st->data[0] = value;
551
0
}
552
/**
553
 * fu_mkhi_arbh_svn_get_info_request_set_command: (skip):
554
 **/
555
static void
556
fu_mkhi_arbh_svn_get_info_request_set_command(FuMkhiArbhSvnGetInfoRequest *st, FuMkhiCommand value)
557
0
{
558
0
    g_return_if_fail(st != NULL);
559
0
    st->data[1] = value;
560
0
}
561
/**
562
 * fu_mkhi_arbh_svn_get_info_request_set_result: (skip):
563
 **/
564
static void
565
fu_mkhi_arbh_svn_get_info_request_set_result(FuMkhiArbhSvnGetInfoRequest *st, guint8 value)
566
0
{
567
0
    g_return_if_fail(st != NULL);
568
0
    st->data[3] = value;
569
0
}
570
/**
571
 * fu_mkhi_arbh_svn_get_info_request_new: (skip):
572
 **/
573
FuMkhiArbhSvnGetInfoRequest *
574
fu_mkhi_arbh_svn_get_info_request_new(void)
575
0
{
576
0
    FuMkhiArbhSvnGetInfoRequest *st = g_byte_array_sized_new(4);
577
0
    fu_byte_array_set_size(st, 4, 0x0);
578
0
    fu_mkhi_arbh_svn_get_info_request_set_group_id(st, FU_MKHI_GROUP_ID_MCA);
579
0
    fu_mkhi_arbh_svn_get_info_request_set_command(st, FU_MKHI_COMMAND_ARBH_SVN_GET_INFO);
580
0
    fu_mkhi_arbh_svn_get_info_request_set_result(st, 0x0);
581
0
    return st;
582
0
}
583
/* getters */
584
/**
585
 * fu_mkhi_arbh_svn_get_info_response_get_group_id: (skip):
586
 **/
587
static FuMkhiGroupId
588
fu_mkhi_arbh_svn_get_info_response_get_group_id(const FuMkhiArbhSvnGetInfoResponse *st)
589
0
{
590
0
    g_return_val_if_fail(st != NULL, 0x0);
591
0
    return st->data[0];
592
0
}
593
/**
594
 * fu_mkhi_arbh_svn_get_info_response_get_command: (skip):
595
 **/
596
static FuMkhiCommand
597
fu_mkhi_arbh_svn_get_info_response_get_command(const FuMkhiArbhSvnGetInfoResponse *st)
598
0
{
599
0
    g_return_val_if_fail(st != NULL, 0x0);
600
0
    return st->data[1];
601
0
}
602
/**
603
 * fu_mkhi_arbh_svn_get_info_response_get_result: (skip):
604
 **/
605
guint8
606
fu_mkhi_arbh_svn_get_info_response_get_result(const FuMkhiArbhSvnGetInfoResponse *st)
607
0
{
608
0
    g_return_val_if_fail(st != NULL, 0x0);
609
0
    return st->data[3];
610
0
}
611
/**
612
 * fu_mkhi_arbh_svn_get_info_response_get_num_entries: (skip):
613
 **/
614
guint32
615
fu_mkhi_arbh_svn_get_info_response_get_num_entries(const FuMkhiArbhSvnGetInfoResponse *st)
616
0
{
617
0
    g_return_val_if_fail(st != NULL, 0x0);
618
0
    return fu_memread_uint32(st->data + 4, G_LITTLE_ENDIAN);
619
0
}
620
621
/* setters */
622
/**
623
 * fu_mkhi_arbh_svn_get_info_response_to_string: (skip):
624
 **/
625
static gchar *
626
fu_mkhi_arbh_svn_get_info_response_to_string(const FuMkhiArbhSvnGetInfoResponse *st)
627
0
{
628
0
    g_autoptr(GString) str = g_string_new("FuMkhiArbhSvnGetInfoResponse:\n");
629
0
    g_return_val_if_fail(st != NULL, NULL);
630
0
    g_string_append_printf(str, "  result: 0x%x\n",
631
0
                           (guint) fu_mkhi_arbh_svn_get_info_response_get_result(st));
632
0
    g_string_append_printf(str, "  num_entries: 0x%x\n",
633
0
                           (guint) fu_mkhi_arbh_svn_get_info_response_get_num_entries(st));
634
0
    if (str->len > 0)
635
0
        g_string_set_size(str, str->len - 1);
636
0
    return g_string_free(g_steal_pointer(&str), FALSE);
637
0
}
638
static gboolean
639
fu_mkhi_arbh_svn_get_info_response_validate_internal(FuMkhiArbhSvnGetInfoResponse *st, GError **error)
640
0
{
641
0
    g_return_val_if_fail(st != NULL, FALSE);
642
0
    if (fu_mkhi_arbh_svn_get_info_response_get_group_id(st) != FU_MKHI_GROUP_ID_MCA) {
643
0
        g_set_error_literal(error,
644
0
                            FWUPD_ERROR,
645
0
                            FWUPD_ERROR_INVALID_DATA,
646
0
                            "constant FuMkhiArbhSvnGetInfoResponse.group_id was not valid");
647
0
        return FALSE;
648
0
    }
649
0
    if (fu_mkhi_arbh_svn_get_info_response_get_command(st) != FU_MKHI_COMMAND_ARBH_SVN_GET_INFO_RESPONSE) {
650
0
        g_set_error_literal(error,
651
0
                            FWUPD_ERROR,
652
0
                            FWUPD_ERROR_INVALID_DATA,
653
0
                            "constant FuMkhiArbhSvnGetInfoResponse.command was not valid");
654
0
        return FALSE;
655
0
    }
656
0
    return TRUE;
657
0
}
658
static gboolean
659
fu_mkhi_arbh_svn_get_info_response_parse_internal(FuMkhiArbhSvnGetInfoResponse *st, GError **error)
660
0
{
661
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
662
0
        g_autofree gchar *str = fu_mkhi_arbh_svn_get_info_response_to_string(st);
663
0
        g_debug("%s", str);
664
0
    }
665
0
    if (!fu_mkhi_arbh_svn_get_info_response_validate_internal(st, error))
666
0
        return FALSE;
667
0
    return TRUE;
668
0
}
669
670
/**
671
 * fu_mkhi_arbh_svn_get_info_response_parse: (skip):
672
 **/
673
FuMkhiArbhSvnGetInfoResponse *
674
fu_mkhi_arbh_svn_get_info_response_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
675
0
{
676
0
    g_autoptr(GByteArray) st = g_byte_array_new();
677
0
    g_return_val_if_fail(buf != NULL, NULL);
678
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
679
0
    if (!fu_memchk_read(bufsz, offset, 8, error)) {
680
0
        g_prefix_error_literal(error, "invalid struct FuMkhiArbhSvnGetInfoResponse: ");
681
0
        return NULL;
682
0
    }
683
0
    g_byte_array_append(st, buf + offset, 8);
684
0
    if (!fu_mkhi_arbh_svn_get_info_response_parse_internal(st, error))
685
0
        return NULL;
686
0
    return g_steal_pointer(&st);
687
0
}