view.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #ifndef _PCILIB_VIEW_H
  2. #define _PCILIB_VIEW_H
  3. #include <pcilib.h>
  4. #include <pcilib/unit.h>
  5. #define PCILIB_VIEW_INVALID ((pcilib_view_t)-1)
  6. //typedef void *pcilib_view_context_t;
  7. typedef struct pcilib_view_context_s *pcilib_view_context_t;
  8. typedef enum {
  9. PCILIB_VIEW_FLAG_PROPERTY = 1 /**< Indicates that view does not depend on a value and is independent property */
  10. } pcilib_view_flags_t;
  11. typedef struct {
  12. pcilib_version_t version;
  13. size_t description_size;
  14. pcilib_view_context_t (*init)(pcilib_t *ctx);
  15. void (*free)(pcilib_t *ctx, pcilib_view_context_t *view);
  16. int (*read_from_reg)(pcilib_t *ctx, pcilib_view_context_t *view, const pcilib_register_value_t *regval, pcilib_value_t *val);
  17. int (*write_to_reg)(pcilib_t *ctx, pcilib_view_context_t *view, pcilib_register_value_t *regval, const pcilib_value_t *val);
  18. } pcilib_view_api_description_t;
  19. typedef struct {
  20. const pcilib_view_api_description_t *api;
  21. pcilib_value_type_t type; /**< The default data type returned by operation, PCILIB_VIEW_TYPE_STRING is supported by all operations */
  22. pcilib_view_flags_t flags; /**< Flags specifying type of the view */
  23. const char *unit; /**< Returned unit (if any) */
  24. const char *name; /**< Name of the view */
  25. const char *description; /**< Short description */
  26. } pcilib_view_description_t;
  27. #ifdef __cplusplus
  28. extern "C" {
  29. #endif
  30. int pcilib_add_views(pcilib_t *ctx, size_t n, const pcilib_view_description_t *desc);
  31. pcilib_view_t pcilib_find_view_by_name(pcilib_t *ctx, const char *view);
  32. pcilib_view_t pcilib_find_register_view_by_name(pcilib_t *ctx, pcilib_register_t reg, const char *name);
  33. pcilib_view_t pcilib_find_register_view(pcilib_t *ctx, pcilib_register_t reg, const char *name);
  34. #ifdef __cplusplus
  35. }
  36. #endif
  37. #endif /* PCILIB_VIEW_H */