mirror of
https://git.proxmox.com/git/fwupd
synced 2025-06-02 03:06:32 +00:00

We do not want to export this unfinished API, and it's probably best just to not compile it by default until it is actually useful.
94 lines
2.1 KiB
C
94 lines
2.1 KiB
C
/*
|
|
* Copyright (C) 2021 Richard Hughes <richard@hughsie.com>
|
|
*
|
|
* SPDX-License-Identifier: LGPL-2.1+
|
|
*/
|
|
|
|
#include "config.h"
|
|
|
|
#include "fu-common.h"
|
|
|
|
#include "fu-ifd-image.h"
|
|
|
|
typedef struct {
|
|
FuIfdAccess access[FU_IFD_REGION_MAX];
|
|
} FuIfdImagePrivate;
|
|
|
|
G_DEFINE_TYPE_WITH_PRIVATE (FuIfdImage, fu_ifd_image, FU_TYPE_FIRMWARE)
|
|
#define GET_PRIVATE(o) (fu_ifd_image_get_instance_private (o))
|
|
|
|
static void
|
|
fu_ifd_image_to_string (FuFirmware *image, guint idt, GString *str)
|
|
{
|
|
FuIfdImage *self = FU_IFD_IMAGE (image);
|
|
FuIfdImagePrivate *priv = GET_PRIVATE (self);
|
|
for (guint i = 0; i < FU_IFD_REGION_MAX; i++) {
|
|
g_autofree gchar *title = NULL;
|
|
if (priv->access[i] == FU_IFD_ACCESS_NONE)
|
|
continue;
|
|
title = g_strdup_printf ("Access[%s]", fu_ifd_region_to_string (i));
|
|
fu_common_string_append_kv (str, idt, title,
|
|
fu_ifd_access_to_string (priv->access[i]));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* fu_ifd_image_set_access:
|
|
* @self: a #FuIfdImage
|
|
* @region: a #FuIfdRegion, e.g. %FU_IFD_REGION_BIOS
|
|
* @access: a #FuIfdAccess, e.g. %FU_IFD_ACCESS_NONE
|
|
*
|
|
* Sets the access control for a specific reason.
|
|
*
|
|
* Since: 1.6.0
|
|
**/
|
|
void
|
|
fu_ifd_image_set_access (FuIfdImage *self, FuIfdRegion region, FuIfdAccess access)
|
|
{
|
|
FuIfdImagePrivate *priv = GET_PRIVATE (self);
|
|
priv->access[region] = access;
|
|
}
|
|
|
|
/**
|
|
* fu_ifd_image_get_access:
|
|
* @self: a #FuIfdImage
|
|
* @region: a #FuIfdRegion, e.g. %FU_IFD_REGION_BIOS
|
|
*
|
|
* Gets the access control for a specific reason.
|
|
*
|
|
* Return value: a #FuIfdAccess, e.g. %FU_IFD_ACCESS_NONE
|
|
*
|
|
* Since: 1.6.0
|
|
**/
|
|
FuIfdAccess
|
|
fu_ifd_image_get_access (FuIfdImage *self, FuIfdRegion region)
|
|
{
|
|
FuIfdImagePrivate *priv = GET_PRIVATE (self);
|
|
return priv->access[region];
|
|
}
|
|
|
|
static void
|
|
fu_ifd_image_init (FuIfdImage *self)
|
|
{
|
|
}
|
|
|
|
static void
|
|
fu_ifd_image_class_init (FuIfdImageClass *klass)
|
|
{
|
|
FuFirmwareClass *klass_image = FU_FIRMWARE_CLASS (klass);
|
|
klass_image->to_string = fu_ifd_image_to_string;
|
|
}
|
|
|
|
/**
|
|
* fu_ifd_image_new:
|
|
*
|
|
* Creates a new #FuFirmware
|
|
*
|
|
* Since: 1.6.0
|
|
**/
|
|
FuFirmware *
|
|
fu_ifd_image_new (void)
|
|
{
|
|
return FU_FIRMWARE (g_object_new (FU_TYPE_IFD_IMAGE, NULL));
|
|
}
|