Coverage Report

Created: 2025-07-01 07:09

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