Coverage Report

Created: 2025-12-14 06:56

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
    g_string_append_printf(str, "  result: 0x%x\n",
406
0
                           (guint) fu_mkhi_read_file_response_get_result(st));
407
0
    g_string_append_printf(str, "  data_size: 0x%x\n",
408
0
                           (guint) fu_mkhi_read_file_response_get_data_size(st));
409
0
    if (str->len > 0)
410
0
        g_string_set_size(str, str->len - 1);
411
0
    return g_string_free(g_steal_pointer(&str), FALSE);
412
0
}
413
static gboolean
414
fu_mkhi_read_file_response_validate_internal(FuMkhiReadFileResponse *st, GError **error)
415
0
{
416
0
    g_return_val_if_fail(st != NULL, FALSE);
417
0
    if (fu_mkhi_read_file_response_get_group_id(st) != FU_MKHI_GROUP_ID_MCA) {
418
0
        g_set_error(error,
419
0
                    FWUPD_ERROR,
420
0
                    FWUPD_ERROR_INVALID_DATA,
421
0
                    "constant FuMkhiReadFileResponse.group_id was not valid, "
422
0
                    "expected 'FuMkhiGroupId' and got '%s'",
423
0
                    fu_mkhi_group_id_to_string(fu_mkhi_read_file_response_get_group_id(st)));
424
0
        return FALSE;
425
0
    }
426
0
    if (fu_mkhi_read_file_response_get_command(st) != FU_MKHI_COMMAND_READ_FILE_RESPONSE) {
427
0
        g_set_error(error,
428
0
                    FWUPD_ERROR,
429
0
                    FWUPD_ERROR_INVALID_DATA,
430
0
                    "constant FuMkhiReadFileResponse.command was not valid, "
431
0
                    "expected 'FuMkhiCommand' and got '%s'",
432
0
                    fu_mkhi_command_to_string(fu_mkhi_read_file_response_get_command(st)));
433
0
        return FALSE;
434
0
    }
435
0
    return TRUE;
436
0
}
437
static gboolean
438
fu_mkhi_read_file_response_parse_internal(FuMkhiReadFileResponse *st, GError **error)
439
0
{
440
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
441
0
        g_autofree gchar *str = fu_mkhi_read_file_response_to_string(st);
442
0
        g_debug("%s", str);
443
0
    }
444
0
    if (!fu_mkhi_read_file_response_validate_internal(st, error))
445
0
        return FALSE;
446
0
    return TRUE;
447
0
}
448
449
/**
450
 * fu_mkhi_read_file_response_parse: (skip):
451
 **/
452
FuMkhiReadFileResponse *
453
fu_mkhi_read_file_response_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
454
0
{
455
0
    g_autoptr(FuMkhiReadFileResponse) st = fu_mkhi_read_file_response_new_internal();
456
0
    g_return_val_if_fail(buf != NULL, NULL);
457
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
458
0
    if (!fu_memchk_read(bufsz, offset, 8, error)) {
459
0
        g_prefix_error_literal(error, "invalid struct FuMkhiReadFileResponse: ");
460
0
        return NULL;
461
0
    }
462
0
    st->buf = g_byte_array_new();
463
0
    g_byte_array_append(st->buf, buf + offset, 8);
464
0
    if (!fu_mkhi_read_file_response_parse_internal(st, error))
465
0
        return NULL;
466
0
    return g_steal_pointer(&st);
467
0
}
468
/**
469
 * fu_mkhi_read_file_ex_request_ref: (skip):
470
 **/
471
FuMkhiReadFileExRequest *
472
fu_mkhi_read_file_ex_request_ref(FuMkhiReadFileExRequest *st)
473
0
{
474
0
    g_return_val_if_fail(st != NULL, NULL);
475
0
    st->refcount++;
476
0
    return st;
477
0
}
478
/**
479
 * fu_mkhi_read_file_ex_request_unref: (skip):
480
 **/
481
void
482
fu_mkhi_read_file_ex_request_unref(FuMkhiReadFileExRequest *st)
483
0
{
484
0
    g_return_if_fail(st != NULL);
485
0
    if (st->refcount == 0) {
486
0
        g_critical("FuMkhiReadFileExRequest refcount already zero");
487
0
        return;
488
0
    }
489
0
    if (--st->refcount > 0)
490
0
        return;
491
0
    if (st->buf != NULL)
492
0
        g_byte_array_unref(st->buf);
493
0
    g_free(st);
494
0
}
495
/**
496
 * fu_mkhi_read_file_ex_request_new_internal: (skip):
497
 **/
498
static FuMkhiReadFileExRequest *
499
fu_mkhi_read_file_ex_request_new_internal(void)
500
0
{
501
0
    FuMkhiReadFileExRequest *st = g_new0(FuMkhiReadFileExRequest, 1);
502
0
    st->refcount = 1;
503
0
    return st;
504
0
}
505
506
/* getters */
507
508
/* setters */
509
/**
510
 * fu_mkhi_read_file_ex_request_set_group_id: (skip):
511
 **/
512
static void
513
fu_mkhi_read_file_ex_request_set_group_id(FuMkhiReadFileExRequest *st, FuMkhiGroupId value)
514
0
{
515
0
    g_return_if_fail(st != NULL);
516
0
    st->buf->data[0] = value;
517
0
}
518
/**
519
 * fu_mkhi_read_file_ex_request_set_command: (skip):
520
 **/
521
static void
522
fu_mkhi_read_file_ex_request_set_command(FuMkhiReadFileExRequest *st, FuMkhiCommand value)
523
0
{
524
0
    g_return_if_fail(st != NULL);
525
0
    st->buf->data[1] = value;
526
0
}
527
/**
528
 * fu_mkhi_read_file_ex_request_set_result: (skip):
529
 **/
530
static void
531
fu_mkhi_read_file_ex_request_set_result(FuMkhiReadFileExRequest *st, guint8 value)
532
0
{
533
0
    g_return_if_fail(st != NULL);
534
0
    st->buf->data[3] = value;
535
0
}
536
/**
537
 * fu_mkhi_read_file_ex_request_set_file_id: (skip):
538
 **/
539
void
540
fu_mkhi_read_file_ex_request_set_file_id(FuMkhiReadFileExRequest *st, guint32 value)
541
0
{
542
0
    g_return_if_fail(st != NULL);
543
0
    fu_memwrite_uint32(st->buf->data + 4, value, G_LITTLE_ENDIAN);
544
0
}
545
/**
546
 * fu_mkhi_read_file_ex_request_set_offset: (skip):
547
 **/
548
static void
549
fu_mkhi_read_file_ex_request_set_offset(FuMkhiReadFileExRequest *st, guint32 value)
550
0
{
551
0
    g_return_if_fail(st != NULL);
552
0
    fu_memwrite_uint32(st->buf->data + 8, value, G_LITTLE_ENDIAN);
553
0
}
554
/**
555
 * fu_mkhi_read_file_ex_request_set_data_size: (skip):
556
 **/
557
void
558
fu_mkhi_read_file_ex_request_set_data_size(FuMkhiReadFileExRequest *st, guint32 value)
559
0
{
560
0
    g_return_if_fail(st != NULL);
561
0
    fu_memwrite_uint32(st->buf->data + 12, value, G_LITTLE_ENDIAN);
562
0
}
563
/**
564
 * fu_mkhi_read_file_ex_request_set_flags: (skip):
565
 **/
566
void
567
fu_mkhi_read_file_ex_request_set_flags(FuMkhiReadFileExRequest *st, guint8 value)
568
0
{
569
0
    g_return_if_fail(st != NULL);
570
0
    st->buf->data[16] = value;
571
0
}
572
/**
573
 * fu_mkhi_read_file_ex_request_new: (skip):
574
 **/
575
FuMkhiReadFileExRequest *
576
fu_mkhi_read_file_ex_request_new(void)
577
0
{
578
0
    FuMkhiReadFileExRequest *st = fu_mkhi_read_file_ex_request_new_internal();
579
0
    st->buf = g_byte_array_sized_new(17);
580
0
    fu_byte_array_set_size(st->buf, 17, 0x0);
581
0
    fu_mkhi_read_file_ex_request_set_group_id(st, FU_MKHI_GROUP_ID_MCA);
582
0
    fu_mkhi_read_file_ex_request_set_command(st, FU_MKHI_COMMAND_READ_FILE_EX);
583
0
    fu_mkhi_read_file_ex_request_set_result(st, 0x0);
584
0
    fu_mkhi_read_file_ex_request_set_offset(st, 0x0);
585
0
    return st;
586
0
}
587
/**
588
 * fu_mkhi_read_file_ex_response_ref: (skip):
589
 **/
590
FuMkhiReadFileExResponse *
591
fu_mkhi_read_file_ex_response_ref(FuMkhiReadFileExResponse *st)
592
0
{
593
0
    g_return_val_if_fail(st != NULL, NULL);
594
0
    st->refcount++;
595
0
    return st;
596
0
}
597
/**
598
 * fu_mkhi_read_file_ex_response_unref: (skip):
599
 **/
600
void
601
fu_mkhi_read_file_ex_response_unref(FuMkhiReadFileExResponse *st)
602
0
{
603
0
    g_return_if_fail(st != NULL);
604
0
    if (st->refcount == 0) {
605
0
        g_critical("FuMkhiReadFileExResponse refcount already zero");
606
0
        return;
607
0
    }
608
0
    if (--st->refcount > 0)
609
0
        return;
610
0
    if (st->buf != NULL)
611
0
        g_byte_array_unref(st->buf);
612
0
    g_free(st);
613
0
}
614
/**
615
 * fu_mkhi_read_file_ex_response_new_internal: (skip):
616
 **/
617
static FuMkhiReadFileExResponse *
618
fu_mkhi_read_file_ex_response_new_internal(void)
619
0
{
620
0
    FuMkhiReadFileExResponse *st = g_new0(FuMkhiReadFileExResponse, 1);
621
0
    st->refcount = 1;
622
0
    return st;
623
0
}
624
625
/* getters */
626
/**
627
 * fu_mkhi_read_file_ex_response_get_group_id: (skip):
628
 **/
629
static FuMkhiGroupId
630
fu_mkhi_read_file_ex_response_get_group_id(const FuMkhiReadFileExResponse *st)
631
0
{
632
0
    g_return_val_if_fail(st != NULL, 0x0);
633
0
    return st->buf->data[0];
634
0
}
635
/**
636
 * fu_mkhi_read_file_ex_response_get_command: (skip):
637
 **/
638
static FuMkhiCommand
639
fu_mkhi_read_file_ex_response_get_command(const FuMkhiReadFileExResponse *st)
640
0
{
641
0
    g_return_val_if_fail(st != NULL, 0x0);
642
0
    return st->buf->data[1];
643
0
}
644
/**
645
 * fu_mkhi_read_file_ex_response_get_result: (skip):
646
 **/
647
guint8
648
fu_mkhi_read_file_ex_response_get_result(const FuMkhiReadFileExResponse *st)
649
0
{
650
0
    g_return_val_if_fail(st != NULL, 0x0);
651
0
    return st->buf->data[3];
652
0
}
653
/**
654
 * fu_mkhi_read_file_ex_response_get_data_size: (skip):
655
 **/
656
guint32
657
fu_mkhi_read_file_ex_response_get_data_size(const FuMkhiReadFileExResponse *st)
658
0
{
659
0
    g_return_val_if_fail(st != NULL, 0x0);
660
0
    return fu_memread_uint32(st->buf->data + 4, G_LITTLE_ENDIAN);
661
0
}
662
663
/* setters */
664
/**
665
 * fu_mkhi_read_file_ex_response_to_string: (skip):
666
 **/
667
static gchar *
668
fu_mkhi_read_file_ex_response_to_string(const FuMkhiReadFileExResponse *st)
669
0
{
670
0
    g_autoptr(GString) str = g_string_new("FuMkhiReadFileExResponse:\n");
671
0
    g_return_val_if_fail(st != NULL, NULL);
672
0
    g_string_append_printf(str, "  result: 0x%x\n",
673
0
                           (guint) fu_mkhi_read_file_ex_response_get_result(st));
674
0
    g_string_append_printf(str, "  data_size: 0x%x\n",
675
0
                           (guint) fu_mkhi_read_file_ex_response_get_data_size(st));
676
0
    if (str->len > 0)
677
0
        g_string_set_size(str, str->len - 1);
678
0
    return g_string_free(g_steal_pointer(&str), FALSE);
679
0
}
680
static gboolean
681
fu_mkhi_read_file_ex_response_validate_internal(FuMkhiReadFileExResponse *st, GError **error)
682
0
{
683
0
    g_return_val_if_fail(st != NULL, FALSE);
684
0
    if (fu_mkhi_read_file_ex_response_get_group_id(st) != FU_MKHI_GROUP_ID_MCA) {
685
0
        g_set_error(error,
686
0
                    FWUPD_ERROR,
687
0
                    FWUPD_ERROR_INVALID_DATA,
688
0
                    "constant FuMkhiReadFileExResponse.group_id was not valid, "
689
0
                    "expected 'FuMkhiGroupId' and got '%s'",
690
0
                    fu_mkhi_group_id_to_string(fu_mkhi_read_file_ex_response_get_group_id(st)));
691
0
        return FALSE;
692
0
    }
693
0
    if (fu_mkhi_read_file_ex_response_get_command(st) != FU_MKHI_COMMAND_READ_FILE_EX_RESPONSE) {
694
0
        g_set_error(error,
695
0
                    FWUPD_ERROR,
696
0
                    FWUPD_ERROR_INVALID_DATA,
697
0
                    "constant FuMkhiReadFileExResponse.command was not valid, "
698
0
                    "expected 'FuMkhiCommand' and got '%s'",
699
0
                    fu_mkhi_command_to_string(fu_mkhi_read_file_ex_response_get_command(st)));
700
0
        return FALSE;
701
0
    }
702
0
    return TRUE;
703
0
}
704
static gboolean
705
fu_mkhi_read_file_ex_response_parse_internal(FuMkhiReadFileExResponse *st, GError **error)
706
0
{
707
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
708
0
        g_autofree gchar *str = fu_mkhi_read_file_ex_response_to_string(st);
709
0
        g_debug("%s", str);
710
0
    }
711
0
    if (!fu_mkhi_read_file_ex_response_validate_internal(st, error))
712
0
        return FALSE;
713
0
    return TRUE;
714
0
}
715
716
/**
717
 * fu_mkhi_read_file_ex_response_parse: (skip):
718
 **/
719
FuMkhiReadFileExResponse *
720
fu_mkhi_read_file_ex_response_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
721
0
{
722
0
    g_autoptr(FuMkhiReadFileExResponse) st = fu_mkhi_read_file_ex_response_new_internal();
723
0
    g_return_val_if_fail(buf != NULL, NULL);
724
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
725
0
    if (!fu_memchk_read(bufsz, offset, 8, error)) {
726
0
        g_prefix_error_literal(error, "invalid struct FuMkhiReadFileExResponse: ");
727
0
        return NULL;
728
0
    }
729
0
    st->buf = g_byte_array_new();
730
0
    g_byte_array_append(st->buf, buf + offset, 8);
731
0
    if (!fu_mkhi_read_file_ex_response_parse_internal(st, error))
732
0
        return NULL;
733
0
    return g_steal_pointer(&st);
734
0
}
735
/**
736
 * fu_mkhi_arbh_svn_info_entry_ref: (skip):
737
 **/
738
FuMkhiArbhSvnInfoEntry *
739
fu_mkhi_arbh_svn_info_entry_ref(FuMkhiArbhSvnInfoEntry *st)
740
0
{
741
0
    g_return_val_if_fail(st != NULL, NULL);
742
0
    st->refcount++;
743
0
    return st;
744
0
}
745
/**
746
 * fu_mkhi_arbh_svn_info_entry_unref: (skip):
747
 **/
748
void
749
fu_mkhi_arbh_svn_info_entry_unref(FuMkhiArbhSvnInfoEntry *st)
750
0
{
751
0
    g_return_if_fail(st != NULL);
752
0
    if (st->refcount == 0) {
753
0
        g_critical("FuMkhiArbhSvnInfoEntry refcount already zero");
754
0
        return;
755
0
    }
756
0
    if (--st->refcount > 0)
757
0
        return;
758
0
    if (st->buf != NULL)
759
0
        g_byte_array_unref(st->buf);
760
0
    g_free(st);
761
0
}
762
/**
763
 * fu_mkhi_arbh_svn_info_entry_new_internal: (skip):
764
 **/
765
static FuMkhiArbhSvnInfoEntry *
766
fu_mkhi_arbh_svn_info_entry_new_internal(void)
767
0
{
768
0
    FuMkhiArbhSvnInfoEntry *st = g_new0(FuMkhiArbhSvnInfoEntry, 1);
769
0
    st->refcount = 1;
770
0
    return st;
771
0
}
772
773
/* getters */
774
/**
775
 * fu_mkhi_arbh_svn_info_entry_get_usage_id: (skip):
776
 **/
777
FuMkhiArbhSvnInfoEntryUsageId
778
fu_mkhi_arbh_svn_info_entry_get_usage_id(const FuMkhiArbhSvnInfoEntry *st)
779
0
{
780
0
    g_return_val_if_fail(st != NULL, 0x0);
781
0
    return st->buf->data[0];
782
0
}
783
/**
784
 * fu_mkhi_arbh_svn_info_entry_get_executing: (skip):
785
 **/
786
guint8
787
fu_mkhi_arbh_svn_info_entry_get_executing(const FuMkhiArbhSvnInfoEntry *st)
788
0
{
789
0
    g_return_val_if_fail(st != NULL, 0x0);
790
0
    return st->buf->data[2];
791
0
}
792
/**
793
 * fu_mkhi_arbh_svn_info_entry_get_min_allowed: (skip):
794
 **/
795
guint8
796
fu_mkhi_arbh_svn_info_entry_get_min_allowed(const FuMkhiArbhSvnInfoEntry *st)
797
0
{
798
0
    g_return_val_if_fail(st != NULL, 0x0);
799
0
    return st->buf->data[3];
800
0
}
801
802
/* setters */
803
/**
804
 * fu_mkhi_arbh_svn_info_entry_to_string: (skip):
805
 **/
806
static gchar *
807
fu_mkhi_arbh_svn_info_entry_to_string(const FuMkhiArbhSvnInfoEntry *st)
808
0
{
809
0
    g_autoptr(GString) str = g_string_new("FuMkhiArbhSvnInfoEntry:\n");
810
0
    g_return_val_if_fail(st != NULL, NULL);
811
0
    {
812
0
        const gchar *tmp = fu_mkhi_arbh_svn_info_entry_usage_id_to_string(fu_mkhi_arbh_svn_info_entry_get_usage_id(st));
813
0
        if (tmp != NULL) {
814
0
            g_string_append_printf(str, "  usage_id: 0x%x [%s]\n", (guint) fu_mkhi_arbh_svn_info_entry_get_usage_id(st), tmp);
815
0
        } else {
816
0
            g_string_append_printf(str, "  usage_id: 0x%x\n", (guint) fu_mkhi_arbh_svn_info_entry_get_usage_id(st));
817
0
        }
818
0
    }
819
0
    g_string_append_printf(str, "  executing: 0x%x\n",
820
0
                           (guint) fu_mkhi_arbh_svn_info_entry_get_executing(st));
821
0
    g_string_append_printf(str, "  min_allowed: 0x%x\n",
822
0
                           (guint) fu_mkhi_arbh_svn_info_entry_get_min_allowed(st));
823
0
    if (str->len > 0)
824
0
        g_string_set_size(str, str->len - 1);
825
0
    return g_string_free(g_steal_pointer(&str), FALSE);
826
0
}
827
static gboolean
828
fu_mkhi_arbh_svn_info_entry_validate_internal(FuMkhiArbhSvnInfoEntry *st, GError **error)
829
0
{
830
0
    g_return_val_if_fail(st != NULL, FALSE);
831
0
    return TRUE;
832
0
}
833
static gboolean
834
fu_mkhi_arbh_svn_info_entry_parse_internal(FuMkhiArbhSvnInfoEntry *st, GError **error)
835
0
{
836
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
837
0
        g_autofree gchar *str = fu_mkhi_arbh_svn_info_entry_to_string(st);
838
0
        g_debug("%s", str);
839
0
    }
840
0
    if (!fu_mkhi_arbh_svn_info_entry_validate_internal(st, error))
841
0
        return FALSE;
842
0
    return TRUE;
843
0
}
844
845
/**
846
 * fu_mkhi_arbh_svn_info_entry_parse: (skip):
847
 **/
848
FuMkhiArbhSvnInfoEntry *
849
fu_mkhi_arbh_svn_info_entry_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
850
0
{
851
0
    g_autoptr(FuMkhiArbhSvnInfoEntry) st = fu_mkhi_arbh_svn_info_entry_new_internal();
852
0
    g_return_val_if_fail(buf != NULL, NULL);
853
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
854
0
    if (!fu_memchk_read(bufsz, offset, 4, error)) {
855
0
        g_prefix_error_literal(error, "invalid struct FuMkhiArbhSvnInfoEntry: ");
856
0
        return NULL;
857
0
    }
858
0
    st->buf = g_byte_array_new();
859
0
    g_byte_array_append(st->buf, buf + offset, 4);
860
0
    if (!fu_mkhi_arbh_svn_info_entry_parse_internal(st, error))
861
0
        return NULL;
862
0
    return g_steal_pointer(&st);
863
0
}
864
/**
865
 * fu_mkhi_arbh_svn_get_info_request_ref: (skip):
866
 **/
867
FuMkhiArbhSvnGetInfoRequest *
868
fu_mkhi_arbh_svn_get_info_request_ref(FuMkhiArbhSvnGetInfoRequest *st)
869
0
{
870
0
    g_return_val_if_fail(st != NULL, NULL);
871
0
    st->refcount++;
872
0
    return st;
873
0
}
874
/**
875
 * fu_mkhi_arbh_svn_get_info_request_unref: (skip):
876
 **/
877
void
878
fu_mkhi_arbh_svn_get_info_request_unref(FuMkhiArbhSvnGetInfoRequest *st)
879
0
{
880
0
    g_return_if_fail(st != NULL);
881
0
    if (st->refcount == 0) {
882
0
        g_critical("FuMkhiArbhSvnGetInfoRequest refcount already zero");
883
0
        return;
884
0
    }
885
0
    if (--st->refcount > 0)
886
0
        return;
887
0
    if (st->buf != NULL)
888
0
        g_byte_array_unref(st->buf);
889
0
    g_free(st);
890
0
}
891
/**
892
 * fu_mkhi_arbh_svn_get_info_request_new_internal: (skip):
893
 **/
894
static FuMkhiArbhSvnGetInfoRequest *
895
fu_mkhi_arbh_svn_get_info_request_new_internal(void)
896
0
{
897
0
    FuMkhiArbhSvnGetInfoRequest *st = g_new0(FuMkhiArbhSvnGetInfoRequest, 1);
898
0
    st->refcount = 1;
899
0
    return st;
900
0
}
901
902
/* getters */
903
904
/* setters */
905
/**
906
 * fu_mkhi_arbh_svn_get_info_request_set_group_id: (skip):
907
 **/
908
static void
909
fu_mkhi_arbh_svn_get_info_request_set_group_id(FuMkhiArbhSvnGetInfoRequest *st, FuMkhiGroupId value)
910
0
{
911
0
    g_return_if_fail(st != NULL);
912
0
    st->buf->data[0] = value;
913
0
}
914
/**
915
 * fu_mkhi_arbh_svn_get_info_request_set_command: (skip):
916
 **/
917
static void
918
fu_mkhi_arbh_svn_get_info_request_set_command(FuMkhiArbhSvnGetInfoRequest *st, FuMkhiCommand value)
919
0
{
920
0
    g_return_if_fail(st != NULL);
921
0
    st->buf->data[1] = value;
922
0
}
923
/**
924
 * fu_mkhi_arbh_svn_get_info_request_set_result: (skip):
925
 **/
926
static void
927
fu_mkhi_arbh_svn_get_info_request_set_result(FuMkhiArbhSvnGetInfoRequest *st, guint8 value)
928
0
{
929
0
    g_return_if_fail(st != NULL);
930
0
    st->buf->data[3] = value;
931
0
}
932
/**
933
 * fu_mkhi_arbh_svn_get_info_request_new: (skip):
934
 **/
935
FuMkhiArbhSvnGetInfoRequest *
936
fu_mkhi_arbh_svn_get_info_request_new(void)
937
0
{
938
0
    FuMkhiArbhSvnGetInfoRequest *st = fu_mkhi_arbh_svn_get_info_request_new_internal();
939
0
    st->buf = g_byte_array_sized_new(4);
940
0
    fu_byte_array_set_size(st->buf, 4, 0x0);
941
0
    fu_mkhi_arbh_svn_get_info_request_set_group_id(st, FU_MKHI_GROUP_ID_MCA);
942
0
    fu_mkhi_arbh_svn_get_info_request_set_command(st, FU_MKHI_COMMAND_ARBH_SVN_GET_INFO);
943
0
    fu_mkhi_arbh_svn_get_info_request_set_result(st, 0x0);
944
0
    return st;
945
0
}
946
/**
947
 * fu_mkhi_arbh_svn_get_info_response_ref: (skip):
948
 **/
949
FuMkhiArbhSvnGetInfoResponse *
950
fu_mkhi_arbh_svn_get_info_response_ref(FuMkhiArbhSvnGetInfoResponse *st)
951
0
{
952
0
    g_return_val_if_fail(st != NULL, NULL);
953
0
    st->refcount++;
954
0
    return st;
955
0
}
956
/**
957
 * fu_mkhi_arbh_svn_get_info_response_unref: (skip):
958
 **/
959
void
960
fu_mkhi_arbh_svn_get_info_response_unref(FuMkhiArbhSvnGetInfoResponse *st)
961
0
{
962
0
    g_return_if_fail(st != NULL);
963
0
    if (st->refcount == 0) {
964
0
        g_critical("FuMkhiArbhSvnGetInfoResponse refcount already zero");
965
0
        return;
966
0
    }
967
0
    if (--st->refcount > 0)
968
0
        return;
969
0
    if (st->buf != NULL)
970
0
        g_byte_array_unref(st->buf);
971
0
    g_free(st);
972
0
}
973
/**
974
 * fu_mkhi_arbh_svn_get_info_response_new_internal: (skip):
975
 **/
976
static FuMkhiArbhSvnGetInfoResponse *
977
fu_mkhi_arbh_svn_get_info_response_new_internal(void)
978
0
{
979
0
    FuMkhiArbhSvnGetInfoResponse *st = g_new0(FuMkhiArbhSvnGetInfoResponse, 1);
980
0
    st->refcount = 1;
981
0
    return st;
982
0
}
983
984
/* getters */
985
/**
986
 * fu_mkhi_arbh_svn_get_info_response_get_group_id: (skip):
987
 **/
988
static FuMkhiGroupId
989
fu_mkhi_arbh_svn_get_info_response_get_group_id(const FuMkhiArbhSvnGetInfoResponse *st)
990
0
{
991
0
    g_return_val_if_fail(st != NULL, 0x0);
992
0
    return st->buf->data[0];
993
0
}
994
/**
995
 * fu_mkhi_arbh_svn_get_info_response_get_command: (skip):
996
 **/
997
static FuMkhiCommand
998
fu_mkhi_arbh_svn_get_info_response_get_command(const FuMkhiArbhSvnGetInfoResponse *st)
999
0
{
1000
0
    g_return_val_if_fail(st != NULL, 0x0);
1001
0
    return st->buf->data[1];
1002
0
}
1003
/**
1004
 * fu_mkhi_arbh_svn_get_info_response_get_result: (skip):
1005
 **/
1006
guint8
1007
fu_mkhi_arbh_svn_get_info_response_get_result(const FuMkhiArbhSvnGetInfoResponse *st)
1008
0
{
1009
0
    g_return_val_if_fail(st != NULL, 0x0);
1010
0
    return st->buf->data[3];
1011
0
}
1012
/**
1013
 * fu_mkhi_arbh_svn_get_info_response_get_num_entries: (skip):
1014
 **/
1015
guint32
1016
fu_mkhi_arbh_svn_get_info_response_get_num_entries(const FuMkhiArbhSvnGetInfoResponse *st)
1017
0
{
1018
0
    g_return_val_if_fail(st != NULL, 0x0);
1019
0
    return fu_memread_uint32(st->buf->data + 4, G_LITTLE_ENDIAN);
1020
0
}
1021
1022
/* setters */
1023
/**
1024
 * fu_mkhi_arbh_svn_get_info_response_to_string: (skip):
1025
 **/
1026
static gchar *
1027
fu_mkhi_arbh_svn_get_info_response_to_string(const FuMkhiArbhSvnGetInfoResponse *st)
1028
0
{
1029
0
    g_autoptr(GString) str = g_string_new("FuMkhiArbhSvnGetInfoResponse:\n");
1030
0
    g_return_val_if_fail(st != NULL, NULL);
1031
0
    g_string_append_printf(str, "  result: 0x%x\n",
1032
0
                           (guint) fu_mkhi_arbh_svn_get_info_response_get_result(st));
1033
0
    g_string_append_printf(str, "  num_entries: 0x%x\n",
1034
0
                           (guint) fu_mkhi_arbh_svn_get_info_response_get_num_entries(st));
1035
0
    if (str->len > 0)
1036
0
        g_string_set_size(str, str->len - 1);
1037
0
    return g_string_free(g_steal_pointer(&str), FALSE);
1038
0
}
1039
static gboolean
1040
fu_mkhi_arbh_svn_get_info_response_validate_internal(FuMkhiArbhSvnGetInfoResponse *st, GError **error)
1041
0
{
1042
0
    g_return_val_if_fail(st != NULL, FALSE);
1043
0
    if (fu_mkhi_arbh_svn_get_info_response_get_group_id(st) != FU_MKHI_GROUP_ID_MCA) {
1044
0
        g_set_error(error,
1045
0
                    FWUPD_ERROR,
1046
0
                    FWUPD_ERROR_INVALID_DATA,
1047
0
                    "constant FuMkhiArbhSvnGetInfoResponse.group_id was not valid, "
1048
0
                    "expected 'FuMkhiGroupId' and got '%s'",
1049
0
                    fu_mkhi_group_id_to_string(fu_mkhi_arbh_svn_get_info_response_get_group_id(st)));
1050
0
        return FALSE;
1051
0
    }
1052
0
    if (fu_mkhi_arbh_svn_get_info_response_get_command(st) != FU_MKHI_COMMAND_ARBH_SVN_GET_INFO_RESPONSE) {
1053
0
        g_set_error(error,
1054
0
                    FWUPD_ERROR,
1055
0
                    FWUPD_ERROR_INVALID_DATA,
1056
0
                    "constant FuMkhiArbhSvnGetInfoResponse.command was not valid, "
1057
0
                    "expected 'FuMkhiCommand' and got '%s'",
1058
0
                    fu_mkhi_command_to_string(fu_mkhi_arbh_svn_get_info_response_get_command(st)));
1059
0
        return FALSE;
1060
0
    }
1061
0
    return TRUE;
1062
0
}
1063
static gboolean
1064
fu_mkhi_arbh_svn_get_info_response_parse_internal(FuMkhiArbhSvnGetInfoResponse *st, GError **error)
1065
0
{
1066
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
1067
0
        g_autofree gchar *str = fu_mkhi_arbh_svn_get_info_response_to_string(st);
1068
0
        g_debug("%s", str);
1069
0
    }
1070
0
    if (!fu_mkhi_arbh_svn_get_info_response_validate_internal(st, error))
1071
0
        return FALSE;
1072
0
    return TRUE;
1073
0
}
1074
1075
/**
1076
 * fu_mkhi_arbh_svn_get_info_response_parse: (skip):
1077
 **/
1078
FuMkhiArbhSvnGetInfoResponse *
1079
fu_mkhi_arbh_svn_get_info_response_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
1080
0
{
1081
0
    g_autoptr(FuMkhiArbhSvnGetInfoResponse) st = fu_mkhi_arbh_svn_get_info_response_new_internal();
1082
0
    g_return_val_if_fail(buf != NULL, NULL);
1083
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
1084
0
    if (!fu_memchk_read(bufsz, offset, 8, error)) {
1085
0
        g_prefix_error_literal(error, "invalid struct FuMkhiArbhSvnGetInfoResponse: ");
1086
0
        return NULL;
1087
0
    }
1088
0
    st->buf = g_byte_array_new();
1089
0
    g_byte_array_append(st->buf, buf + offset, 8);
1090
0
    if (!fu_mkhi_arbh_svn_get_info_response_parse_internal(st, error))
1091
0
        return NULL;
1092
0
    return g_steal_pointer(&st);
1093
0
}