nbus_memory.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /*
  2. * nbus_memory.h
  3. *
  4. * Created on: Nov 4, 2023
  5. * Author: juraj
  6. */
  7. #ifndef MODULES_NBUS_INC_NBUS_MEMORY_H_
  8. #define MODULES_NBUS_INC_NBUS_MEMORY_H_
  9. #include "mcu_platform.h"
  10. typedef struct {
  11. uint8_t (*init)(void *, uint16_t);
  12. uint32_t (*read_word)(uint16_t);
  13. uint16_t (*read_half_word)(uint16_t);
  14. /**
  15. * @brief Zapíše 4B hodnotu na adresu
  16. * @param uint32_t data dáta
  17. * @param uint16_t address adresa v pamati. Povolený rozsah: 0-0x09FF
  18. */
  19. uint8_t (*write_word)(uint32_t data, uint16_t address);
  20. uint8_t (*write_half_word)(uint16_t, uint16_t);
  21. uint8_t (*read_id)(uint8_t *);
  22. } nBus_MemoryDriver;
  23. typedef enum {
  24. MEMORY_STORE_FAIL,
  25. MEMORY_STORE_OK,
  26. } nBus_memoryState_t;
  27. typedef struct {
  28. uint8_t (*storeParam)(uint8_t sensor_index, uint8_t param_name,
  29. uint32_t param_value);
  30. uint32_t (*getParam)(uint8_t sensor_index, uint8_t param_name);
  31. uint8_t (*getId)(uint8_t *);
  32. } nBus_memoryInterface_t;
  33. nBus_memoryInterface_t *getnbusMemoryInterface(void);
  34. void nbus_memory_init(nBus_MemoryDriver *driver);
  35. /**
  36. * @brief Store sensor parameter.
  37. */
  38. nBus_memoryState_t nbus_store_param(uint8_t sensor_index, uint8_t param_name,
  39. uint32_t param_value);
  40. uint32_t nbus_read_param(uint8_t sensor_index, uint8_t param_name);
  41. uint8_t nbus_memory_id(uint8_t *);
  42. #endif /* MODULES_NBUS_INC_NBUS_MEMORY_H_ */