2022-12-22 16:23:43 +01:00

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