185 lines
3.1 KiB
C
185 lines
3.1 KiB
C
#ifndef BTLIB_H
|
|
#define BTLIB_H
|
|
|
|
#include "nimble/ble.h"
|
|
|
|
#include "host/ble_hs.h"
|
|
|
|
#include "configuration.h"
|
|
|
|
#define C_WL_MODE_BLE 0b100
|
|
#define ENVIRONMENTAL_SENSING_UUID 0x181A
|
|
#define ES_MEASUREMENT_UUID 0x290C
|
|
#define CHAR_CO2_UUID 0x0C39
|
|
#define CHAR_TEMP_UUID 0x2A6E
|
|
#define CHAR_HUM_UUID 0x2A6F
|
|
#define CO2_SENSOR_APPEARANCE 0x054A
|
|
#define CHAR_PRES_FORMAT 0x2904
|
|
|
|
#define PPM_UNIT_UUID 0x27C4
|
|
#define PERCENT_UNIT_UUID 0x27AD
|
|
#define VOLTAGE_UNIT_UUID 0x2728
|
|
#define POWER_UNIT_UUID 0x2726
|
|
#define TESLA_UNIT_UUID 0x272D
|
|
|
|
#define NSP_DESC_MAIN 0x0106
|
|
#define NSP_DESC_INSIDE 0x010B
|
|
#define NSP_DESC_OUTSIDE 0x010C
|
|
|
|
#define BATT_SVC_UUID 0x180F
|
|
#define BATT_LEVEL_UUID 0x2A19
|
|
|
|
#define POWER_SVC_UUID 0x6BBE15A6
|
|
#define BATT_VOLTAGE_UUID 0x5EF9
|
|
#define ALIM_POWER_IN_UUID 0x71C5
|
|
#define ALIM_POWER_OUT_UUID 0x71C6
|
|
|
|
#define MAGFIELD_SVC_UUID 0x92F2710C
|
|
#define MAGFIELD_X_UUID 0x3B91
|
|
#define MAGFIELD_Y_UUID 0x23E8
|
|
#define MAGFIELD_Z_UUID 0x7F84
|
|
#define MAGFIELD_UPDATE_UUID 0x5D4B
|
|
|
|
#define DEFAULT_NAME "CO2_ble"
|
|
#define DEFAULT_NAME_LEN 7
|
|
|
|
#define NIMBLE_LOG_TAG "NIMBLE"
|
|
|
|
enum {
|
|
ES_SAMPLING_FUNC_UNSPEC,
|
|
ES_SAMPLING_FUNC_INSTANT,
|
|
ES_SAMPLING_FUNC_MEAN,
|
|
ES_SAMPLING_FUNC_RMS,
|
|
ES_SAMPLING_FUNC_MAX,
|
|
ES_SAMPLING_FUNC_MIN,
|
|
ES_SAMPLING_FUNC_ACC,
|
|
ES_SAMPLING_FUNC_COUNT,
|
|
};
|
|
|
|
enum {
|
|
ES_APP_UNSPEC,
|
|
ES_APP_AIR,
|
|
ES_APP_WATER,
|
|
ES_APP_BAROMETRIC,
|
|
ES_APP_SOIL,
|
|
ES_APP_INFRARED,
|
|
ES_APP_MAP_DB,
|
|
ES_APP_BAROMETRIC_EL,
|
|
ES_APP_GPS_EL,
|
|
ES_APP_GPS_MAP_EL,
|
|
ES_APP_VERT_EL,
|
|
ES_APP_ONSHORE,
|
|
ES_APP_ONBOARD,
|
|
ES_APP_FRONT,
|
|
ES_APP_BACK,
|
|
ES_APP_UPPER,
|
|
ES_APP_LOWER,
|
|
ES_APP_PRIMARY,
|
|
ES_APP_SECONDARY,
|
|
ES_APP_OUTDOOR,
|
|
ES_APP_INDOOR,
|
|
ES_APP_TOP,
|
|
ES_APP_BOTTOM,
|
|
ES_APP_MAIN,
|
|
ES_APP_BACKUP,
|
|
ES_APP_AUXILIARY,
|
|
ES_APP_SUPPLEMENTARY,
|
|
ES_APP_INSIDE,
|
|
ES_APP_OUTSIDE,
|
|
ES_APP_LEFT,
|
|
ES_APP_RIGHT,
|
|
ES_APP_INTERNAL,
|
|
ES_APP_EXTERNAL,
|
|
ES_APP_SOLAR,
|
|
};
|
|
|
|
enum {
|
|
FORMAT_RFU,
|
|
FORMAT_BOOL,
|
|
FORMAT_UINT2,
|
|
FORMAT_UINT4,
|
|
FORMAT_UINT8,
|
|
FORMAT_UINT12,
|
|
FORMAT_UINT16,
|
|
FORMAT_UINT24,
|
|
FORMAT_UINT32,
|
|
FORMAT_UINT48,
|
|
FORMAT_UINT64,
|
|
FORMAT_UINT128,
|
|
FORMAT_INT8,
|
|
FORMAT_INT12,
|
|
FORMAT_INT16,
|
|
FORMAT_INT24,
|
|
FORMAT_INT32,
|
|
FORMAT_INT48,
|
|
FORMAT_INT64,
|
|
FORMAT_INT128,
|
|
FORMAT_FLOAT32,
|
|
FORMAT_FLOAT64,
|
|
FORMAT_IEEE11073_SFLOAT16,
|
|
FORMAT_IEEE11073_FLOAT32,
|
|
FORMAT_IEEE20601,
|
|
FORMAT_UTF8,
|
|
FORMAT_UTF16,
|
|
FORMAT_OPAQUE,
|
|
};
|
|
|
|
enum{
|
|
ES_SVC_IDX,
|
|
BATT_SVC_IDX,
|
|
POWER_SVC_IDX,
|
|
MAGFIELD_SVC_IDX,
|
|
};
|
|
|
|
enum{
|
|
ES_CHAR_CO2,
|
|
ES_CHAR_TEMP,
|
|
ES_CHAR_HUM,
|
|
ES_CHAR_NB,
|
|
};
|
|
|
|
struct ES_char_descr {
|
|
uint16_t flags;
|
|
uint8_t sampling_function;
|
|
uint8_t measurement_period[3];
|
|
uint8_t update_interval[3];
|
|
uint8_t application;
|
|
uint8_t measurement_uncertainty;
|
|
};
|
|
typedef struct ES_char_descr ES_char_descr_t;
|
|
|
|
struct char_pres_format {
|
|
uint8_t format;
|
|
uint8_t exponent;
|
|
uint16_t unit;
|
|
uint8_t namespc;
|
|
uint16_t descr;
|
|
};
|
|
typedef struct char_pres_format char_pres_format_t;
|
|
|
|
enum{
|
|
BATT_CHAR_LEVEL,
|
|
BATT_CHAR_NB,
|
|
};
|
|
|
|
struct batt_level_char_descr {
|
|
|
|
};
|
|
|
|
enum{
|
|
POWER_CHAR_VOLTAGE,
|
|
POWER_CHAR_NB,
|
|
};
|
|
|
|
enum{
|
|
MAGFIELD_UPDATE,
|
|
MAGFIELD_CHAR_X,
|
|
MAGFIELD_CHAR_Y,
|
|
MAGFIELD_CHAR_Z,
|
|
MAGFIELD_CHAR_NB,
|
|
};
|
|
|
|
void initBle(configuration_data_t* main_conf);
|
|
void ble_sensor_notify();
|
|
#endif
|