Coverage Report

Created: 2026-03-11 07:30

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/work/fu-elantp-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-elantp-struct.h"
12
#include "fu-byte-array.h"
13
#include "fu-bytes.h"
14
#include "fu-mem-private.h"
15
#include "fu-string.h"
16
17
#ifdef G_LOG_DOMAIN
18
  #undef G_LOG_DOMAIN
19
#endif
20
0
#define G_LOG_DOMAIN "FuStruct"
21
22
/**
23
 * fu_etp_rptid_to_string:
24
 * @val: value, e.g. %FU_ETP_RPTID_TP_IAP
25
 *
26
 * Converts an enumerated value to a string.
27
 *
28
 * Returns: identifier string
29
 **/
30
static const gchar *
31
fu_etp_rptid_to_string(FuEtpRptid val)
32
0
{
33
0
    if (val == FU_ETP_RPTID_TP_FEATURE)
34
0
        return "tp-feature";
35
0
    if (val == FU_ETP_RPTID_TP_IAP)
36
0
        return "tp-iap";
37
0
    if (val == FU_ETP_RPTID_MCU_FEATURE)
38
0
        return "mcu-feature";
39
0
    if (val == FU_ETP_RPTID_MCU_IAP)
40
0
        return "mcu-iap";
41
0
    return NULL;
42
0
}
43
44
45
/**
46
 * fu_struct_elantp_firmware_ftr_ref: (skip):
47
 **/
48
FuStructElantpFirmwareFtr *
49
fu_struct_elantp_firmware_ftr_ref(FuStructElantpFirmwareFtr *st)
50
0
{
51
0
    g_return_val_if_fail(st != NULL, NULL);
52
0
    st->refcount++;
53
0
    return st;
54
0
}
55
/**
56
 * fu_struct_elantp_firmware_ftr_unref: (skip):
57
 **/
58
void
59
fu_struct_elantp_firmware_ftr_unref(FuStructElantpFirmwareFtr *st)
60
277
{
61
277
    g_return_if_fail(st != NULL);
62
277
    if (st->refcount == 0) {
63
0
        g_critical("FuStructElantpFirmwareFtr refcount already zero");
64
0
        return;
65
0
    }
66
277
    if (--st->refcount > 0)
67
0
        return;
68
277
    if (st->buf != NULL)
69
277
        g_byte_array_unref(st->buf);
70
277
    g_free(st);
71
277
}
72
/**
73
 * fu_struct_elantp_firmware_ftr_new_internal: (skip):
74
 **/
75
static FuStructElantpFirmwareFtr *
76
fu_struct_elantp_firmware_ftr_new_internal(void)
77
277
{
78
277
    FuStructElantpFirmwareFtr *st = g_new0(FuStructElantpFirmwareFtr, 1);
79
277
    st->refcount = 1;
80
277
    return st;
81
277
}
82
83
/* getters */
84
85
/* setters */
86
/**
87
 * fu_struct_elantp_firmware_ftr_new: (skip):
88
 **/
89
FuStructElantpFirmwareFtr *
90
fu_struct_elantp_firmware_ftr_new(void)
91
39
{
92
39
    FuStructElantpFirmwareFtr *st = fu_struct_elantp_firmware_ftr_new_internal();
93
39
    st->buf = g_byte_array_sized_new(6);
94
39
    fu_byte_array_set_size(st->buf, 6, 0x0);
95
39
    memcpy(st->buf->data + 0x0, "\xAA\x55\xCC\x33\xFF\xFF", 6); /* nocheck:blocked */
96
39
    return st;
97
39
}
98
static gboolean
99
fu_struct_elantp_firmware_ftr_validate_internal(FuStructElantpFirmwareFtr *st, GError **error)
100
238
{
101
238
    g_return_val_if_fail(st != NULL, FALSE);
102
238
    if (memcmp(st->buf->data + 0, "\xAA\x55\xCC\x33\xFF\xFF", 6) != 0) {
103
62
        g_set_error_literal(error,
104
62
                            FWUPD_ERROR,
105
62
                            FWUPD_ERROR_INVALID_DATA,
106
62
                            "constant FuStructElantpFirmwareFtr.magic was not valid");
107
62
        return FALSE;
108
62
    }
109
176
    return TRUE;
110
238
}
111
/**
112
 * fu_struct_elantp_firmware_ftr_validate_stream: (skip):
113
 **/
114
gboolean
115
fu_struct_elantp_firmware_ftr_validate_stream(GInputStream *stream, gsize offset, GError **error)
116
238
{
117
238
    g_autoptr(FuStructElantpFirmwareFtr) st = fu_struct_elantp_firmware_ftr_new_internal();
118
238
    g_return_val_if_fail(G_IS_INPUT_STREAM(stream), FALSE);
119
238
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
120
238
    st->buf = fu_input_stream_read_byte_array(stream, offset, 6, NULL, error);
121
238
    if (st->buf == NULL) {
122
0
        g_prefix_error(error, "FuStructElantpFirmwareFtr failed read of 0x%x: ", (guint) 6);
123
0
        return FALSE;
124
0
    }
125
238
    if (st->buf->len != 6) {
126
0
        g_set_error(error,
127
0
                    FWUPD_ERROR,
128
0
                    FWUPD_ERROR_INVALID_DATA,
129
0
                    "FuStructElantpFirmwareFtr requested 0x%x and got 0x%x",
130
0
                    (guint) 6,
131
0
                    (guint) st->buf->len);
132
0
        return FALSE;
133
0
    }
134
238
    return fu_struct_elantp_firmware_ftr_validate_internal(st, error);
135
238
}
136
/**
137
 * fu_struct_elantp_firmware_hdr_ref: (skip):
138
 **/
139
FuStructElantpFirmwareHdr *
140
fu_struct_elantp_firmware_hdr_ref(FuStructElantpFirmwareHdr *st)
141
0
{
142
0
    g_return_val_if_fail(st != NULL, NULL);
143
0
    st->refcount++;
144
0
    return st;
145
0
}
146
/**
147
 * fu_struct_elantp_firmware_hdr_unref: (skip):
148
 **/
149
void
150
fu_struct_elantp_firmware_hdr_unref(FuStructElantpFirmwareHdr *st)
151
215
{
152
215
    g_return_if_fail(st != NULL);
153
215
    if (st->refcount == 0) {
154
0
        g_critical("FuStructElantpFirmwareHdr refcount already zero");
155
0
        return;
156
0
    }
157
215
    if (--st->refcount > 0)
158
0
        return;
159
215
    if (st->buf != NULL)
160
193
        g_byte_array_unref(st->buf);
161
215
    g_free(st);
162
215
}
163
/**
164
 * fu_struct_elantp_firmware_hdr_new_internal: (skip):
165
 **/
166
static FuStructElantpFirmwareHdr *
167
fu_struct_elantp_firmware_hdr_new_internal(void)
168
215
{
169
215
    FuStructElantpFirmwareHdr *st = g_new0(FuStructElantpFirmwareHdr, 1);
170
215
    st->refcount = 1;
171
215
    return st;
172
215
}
173
174
/* getters */
175
/**
176
 * fu_struct_elantp_firmware_hdr_get_ic_type: (skip):
177
 **/
178
guint16
179
fu_struct_elantp_firmware_hdr_get_ic_type(const FuStructElantpFirmwareHdr *st)
180
54
{
181
54
    g_return_val_if_fail(st != NULL, 0x0);
182
54
    return fu_memread_uint16(st->buf->data + 0, G_LITTLE_ENDIAN);
183
54
}
184
/**
185
 * fu_struct_elantp_firmware_hdr_get_iap_ver: (skip):
186
 **/
187
guint16
188
fu_struct_elantp_firmware_hdr_get_iap_ver(const FuStructElantpFirmwareHdr *st)
189
54
{
190
54
    g_return_val_if_fail(st != NULL, 0x0);
191
54
    return fu_memread_uint16(st->buf->data + 4, G_LITTLE_ENDIAN);
192
54
}
193
/**
194
 * fu_struct_elantp_firmware_hdr_get_iap_start: (skip):
195
 **/
196
guint16
197
fu_struct_elantp_firmware_hdr_get_iap_start(const FuStructElantpFirmwareHdr *st)
198
147
{
199
147
    g_return_val_if_fail(st != NULL, 0x0);
200
147
    return fu_memread_uint16(st->buf->data + 6, G_LITTLE_ENDIAN);
201
147
}
202
/**
203
 * fu_struct_elantp_firmware_hdr_get_iap_forcetable: (skip):
204
 **/
205
guint16
206
fu_struct_elantp_firmware_hdr_get_iap_forcetable(const FuStructElantpFirmwareHdr *st)
207
0
{
208
0
    g_return_val_if_fail(st != NULL, 0x0);
209
0
    return fu_memread_uint16(st->buf->data + 10, G_LITTLE_ENDIAN);
210
0
}
211
212
/* setters */
213
/**
214
 * fu_struct_elantp_firmware_hdr_set_ic_type: (skip):
215
 **/
216
void
217
fu_struct_elantp_firmware_hdr_set_ic_type(FuStructElantpFirmwareHdr *st, guint16 value)
218
39
{
219
39
    g_return_if_fail(st != NULL);
220
39
    fu_memwrite_uint16(st->buf->data + 0, value, G_LITTLE_ENDIAN);
221
39
}
222
/**
223
 * fu_struct_elantp_firmware_hdr_set_iap_ver: (skip):
224
 **/
225
void
226
fu_struct_elantp_firmware_hdr_set_iap_ver(FuStructElantpFirmwareHdr *st, guint16 value)
227
39
{
228
39
    g_return_if_fail(st != NULL);
229
39
    fu_memwrite_uint16(st->buf->data + 4, value, G_LITTLE_ENDIAN);
230
39
}
231
/**
232
 * fu_struct_elantp_firmware_hdr_set_iap_start: (skip):
233
 **/
234
void
235
fu_struct_elantp_firmware_hdr_set_iap_start(FuStructElantpFirmwareHdr *st, guint16 value)
236
39
{
237
39
    g_return_if_fail(st != NULL);
238
39
    fu_memwrite_uint16(st->buf->data + 6, value, G_LITTLE_ENDIAN);
239
39
}
240
/**
241
 * fu_struct_elantp_firmware_hdr_set_iap_forcetable: (skip):
242
 **/
243
void
244
fu_struct_elantp_firmware_hdr_set_iap_forcetable(FuStructElantpFirmwareHdr *st, guint16 value)
245
39
{
246
39
    g_return_if_fail(st != NULL);
247
39
    fu_memwrite_uint16(st->buf->data + 10, value, G_LITTLE_ENDIAN);
248
39
}
249
/**
250
 * fu_struct_elantp_firmware_hdr_new: (skip):
251
 **/
252
FuStructElantpFirmwareHdr *
253
fu_struct_elantp_firmware_hdr_new(void)
254
39
{
255
39
    FuStructElantpFirmwareHdr *st = fu_struct_elantp_firmware_hdr_new_internal();
256
39
    st->buf = g_byte_array_sized_new(12);
257
39
    fu_byte_array_set_size(st->buf, 12, 0x0);
258
39
    return st;
259
39
}
260
/**
261
 * fu_struct_elantp_firmware_hdr_to_string: (skip):
262
 **/
263
static gchar *
264
fu_struct_elantp_firmware_hdr_to_string(const FuStructElantpFirmwareHdr *st)
265
0
{
266
0
    g_autoptr(GString) str = g_string_new("FuStructElantpFirmwareHdr:\n");
267
0
    g_return_val_if_fail(st != NULL, NULL);
268
0
    g_string_append_printf(str, "  ic_type: 0x%x\n",
269
0
                           (guint) fu_struct_elantp_firmware_hdr_get_ic_type(st));
270
0
    g_string_append_printf(str, "  iap_ver: 0x%x\n",
271
0
                           (guint) fu_struct_elantp_firmware_hdr_get_iap_ver(st));
272
0
    g_string_append_printf(str, "  iap_start: 0x%x\n",
273
0
                           (guint) fu_struct_elantp_firmware_hdr_get_iap_start(st));
274
0
    g_string_append_printf(str, "  iap_forcetable: 0x%x\n",
275
0
                           (guint) fu_struct_elantp_firmware_hdr_get_iap_forcetable(st));
276
0
    if (str->len > 0)
277
0
        g_string_set_size(str, str->len - 1);
278
0
    return g_string_free(g_steal_pointer(&str), FALSE);
279
0
}
280
static gboolean
281
fu_struct_elantp_firmware_hdr_validate_internal(FuStructElantpFirmwareHdr *st, GError **error)
282
147
{
283
147
    g_return_val_if_fail(st != NULL, FALSE);
284
147
    return TRUE;
285
147
}
286
static gboolean
287
fu_struct_elantp_firmware_hdr_parse_internal(FuStructElantpFirmwareHdr *st, GError **error)
288
147
{
289
147
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
290
0
        g_autofree gchar *str = fu_struct_elantp_firmware_hdr_to_string(st);
291
0
        g_debug("%s", str);
292
0
    }
293
147
    if (!fu_struct_elantp_firmware_hdr_validate_internal(st, error))
294
0
        return FALSE;
295
147
    return TRUE;
296
147
}
297
/**
298
 * fu_struct_elantp_firmware_hdr_parse_stream: (skip):
299
 **/
300
FuStructElantpFirmwareHdr *
301
fu_struct_elantp_firmware_hdr_parse_stream(GInputStream *stream, gsize offset, GError **error)
302
176
{
303
176
    g_autoptr(FuStructElantpFirmwareHdr) st = fu_struct_elantp_firmware_hdr_new_internal();
304
176
    st->buf = fu_input_stream_read_byte_array(stream, offset, 12, NULL, error);
305
176
    if (st->buf == NULL) {
306
22
        g_prefix_error(error, "FuStructElantpFirmwareHdr failed read of 0x%x: ", (guint) 12);
307
22
        return NULL;
308
22
    }
309
154
    if (st->buf->len != 12) {
310
7
        g_set_error(error,
311
7
                    FWUPD_ERROR,
312
7
                    FWUPD_ERROR_INVALID_DATA,
313
7
                    "FuStructElantpFirmwareHdr requested 0x%x and got 0x%x",
314
7
                    (guint) 12,
315
7
                    (guint) st->buf->len);
316
7
        return NULL;
317
7
    }
318
147
    if (!fu_struct_elantp_firmware_hdr_parse_internal(st, error))
319
0
        return NULL;
320
147
    return g_steal_pointer(&st);
321
147
}
322
/**
323
 * fu_struct_elantp_haptic_firmware_hdr_ref: (skip):
324
 **/
325
FuStructElantpHapticFirmwareHdr *
326
fu_struct_elantp_haptic_firmware_hdr_ref(FuStructElantpHapticFirmwareHdr *st)
327
0
{
328
0
    g_return_val_if_fail(st != NULL, NULL);
329
0
    st->refcount++;
330
0
    return st;
331
0
}
332
/**
333
 * fu_struct_elantp_haptic_firmware_hdr_unref: (skip):
334
 **/
335
void
336
fu_struct_elantp_haptic_firmware_hdr_unref(FuStructElantpHapticFirmwareHdr *st)
337
0
{
338
0
    g_return_if_fail(st != NULL);
339
0
    if (st->refcount == 0) {
340
0
        g_critical("FuStructElantpHapticFirmwareHdr refcount already zero");
341
0
        return;
342
0
    }
343
0
    if (--st->refcount > 0)
344
0
        return;
345
0
    if (st->buf != NULL)
346
0
        g_byte_array_unref(st->buf);
347
0
    g_free(st);
348
0
}
349
/**
350
 * fu_struct_elantp_haptic_firmware_hdr_new_internal: (skip):
351
 **/
352
static FuStructElantpHapticFirmwareHdr *
353
fu_struct_elantp_haptic_firmware_hdr_new_internal(void)
354
0
{
355
0
    FuStructElantpHapticFirmwareHdr *st = g_new0(FuStructElantpHapticFirmwareHdr, 1);
356
0
    st->refcount = 1;
357
0
    return st;
358
0
}
359
360
/* getters */
361
/**
362
 * fu_struct_elantp_haptic_firmware_hdr_get_magic: (skip):
363
 **/
364
static const guint8 *
365
fu_struct_elantp_haptic_firmware_hdr_get_magic(const FuStructElantpHapticFirmwareHdr *st, gsize *bufsz)
366
0
{
367
0
    g_return_val_if_fail(st != NULL, NULL);
368
0
    if (bufsz != NULL)
369
0
        *bufsz = 4;
370
0
    return st->buf->data + 0;
371
0
}
372
/**
373
 * fu_struct_elantp_haptic_firmware_hdr_get_ver_sm: (skip):
374
 **/
375
guint8
376
fu_struct_elantp_haptic_firmware_hdr_get_ver_sm(const FuStructElantpHapticFirmwareHdr *st)
377
0
{
378
0
    g_return_val_if_fail(st != NULL, 0x0);
379
0
    return st->buf->data[4];
380
0
}
381
/**
382
 * fu_struct_elantp_haptic_firmware_hdr_get_ver_d: (skip):
383
 **/
384
guint8
385
fu_struct_elantp_haptic_firmware_hdr_get_ver_d(const FuStructElantpHapticFirmwareHdr *st)
386
0
{
387
0
    g_return_val_if_fail(st != NULL, 0x0);
388
0
    return st->buf->data[5];
389
0
}
390
/**
391
 * fu_struct_elantp_haptic_firmware_hdr_get_ver_y: (skip):
392
 **/
393
guint8
394
fu_struct_elantp_haptic_firmware_hdr_get_ver_y(const FuStructElantpHapticFirmwareHdr *st)
395
0
{
396
0
    g_return_val_if_fail(st != NULL, 0x0);
397
0
    return st->buf->data[6];
398
0
}
399
400
/* setters */
401
/**
402
 * fu_struct_elantp_haptic_firmware_hdr_to_string: (skip):
403
 **/
404
static gchar *
405
fu_struct_elantp_haptic_firmware_hdr_to_string(const FuStructElantpHapticFirmwareHdr *st)
406
0
{
407
0
    g_autoptr(GString) str = g_string_new("FuStructElantpHapticFirmwareHdr:\n");
408
0
    g_return_val_if_fail(st != NULL, NULL);
409
0
    {
410
0
        gsize bufsz = 0;
411
0
        const guint8 *buf = fu_struct_elantp_haptic_firmware_hdr_get_magic(st, &bufsz);
412
0
        g_autoptr(GString) tmp = g_string_new(NULL);
413
0
        for (gsize i = 0; i < bufsz; i++)
414
0
            g_string_append_printf(tmp, "%02X", buf[i]);
415
0
        g_string_append_printf(str, "  magic: 0x%s\n", tmp->str);
416
0
    }
417
0
    g_string_append_printf(str, "  ver_sm: 0x%x\n",
418
0
                           (guint) fu_struct_elantp_haptic_firmware_hdr_get_ver_sm(st));
419
0
    g_string_append_printf(str, "  ver_d: 0x%x\n",
420
0
                           (guint) fu_struct_elantp_haptic_firmware_hdr_get_ver_d(st));
421
0
    g_string_append_printf(str, "  ver_y: 0x%x\n",
422
0
                           (guint) fu_struct_elantp_haptic_firmware_hdr_get_ver_y(st));
423
0
    if (str->len > 0)
424
0
        g_string_set_size(str, str->len - 1);
425
0
    return g_string_free(g_steal_pointer(&str), FALSE);
426
0
}
427
static gboolean
428
fu_struct_elantp_haptic_firmware_hdr_validate_internal(FuStructElantpHapticFirmwareHdr *st, GError **error)
429
0
{
430
0
    g_return_val_if_fail(st != NULL, FALSE);
431
0
    if (memcmp(st->buf->data + 0, "\xFF\x40\xA2\x5B", 4) != 0) {
432
0
        g_set_error_literal(error,
433
0
                            FWUPD_ERROR,
434
0
                            FWUPD_ERROR_INVALID_DATA,
435
0
                            "constant FuStructElantpHapticFirmwareHdr.magic was not valid");
436
0
        return FALSE;
437
0
    }
438
0
    return TRUE;
439
0
}
440
/**
441
 * fu_struct_elantp_haptic_firmware_hdr_validate_stream: (skip):
442
 **/
443
gboolean
444
fu_struct_elantp_haptic_firmware_hdr_validate_stream(GInputStream *stream, gsize offset, GError **error)
445
0
{
446
0
    g_autoptr(FuStructElantpHapticFirmwareHdr) st = fu_struct_elantp_haptic_firmware_hdr_new_internal();
447
0
    g_return_val_if_fail(G_IS_INPUT_STREAM(stream), FALSE);
448
0
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
449
0
    st->buf = fu_input_stream_read_byte_array(stream, offset, 7, NULL, error);
450
0
    if (st->buf == NULL) {
451
0
        g_prefix_error(error, "FuStructElantpHapticFirmwareHdr failed read of 0x%x: ", (guint) 7);
452
0
        return FALSE;
453
0
    }
454
0
    if (st->buf->len != 7) {
455
0
        g_set_error(error,
456
0
                    FWUPD_ERROR,
457
0
                    FWUPD_ERROR_INVALID_DATA,
458
0
                    "FuStructElantpHapticFirmwareHdr requested 0x%x and got 0x%x",
459
0
                    (guint) 7,
460
0
                    (guint) st->buf->len);
461
0
        return FALSE;
462
0
    }
463
0
    return fu_struct_elantp_haptic_firmware_hdr_validate_internal(st, error);
464
0
}
465
static gboolean
466
fu_struct_elantp_haptic_firmware_hdr_parse_internal(FuStructElantpHapticFirmwareHdr *st, GError **error)
467
0
{
468
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
469
0
        g_autofree gchar *str = fu_struct_elantp_haptic_firmware_hdr_to_string(st);
470
0
        g_debug("%s", str);
471
0
    }
472
0
    if (!fu_struct_elantp_haptic_firmware_hdr_validate_internal(st, error))
473
0
        return FALSE;
474
0
    return TRUE;
475
0
}
476
/**
477
 * fu_struct_elantp_haptic_firmware_hdr_parse_stream: (skip):
478
 **/
479
FuStructElantpHapticFirmwareHdr *
480
fu_struct_elantp_haptic_firmware_hdr_parse_stream(GInputStream *stream, gsize offset, GError **error)
481
0
{
482
0
    g_autoptr(FuStructElantpHapticFirmwareHdr) st = fu_struct_elantp_haptic_firmware_hdr_new_internal();
483
0
    st->buf = fu_input_stream_read_byte_array(stream, offset, 7, NULL, error);
484
0
    if (st->buf == NULL) {
485
0
        g_prefix_error(error, "FuStructElantpHapticFirmwareHdr failed read of 0x%x: ", (guint) 7);
486
0
        return NULL;
487
0
    }
488
0
    if (st->buf->len != 7) {
489
0
        g_set_error(error,
490
0
                    FWUPD_ERROR,
491
0
                    FWUPD_ERROR_INVALID_DATA,
492
0
                    "FuStructElantpHapticFirmwareHdr requested 0x%x and got 0x%x",
493
0
                    (guint) 7,
494
0
                    (guint) st->buf->len);
495
0
        return NULL;
496
0
    }
497
0
    if (!fu_struct_elantp_haptic_firmware_hdr_parse_internal(st, error))
498
0
        return NULL;
499
0
    return g_steal_pointer(&st);
500
0
}
501
/**
502
 * fu_struct_elantp_read_cmd_req_ref: (skip):
503
 **/
504
FuStructElantpReadCmdReq *
505
fu_struct_elantp_read_cmd_req_ref(FuStructElantpReadCmdReq *st)
506
0
{
507
0
    g_return_val_if_fail(st != NULL, NULL);
508
0
    st->refcount++;
509
0
    return st;
510
0
}
511
/**
512
 * fu_struct_elantp_read_cmd_req_unref: (skip):
513
 **/
514
void
515
fu_struct_elantp_read_cmd_req_unref(FuStructElantpReadCmdReq *st)
516
0
{
517
0
    g_return_if_fail(st != NULL);
518
0
    if (st->refcount == 0) {
519
0
        g_critical("FuStructElantpReadCmdReq refcount already zero");
520
0
        return;
521
0
    }
522
0
    if (--st->refcount > 0)
523
0
        return;
524
0
    if (st->buf != NULL)
525
0
        g_byte_array_unref(st->buf);
526
0
    g_free(st);
527
0
}
528
/**
529
 * fu_struct_elantp_read_cmd_req_new_internal: (skip):
530
 **/
531
static FuStructElantpReadCmdReq *
532
fu_struct_elantp_read_cmd_req_new_internal(void)
533
0
{
534
0
    FuStructElantpReadCmdReq *st = g_new0(FuStructElantpReadCmdReq, 1);
535
0
    st->refcount = 1;
536
0
    return st;
537
0
}
538
539
/* getters */
540
541
/* setters */
542
/**
543
 * fu_struct_elantp_read_cmd_req_set_report_id: (skip):
544
 **/
545
void
546
fu_struct_elantp_read_cmd_req_set_report_id(FuStructElantpReadCmdReq *st, FuEtpRptid value)
547
0
{
548
0
    g_return_if_fail(st != NULL);
549
0
    st->buf->data[0] = value;
550
0
}
551
/**
552
 * fu_struct_elantp_read_cmd_req_set_cmd: (skip):
553
 **/
554
void
555
fu_struct_elantp_read_cmd_req_set_cmd(FuStructElantpReadCmdReq *st, FuEtpCmd value)
556
0
{
557
0
    g_return_if_fail(st != NULL);
558
0
    fu_memwrite_uint16(st->buf->data + 1, value, G_LITTLE_ENDIAN);
559
0
}
560
/**
561
 * fu_struct_elantp_read_cmd_req_set_reg: (skip):
562
 **/
563
void
564
fu_struct_elantp_read_cmd_req_set_reg(FuStructElantpReadCmdReq *st, guint16 value)
565
0
{
566
0
    g_return_if_fail(st != NULL);
567
0
    fu_memwrite_uint16(st->buf->data + 3, value, G_LITTLE_ENDIAN);
568
0
}
569
/**
570
 * fu_struct_elantp_read_cmd_req_new: (skip):
571
 **/
572
FuStructElantpReadCmdReq *
573
fu_struct_elantp_read_cmd_req_new(void)
574
0
{
575
0
    FuStructElantpReadCmdReq *st = fu_struct_elantp_read_cmd_req_new_internal();
576
0
    st->buf = g_byte_array_sized_new(5);
577
0
    fu_byte_array_set_size(st->buf, 5, 0x0);
578
0
    return st;
579
0
}
580
/**
581
 * fu_struct_elantp_read_cmd_res_ref: (skip):
582
 **/
583
FuStructElantpReadCmdRes *
584
fu_struct_elantp_read_cmd_res_ref(FuStructElantpReadCmdRes *st)
585
0
{
586
0
    g_return_val_if_fail(st != NULL, NULL);
587
0
    st->refcount++;
588
0
    return st;
589
0
}
590
/**
591
 * fu_struct_elantp_read_cmd_res_unref: (skip):
592
 **/
593
void
594
fu_struct_elantp_read_cmd_res_unref(FuStructElantpReadCmdRes *st)
595
0
{
596
0
    g_return_if_fail(st != NULL);
597
0
    if (st->refcount == 0) {
598
0
        g_critical("FuStructElantpReadCmdRes refcount already zero");
599
0
        return;
600
0
    }
601
0
    if (--st->refcount > 0)
602
0
        return;
603
0
    if (st->buf != NULL)
604
0
        g_byte_array_unref(st->buf);
605
0
    g_free(st);
606
0
}
607
/**
608
 * fu_struct_elantp_read_cmd_res_new_internal: (skip):
609
 **/
610
static FuStructElantpReadCmdRes *
611
fu_struct_elantp_read_cmd_res_new_internal(void)
612
0
{
613
0
    FuStructElantpReadCmdRes *st = g_new0(FuStructElantpReadCmdRes, 1);
614
0
    st->refcount = 1;
615
0
    return st;
616
0
}
617
618
/* getters */
619
/**
620
 * fu_struct_elantp_read_cmd_res_get_report_id: (skip):
621
 **/
622
FuEtpRptid
623
fu_struct_elantp_read_cmd_res_get_report_id(const FuStructElantpReadCmdRes *st)
624
0
{
625
0
    g_return_val_if_fail(st != NULL, 0x0);
626
0
    return st->buf->data[0];
627
0
}
628
/**
629
 * fu_struct_elantp_read_cmd_res_get_value: (skip):
630
 **/
631
guint16
632
fu_struct_elantp_read_cmd_res_get_value(const FuStructElantpReadCmdRes *st)
633
0
{
634
0
    g_return_val_if_fail(st != NULL, 0x0);
635
0
    return fu_memread_uint16(st->buf->data + 3, G_LITTLE_ENDIAN);
636
0
}
637
638
/* setters */
639
/**
640
 * fu_struct_elantp_read_cmd_res_to_string: (skip):
641
 **/
642
static gchar *
643
fu_struct_elantp_read_cmd_res_to_string(const FuStructElantpReadCmdRes *st)
644
0
{
645
0
    g_autoptr(GString) str = g_string_new("FuStructElantpReadCmdRes:\n");
646
0
    g_return_val_if_fail(st != NULL, NULL);
647
0
    {
648
0
        const gchar *tmp = fu_etp_rptid_to_string(fu_struct_elantp_read_cmd_res_get_report_id(st));
649
0
        if (tmp != NULL) {
650
0
            g_string_append_printf(str, "  report_id: 0x%x [%s]\n", (guint) fu_struct_elantp_read_cmd_res_get_report_id(st), tmp);
651
0
        } else {
652
0
            g_string_append_printf(str, "  report_id: 0x%x\n", (guint) fu_struct_elantp_read_cmd_res_get_report_id(st));
653
0
        }
654
0
    }
655
0
    g_string_append_printf(str, "  value: 0x%x\n",
656
0
                           (guint) fu_struct_elantp_read_cmd_res_get_value(st));
657
0
    if (str->len > 0)
658
0
        g_string_set_size(str, str->len - 1);
659
0
    return g_string_free(g_steal_pointer(&str), FALSE);
660
0
}
661
static gboolean
662
fu_struct_elantp_read_cmd_res_validate_internal(FuStructElantpReadCmdRes *st, GError **error)
663
0
{
664
0
    g_return_val_if_fail(st != NULL, FALSE);
665
0
    return TRUE;
666
0
}
667
static gboolean
668
fu_struct_elantp_read_cmd_res_parse_internal(FuStructElantpReadCmdRes *st, GError **error)
669
0
{
670
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
671
0
        g_autofree gchar *str = fu_struct_elantp_read_cmd_res_to_string(st);
672
0
        g_debug("%s", str);
673
0
    }
674
0
    if (!fu_struct_elantp_read_cmd_res_validate_internal(st, error))
675
0
        return FALSE;
676
0
    return TRUE;
677
0
}
678
679
/**
680
 * fu_struct_elantp_read_cmd_res_parse: (skip):
681
 **/
682
FuStructElantpReadCmdRes *
683
fu_struct_elantp_read_cmd_res_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
684
0
{
685
0
    g_autoptr(FuStructElantpReadCmdRes) st = fu_struct_elantp_read_cmd_res_new_internal();
686
0
    g_return_val_if_fail(buf != NULL, NULL);
687
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
688
0
    if (!fu_memchk_read(bufsz, offset, 5, error)) {
689
0
        g_prefix_error_literal(error, "invalid struct FuStructElantpReadCmdRes: ");
690
0
        return NULL;
691
0
    }
692
0
    st->buf = g_byte_array_new();
693
0
    g_byte_array_append(st->buf, buf + offset, 5);
694
0
    if (!fu_struct_elantp_read_cmd_res_parse_internal(st, error))
695
0
        return NULL;
696
0
    return g_steal_pointer(&st);
697
0
}
698
/**
699
 * fu_struct_elantp_write_cmd_req_ref: (skip):
700
 **/
701
FuStructElantpWriteCmdReq *
702
fu_struct_elantp_write_cmd_req_ref(FuStructElantpWriteCmdReq *st)
703
0
{
704
0
    g_return_val_if_fail(st != NULL, NULL);
705
0
    st->refcount++;
706
0
    return st;
707
0
}
708
/**
709
 * fu_struct_elantp_write_cmd_req_unref: (skip):
710
 **/
711
void
712
fu_struct_elantp_write_cmd_req_unref(FuStructElantpWriteCmdReq *st)
713
0
{
714
0
    g_return_if_fail(st != NULL);
715
0
    if (st->refcount == 0) {
716
0
        g_critical("FuStructElantpWriteCmdReq refcount already zero");
717
0
        return;
718
0
    }
719
0
    if (--st->refcount > 0)
720
0
        return;
721
0
    if (st->buf != NULL)
722
0
        g_byte_array_unref(st->buf);
723
0
    g_free(st);
724
0
}
725
/**
726
 * fu_struct_elantp_write_cmd_req_new_internal: (skip):
727
 **/
728
static FuStructElantpWriteCmdReq *
729
fu_struct_elantp_write_cmd_req_new_internal(void)
730
0
{
731
0
    FuStructElantpWriteCmdReq *st = g_new0(FuStructElantpWriteCmdReq, 1);
732
0
    st->refcount = 1;
733
0
    return st;
734
0
}
735
736
/* getters */
737
738
/* setters */
739
/**
740
 * fu_struct_elantp_write_cmd_req_set_report_id: (skip):
741
 **/
742
void
743
fu_struct_elantp_write_cmd_req_set_report_id(FuStructElantpWriteCmdReq *st, FuEtpRptid value)
744
0
{
745
0
    g_return_if_fail(st != NULL);
746
0
    st->buf->data[0] = value;
747
0
}
748
/**
749
 * fu_struct_elantp_write_cmd_req_set_reg: (skip):
750
 **/
751
void
752
fu_struct_elantp_write_cmd_req_set_reg(FuStructElantpWriteCmdReq *st, guint16 value)
753
0
{
754
0
    g_return_if_fail(st != NULL);
755
0
    fu_memwrite_uint16(st->buf->data + 1, value, G_LITTLE_ENDIAN);
756
0
}
757
/**
758
 * fu_struct_elantp_write_cmd_req_set_cmd: (skip):
759
 **/
760
void
761
fu_struct_elantp_write_cmd_req_set_cmd(FuStructElantpWriteCmdReq *st, FuEtpCmd value)
762
0
{
763
0
    g_return_if_fail(st != NULL);
764
0
    fu_memwrite_uint16(st->buf->data + 3, value, G_LITTLE_ENDIAN);
765
0
}
766
/**
767
 * fu_struct_elantp_write_cmd_req_new: (skip):
768
 **/
769
FuStructElantpWriteCmdReq *
770
fu_struct_elantp_write_cmd_req_new(void)
771
0
{
772
0
    FuStructElantpWriteCmdReq *st = fu_struct_elantp_write_cmd_req_new_internal();
773
0
    st->buf = g_byte_array_sized_new(5);
774
0
    fu_byte_array_set_size(st->buf, 5, 0x0);
775
0
    return st;
776
0
}