/* * eLesson Project * Copyright (c) 2023, EventOS Team, */ #ifndef EMS_PIN_H #define EMS_PIN_H /* includes ----------------------------------------------------------------- */ #include "eio_object.h" #ifdef __cplusplus extern "C" { #endif enum pin_mode { PIN_MODE_INPUT = 0, PIN_MODE_INPUT_PULLUP, PIN_MODE_INPUT_PULLDOWN, PIN_MODE_OUTPUT_PP, PIN_MODE_OUTPUT_OD, PIN_MODE_MAX }; typedef struct eio_pin { eio_object_t super; const struct ems_pin_ops *ops; uint8_t mode; bool status; } ems_pin_t; typedef struct ems_pin_ops { void (* init)(ems_pin_t * const me); void (* set_mode)(ems_pin_t * const me, uint8_t mode); bool (* get_status)(ems_pin_t * const me); void (* set_status)(ems_pin_t * const me, bool status); } ems_pin_ops_t; void ems_pin_register(ems_pin_t * const me, const char *name, const ems_pin_ops_t *ops, void *user_data); void ems_pin_set_mode(eio_object_t * const me, uint8_t mode); bool ems_pin_get_status(eio_object_t * const me); void ems_pin_set_status(eio_object_t * const me, bool status); #ifdef __cplusplus } #endif #endif /* ----------------------------- end of file -------------------------------- */