app_bridge.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. /*
  2. * app_bridge.h
  3. *
  4. * Created on: Nov 2, 2023
  5. * Author: juraj
  6. */
  7. #ifndef MODULES_NBUS_INC_APP_BRIDGE_H_
  8. #define MODULES_NBUS_INC_APP_BRIDGE_H_
  9. #include "mcu_platform.h"
  10. <<<<<<< HEAD
  11. #include "nbus_config.h"
  12. =======
  13. typedef enum
  14. {
  15. // read-only sensors
  16. TYPE_UNKNOWN = 0xFF,
  17. <<<<<<< Updated upstream
  18. TYPE_ACCELEROMETER = 0,
  19. =======
  20. TYPE_ACCELEROMETER = 0,
  21. >>>>>>> Stashed changes
  22. TYPE_GYROSCOPE,
  23. TYPE_MAGNETOMETER,
  24. TYPE_EULER_ANGLES_GAUGE,
  25. TYPE_THERMOMETER,
  26. TYPE_HYGROMETER,
  27. TYPE_PRESSURE_GAUGE,
  28. TYPE_HEART_RATE_MONITOR,
  29. TYPE_LENGTH_GAUGE,
  30. // read-write sensors
  31. TYPE_LED_CONTROLLER,
  32. TYPE_MOTOR_CONTROLLER
  33. } nBus_sensorType_t;
  34. typedef enum
  35. {
  36. PARAM_NONE = 0xFF,
  37. PARAM_TIMEBASE = 0,
  38. PARAM_RESOLUTION,
  39. PARAM_GAIN,
  40. PARAM_OFFSET,
  41. PARAM_SAMPLERATE,
  42. PARAM_RANGE,
  43. PARAM_RANGE0,
  44. PARAM_FILTER,
  45. PARAM_ENABLE,
  46. PARAM_MODE,
  47. _NBUS_PARAM_COUNT // number of parameters, must be last!
  48. } nBus_param_t;
  49. >>>>>>> ebbae90508199fc827eb820f7a19826cea9035ef
  50. typedef enum
  51. {
  52. STATUS_NOT_SUPPORTED = 0xFF,
  53. STATUS_SUCCESS = 0,
  54. STATUS_FAIL = 1
  55. } nBus_statusType_t;
  56. /**
  57. * @brief Definuje formát dát senzora.
  58. * @note Bajtová reprezentácia (Little Endian) bude nasledovná: | unit_multiplier | sign | value_multiplier | samples |
  59. * byte_length
  60. */
  61. typedef struct __attribute__((packed, aligned(1)))
  62. {
  63. /** Bit určujúci či sú dáta znamienkové.
  64. * 0 = ungigned, 1 = signed */
  65. uint8_t sign : 1;
  66. /** Násobok základnej meranej jednotky (mili, micro, kilo, deka, mega, ...)
  67. * uložený v logaritmickom tvare (pr. 2 -> 10^2).
  68. * @note: povolený rozsah [-64 , +63]
  69. */
  70. uint8_t unit_multiplier : 7;
  71. /** Násobok meranej hodnoty uložený v logaritmickom tvare (pr. 1 -> 10^1).
  72. * @note: povolený rozsah [-128 , +127]
  73. */
  74. uint8_t value_multiplier : 8;
  75. /** Počet bajtov meranej hodnoty.
  76. * @note: povolený rozsah [1 , 8]
  77. */
  78. uint8_t byte_length : 4;
  79. /** Počet vzoriek meranej hodnoty.
  80. * @note: povolený rozsah [1 , 16]
  81. */
  82. uint8_t samples : 4;
  83. } nBus_sensorFormat_t;
  84. typedef struct
  85. {
  86. uint8_t read_only_count;
  87. uint8_t read_write_count;
  88. } nBus_sensorCount_t;
  89. #define PARAM_VALUE_NONE 0x7FFFFFFF
  90. typedef struct
  91. {
  92. void (*init)(void *hw_interface, void *hw_config);
  93. void (*reset)();
  94. nBus_sensorType_t (*getType)(uint8_t sensor_index);
  95. nBus_sensorCount_t (*getSensorCount)();
  96. uint8_t (*getData)(uint8_t sensor_index, uint8_t *data);
  97. nBus_statusType_t (*setData)(uint8_t *data, uint8_t count, uint8_t *response);
  98. uint8_t (*hasParam)(uint8_t sensor_index, nBus_param_t param_name);
  99. int32_t (*getParam)(uint8_t sensor_index, nBus_param_t param_name);
  100. nBus_statusType_t (*setParam)(uint8_t sensor_index, nBus_param_t param_name, int32_t param_value);
  101. nBus_statusType_t (*start)(void);
  102. nBus_statusType_t (*stop)(void);
  103. void (*read)(void);
  104. uint8_t (*store)(void);
  105. nBus_statusType_t (*calibrate)(uint8_t sensor_index);
  106. nBus_sensorFormat_t (*getSensorFormat)(uint8_t sensor_index);
  107. nBus_statusType_t (*find)(uint8_t enable);
  108. uint8_t (*device_ready)();
  109. } nBusAppInterface_t;
  110. #endif /* MODULES_NBUS_INC_APP_BRIDGE_H_ */