/*
 * Copyright (C) 2021 Richard Hughes <richard@hughsie.com>
 *
 * SPDX-License-Identifier: LGPL-2.1+
 */

#pragma once

#include <glib-object.h>

#include "fu-udev-device.h"

#define FU_TYPE_I2C_DEVICE (fu_i2c_device_get_type())
G_DECLARE_DERIVABLE_TYPE(FuI2cDevice, fu_i2c_device, FU, I2C_DEVICE, FuUdevDevice)

struct _FuI2cDeviceClass {
	FuUdevDeviceClass parent_class;
	gpointer __reserved[31];
};

guint
fu_i2c_device_get_bus_number(FuI2cDevice *self);
void
fu_i2c_device_set_bus_number(FuI2cDevice *self, guint bus_number);
gboolean
fu_i2c_device_read(FuI2cDevice *self, guint8 *data, GError **error) G_GNUC_WARN_UNUSED_RESULT;
gboolean
fu_i2c_device_write(FuI2cDevice *self, guint8 data, GError **error) G_GNUC_WARN_UNUSED_RESULT;
gboolean
fu_i2c_device_read_full(FuI2cDevice *self, guint8 *buf, gsize bufsz, GError **error)
    G_GNUC_WARN_UNUSED_RESULT;
gboolean
fu_i2c_device_write_full(FuI2cDevice *self, const guint8 *buf, gsize bufsz, GError **error)
    G_GNUC_WARN_UNUSED_RESULT;
