Coverage Report

Created: 2026-01-09 07:21

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