| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- /*
- * app_bridge.h
- *
- * Created on: Nov 2, 2023
- * Author: juraj
- */
- #ifndef MODULES_NBUS_INC_APP_BRIDGE_H_
- #define MODULES_NBUS_INC_APP_BRIDGE_H_
- #include "mcu_platform.h"
- typedef enum
- {
- // read-only sensors
- TYPE_UNKNOWN = 0xFF,
- TYPE_ACCELEROMETER = 0,
- TYPE_GYROSCOPE,
- TYPE_MAGNETOMETER,
- TYPE_THERMOMETER,
- TYPE_HYGROMETER,
- TYPE_PRESSURE_GAUGE,
- TYPE_HEART_RATE_MONITOR,
- TYPE_LENGTH_GAUGE,
- // read-write sensors
- TYPE_LED_CONTROLLER,
- TYPE_MOTOR_CONTROLLER
- } nBus_sensorType_t;
- typedef enum
- {
- PARAM_NONE = 0xFF,
- PARAM_TIMEBASE = 0,
- PARAM_RESOLUTION,
- PARAM_GAIN,
- PARAM_OFFSET,
- PARAM_SAMPLERATE,
- PARAM_RANGE,
- PARAM_RANGE0,
- PARAM_FILTER,
- _NBUS_PARAM_COUNT // number of parameters, must be last!
- } nBus_param_t;
- typedef enum
- {
- STATUS_NOT_SUPPORTED = 0xFF,
- STATUS_SUCCESS = 0,
- STATUS_FAIL = 1
- } nBus_statusType_t;
- /**
- * @brief Definuje formát dát senzora.
- * @note Bajtová reprezentácia (Little Endian) bude nasledovná: | unit_multiplier | sign | value_multiplier | samples |
- * byte_length
- */
- typedef struct __attribute__((packed, aligned(1)))
- {
- /** Bit určujúci či sú dáta znamienkové.
- * 0 = ungigned, 1 = signed */
- uint8_t sign : 1;
- /** Násobok základnej meranej jednotky (mili, micro, kilo, deka, mega, ...)
- * uložený v logaritmickom tvare (pr. 2 -> 10^2).
- * @note: povolený rozsah [-64 , +63]
- */
- uint8_t unit_multiplier : 7;
- /** Násobok meranej hodnoty uložený v logaritmickom tvare (pr. 1 -> 10^1).
- * @note: povolený rozsah [-128 , +127]
- */
- uint8_t value_multiplier : 8;
- /** Počet bajtov meranej hodnoty.
- * @note: povolený rozsah [1 , 8]
- */
- uint8_t byte_length : 4;
- /** Počet vzoriek meranej hodnoty.
- * @note: povolený rozsah [1 , 16]
- */
- uint8_t samples : 4;
- } nBus_sensorFormat_t;
- typedef struct
- {
- uint8_t read_only_count;
- uint8_t read_write_count;
- } nBus_sensorCount_t;
- #define PARAM_VALUE_NONE 0x7FFFFFFF
- typedef struct
- {
- void (*init)(void *hw_interface, void *hw_config);
- void (*reset)();
- nBus_sensorType_t (*getType)(uint8_t sensor_index);
- nBus_sensorCount_t (*getSensorCount)();
- uint8_t (*getData)(uint8_t sensor_index, uint8_t *data);
- nBus_statusType_t (*setData)(uint8_t *data, uint8_t count, uint8_t *response);
- uint8_t (*hasParam)(uint8_t sensor_index, nBus_param_t param_name);
- int32_t (*getParam)(uint8_t sensor_index, nBus_param_t param_name);
- nBus_statusType_t (*setParam)(uint8_t sensor_index, nBus_param_t param_name, int32_t param_value);
- void (*start)(void);
- void (*stop)(void);
- void (*read)(void);
- uint8_t (*store)(void);
- nBus_statusType_t (*calibrate)(uint8_t sensor_index);
- nBus_sensorFormat_t (*getSensorFormat)(uint8_t sensor_index);
- nBus_statusType_t (*find)(uint8_t enable);
- uint8_t (*device_ready)();
- } nBusAppInterface_t;
- #endif /* MODULES_NBUS_INC_APP_BRIDGE_H_ */
|