1
0
mirror of https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git synced 2026-10-28 13:55:08 +03:00
Files
libgpiod/tests/gpiosim/gpiosim.h
Bartosz Golaszewski b4009e2e67 tests: gpiosim: provide gpiosim_bank_set_line_valid()
Provide a function allowing to mark a GPIO at given offset as valid or
invalid (all lines are valid by default). This will make it impossible
for any user to request it once the simulator is up.

Link: https://lore.kernel.org/r/20251006-gpiosim-valid-lines-v1-5-b399373e90a9@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
2025-10-09 10:12:59 +02:00

79 lines
2.5 KiB
C

/* SPDX-License-Identifier: LGPL-2.1-or-later */
/* SPDX-FileCopyrightText: 2021-2022 Bartosz Golaszewski <brgl@bgdev.pl> */
#ifndef __GPIOD_GPIOSIM_H__
#define __GPIOD_GPIOSIM_H__
#include <stdbool.h>
#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
struct gpiosim_ctx;
struct gpiosim_dev;
struct gpiosim_bank;
enum gpiosim_value {
GPIOSIM_VALUE_ERROR = -1,
GPIOSIM_VALUE_INACTIVE = 0,
GPIOSIM_VALUE_ACTIVE = 1,
};
enum gpiosim_pull {
GPIOSIM_PULL_ERROR = -1,
GPIOSIM_PULL_DOWN = 1,
GPIOSIM_PULL_UP,
};
enum gpiosim_direction {
GPIOSIM_DIRECTION_INPUT = 1,
GPIOSIM_DIRECTION_OUTPUT_HIGH,
GPIOSIM_DIRECTION_OUTPUT_LOW,
};
struct gpiosim_ctx *gpiosim_ctx_new(void);
struct gpiosim_ctx *gpiosim_ctx_ref(struct gpiosim_ctx *ctx);
void gpiosim_ctx_unref(struct gpiosim_ctx *ctx);
struct gpiosim_dev *gpiosim_dev_new(struct gpiosim_ctx *ctx);
struct gpiosim_dev *gpiosim_dev_ref(struct gpiosim_dev *dev);
void gpiosim_dev_unref(struct gpiosim_dev *dev);
struct gpiosim_ctx *gpiosim_dev_get_ctx(struct gpiosim_dev *dev);
const char *gpiosim_dev_get_name(struct gpiosim_dev *dev);
int gpiosim_dev_enable(struct gpiosim_dev *dev);
int gpiosim_dev_disable(struct gpiosim_dev *dev);
bool gpiosim_dev_is_live(struct gpiosim_dev *dev);
struct gpiosim_bank *gpiosim_bank_new(struct gpiosim_dev *dev);
struct gpiosim_bank *gpiosim_bank_ref(struct gpiosim_bank *bank);
void gpiosim_bank_unref(struct gpiosim_bank *bank);
struct gpiosim_dev *gpiosim_bank_get_dev(struct gpiosim_bank *bank);
const char *gpiosim_bank_get_chip_name(struct gpiosim_bank *bank);
const char *gpiosim_bank_get_dev_path(struct gpiosim_bank *bank);
int gpiosim_bank_set_label(struct gpiosim_bank *bank, const char *label);
int gpiosim_bank_set_num_lines(struct gpiosim_bank *bank, size_t num_lines);
int gpiosim_bank_set_line_name(struct gpiosim_bank *bank,
unsigned int offset, const char *name);
int gpiosim_bank_hog_line(struct gpiosim_bank *bank, unsigned int offset,
const char *name, enum gpiosim_direction direction);
int gpiosim_bank_clear_hog(struct gpiosim_bank *bank, unsigned int offset);
int gpiosim_bank_set_line_valid(struct gpiosim_bank *bank, unsigned int offset,
bool valid);
enum gpiosim_value
gpiosim_bank_get_value(struct gpiosim_bank *bank, unsigned int offset);
enum gpiosim_pull
gpiosim_bank_get_pull(struct gpiosim_bank *bank, unsigned int offset);
int gpiosim_bank_set_pull(struct gpiosim_bank *bank,
unsigned int offset, enum gpiosim_pull pull);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* __GPIOD_GPIOSIM_H__ */