Coverage Report

Created: 2026-02-26 06:27

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/work/fu-heci-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-heci-struct.h"
12
#include "fu-byte-array.h"
13
#include "fu-bytes.h"
14
#include "fu-mem-private.h"
15
#include "fu-string.h"
16
17
#ifdef G_LOG_DOMAIN
18
  #undef G_LOG_DOMAIN
19
#endif
20
0
#define G_LOG_DOMAIN "FuStruct"
21
22
/**
23
 * fu_mkhi_group_id_to_string:
24
 * @val: value, e.g. %FU_MKHI_GROUP_ID_PM
25
 *
26
 * Converts an enumerated value to a string.
27
 *
28
 * Returns: identifier string
29
 **/
30
static const gchar *
31
fu_mkhi_group_id_to_string(FuMkhiGroupId val)
32
0
{
33
0
    if (val == FU_MKHI_GROUP_ID_CBM)
34
0
        return "cbm";
35
0
    if (val == FU_MKHI_GROUP_ID_PM)
36
0
        return "pm";
37
0
    if (val == FU_MKHI_GROUP_ID_PWD)
38
0
        return "pwd";
39
0
    if (val == FU_MKHI_GROUP_ID_FWCAPS)
40
0
        return "fwcaps";
41
0
    if (val == FU_MKHI_GROUP_ID_APP)
42
0
        return "app";
43
0
    if (val == FU_MKHI_GROUP_ID_FWUPDATE)
44
0
        return "fwupdate";
45
0
    if (val == FU_MKHI_GROUP_ID_FIRMWARE_UPDATE)
46
0
        return "firmware-update";
47
0
    if (val == FU_MKHI_GROUP_ID_BIST)
48
0
        return "bist";
49
0
    if (val == FU_MKHI_GROUP_ID_MDES)
50
0
        return "mdes";
51
0
    if (val == FU_MKHI_GROUP_ID_ME_DBG)
52
0
        return "me-dbg";
53
0
    if (val == FU_MKHI_GROUP_ID_MCA)
54
0
        return "mca";
55
0
    if (val == FU_MKHI_GROUP_ID_GEN)
56
0
        return "gen";
57
0
    return NULL;
58
0
}
59
60
/**
61
 * fu_mkhi_status_to_string:
62
 * @val: value, e.g. %FU_MKHI_STATUS_INVALID_STATE
63
 *
64
 * Converts an enumerated value to a string.
65
 *
66
 * Returns: identifier string
67
 **/
68
const gchar *
69
fu_mkhi_status_to_string(FuMkhiStatus val)
70
0
{
71
0
    if (val == FU_MKHI_STATUS_SUCCESS)
72
0
        return "success";
73
0
    if (val == FU_MKHI_STATUS_INVALID_STATE)
74
0
        return "invalid-state";
75
0
    if (val == FU_MKHI_STATUS_MESSAGE_SKIPPED)
76
0
        return "message-skipped";
77
0
    if (val == FU_MKHI_STATUS_SIZE_ERROR)
78
0
        return "size-error";
79
0
    if (val == FU_MKHI_STATUS_UNKNOWN_PERHAPS_NOT_SUPPORTED)
80
0
        return "unknown-perhaps-not-supported";
81
0
    if (val == FU_MKHI_STATUS_NOT_SET)
82
0
        return "not-set";
83
0
    if (val == FU_MKHI_STATUS_NOT_AVAILABLE)
84
0
        return "not-available";
85
0
    if (val == FU_MKHI_STATUS_INVALID_ACCESS)
86
0
        return "invalid-access";
87
0
    if (val == FU_MKHI_STATUS_INVALID_PARAMS)
88
0
        return "invalid-params";
89
0
    if (val == FU_MKHI_STATUS_NOT_READY)
90
0
        return "not-ready";
91
0
    if (val == FU_MKHI_STATUS_NOT_SUPPORTED)
92
0
        return "not-supported";
93
0
    if (val == FU_MKHI_STATUS_INVALID_ADDRESS)
94
0
        return "invalid-address";
95
0
    if (val == FU_MKHI_STATUS_INVALID_COMMAND)
96
0
        return "invalid-command";
97
0
    if (val == FU_MKHI_STATUS_FAILURE)
98
0
        return "failure";
99
0
    if (val == FU_MKHI_STATUS_INVALID_RESOURCE)
100
0
        return "invalid-resource";
101
0
    if (val == FU_MKHI_STATUS_RESOURCE_IN_USE)
102
0
        return "resource-in-use";
103
0
    if (val == FU_MKHI_STATUS_NO_RESOURCE)
104
0
        return "no-resource";
105
0
    if (val == FU_MKHI_STATUS_GENERAL_ERROR)
106
0
        return "general-error";
107
0
    if (val == FU_MKHI_STATUS_LOWER_ARB_SVN)
108
0
        return "lower-arb-svn";
109
0
    if (val == FU_MKHI_STATUS_LOWER_TCB_SVN)
110
0
        return "lower-tcb-svn";
111
0
    if (val == FU_MKHI_STATUS_LOWER_VCN)
112
0
        return "lower-vcn";
113
0
    if (val == FU_MKHI_STATUS_UPDATE_IUP_SVN)
114
0
        return "update-iup-svn";
115
0
    if (val == FU_MKHI_STATUS_UPDATE_IUP_VCN)
116
0
        return "update-iup-vcn";
117
0
    if (val == FU_MKHI_STATUS_UPDATE_IMAGE_LEN)
118
0
        return "update-image-len";
119
0
    if (val == FU_MKHI_STATUS_UPDATE_PV_BIT)
120
0
        return "update-pv-bit";
121
0
    if (val == FU_MKHI_STATUS_UPDATE_ENGINEERING_MISMATCH)
122
0
        return "update-engineering-mismatch";
123
0
    if (val == FU_MKHI_STATUS_UPDATE_VER_MAN_FAILED_OROM)
124
0
        return "update-ver-man-failed-orom";
125
0
    if (val == FU_MKHI_STATUS_UPDATE_DEVICE_ID_NOT_MATCH)
126
0
        return "update-device-id-not-match";
127
0
    if (val == FU_MKHI_STATUS_UPDATE_OPROM_SECTION_NOT_EXIST)
128
0
        return "update-oprom-section-not-exist";
129
0
    if (val == FU_MKHI_STATUS_UPDATE_OPROM_INVALID_STRUCTURE)
130
0
        return "update-oprom-invalid-structure";
131
0
    if (val == FU_MKHI_STATUS_UPDATE_GET_OPROM_VERSION_FAILED)
132
0
        return "update-get-oprom-version-failed";
133
0
    if (val == FU_MKHI_STATUS_UPDATE_OROM_INVALID_STRUCTURE)
134
0
        return "update-orom-invalid-structure";
135
0
    if (val == FU_MKHI_STATUS_UPDATE_VER_MAN_FAILED_GFX_DATA)
136
0
        return "update-ver-man-failed-gfx-data";
137
0
    if (val == FU_MKHI_STATUS_UPDATE_GFX_DATA_OEM_MANUF_VER)
138
0
        return "update-gfx-data-oem-manuf-ver";
139
0
    return NULL;
140
0
}
141
142
/**
143
 * fu_mkhi_command_to_string:
144
 * @val: value, e.g. %FU_MKHI_COMMAND_READ_FILE_EX
145
 *
146
 * Converts an enumerated value to a string.
147
 *
148
 * Returns: identifier string
149
 **/
150
static const gchar *
151
fu_mkhi_command_to_string(FuMkhiCommand val)
152
0
{
153
0
    if (val == FU_MKHI_COMMAND_READ_FILE)
154
0
        return "read-file";
155
0
    if (val == FU_MKHI_COMMAND_READ_FILE_EX)
156
0
        return "read-file-ex";
157
0
    if (val == FU_MKHI_COMMAND_ARBH_SVN_COMMIT)
158
0
        return "arbh-svn-commit";
159
0
    if (val == FU_MKHI_COMMAND_ARBH_SVN_GET_INFO)
160
0
        return "arbh-svn-get-info";
161
0
    if (val == FU_MKHI_COMMAND_READ_FILE_RESPONSE)
162
0
        return "read-file-response";
163
0
    if (val == FU_MKHI_COMMAND_READ_FILE_EX_RESPONSE)
164
0
        return "read-file-ex-response";
165
0
    if (val == FU_MKHI_COMMAND_ARBH_SVN_COMMIT_RESPONSE)
166
0
        return "arbh-svn-commit-response";
167
0
    if (val == FU_MKHI_COMMAND_ARBH_SVN_GET_INFO_RESPONSE)
168
0
        return "arbh-svn-get-info-response";
169
0
    return NULL;
170
0
}
171
172
/**
173
 * fu_mkhi_arbh_svn_info_entry_usage_id_to_string:
174
 * @val: value
175
 *
176
 * Converts an enumerated value to a string.
177
 *
178
 * Returns: identifier string
179
 **/
180
static const gchar *
181
fu_mkhi_arbh_svn_info_entry_usage_id_to_string(FuMkhiArbhSvnInfoEntryUsageId val)
182
0
{
183
0
    if (val == FU_MKHI_ARBH_SVN_INFO_ENTRY_USAGE_ID_CSE_RBE)
184
0
        return "cse-rbe";
185
0
    return NULL;
186
0
}
187
/**
188
 * fu_mkhi_read_file_request_ref: (skip):
189
 **/
190
FuMkhiReadFileRequest *
191
fu_mkhi_read_file_request_ref(FuMkhiReadFileRequest *st)
192
0
{
193
0
    g_return_val_if_fail(st != NULL, NULL);
194
0
    st->refcount++;
195
0
    return st;
196
0
}
197
/**
198
 * fu_mkhi_read_file_request_unref: (skip):
199
 **/
200
void
201
fu_mkhi_read_file_request_unref(FuMkhiReadFileRequest *st)
202
0
{
203
0
    g_return_if_fail(st != NULL);
204
0
    if (st->refcount == 0) {
205
0
        g_critical("FuMkhiReadFileRequest refcount already zero");
206
0
        return;
207
0
    }
208
0
    if (--st->refcount > 0)
209
0
        return;
210
0
    if (st->buf != NULL)
211
0
        g_byte_array_unref(st->buf);
212
0
    g_free(st);
213
0
}
214
/**
215
 * fu_mkhi_read_file_request_new_internal: (skip):
216
 **/
217
static FuMkhiReadFileRequest *
218
fu_mkhi_read_file_request_new_internal(void)
219
0
{
220
0
    FuMkhiReadFileRequest *st = g_new0(FuMkhiReadFileRequest, 1);
221
0
    st->refcount = 1;
222
0
    return st;
223
0
}
224
225
/* getters */
226
227
/* setters */
228
/**
229
 * fu_mkhi_read_file_request_set_group_id: (skip):
230
 **/
231
static void
232
fu_mkhi_read_file_request_set_group_id(FuMkhiReadFileRequest *st, FuMkhiGroupId value)
233
0
{
234
0
    g_return_if_fail(st != NULL);
235
0
    st->buf->data[0] = value;
236
0
}
237
/**
238
 * fu_mkhi_read_file_request_set_command: (skip):
239
 **/
240
static void
241
fu_mkhi_read_file_request_set_command(FuMkhiReadFileRequest *st, FuMkhiCommand value)
242
0
{
243
0
    g_return_if_fail(st != NULL);
244
0
    st->buf->data[1] = value;
245
0
}
246
/**
247
 * fu_mkhi_read_file_request_set_result: (skip):
248
 **/
249
static void
250
fu_mkhi_read_file_request_set_result(FuMkhiReadFileRequest *st, guint8 value)
251
0
{
252
0
    g_return_if_fail(st != NULL);
253
0
    st->buf->data[3] = value;
254
0
}
255
/**
256
 * fu_mkhi_read_file_request_set_filename: (skip):
257
 **/
258
gboolean
259
fu_mkhi_read_file_request_set_filename(FuMkhiReadFileRequest *st, const gchar *value, GError **error)
260
0
{
261
0
    gsize len;
262
0
    g_return_val_if_fail(st != NULL, FALSE);
263
0
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
264
0
    if (value == NULL) {
265
0
        memset(st->buf->data + 4, 0x0, 64);
266
0
        return TRUE;
267
0
    }
268
0
    len = strlen(value);
269
0
    if (len > 64) {
270
0
        g_set_error(error,
271
0
                    FWUPD_ERROR,
272
0
                    FWUPD_ERROR_INVALID_DATA,
273
0
                    "string '%s' (0x%x bytes) does not fit in FuMkhiReadFileRequest.filename (0x%x bytes)",
274
0
                    value, (guint) len, (guint) 64);
275
0
        return FALSE;
276
0
    }
277
0
    return fu_memcpy_safe(st->buf->data, st->buf->len, 4, (const guint8 *)value, len, 0x0, len, error);
278
0
}
279
/**
280
 * fu_mkhi_read_file_request_set_offset: (skip):
281
 **/
282
static void
283
fu_mkhi_read_file_request_set_offset(FuMkhiReadFileRequest *st, guint32 value)
284
0
{
285
0
    g_return_if_fail(st != NULL);
286
0
    fu_memwrite_uint32(st->buf->data + 68, value, G_LITTLE_ENDIAN);
287
0
}
288
/**
289
 * fu_mkhi_read_file_request_set_data_size: (skip):
290
 **/
291
void
292
fu_mkhi_read_file_request_set_data_size(FuMkhiReadFileRequest *st, guint32 value)
293
0
{
294
0
    g_return_if_fail(st != NULL);
295
0
    fu_memwrite_uint32(st->buf->data + 72, value, G_LITTLE_ENDIAN);
296
0
}
297
/**
298
 * fu_mkhi_read_file_request_set_flags: (skip):
299
 **/
300
void
301
fu_mkhi_read_file_request_set_flags(FuMkhiReadFileRequest *st, guint8 value)
302
0
{
303
0
    g_return_if_fail(st != NULL);
304
0
    st->buf->data[76] = value;
305
0
}
306
/**
307
 * fu_mkhi_read_file_request_new: (skip):
308
 **/
309
FuMkhiReadFileRequest *
310
fu_mkhi_read_file_request_new(void)
311
0
{
312
0
    FuMkhiReadFileRequest *st = fu_mkhi_read_file_request_new_internal();
313
0
    st->buf = g_byte_array_sized_new(77);
314
0
    fu_byte_array_set_size(st->buf, 77, 0x0);
315
0
    fu_mkhi_read_file_request_set_group_id(st, FU_MKHI_GROUP_ID_MCA);
316
0
    fu_mkhi_read_file_request_set_command(st, FU_MKHI_COMMAND_READ_FILE);
317
0
    fu_mkhi_read_file_request_set_result(st, 0x0);
318
0
    fu_mkhi_read_file_request_set_offset(st, 0x0);
319
0
    return st;
320
0
}
321
/**
322
 * fu_mkhi_read_file_response_ref: (skip):
323
 **/
324
FuMkhiReadFileResponse *
325
fu_mkhi_read_file_response_ref(FuMkhiReadFileResponse *st)
326
0
{
327
0
    g_return_val_if_fail(st != NULL, NULL);
328
0
    st->refcount++;
329
0
    return st;
330
0
}
331
/**
332
 * fu_mkhi_read_file_response_unref: (skip):
333
 **/
334
void
335
fu_mkhi_read_file_response_unref(FuMkhiReadFileResponse *st)
336
0
{
337
0
    g_return_if_fail(st != NULL);
338
0
    if (st->refcount == 0) {
339
0
        g_critical("FuMkhiReadFileResponse refcount already zero");
340
0
        return;
341
0
    }
342
0
    if (--st->refcount > 0)
343
0
        return;
344
0
    if (st->buf != NULL)
345
0
        g_byte_array_unref(st->buf);
346
0
    g_free(st);
347
0
}
348
/**
349
 * fu_mkhi_read_file_response_new_internal: (skip):
350
 **/
351
static FuMkhiReadFileResponse *
352
fu_mkhi_read_file_response_new_internal(void)
353
0
{
354
0
    FuMkhiReadFileResponse *st = g_new0(FuMkhiReadFileResponse, 1);
355
0
    st->refcount = 1;
356
0
    return st;
357
0
}
358
359
/* getters */
360
/**
361
 * fu_mkhi_read_file_response_get_group_id: (skip):
362
 **/
363
static FuMkhiGroupId
364
fu_mkhi_read_file_response_get_group_id(const FuMkhiReadFileResponse *st)
365
0
{
366
0
    g_return_val_if_fail(st != NULL, 0x0);
367
0
    return st->buf->data[0];
368
0
}
369
/**
370
 * fu_mkhi_read_file_response_get_command: (skip):
371
 **/
372
static FuMkhiCommand
373
fu_mkhi_read_file_response_get_command(const FuMkhiReadFileResponse *st)
374
0
{
375
0
    g_return_val_if_fail(st != NULL, 0x0);
376
0
    return st->buf->data[1];
377
0
}
378
/**
379
 * fu_mkhi_read_file_response_get_result: (skip):
380
 **/
381
guint8
382
fu_mkhi_read_file_response_get_result(const FuMkhiReadFileResponse *st)
383
0
{
384
0
    g_return_val_if_fail(st != NULL, 0x0);
385
0
    return st->buf->data[3];
386
0
}
387
/**
388
 * fu_mkhi_read_file_response_get_data_size: (skip):
389
 **/
390
guint32
391
fu_mkhi_read_file_response_get_data_size(const FuMkhiReadFileResponse *st)
392
0
{
393
0
    g_return_val_if_fail(st != NULL, 0x0);
394
0
    return fu_memread_uint32(st->buf->data + 4, G_LITTLE_ENDIAN);
395
0
}
396
397
/* setters */
398
/**
399
 * fu_mkhi_read_file_response_to_string: (skip):
400
 **/
401
static gchar *
402
fu_mkhi_read_file_response_to_string(const FuMkhiReadFileResponse *st)
403
0
{
404
0
    g_autoptr(GString) str = g_string_new("FuMkhiReadFileResponse:\n");
405
0
    g_return_val_if_fail(st != NULL, NULL);
406
0
    {
407
0
        const gchar *tmp = fu_mkhi_group_id_to_string(fu_mkhi_read_file_response_get_group_id(st));
408
0
        if (tmp != NULL) {
409
0
            g_string_append_printf(str, "  group_id: 0x%x [%s]\n", (guint) fu_mkhi_read_file_response_get_group_id(st), tmp);
410
0
        } else {
411
0
            g_string_append_printf(str, "  group_id: 0x%x\n", (guint) fu_mkhi_read_file_response_get_group_id(st));
412
0
        }
413
0
    }
414
0
    {
415
0
        const gchar *tmp = fu_mkhi_command_to_string(fu_mkhi_read_file_response_get_command(st));
416
0
        if (tmp != NULL) {
417
0
            g_string_append_printf(str, "  command: 0x%x [%s]\n", (guint) fu_mkhi_read_file_response_get_command(st), tmp);
418
0
        } else {
419
0
            g_string_append_printf(str, "  command: 0x%x\n", (guint) fu_mkhi_read_file_response_get_command(st));
420
0
        }
421
0
    }
422
0
    g_string_append_printf(str, "  result: 0x%x\n",
423
0
                           (guint) fu_mkhi_read_file_response_get_result(st));
424
0
    g_string_append_printf(str, "  data_size: 0x%x\n",
425
0
                           (guint) fu_mkhi_read_file_response_get_data_size(st));
426
0
    if (str->len > 0)
427
0
        g_string_set_size(str, str->len - 1);
428
0
    return g_string_free(g_steal_pointer(&str), FALSE);
429
0
}
430
static gboolean
431
fu_mkhi_read_file_response_validate_internal(FuMkhiReadFileResponse *st, GError **error)
432
0
{
433
0
    g_return_val_if_fail(st != NULL, FALSE);
434
0
    if (fu_mkhi_read_file_response_get_group_id(st) != FU_MKHI_GROUP_ID_MCA) {
435
0
        g_set_error(error,
436
0
                    FWUPD_ERROR,
437
0
                    FWUPD_ERROR_INVALID_DATA,
438
0
                    "constant FuMkhiReadFileResponse.group_id was not valid, "
439
0
                    "expected 'FU_MKHI_GROUP_ID_MCA' and got 0x%x '%s'",
440
0
                    fu_mkhi_read_file_response_get_group_id(st),
441
0
                    fu_mkhi_group_id_to_string(fu_mkhi_read_file_response_get_group_id(st)));
442
0
        return FALSE;
443
0
    }
444
0
    if (fu_mkhi_read_file_response_get_command(st) != FU_MKHI_COMMAND_READ_FILE_RESPONSE) {
445
0
        g_set_error(error,
446
0
                    FWUPD_ERROR,
447
0
                    FWUPD_ERROR_INVALID_DATA,
448
0
                    "constant FuMkhiReadFileResponse.command was not valid, "
449
0
                    "expected 'FU_MKHI_COMMAND_READ_FILE_RESPONSE' and got 0x%x '%s'",
450
0
                    fu_mkhi_read_file_response_get_command(st),
451
0
                    fu_mkhi_command_to_string(fu_mkhi_read_file_response_get_command(st)));
452
0
        return FALSE;
453
0
    }
454
0
    return TRUE;
455
0
}
456
static gboolean
457
fu_mkhi_read_file_response_parse_internal(FuMkhiReadFileResponse *st, GError **error)
458
0
{
459
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
460
0
        g_autofree gchar *str = fu_mkhi_read_file_response_to_string(st);
461
0
        g_debug("%s", str);
462
0
    }
463
0
    if (!fu_mkhi_read_file_response_validate_internal(st, error))
464
0
        return FALSE;
465
0
    return TRUE;
466
0
}
467
468
/**
469
 * fu_mkhi_read_file_response_parse: (skip):
470
 **/
471
FuMkhiReadFileResponse *
472
fu_mkhi_read_file_response_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
473
0
{
474
0
    g_autoptr(FuMkhiReadFileResponse) st = fu_mkhi_read_file_response_new_internal();
475
0
    g_return_val_if_fail(buf != NULL, NULL);
476
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
477
0
    if (!fu_memchk_read(bufsz, offset, 8, error)) {
478
0
        g_prefix_error_literal(error, "invalid struct FuMkhiReadFileResponse: ");
479
0
        return NULL;
480
0
    }
481
0
    st->buf = g_byte_array_new();
482
0
    g_byte_array_append(st->buf, buf + offset, 8);
483
0
    if (!fu_mkhi_read_file_response_parse_internal(st, error))
484
0
        return NULL;
485
0
    return g_steal_pointer(&st);
486
0
}
487
/**
488
 * fu_mkhi_read_file_ex_request_ref: (skip):
489
 **/
490
FuMkhiReadFileExRequest *
491
fu_mkhi_read_file_ex_request_ref(FuMkhiReadFileExRequest *st)
492
0
{
493
0
    g_return_val_if_fail(st != NULL, NULL);
494
0
    st->refcount++;
495
0
    return st;
496
0
}
497
/**
498
 * fu_mkhi_read_file_ex_request_unref: (skip):
499
 **/
500
void
501
fu_mkhi_read_file_ex_request_unref(FuMkhiReadFileExRequest *st)
502
0
{
503
0
    g_return_if_fail(st != NULL);
504
0
    if (st->refcount == 0) {
505
0
        g_critical("FuMkhiReadFileExRequest refcount already zero");
506
0
        return;
507
0
    }
508
0
    if (--st->refcount > 0)
509
0
        return;
510
0
    if (st->buf != NULL)
511
0
        g_byte_array_unref(st->buf);
512
0
    g_free(st);
513
0
}
514
/**
515
 * fu_mkhi_read_file_ex_request_new_internal: (skip):
516
 **/
517
static FuMkhiReadFileExRequest *
518
fu_mkhi_read_file_ex_request_new_internal(void)
519
0
{
520
0
    FuMkhiReadFileExRequest *st = g_new0(FuMkhiReadFileExRequest, 1);
521
0
    st->refcount = 1;
522
0
    return st;
523
0
}
524
525
/* getters */
526
527
/* setters */
528
/**
529
 * fu_mkhi_read_file_ex_request_set_group_id: (skip):
530
 **/
531
static void
532
fu_mkhi_read_file_ex_request_set_group_id(FuMkhiReadFileExRequest *st, FuMkhiGroupId value)
533
0
{
534
0
    g_return_if_fail(st != NULL);
535
0
    st->buf->data[0] = value;
536
0
}
537
/**
538
 * fu_mkhi_read_file_ex_request_set_command: (skip):
539
 **/
540
static void
541
fu_mkhi_read_file_ex_request_set_command(FuMkhiReadFileExRequest *st, FuMkhiCommand value)
542
0
{
543
0
    g_return_if_fail(st != NULL);
544
0
    st->buf->data[1] = value;
545
0
}
546
/**
547
 * fu_mkhi_read_file_ex_request_set_result: (skip):
548
 **/
549
static void
550
fu_mkhi_read_file_ex_request_set_result(FuMkhiReadFileExRequest *st, guint8 value)
551
0
{
552
0
    g_return_if_fail(st != NULL);
553
0
    st->buf->data[3] = value;
554
0
}
555
/**
556
 * fu_mkhi_read_file_ex_request_set_file_id: (skip):
557
 **/
558
void
559
fu_mkhi_read_file_ex_request_set_file_id(FuMkhiReadFileExRequest *st, guint32 value)
560
0
{
561
0
    g_return_if_fail(st != NULL);
562
0
    fu_memwrite_uint32(st->buf->data + 4, value, G_LITTLE_ENDIAN);
563
0
}
564
/**
565
 * fu_mkhi_read_file_ex_request_set_offset: (skip):
566
 **/
567
static void
568
fu_mkhi_read_file_ex_request_set_offset(FuMkhiReadFileExRequest *st, guint32 value)
569
0
{
570
0
    g_return_if_fail(st != NULL);
571
0
    fu_memwrite_uint32(st->buf->data + 8, value, G_LITTLE_ENDIAN);
572
0
}
573
/**
574
 * fu_mkhi_read_file_ex_request_set_data_size: (skip):
575
 **/
576
void
577
fu_mkhi_read_file_ex_request_set_data_size(FuMkhiReadFileExRequest *st, guint32 value)
578
0
{
579
0
    g_return_if_fail(st != NULL);
580
0
    fu_memwrite_uint32(st->buf->data + 12, value, G_LITTLE_ENDIAN);
581
0
}
582
/**
583
 * fu_mkhi_read_file_ex_request_set_flags: (skip):
584
 **/
585
void
586
fu_mkhi_read_file_ex_request_set_flags(FuMkhiReadFileExRequest *st, guint8 value)
587
0
{
588
0
    g_return_if_fail(st != NULL);
589
0
    st->buf->data[16] = value;
590
0
}
591
/**
592
 * fu_mkhi_read_file_ex_request_new: (skip):
593
 **/
594
FuMkhiReadFileExRequest *
595
fu_mkhi_read_file_ex_request_new(void)
596
0
{
597
0
    FuMkhiReadFileExRequest *st = fu_mkhi_read_file_ex_request_new_internal();
598
0
    st->buf = g_byte_array_sized_new(17);
599
0
    fu_byte_array_set_size(st->buf, 17, 0x0);
600
0
    fu_mkhi_read_file_ex_request_set_group_id(st, FU_MKHI_GROUP_ID_MCA);
601
0
    fu_mkhi_read_file_ex_request_set_command(st, FU_MKHI_COMMAND_READ_FILE_EX);
602
0
    fu_mkhi_read_file_ex_request_set_result(st, 0x0);
603
0
    fu_mkhi_read_file_ex_request_set_offset(st, 0x0);
604
0
    return st;
605
0
}
606
/**
607
 * fu_mkhi_read_file_ex_response_ref: (skip):
608
 **/
609
FuMkhiReadFileExResponse *
610
fu_mkhi_read_file_ex_response_ref(FuMkhiReadFileExResponse *st)
611
0
{
612
0
    g_return_val_if_fail(st != NULL, NULL);
613
0
    st->refcount++;
614
0
    return st;
615
0
}
616
/**
617
 * fu_mkhi_read_file_ex_response_unref: (skip):
618
 **/
619
void
620
fu_mkhi_read_file_ex_response_unref(FuMkhiReadFileExResponse *st)
621
0
{
622
0
    g_return_if_fail(st != NULL);
623
0
    if (st->refcount == 0) {
624
0
        g_critical("FuMkhiReadFileExResponse refcount already zero");
625
0
        return;
626
0
    }
627
0
    if (--st->refcount > 0)
628
0
        return;
629
0
    if (st->buf != NULL)
630
0
        g_byte_array_unref(st->buf);
631
0
    g_free(st);
632
0
}
633
/**
634
 * fu_mkhi_read_file_ex_response_new_internal: (skip):
635
 **/
636
static FuMkhiReadFileExResponse *
637
fu_mkhi_read_file_ex_response_new_internal(void)
638
0
{
639
0
    FuMkhiReadFileExResponse *st = g_new0(FuMkhiReadFileExResponse, 1);
640
0
    st->refcount = 1;
641
0
    return st;
642
0
}
643
644
/* getters */
645
/**
646
 * fu_mkhi_read_file_ex_response_get_group_id: (skip):
647
 **/
648
static FuMkhiGroupId
649
fu_mkhi_read_file_ex_response_get_group_id(const FuMkhiReadFileExResponse *st)
650
0
{
651
0
    g_return_val_if_fail(st != NULL, 0x0);
652
0
    return st->buf->data[0];
653
0
}
654
/**
655
 * fu_mkhi_read_file_ex_response_get_command: (skip):
656
 **/
657
static FuMkhiCommand
658
fu_mkhi_read_file_ex_response_get_command(const FuMkhiReadFileExResponse *st)
659
0
{
660
0
    g_return_val_if_fail(st != NULL, 0x0);
661
0
    return st->buf->data[1];
662
0
}
663
/**
664
 * fu_mkhi_read_file_ex_response_get_result: (skip):
665
 **/
666
guint8
667
fu_mkhi_read_file_ex_response_get_result(const FuMkhiReadFileExResponse *st)
668
0
{
669
0
    g_return_val_if_fail(st != NULL, 0x0);
670
0
    return st->buf->data[3];
671
0
}
672
/**
673
 * fu_mkhi_read_file_ex_response_get_data_size: (skip):
674
 **/
675
guint32
676
fu_mkhi_read_file_ex_response_get_data_size(const FuMkhiReadFileExResponse *st)
677
0
{
678
0
    g_return_val_if_fail(st != NULL, 0x0);
679
0
    return fu_memread_uint32(st->buf->data + 4, G_LITTLE_ENDIAN);
680
0
}
681
682
/* setters */
683
/**
684
 * fu_mkhi_read_file_ex_response_to_string: (skip):
685
 **/
686
static gchar *
687
fu_mkhi_read_file_ex_response_to_string(const FuMkhiReadFileExResponse *st)
688
0
{
689
0
    g_autoptr(GString) str = g_string_new("FuMkhiReadFileExResponse:\n");
690
0
    g_return_val_if_fail(st != NULL, NULL);
691
0
    {
692
0
        const gchar *tmp = fu_mkhi_group_id_to_string(fu_mkhi_read_file_ex_response_get_group_id(st));
693
0
        if (tmp != NULL) {
694
0
            g_string_append_printf(str, "  group_id: 0x%x [%s]\n", (guint) fu_mkhi_read_file_ex_response_get_group_id(st), tmp);
695
0
        } else {
696
0
            g_string_append_printf(str, "  group_id: 0x%x\n", (guint) fu_mkhi_read_file_ex_response_get_group_id(st));
697
0
        }
698
0
    }
699
0
    {
700
0
        const gchar *tmp = fu_mkhi_command_to_string(fu_mkhi_read_file_ex_response_get_command(st));
701
0
        if (tmp != NULL) {
702
0
            g_string_append_printf(str, "  command: 0x%x [%s]\n", (guint) fu_mkhi_read_file_ex_response_get_command(st), tmp);
703
0
        } else {
704
0
            g_string_append_printf(str, "  command: 0x%x\n", (guint) fu_mkhi_read_file_ex_response_get_command(st));
705
0
        }
706
0
    }
707
0
    g_string_append_printf(str, "  result: 0x%x\n",
708
0
                           (guint) fu_mkhi_read_file_ex_response_get_result(st));
709
0
    g_string_append_printf(str, "  data_size: 0x%x\n",
710
0
                           (guint) fu_mkhi_read_file_ex_response_get_data_size(st));
711
0
    if (str->len > 0)
712
0
        g_string_set_size(str, str->len - 1);
713
0
    return g_string_free(g_steal_pointer(&str), FALSE);
714
0
}
715
static gboolean
716
fu_mkhi_read_file_ex_response_validate_internal(FuMkhiReadFileExResponse *st, GError **error)
717
0
{
718
0
    g_return_val_if_fail(st != NULL, FALSE);
719
0
    if (fu_mkhi_read_file_ex_response_get_group_id(st) != FU_MKHI_GROUP_ID_MCA) {
720
0
        g_set_error(error,
721
0
                    FWUPD_ERROR,
722
0
                    FWUPD_ERROR_INVALID_DATA,
723
0
                    "constant FuMkhiReadFileExResponse.group_id was not valid, "
724
0
                    "expected 'FU_MKHI_GROUP_ID_MCA' and got 0x%x '%s'",
725
0
                    fu_mkhi_read_file_ex_response_get_group_id(st),
726
0
                    fu_mkhi_group_id_to_string(fu_mkhi_read_file_ex_response_get_group_id(st)));
727
0
        return FALSE;
728
0
    }
729
0
    if (fu_mkhi_read_file_ex_response_get_command(st) != FU_MKHI_COMMAND_READ_FILE_EX_RESPONSE) {
730
0
        g_set_error(error,
731
0
                    FWUPD_ERROR,
732
0
                    FWUPD_ERROR_INVALID_DATA,
733
0
                    "constant FuMkhiReadFileExResponse.command was not valid, "
734
0
                    "expected 'FU_MKHI_COMMAND_READ_FILE_EX_RESPONSE' and got 0x%x '%s'",
735
0
                    fu_mkhi_read_file_ex_response_get_command(st),
736
0
                    fu_mkhi_command_to_string(fu_mkhi_read_file_ex_response_get_command(st)));
737
0
        return FALSE;
738
0
    }
739
0
    return TRUE;
740
0
}
741
static gboolean
742
fu_mkhi_read_file_ex_response_parse_internal(FuMkhiReadFileExResponse *st, GError **error)
743
0
{
744
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
745
0
        g_autofree gchar *str = fu_mkhi_read_file_ex_response_to_string(st);
746
0
        g_debug("%s", str);
747
0
    }
748
0
    if (!fu_mkhi_read_file_ex_response_validate_internal(st, error))
749
0
        return FALSE;
750
0
    return TRUE;
751
0
}
752
753
/**
754
 * fu_mkhi_read_file_ex_response_parse: (skip):
755
 **/
756
FuMkhiReadFileExResponse *
757
fu_mkhi_read_file_ex_response_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
758
0
{
759
0
    g_autoptr(FuMkhiReadFileExResponse) st = fu_mkhi_read_file_ex_response_new_internal();
760
0
    g_return_val_if_fail(buf != NULL, NULL);
761
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
762
0
    if (!fu_memchk_read(bufsz, offset, 8, error)) {
763
0
        g_prefix_error_literal(error, "invalid struct FuMkhiReadFileExResponse: ");
764
0
        return NULL;
765
0
    }
766
0
    st->buf = g_byte_array_new();
767
0
    g_byte_array_append(st->buf, buf + offset, 8);
768
0
    if (!fu_mkhi_read_file_ex_response_parse_internal(st, error))
769
0
        return NULL;
770
0
    return g_steal_pointer(&st);
771
0
}
772
/**
773
 * fu_mkhi_arbh_svn_info_entry_ref: (skip):
774
 **/
775
FuMkhiArbhSvnInfoEntry *
776
fu_mkhi_arbh_svn_info_entry_ref(FuMkhiArbhSvnInfoEntry *st)
777
0
{
778
0
    g_return_val_if_fail(st != NULL, NULL);
779
0
    st->refcount++;
780
0
    return st;
781
0
}
782
/**
783
 * fu_mkhi_arbh_svn_info_entry_unref: (skip):
784
 **/
785
void
786
fu_mkhi_arbh_svn_info_entry_unref(FuMkhiArbhSvnInfoEntry *st)
787
0
{
788
0
    g_return_if_fail(st != NULL);
789
0
    if (st->refcount == 0) {
790
0
        g_critical("FuMkhiArbhSvnInfoEntry refcount already zero");
791
0
        return;
792
0
    }
793
0
    if (--st->refcount > 0)
794
0
        return;
795
0
    if (st->buf != NULL)
796
0
        g_byte_array_unref(st->buf);
797
0
    g_free(st);
798
0
}
799
/**
800
 * fu_mkhi_arbh_svn_info_entry_new_internal: (skip):
801
 **/
802
static FuMkhiArbhSvnInfoEntry *
803
fu_mkhi_arbh_svn_info_entry_new_internal(void)
804
0
{
805
0
    FuMkhiArbhSvnInfoEntry *st = g_new0(FuMkhiArbhSvnInfoEntry, 1);
806
0
    st->refcount = 1;
807
0
    return st;
808
0
}
809
810
/* getters */
811
/**
812
 * fu_mkhi_arbh_svn_info_entry_get_usage_id: (skip):
813
 **/
814
FuMkhiArbhSvnInfoEntryUsageId
815
fu_mkhi_arbh_svn_info_entry_get_usage_id(const FuMkhiArbhSvnInfoEntry *st)
816
0
{
817
0
    g_return_val_if_fail(st != NULL, 0x0);
818
0
    return st->buf->data[0];
819
0
}
820
/**
821
 * fu_mkhi_arbh_svn_info_entry_get_executing: (skip):
822
 **/
823
guint8
824
fu_mkhi_arbh_svn_info_entry_get_executing(const FuMkhiArbhSvnInfoEntry *st)
825
0
{
826
0
    g_return_val_if_fail(st != NULL, 0x0);
827
0
    return st->buf->data[2];
828
0
}
829
/**
830
 * fu_mkhi_arbh_svn_info_entry_get_min_allowed: (skip):
831
 **/
832
guint8
833
fu_mkhi_arbh_svn_info_entry_get_min_allowed(const FuMkhiArbhSvnInfoEntry *st)
834
0
{
835
0
    g_return_val_if_fail(st != NULL, 0x0);
836
0
    return st->buf->data[3];
837
0
}
838
839
/* setters */
840
/**
841
 * fu_mkhi_arbh_svn_info_entry_to_string: (skip):
842
 **/
843
static gchar *
844
fu_mkhi_arbh_svn_info_entry_to_string(const FuMkhiArbhSvnInfoEntry *st)
845
0
{
846
0
    g_autoptr(GString) str = g_string_new("FuMkhiArbhSvnInfoEntry:\n");
847
0
    g_return_val_if_fail(st != NULL, NULL);
848
0
    {
849
0
        const gchar *tmp = fu_mkhi_arbh_svn_info_entry_usage_id_to_string(fu_mkhi_arbh_svn_info_entry_get_usage_id(st));
850
0
        if (tmp != NULL) {
851
0
            g_string_append_printf(str, "  usage_id: 0x%x [%s]\n", (guint) fu_mkhi_arbh_svn_info_entry_get_usage_id(st), tmp);
852
0
        } else {
853
0
            g_string_append_printf(str, "  usage_id: 0x%x\n", (guint) fu_mkhi_arbh_svn_info_entry_get_usage_id(st));
854
0
        }
855
0
    }
856
0
    g_string_append_printf(str, "  executing: 0x%x\n",
857
0
                           (guint) fu_mkhi_arbh_svn_info_entry_get_executing(st));
858
0
    g_string_append_printf(str, "  min_allowed: 0x%x\n",
859
0
                           (guint) fu_mkhi_arbh_svn_info_entry_get_min_allowed(st));
860
0
    if (str->len > 0)
861
0
        g_string_set_size(str, str->len - 1);
862
0
    return g_string_free(g_steal_pointer(&str), FALSE);
863
0
}
864
static gboolean
865
fu_mkhi_arbh_svn_info_entry_validate_internal(FuMkhiArbhSvnInfoEntry *st, GError **error)
866
0
{
867
0
    g_return_val_if_fail(st != NULL, FALSE);
868
0
    return TRUE;
869
0
}
870
static gboolean
871
fu_mkhi_arbh_svn_info_entry_parse_internal(FuMkhiArbhSvnInfoEntry *st, GError **error)
872
0
{
873
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
874
0
        g_autofree gchar *str = fu_mkhi_arbh_svn_info_entry_to_string(st);
875
0
        g_debug("%s", str);
876
0
    }
877
0
    if (!fu_mkhi_arbh_svn_info_entry_validate_internal(st, error))
878
0
        return FALSE;
879
0
    return TRUE;
880
0
}
881
882
/**
883
 * fu_mkhi_arbh_svn_info_entry_parse: (skip):
884
 **/
885
FuMkhiArbhSvnInfoEntry *
886
fu_mkhi_arbh_svn_info_entry_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
887
0
{
888
0
    g_autoptr(FuMkhiArbhSvnInfoEntry) st = fu_mkhi_arbh_svn_info_entry_new_internal();
889
0
    g_return_val_if_fail(buf != NULL, NULL);
890
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
891
0
    if (!fu_memchk_read(bufsz, offset, 4, error)) {
892
0
        g_prefix_error_literal(error, "invalid struct FuMkhiArbhSvnInfoEntry: ");
893
0
        return NULL;
894
0
    }
895
0
    st->buf = g_byte_array_new();
896
0
    g_byte_array_append(st->buf, buf + offset, 4);
897
0
    if (!fu_mkhi_arbh_svn_info_entry_parse_internal(st, error))
898
0
        return NULL;
899
0
    return g_steal_pointer(&st);
900
0
}
901
/**
902
 * fu_mkhi_arbh_svn_get_info_request_ref: (skip):
903
 **/
904
FuMkhiArbhSvnGetInfoRequest *
905
fu_mkhi_arbh_svn_get_info_request_ref(FuMkhiArbhSvnGetInfoRequest *st)
906
0
{
907
0
    g_return_val_if_fail(st != NULL, NULL);
908
0
    st->refcount++;
909
0
    return st;
910
0
}
911
/**
912
 * fu_mkhi_arbh_svn_get_info_request_unref: (skip):
913
 **/
914
void
915
fu_mkhi_arbh_svn_get_info_request_unref(FuMkhiArbhSvnGetInfoRequest *st)
916
0
{
917
0
    g_return_if_fail(st != NULL);
918
0
    if (st->refcount == 0) {
919
0
        g_critical("FuMkhiArbhSvnGetInfoRequest refcount already zero");
920
0
        return;
921
0
    }
922
0
    if (--st->refcount > 0)
923
0
        return;
924
0
    if (st->buf != NULL)
925
0
        g_byte_array_unref(st->buf);
926
0
    g_free(st);
927
0
}
928
/**
929
 * fu_mkhi_arbh_svn_get_info_request_new_internal: (skip):
930
 **/
931
static FuMkhiArbhSvnGetInfoRequest *
932
fu_mkhi_arbh_svn_get_info_request_new_internal(void)
933
0
{
934
0
    FuMkhiArbhSvnGetInfoRequest *st = g_new0(FuMkhiArbhSvnGetInfoRequest, 1);
935
0
    st->refcount = 1;
936
0
    return st;
937
0
}
938
939
/* getters */
940
941
/* setters */
942
/**
943
 * fu_mkhi_arbh_svn_get_info_request_set_group_id: (skip):
944
 **/
945
static void
946
fu_mkhi_arbh_svn_get_info_request_set_group_id(FuMkhiArbhSvnGetInfoRequest *st, FuMkhiGroupId value)
947
0
{
948
0
    g_return_if_fail(st != NULL);
949
0
    st->buf->data[0] = value;
950
0
}
951
/**
952
 * fu_mkhi_arbh_svn_get_info_request_set_command: (skip):
953
 **/
954
static void
955
fu_mkhi_arbh_svn_get_info_request_set_command(FuMkhiArbhSvnGetInfoRequest *st, FuMkhiCommand value)
956
0
{
957
0
    g_return_if_fail(st != NULL);
958
0
    st->buf->data[1] = value;
959
0
}
960
/**
961
 * fu_mkhi_arbh_svn_get_info_request_set_result: (skip):
962
 **/
963
static void
964
fu_mkhi_arbh_svn_get_info_request_set_result(FuMkhiArbhSvnGetInfoRequest *st, guint8 value)
965
0
{
966
0
    g_return_if_fail(st != NULL);
967
0
    st->buf->data[3] = value;
968
0
}
969
/**
970
 * fu_mkhi_arbh_svn_get_info_request_new: (skip):
971
 **/
972
FuMkhiArbhSvnGetInfoRequest *
973
fu_mkhi_arbh_svn_get_info_request_new(void)
974
0
{
975
0
    FuMkhiArbhSvnGetInfoRequest *st = fu_mkhi_arbh_svn_get_info_request_new_internal();
976
0
    st->buf = g_byte_array_sized_new(4);
977
0
    fu_byte_array_set_size(st->buf, 4, 0x0);
978
0
    fu_mkhi_arbh_svn_get_info_request_set_group_id(st, FU_MKHI_GROUP_ID_MCA);
979
0
    fu_mkhi_arbh_svn_get_info_request_set_command(st, FU_MKHI_COMMAND_ARBH_SVN_GET_INFO);
980
0
    fu_mkhi_arbh_svn_get_info_request_set_result(st, 0x0);
981
0
    return st;
982
0
}
983
/**
984
 * fu_mkhi_arbh_svn_get_info_response_ref: (skip):
985
 **/
986
FuMkhiArbhSvnGetInfoResponse *
987
fu_mkhi_arbh_svn_get_info_response_ref(FuMkhiArbhSvnGetInfoResponse *st)
988
0
{
989
0
    g_return_val_if_fail(st != NULL, NULL);
990
0
    st->refcount++;
991
0
    return st;
992
0
}
993
/**
994
 * fu_mkhi_arbh_svn_get_info_response_unref: (skip):
995
 **/
996
void
997
fu_mkhi_arbh_svn_get_info_response_unref(FuMkhiArbhSvnGetInfoResponse *st)
998
0
{
999
0
    g_return_if_fail(st != NULL);
1000
0
    if (st->refcount == 0) {
1001
0
        g_critical("FuMkhiArbhSvnGetInfoResponse refcount already zero");
1002
0
        return;
1003
0
    }
1004
0
    if (--st->refcount > 0)
1005
0
        return;
1006
0
    if (st->buf != NULL)
1007
0
        g_byte_array_unref(st->buf);
1008
0
    g_free(st);
1009
0
}
1010
/**
1011
 * fu_mkhi_arbh_svn_get_info_response_new_internal: (skip):
1012
 **/
1013
static FuMkhiArbhSvnGetInfoResponse *
1014
fu_mkhi_arbh_svn_get_info_response_new_internal(void)
1015
0
{
1016
0
    FuMkhiArbhSvnGetInfoResponse *st = g_new0(FuMkhiArbhSvnGetInfoResponse, 1);
1017
0
    st->refcount = 1;
1018
0
    return st;
1019
0
}
1020
1021
/* getters */
1022
/**
1023
 * fu_mkhi_arbh_svn_get_info_response_get_group_id: (skip):
1024
 **/
1025
static FuMkhiGroupId
1026
fu_mkhi_arbh_svn_get_info_response_get_group_id(const FuMkhiArbhSvnGetInfoResponse *st)
1027
0
{
1028
0
    g_return_val_if_fail(st != NULL, 0x0);
1029
0
    return st->buf->data[0];
1030
0
}
1031
/**
1032
 * fu_mkhi_arbh_svn_get_info_response_get_command: (skip):
1033
 **/
1034
static FuMkhiCommand
1035
fu_mkhi_arbh_svn_get_info_response_get_command(const FuMkhiArbhSvnGetInfoResponse *st)
1036
0
{
1037
0
    g_return_val_if_fail(st != NULL, 0x0);
1038
0
    return st->buf->data[1];
1039
0
}
1040
/**
1041
 * fu_mkhi_arbh_svn_get_info_response_get_result: (skip):
1042
 **/
1043
guint8
1044
fu_mkhi_arbh_svn_get_info_response_get_result(const FuMkhiArbhSvnGetInfoResponse *st)
1045
0
{
1046
0
    g_return_val_if_fail(st != NULL, 0x0);
1047
0
    return st->buf->data[3];
1048
0
}
1049
/**
1050
 * fu_mkhi_arbh_svn_get_info_response_get_num_entries: (skip):
1051
 **/
1052
guint32
1053
fu_mkhi_arbh_svn_get_info_response_get_num_entries(const FuMkhiArbhSvnGetInfoResponse *st)
1054
0
{
1055
0
    g_return_val_if_fail(st != NULL, 0x0);
1056
0
    return fu_memread_uint32(st->buf->data + 4, G_LITTLE_ENDIAN);
1057
0
}
1058
1059
/* setters */
1060
/**
1061
 * fu_mkhi_arbh_svn_get_info_response_to_string: (skip):
1062
 **/
1063
static gchar *
1064
fu_mkhi_arbh_svn_get_info_response_to_string(const FuMkhiArbhSvnGetInfoResponse *st)
1065
0
{
1066
0
    g_autoptr(GString) str = g_string_new("FuMkhiArbhSvnGetInfoResponse:\n");
1067
0
    g_return_val_if_fail(st != NULL, NULL);
1068
0
    {
1069
0
        const gchar *tmp = fu_mkhi_group_id_to_string(fu_mkhi_arbh_svn_get_info_response_get_group_id(st));
1070
0
        if (tmp != NULL) {
1071
0
            g_string_append_printf(str, "  group_id: 0x%x [%s]\n", (guint) fu_mkhi_arbh_svn_get_info_response_get_group_id(st), tmp);
1072
0
        } else {
1073
0
            g_string_append_printf(str, "  group_id: 0x%x\n", (guint) fu_mkhi_arbh_svn_get_info_response_get_group_id(st));
1074
0
        }
1075
0
    }
1076
0
    {
1077
0
        const gchar *tmp = fu_mkhi_command_to_string(fu_mkhi_arbh_svn_get_info_response_get_command(st));
1078
0
        if (tmp != NULL) {
1079
0
            g_string_append_printf(str, "  command: 0x%x [%s]\n", (guint) fu_mkhi_arbh_svn_get_info_response_get_command(st), tmp);
1080
0
        } else {
1081
0
            g_string_append_printf(str, "  command: 0x%x\n", (guint) fu_mkhi_arbh_svn_get_info_response_get_command(st));
1082
0
        }
1083
0
    }
1084
0
    g_string_append_printf(str, "  result: 0x%x\n",
1085
0
                           (guint) fu_mkhi_arbh_svn_get_info_response_get_result(st));
1086
0
    g_string_append_printf(str, "  num_entries: 0x%x\n",
1087
0
                           (guint) fu_mkhi_arbh_svn_get_info_response_get_num_entries(st));
1088
0
    if (str->len > 0)
1089
0
        g_string_set_size(str, str->len - 1);
1090
0
    return g_string_free(g_steal_pointer(&str), FALSE);
1091
0
}
1092
static gboolean
1093
fu_mkhi_arbh_svn_get_info_response_validate_internal(FuMkhiArbhSvnGetInfoResponse *st, GError **error)
1094
0
{
1095
0
    g_return_val_if_fail(st != NULL, FALSE);
1096
0
    if (fu_mkhi_arbh_svn_get_info_response_get_group_id(st) != FU_MKHI_GROUP_ID_MCA) {
1097
0
        g_set_error(error,
1098
0
                    FWUPD_ERROR,
1099
0
                    FWUPD_ERROR_INVALID_DATA,
1100
0
                    "constant FuMkhiArbhSvnGetInfoResponse.group_id was not valid, "
1101
0
                    "expected 'FU_MKHI_GROUP_ID_MCA' and got 0x%x '%s'",
1102
0
                    fu_mkhi_arbh_svn_get_info_response_get_group_id(st),
1103
0
                    fu_mkhi_group_id_to_string(fu_mkhi_arbh_svn_get_info_response_get_group_id(st)));
1104
0
        return FALSE;
1105
0
    }
1106
0
    if (fu_mkhi_arbh_svn_get_info_response_get_command(st) != FU_MKHI_COMMAND_ARBH_SVN_GET_INFO_RESPONSE) {
1107
0
        g_set_error(error,
1108
0
                    FWUPD_ERROR,
1109
0
                    FWUPD_ERROR_INVALID_DATA,
1110
0
                    "constant FuMkhiArbhSvnGetInfoResponse.command was not valid, "
1111
0
                    "expected 'FU_MKHI_COMMAND_ARBH_SVN_GET_INFO_RESPONSE' and got 0x%x '%s'",
1112
0
                    fu_mkhi_arbh_svn_get_info_response_get_command(st),
1113
0
                    fu_mkhi_command_to_string(fu_mkhi_arbh_svn_get_info_response_get_command(st)));
1114
0
        return FALSE;
1115
0
    }
1116
0
    return TRUE;
1117
0
}
1118
static gboolean
1119
fu_mkhi_arbh_svn_get_info_response_parse_internal(FuMkhiArbhSvnGetInfoResponse *st, GError **error)
1120
0
{
1121
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
1122
0
        g_autofree gchar *str = fu_mkhi_arbh_svn_get_info_response_to_string(st);
1123
0
        g_debug("%s", str);
1124
0
    }
1125
0
    if (!fu_mkhi_arbh_svn_get_info_response_validate_internal(st, error))
1126
0
        return FALSE;
1127
0
    return TRUE;
1128
0
}
1129
1130
/**
1131
 * fu_mkhi_arbh_svn_get_info_response_parse: (skip):
1132
 **/
1133
FuMkhiArbhSvnGetInfoResponse *
1134
fu_mkhi_arbh_svn_get_info_response_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
1135
0
{
1136
0
    g_autoptr(FuMkhiArbhSvnGetInfoResponse) st = fu_mkhi_arbh_svn_get_info_response_new_internal();
1137
0
    g_return_val_if_fail(buf != NULL, NULL);
1138
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
1139
0
    if (!fu_memchk_read(bufsz, offset, 8, error)) {
1140
0
        g_prefix_error_literal(error, "invalid struct FuMkhiArbhSvnGetInfoResponse: ");
1141
0
        return NULL;
1142
0
    }
1143
0
    st->buf = g_byte_array_new();
1144
0
    g_byte_array_append(st->buf, buf + offset, 8);
1145
0
    if (!fu_mkhi_arbh_svn_get_info_response_parse_internal(st, error))
1146
0
        return NULL;
1147
0
    return g_steal_pointer(&st);
1148
0
}