#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 NSP_DESC_MAIN 0x0106 #define BATT_SVC_UUID 0x180F #define BATT_LEVEL_UUID 0x2A19 #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, }; 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 { }; void initBle(configuration_data_t* main_conf); void ble_sensor_notify(); #endif