Coverage Report

Created: 2026-06-15 06:54

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
484
{
61
484
    g_return_if_fail(st != NULL);
62
484
    if (st->refcount == 0) {
63
0
        g_critical("FuStructElantpFirmwareFtr refcount already zero");
64
0
        return;
65
0
    }
66
484
    if (--st->refcount > 0)
67
0
        return;
68
484
    if (st->buf != NULL)
69
484
        g_byte_array_unref(st->buf);
70
484
    g_free(st);
71
484
}
72
/**
73
 * fu_struct_elantp_firmware_ftr_new_internal: (skip):
74
 **/
75
static FuStructElantpFirmwareFtr *
76
fu_struct_elantp_firmware_ftr_new_internal(void)
77
484
{
78
484
    FuStructElantpFirmwareFtr *st = g_new0(FuStructElantpFirmwareFtr, 1);
79
484
    st->refcount = 1;
80
484
    return st;
81
484
}
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
170
{
92
170
    FuStructElantpFirmwareFtr *st = fu_struct_elantp_firmware_ftr_new_internal();
93
170
    st->buf = g_byte_array_sized_new(6);
94
170
    fu_byte_array_set_size(st->buf, 6, 0x0);
95
170
    memcpy(st->buf->data + 0x0, "\xAA\x55\xCC\x33\xFF\xFF", 6); /* nocheck:blocked */
96
170
    return st;
97
170
}
98
static gboolean
99
fu_struct_elantp_firmware_ftr_validate_internal(FuStructElantpFirmwareFtr *st, GError **error)
100
314
{
101
314
    g_return_val_if_fail(st != NULL, FALSE);
102
314
    if (memcmp(st->buf->data + 0, "\xAA\x55\xCC\x33\xFF\xFF", 6) != 0) {
103
65
        g_set_error_literal(error,
104
65
                            FWUPD_ERROR,
105
65
                            FWUPD_ERROR_INVALID_DATA,
106
65
                            "constant FuStructElantpFirmwareFtr.magic was not valid");
107
65
        return FALSE;
108
65
    }
109
249
    return TRUE;
110
314
}
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
314
{
117
314
    g_autoptr(FuStructElantpFirmwareFtr) st = fu_struct_elantp_firmware_ftr_new_internal();
118
314
    g_return_val_if_fail(G_IS_INPUT_STREAM(stream), FALSE);
119
314
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
120
314
    st->buf = fu_input_stream_read_byte_array(stream, offset, 6, NULL, error);
121
314
    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
314
    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
314
    return fu_struct_elantp_firmware_ftr_validate_internal(st, error);
135
314
}
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
419
{
152
419
    g_return_if_fail(st != NULL);
153
419
    if (st->refcount == 0) {
154
0
        g_critical("FuStructElantpFirmwareHdr refcount already zero");
155
0
        return;
156
0
    }
157
419
    if (--st->refcount > 0)
158
0
        return;
159
419
    if (st->buf != NULL)
160
401
        g_byte_array_unref(st->buf);
161
419
    g_free(st);
162
419
}
163
/**
164
 * fu_struct_elantp_firmware_hdr_new_internal: (skip):
165
 **/
166
static FuStructElantpFirmwareHdr *
167
fu_struct_elantp_firmware_hdr_new_internal(void)
168
419
{
169
419
    FuStructElantpFirmwareHdr *st = g_new0(FuStructElantpFirmwareHdr, 1);
170
419
    st->refcount = 1;
171
419
    return st;
172
419
}
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
206
{
181
206
    g_return_val_if_fail(st != NULL, 0x0);
182
206
    return fu_memread_uint16(st->buf->data + 0, G_LITTLE_ENDIAN);
183
206
}
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
206
{
190
206
    g_return_val_if_fail(st != NULL, 0x0);
191
206
    return fu_memread_uint16(st->buf->data + 4, G_LITTLE_ENDIAN);
192
206
}
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
222
{
199
222
    g_return_val_if_fail(st != NULL, 0x0);
200
222
    return fu_memread_uint16(st->buf->data + 6, G_LITTLE_ENDIAN);
201
222
}
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
36
{
208
36
    g_return_val_if_fail(st != NULL, 0x0);
209
36
    return fu_memread_uint16(st->buf->data + 10, G_LITTLE_ENDIAN);
210
36
}
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
170
{
219
170
    g_return_if_fail(st != NULL);
220
170
    fu_memwrite_uint16(st->buf->data + 0, value, G_LITTLE_ENDIAN);
221
170
}
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
170
{
228
170
    g_return_if_fail(st != NULL);
229
170
    fu_memwrite_uint16(st->buf->data + 4, value, G_LITTLE_ENDIAN);
230
170
}
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
170
{
237
170
    g_return_if_fail(st != NULL);
238
170
    fu_memwrite_uint16(st->buf->data + 6, value, G_LITTLE_ENDIAN);
239
170
}
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
170
{
246
170
    g_return_if_fail(st != NULL);
247
170
    fu_memwrite_uint16(st->buf->data + 10, value, G_LITTLE_ENDIAN);
248
170
}
249
/**
250
 * fu_struct_elantp_firmware_hdr_new: (skip):
251
 **/
252
FuStructElantpFirmwareHdr *
253
fu_struct_elantp_firmware_hdr_new(void)
254
170
{
255
170
    FuStructElantpFirmwareHdr *st = fu_struct_elantp_firmware_hdr_new_internal();
256
170
    st->buf = g_byte_array_sized_new(12);
257
170
    fu_byte_array_set_size(st->buf, 12, 0x0);
258
170
    return st;
259
170
}
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_parse_internal(FuStructElantpFirmwareHdr *st, GError **error)
282
222
{
283
222
    if (g_log_get_debug_enabled()) {
284
0
        g_autofree gchar *str = fu_struct_elantp_firmware_hdr_to_string(st);
285
0
        g_debug("%s", str);
286
0
    }
287
222
    return TRUE;
288
222
}
289
/**
290
 * fu_struct_elantp_firmware_hdr_parse_stream: (skip):
291
 **/
292
FuStructElantpFirmwareHdr *
293
fu_struct_elantp_firmware_hdr_parse_stream(GInputStream *stream, gsize offset, GError **error)
294
249
{
295
249
    g_autoptr(FuStructElantpFirmwareHdr) st = fu_struct_elantp_firmware_hdr_new_internal();
296
249
    st->buf = fu_input_stream_read_byte_array(stream, offset, 12, NULL, error);
297
249
    if (st->buf == NULL) {
298
18
        g_prefix_error(error, "FuStructElantpFirmwareHdr failed read of 0x%x: ", (guint) 12);
299
18
        return NULL;
300
18
    }
301
231
    if (st->buf->len != 12) {
302
9
        g_set_error(error,
303
9
                    FWUPD_ERROR,
304
9
                    FWUPD_ERROR_INVALID_DATA,
305
9
                    "FuStructElantpFirmwareHdr requested 0x%x and got 0x%x",
306
9
                    (guint) 12,
307
9
                    (guint) st->buf->len);
308
9
        return NULL;
309
9
    }
310
222
    if (!fu_struct_elantp_firmware_hdr_parse_internal(st, error))
311
0
        return NULL;
312
222
    return g_steal_pointer(&st);
313
222
}
314
/**
315
 * fu_struct_elantp_haptic_firmware_hdr_ref: (skip):
316
 **/
317
FuStructElantpHapticFirmwareHdr *
318
fu_struct_elantp_haptic_firmware_hdr_ref(FuStructElantpHapticFirmwareHdr *st)
319
0
{
320
0
    g_return_val_if_fail(st != NULL, NULL);
321
0
    st->refcount++;
322
0
    return st;
323
0
}
324
/**
325
 * fu_struct_elantp_haptic_firmware_hdr_unref: (skip):
326
 **/
327
void
328
fu_struct_elantp_haptic_firmware_hdr_unref(FuStructElantpHapticFirmwareHdr *st)
329
0
{
330
0
    g_return_if_fail(st != NULL);
331
0
    if (st->refcount == 0) {
332
0
        g_critical("FuStructElantpHapticFirmwareHdr refcount already zero");
333
0
        return;
334
0
    }
335
0
    if (--st->refcount > 0)
336
0
        return;
337
0
    if (st->buf != NULL)
338
0
        g_byte_array_unref(st->buf);
339
0
    g_free(st);
340
0
}
341
/**
342
 * fu_struct_elantp_haptic_firmware_hdr_new_internal: (skip):
343
 **/
344
static FuStructElantpHapticFirmwareHdr *
345
fu_struct_elantp_haptic_firmware_hdr_new_internal(void)
346
0
{
347
0
    FuStructElantpHapticFirmwareHdr *st = g_new0(FuStructElantpHapticFirmwareHdr, 1);
348
0
    st->refcount = 1;
349
0
    return st;
350
0
}
351
352
/* getters */
353
/**
354
 * fu_struct_elantp_haptic_firmware_hdr_get_magic: (skip):
355
 **/
356
static const guint8 *
357
fu_struct_elantp_haptic_firmware_hdr_get_magic(const FuStructElantpHapticFirmwareHdr *st, gsize *bufsz)
358
0
{
359
0
    g_return_val_if_fail(st != NULL, NULL);
360
0
    if (bufsz != NULL)
361
0
        *bufsz = 4;
362
0
    return st->buf->data + 0;
363
0
}
364
/**
365
 * fu_struct_elantp_haptic_firmware_hdr_get_ver_sm: (skip):
366
 **/
367
guint8
368
fu_struct_elantp_haptic_firmware_hdr_get_ver_sm(const FuStructElantpHapticFirmwareHdr *st)
369
0
{
370
0
    g_return_val_if_fail(st != NULL, 0x0);
371
0
    return st->buf->data[4];
372
0
}
373
/**
374
 * fu_struct_elantp_haptic_firmware_hdr_get_ver_d: (skip):
375
 **/
376
guint8
377
fu_struct_elantp_haptic_firmware_hdr_get_ver_d(const FuStructElantpHapticFirmwareHdr *st)
378
0
{
379
0
    g_return_val_if_fail(st != NULL, 0x0);
380
0
    return st->buf->data[5];
381
0
}
382
/**
383
 * fu_struct_elantp_haptic_firmware_hdr_get_ver_y: (skip):
384
 **/
385
guint8
386
fu_struct_elantp_haptic_firmware_hdr_get_ver_y(const FuStructElantpHapticFirmwareHdr *st)
387
0
{
388
0
    g_return_val_if_fail(st != NULL, 0x0);
389
0
    return st->buf->data[6];
390
0
}
391
392
/* setters */
393
/**
394
 * fu_struct_elantp_haptic_firmware_hdr_to_string: (skip):
395
 **/
396
static gchar *
397
fu_struct_elantp_haptic_firmware_hdr_to_string(const FuStructElantpHapticFirmwareHdr *st)
398
0
{
399
0
    g_autoptr(GString) str = g_string_new("FuStructElantpHapticFirmwareHdr:\n");
400
0
    g_return_val_if_fail(st != NULL, NULL);
401
0
    {
402
0
        gsize bufsz = 0;
403
0
        const guint8 *buf = fu_struct_elantp_haptic_firmware_hdr_get_magic(st, &bufsz);
404
0
        g_autoptr(GString) tmp = g_string_new(NULL);
405
0
        for (gsize i = 0; i < bufsz; i++)
406
0
            g_string_append_printf(tmp, "%02X", buf[i]);
407
0
        g_string_append_printf(str, "  magic: 0x%s\n", tmp->str);
408
0
    }
409
0
    g_string_append_printf(str, "  ver_sm: 0x%x\n",
410
0
                           (guint) fu_struct_elantp_haptic_firmware_hdr_get_ver_sm(st));
411
0
    g_string_append_printf(str, "  ver_d: 0x%x\n",
412
0
                           (guint) fu_struct_elantp_haptic_firmware_hdr_get_ver_d(st));
413
0
    g_string_append_printf(str, "  ver_y: 0x%x\n",
414
0
                           (guint) fu_struct_elantp_haptic_firmware_hdr_get_ver_y(st));
415
0
    if (str->len > 0)
416
0
        g_string_set_size(str, str->len - 1);
417
0
    return g_string_free(g_steal_pointer(&str), FALSE);
418
0
}
419
static gboolean
420
fu_struct_elantp_haptic_firmware_hdr_validate_internal(FuStructElantpHapticFirmwareHdr *st, GError **error)
421
0
{
422
0
    g_return_val_if_fail(st != NULL, FALSE);
423
0
    if (memcmp(st->buf->data + 0, "\xFF\x40\xA2\x5B", 4) != 0) {
424
0
        g_set_error_literal(error,
425
0
                            FWUPD_ERROR,
426
0
                            FWUPD_ERROR_INVALID_DATA,
427
0
                            "constant FuStructElantpHapticFirmwareHdr.magic was not valid");
428
0
        return FALSE;
429
0
    }
430
0
    return TRUE;
431
0
}
432
/**
433
 * fu_struct_elantp_haptic_firmware_hdr_validate_stream: (skip):
434
 **/
435
gboolean
436
fu_struct_elantp_haptic_firmware_hdr_validate_stream(GInputStream *stream, gsize offset, GError **error)
437
0
{
438
0
    g_autoptr(FuStructElantpHapticFirmwareHdr) st = fu_struct_elantp_haptic_firmware_hdr_new_internal();
439
0
    g_return_val_if_fail(G_IS_INPUT_STREAM(stream), FALSE);
440
0
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
441
0
    st->buf = fu_input_stream_read_byte_array(stream, offset, 7, NULL, error);
442
0
    if (st->buf == NULL) {
443
0
        g_prefix_error(error, "FuStructElantpHapticFirmwareHdr failed read of 0x%x: ", (guint) 7);
444
0
        return FALSE;
445
0
    }
446
0
    if (st->buf->len != 7) {
447
0
        g_set_error(error,
448
0
                    FWUPD_ERROR,
449
0
                    FWUPD_ERROR_INVALID_DATA,
450
0
                    "FuStructElantpHapticFirmwareHdr requested 0x%x and got 0x%x",
451
0
                    (guint) 7,
452
0
                    (guint) st->buf->len);
453
0
        return FALSE;
454
0
    }
455
0
    return fu_struct_elantp_haptic_firmware_hdr_validate_internal(st, error);
456
0
}
457
static gboolean
458
fu_struct_elantp_haptic_firmware_hdr_parse_internal(FuStructElantpHapticFirmwareHdr *st, GError **error)
459
0
{
460
0
    if (g_log_get_debug_enabled()) {
461
0
        g_autofree gchar *str = fu_struct_elantp_haptic_firmware_hdr_to_string(st);
462
0
        g_debug("%s", str);
463
0
    }
464
0
    if (!fu_struct_elantp_haptic_firmware_hdr_validate_internal(st, error))
465
0
        return FALSE;
466
0
    return TRUE;
467
0
}
468
/**
469
 * fu_struct_elantp_haptic_firmware_hdr_parse_stream: (skip):
470
 **/
471
FuStructElantpHapticFirmwareHdr *
472
fu_struct_elantp_haptic_firmware_hdr_parse_stream(GInputStream *stream, gsize offset, GError **error)
473
0
{
474
0
    g_autoptr(FuStructElantpHapticFirmwareHdr) st = fu_struct_elantp_haptic_firmware_hdr_new_internal();
475
0
    st->buf = fu_input_stream_read_byte_array(stream, offset, 7, NULL, error);
476
0
    if (st->buf == NULL) {
477
0
        g_prefix_error(error, "FuStructElantpHapticFirmwareHdr failed read of 0x%x: ", (guint) 7);
478
0
        return NULL;
479
0
    }
480
0
    if (st->buf->len != 7) {
481
0
        g_set_error(error,
482
0
                    FWUPD_ERROR,
483
0
                    FWUPD_ERROR_INVALID_DATA,
484
0
                    "FuStructElantpHapticFirmwareHdr requested 0x%x and got 0x%x",
485
0
                    (guint) 7,
486
0
                    (guint) st->buf->len);
487
0
        return NULL;
488
0
    }
489
0
    if (!fu_struct_elantp_haptic_firmware_hdr_parse_internal(st, error))
490
0
        return NULL;
491
0
    return g_steal_pointer(&st);
492
0
}
493
/**
494
 * fu_struct_elantp_read_cmd_req_ref: (skip):
495
 **/
496
FuStructElantpReadCmdReq *
497
fu_struct_elantp_read_cmd_req_ref(FuStructElantpReadCmdReq *st)
498
0
{
499
0
    g_return_val_if_fail(st != NULL, NULL);
500
0
    st->refcount++;
501
0
    return st;
502
0
}
503
/**
504
 * fu_struct_elantp_read_cmd_req_unref: (skip):
505
 **/
506
void
507
fu_struct_elantp_read_cmd_req_unref(FuStructElantpReadCmdReq *st)
508
0
{
509
0
    g_return_if_fail(st != NULL);
510
0
    if (st->refcount == 0) {
511
0
        g_critical("FuStructElantpReadCmdReq refcount already zero");
512
0
        return;
513
0
    }
514
0
    if (--st->refcount > 0)
515
0
        return;
516
0
    if (st->buf != NULL)
517
0
        g_byte_array_unref(st->buf);
518
0
    g_free(st);
519
0
}
520
/**
521
 * fu_struct_elantp_read_cmd_req_new_internal: (skip):
522
 **/
523
static FuStructElantpReadCmdReq *
524
fu_struct_elantp_read_cmd_req_new_internal(void)
525
0
{
526
0
    FuStructElantpReadCmdReq *st = g_new0(FuStructElantpReadCmdReq, 1);
527
0
    st->refcount = 1;
528
0
    return st;
529
0
}
530
531
/* getters */
532
533
/* setters */
534
/**
535
 * fu_struct_elantp_read_cmd_req_set_report_id: (skip):
536
 **/
537
void
538
fu_struct_elantp_read_cmd_req_set_report_id(FuStructElantpReadCmdReq *st, FuEtpRptid value)
539
0
{
540
0
    g_return_if_fail(st != NULL);
541
0
    st->buf->data[0] = value;
542
0
}
543
/**
544
 * fu_struct_elantp_read_cmd_req_set_cmd: (skip):
545
 **/
546
void
547
fu_struct_elantp_read_cmd_req_set_cmd(FuStructElantpReadCmdReq *st, FuEtpCmd value)
548
0
{
549
0
    g_return_if_fail(st != NULL);
550
0
    fu_memwrite_uint16(st->buf->data + 1, value, G_LITTLE_ENDIAN);
551
0
}
552
/**
553
 * fu_struct_elantp_read_cmd_req_set_reg: (skip):
554
 **/
555
void
556
fu_struct_elantp_read_cmd_req_set_reg(FuStructElantpReadCmdReq *st, guint16 value)
557
0
{
558
0
    g_return_if_fail(st != NULL);
559
0
    fu_memwrite_uint16(st->buf->data + 3, value, G_LITTLE_ENDIAN);
560
0
}
561
/**
562
 * fu_struct_elantp_read_cmd_req_new: (skip):
563
 **/
564
FuStructElantpReadCmdReq *
565
fu_struct_elantp_read_cmd_req_new(void)
566
0
{
567
0
    FuStructElantpReadCmdReq *st = fu_struct_elantp_read_cmd_req_new_internal();
568
0
    st->buf = g_byte_array_sized_new(5);
569
0
    fu_byte_array_set_size(st->buf, 5, 0x0);
570
0
    return st;
571
0
}
572
/**
573
 * fu_struct_elantp_read_cmd_res_ref: (skip):
574
 **/
575
FuStructElantpReadCmdRes *
576
fu_struct_elantp_read_cmd_res_ref(FuStructElantpReadCmdRes *st)
577
0
{
578
0
    g_return_val_if_fail(st != NULL, NULL);
579
0
    st->refcount++;
580
0
    return st;
581
0
}
582
/**
583
 * fu_struct_elantp_read_cmd_res_unref: (skip):
584
 **/
585
void
586
fu_struct_elantp_read_cmd_res_unref(FuStructElantpReadCmdRes *st)
587
0
{
588
0
    g_return_if_fail(st != NULL);
589
0
    if (st->refcount == 0) {
590
0
        g_critical("FuStructElantpReadCmdRes refcount already zero");
591
0
        return;
592
0
    }
593
0
    if (--st->refcount > 0)
594
0
        return;
595
0
    if (st->buf != NULL)
596
0
        g_byte_array_unref(st->buf);
597
0
    g_free(st);
598
0
}
599
/**
600
 * fu_struct_elantp_read_cmd_res_new_internal: (skip):
601
 **/
602
static FuStructElantpReadCmdRes *
603
fu_struct_elantp_read_cmd_res_new_internal(void)
604
0
{
605
0
    FuStructElantpReadCmdRes *st = g_new0(FuStructElantpReadCmdRes, 1);
606
0
    st->refcount = 1;
607
0
    return st;
608
0
}
609
610
/* getters */
611
/**
612
 * fu_struct_elantp_read_cmd_res_get_report_id: (skip):
613
 **/
614
FuEtpRptid
615
fu_struct_elantp_read_cmd_res_get_report_id(const FuStructElantpReadCmdRes *st)
616
0
{
617
0
    g_return_val_if_fail(st != NULL, 0x0);
618
0
    return st->buf->data[0];
619
0
}
620
/**
621
 * fu_struct_elantp_read_cmd_res_get_value: (skip):
622
 **/
623
guint16
624
fu_struct_elantp_read_cmd_res_get_value(const FuStructElantpReadCmdRes *st)
625
0
{
626
0
    g_return_val_if_fail(st != NULL, 0x0);
627
0
    return fu_memread_uint16(st->buf->data + 3, G_LITTLE_ENDIAN);
628
0
}
629
630
/* setters */
631
/**
632
 * fu_struct_elantp_read_cmd_res_to_string: (skip):
633
 **/
634
static gchar *
635
fu_struct_elantp_read_cmd_res_to_string(const FuStructElantpReadCmdRes *st)
636
0
{
637
0
    g_autoptr(GString) str = g_string_new("FuStructElantpReadCmdRes:\n");
638
0
    g_return_val_if_fail(st != NULL, NULL);
639
0
    {
640
0
        const gchar *tmp = fu_etp_rptid_to_string(fu_struct_elantp_read_cmd_res_get_report_id(st));
641
0
        if (tmp != NULL) {
642
0
            g_string_append_printf(str, "  report_id: 0x%x [%s]\n", (guint) fu_struct_elantp_read_cmd_res_get_report_id(st), tmp);
643
0
        } else {
644
0
            g_string_append_printf(str, "  report_id: 0x%x\n", (guint) fu_struct_elantp_read_cmd_res_get_report_id(st));
645
0
        }
646
0
    }
647
0
    g_string_append_printf(str, "  value: 0x%x\n",
648
0
                           (guint) fu_struct_elantp_read_cmd_res_get_value(st));
649
0
    if (str->len > 0)
650
0
        g_string_set_size(str, str->len - 1);
651
0
    return g_string_free(g_steal_pointer(&str), FALSE);
652
0
}
653
static gboolean
654
fu_struct_elantp_read_cmd_res_parse_internal(FuStructElantpReadCmdRes *st, GError **error)
655
0
{
656
0
    if (g_log_get_debug_enabled()) {
657
0
        g_autofree gchar *str = fu_struct_elantp_read_cmd_res_to_string(st);
658
0
        g_debug("%s", str);
659
0
    }
660
0
    return TRUE;
661
0
}
662
663
/**
664
 * fu_struct_elantp_read_cmd_res_parse: (skip):
665
 **/
666
FuStructElantpReadCmdRes *
667
fu_struct_elantp_read_cmd_res_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
668
0
{
669
0
    g_autoptr(FuStructElantpReadCmdRes) st = fu_struct_elantp_read_cmd_res_new_internal();
670
0
    g_return_val_if_fail(buf != NULL, NULL);
671
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
672
0
    if (!fu_memchk_read(bufsz, offset, 5, error)) {
673
0
        g_prefix_error_literal(error, "invalid struct FuStructElantpReadCmdRes: ");
674
0
        return NULL;
675
0
    }
676
0
    st->buf = g_byte_array_new();
677
0
    g_byte_array_append(st->buf, buf + offset, 5);
678
0
    if (!fu_struct_elantp_read_cmd_res_parse_internal(st, error))
679
0
        return NULL;
680
0
    return g_steal_pointer(&st);
681
0
}
682
/**
683
 * fu_struct_elantp_write_cmd_req_ref: (skip):
684
 **/
685
FuStructElantpWriteCmdReq *
686
fu_struct_elantp_write_cmd_req_ref(FuStructElantpWriteCmdReq *st)
687
0
{
688
0
    g_return_val_if_fail(st != NULL, NULL);
689
0
    st->refcount++;
690
0
    return st;
691
0
}
692
/**
693
 * fu_struct_elantp_write_cmd_req_unref: (skip):
694
 **/
695
void
696
fu_struct_elantp_write_cmd_req_unref(FuStructElantpWriteCmdReq *st)
697
0
{
698
0
    g_return_if_fail(st != NULL);
699
0
    if (st->refcount == 0) {
700
0
        g_critical("FuStructElantpWriteCmdReq refcount already zero");
701
0
        return;
702
0
    }
703
0
    if (--st->refcount > 0)
704
0
        return;
705
0
    if (st->buf != NULL)
706
0
        g_byte_array_unref(st->buf);
707
0
    g_free(st);
708
0
}
709
/**
710
 * fu_struct_elantp_write_cmd_req_new_internal: (skip):
711
 **/
712
static FuStructElantpWriteCmdReq *
713
fu_struct_elantp_write_cmd_req_new_internal(void)
714
0
{
715
0
    FuStructElantpWriteCmdReq *st = g_new0(FuStructElantpWriteCmdReq, 1);
716
0
    st->refcount = 1;
717
0
    return st;
718
0
}
719
720
/* getters */
721
722
/* setters */
723
/**
724
 * fu_struct_elantp_write_cmd_req_set_report_id: (skip):
725
 **/
726
void
727
fu_struct_elantp_write_cmd_req_set_report_id(FuStructElantpWriteCmdReq *st, FuEtpRptid value)
728
0
{
729
0
    g_return_if_fail(st != NULL);
730
0
    st->buf->data[0] = value;
731
0
}
732
/**
733
 * fu_struct_elantp_write_cmd_req_set_reg: (skip):
734
 **/
735
void
736
fu_struct_elantp_write_cmd_req_set_reg(FuStructElantpWriteCmdReq *st, guint16 value)
737
0
{
738
0
    g_return_if_fail(st != NULL);
739
0
    fu_memwrite_uint16(st->buf->data + 1, value, G_LITTLE_ENDIAN);
740
0
}
741
/**
742
 * fu_struct_elantp_write_cmd_req_set_cmd: (skip):
743
 **/
744
void
745
fu_struct_elantp_write_cmd_req_set_cmd(FuStructElantpWriteCmdReq *st, FuEtpCmd value)
746
0
{
747
0
    g_return_if_fail(st != NULL);
748
0
    fu_memwrite_uint16(st->buf->data + 3, value, G_LITTLE_ENDIAN);
749
0
}
750
/**
751
 * fu_struct_elantp_write_cmd_req_new: (skip):
752
 **/
753
FuStructElantpWriteCmdReq *
754
fu_struct_elantp_write_cmd_req_new(void)
755
0
{
756
0
    FuStructElantpWriteCmdReq *st = fu_struct_elantp_write_cmd_req_new_internal();
757
0
    st->buf = g_byte_array_sized_new(5);
758
0
    fu_byte_array_set_size(st->buf, 5, 0x0);
759
0
    return st;
760
0
}