Laboratorium BLE
|
Kod definiujący i obsługujący zdarzenia związane z usługami w warstwie GATT. Więcej...
Definicje | |
#define | MAX_TRANSMIT_SIZE 240 |
#define | BT_UUID_AIR_QUALITY_SERVICE BT_UUID_DECLARE_128(AIR_QUALITY_SERVICE_UUID) |
#define | BT_UUID_PM25 BT_UUID_DECLARE_128(PM25_UUID) |
#define | BT_UUID_PM10 BT_UUID_DECLARE_128(PM10_UUID) |
#define | BT_UUID_AQS_MGMT_SERVICE BT_UUID_DECLARE_128(AQS_MGMT_SERVICE_UUID) |
#define | BT_UUID_SLEEP_STATUS BT_UUID_DECLARE_128(SLEEP_STATUS_UUID) |
#define | BT_UUID_REPORTING_STATUS BT_UUID_DECLARE_128(REPORTING_STATUS_UUID) |
#define | BT_UUID_ID BT_UUID_DECLARE_128(ID_UUID) |
#define | BT_UUID_WORKING_PERIOD BT_UUID_DECLARE_128(WORKING_PERIOD_UUID) |
#define | BT_UUID_QUERY_DATA BT_UUID_DECLARE_128(QUERY_DATA_UUID) |
Wyliczenia | |
enum | command { sleep_status , reporting_mode , sensor_ID , working_period , query_data } |
Enumerator rozróżniający której charakterystyki dotyczy żądania zapisu/odczytu. | |
Funkcje | |
enum command | set_comm (const struct bt_uuid *uuid) |
Funkcja zwracająca enumerator command na podstawie UUID charakterystyki. | |
const void * | ss_var (enum instruction inst) |
Funkcja zwracjająca adres zmiennej, w której są przechowywane parametry opisujące bieżącą konfigurację czujnika. | |
static ssize_t | read_from_sensor (enum instruction inst, uint16_t min_len, uint16_t len, struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf, uint16_t offset) |
Funkcja wyzwalająca odczyt bieżącej konfiguracji z czujnika na żądanie odczytu charakterystyki. Resetuje semafor wait_for_read, wywołuje funkcje send_inst(), która wysyła żądanie odczytu konfiguracji do czujnika i czeka na zwolnienie semafora wait_for_read, co oznacza, że odpowiedź została z czujnika odebrana i przetworzona. Na końcu za pomocą systemowej funkcji bt_gatt_attr_read() ustawia wartość odczytanej zmiennej w buforze wyjściowym lub zwraca kod błędu. | |
static ssize_t | on_read (struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf, uint16_t len, uint16_t offset) |
Funkcja callback wywoływana przez system w momencie żądania odczytu charakterystyki GATT. Zwraca przechwycony numer. | |
static ssize_t | status_return (uint16_t len, uint8_t status) |
Funkcja zwracająca liczbę wysłanych bajtów w przypadku powodzenia wysłania instrukcji zmiany konfiguracji czujnika, lub kod błędu w przeciwnym przypadku. | |
static ssize_t | on_recive (struct bt_conn *conn, const struct bt_gatt_attr *attr, const void *buf, uint16_t len, uint16_t offset, uint8_t flags) |
Funkcja callback uruchamiana przez system w momencie żądania zapisu charakterystyki. W zależności od charakterystyki której dotyczy żądanie weryfikuje poprawność otrzymanych danych, a następnie wywołuje funkcje send_inst(), która wysyła do czujnika ramkę z parametrami do ustawienia. | |
void | on_cccd_changed (const struct bt_gatt_attr *attr, uint16_t val) |
Funkcja callback wywoływana w momencie zmiany konfiguracji CCCD Wypisyje komunikaty informacyjne o zdarzeniu jakie wystąpiło. | |
BT_GATT_SERVICE_DEFINE (Air_Quality_Service, BT_GATT_PRIMARY_SERVICE(BT_UUID_AIR_QUALITY_SERVICE), BT_GATT_CHARACTERISTIC(BT_UUID_PM25, BT_GATT_CHRC_NOTIFY, BT_GATT_PERM_READ, NULL, NULL, NULL), BT_GATT_CCC(on_cccd_changed, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE), BT_GATT_CHARACTERISTIC(BT_UUID_PM10, BT_GATT_CHRC_NOTIFY, BT_GATT_PERM_READ, NULL, NULL, NULL), BT_GATT_CCC(on_cccd_changed, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE), BT_GATT_CHARACTERISTIC(BT_UUID_QUERY_DATA, BT_GATT_CHRC_WRITE, BT_GATT_PERM_WRITE, NULL, on_recive, NULL), BT_GATT_CCC(on_cccd_changed, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE_AUTHEN)) | |
BT_GATT_SERVICE_DEFINE (Sensor_Mgmt_Service, BT_GATT_PRIMARY_SERVICE(BT_UUID_AQS_MGMT_SERVICE), BT_GATT_CHARACTERISTIC(BT_UUID_SLEEP_STATUS, BT_GATT_CHRC_READ|BT_GATT_CHRC_WRITE, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE_AUTHEN, on_read, on_recive, NULL), BT_GATT_CCC(on_cccd_changed, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE_AUTHEN), BT_GATT_CHARACTERISTIC(BT_UUID_REPORTING_STATUS, BT_GATT_CHRC_READ|BT_GATT_CHRC_WRITE, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE_AUTHEN, on_read, on_recive, NULL), BT_GATT_CCC(on_cccd_changed, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE_AUTHEN), BT_GATT_CHARACTERISTIC(BT_UUID_ID, BT_GATT_CHRC_READ|BT_GATT_CHRC_WRITE, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE_AUTHEN, on_read, on_recive, NULL), BT_GATT_CCC(on_cccd_changed, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE_AUTHEN), BT_GATT_CHARACTERISTIC(BT_UUID_WORKING_PERIOD, BT_GATT_CHRC_READ|BT_GATT_CHRC_WRITE, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE_AUTHEN, on_read, on_recive, NULL), BT_GATT_CCC(on_cccd_changed, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE_AUTHEN)) | |
static void | on_sent (struct bt_conn *conn, void *user_data) |
Funkcja callback uruchamiana przez system w momencie wysłania powiadomienia o zmianie wartości. Wypisuje na konsole szeregową komunikaty informacyjne. | |
void | air_quality_send (struct bt_conn *conn, const uint16_t *pm25, const uint16_t *pm10, uint16_t len) |
Funkcja wysyłająca powiadomienie o zmianie wartości odczytów stanu jakości powietrza. Sprawdza, czy w danym połączeniu zostały zasubskrybowane powiadomienia oraz czy wynik odczytu się zmienił od ostatniego powiadomienia i, jeżeli obywa sprawdzenia są prawdziwe, wysyła zmienioną wartość. | |
Zmienne | |
uint16_t | pm25l = 0 |
uint16_t | pm10l = 0 |
#define MAX_TRANSMIT_SIZE 240 |
Maksywalny rozmiar bufora dla BLE
void air_quality_send | ( | struct bt_conn * | conn, |
const uint16_t * | pm25, | ||
const uint16_t * | pm10, | ||
uint16_t | len ) |
conn | Struktura opisująca połączenie |
pm25 | Wartość stężenia pyłu zawiesinowego PM2.5 |
pm10 | Wartość stężenia pyłu zawiesinowego PM2.5 |
len | Rozmiar parametrów do wysłania |
BT_GATT_SERVICE_DEFINE | ( | Air_Quality_Service | , |
BT_GATT_PRIMARY_SERVICE(BT_UUID_AIR_QUALITY_SERVICE) | , | ||
BT_GATT_CHARACTERISTIC(BT_UUID_PM25, BT_GATT_CHRC_NOTIFY, BT_GATT_PERM_READ, NULL, NULL, NULL) | , | ||
BT_GATT_CCC(on_cccd_changed, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE) | , | ||
BT_GATT_CHARACTERISTIC(BT_UUID_PM10, BT_GATT_CHRC_NOTIFY, BT_GATT_PERM_READ, NULL, NULL, NULL) | , | ||
BT_GATT_CCC(on_cccd_changed, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE) | , | ||
BT_GATT_CHARACTERISTIC(BT_UUID_QUERY_DATA, BT_GATT_CHRC_WRITE, BT_GATT_PERM_WRITE, NULL, on_recive, NULL) | , | ||
BT_GATT_CCC(on_cccd_changed, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE_AUTHEN) | ) |
Deefinicja usługi Air Quality Service i jej charakterystyk
BT_GATT_SERVICE_DEFINE | ( | Sensor_Mgmt_Service | , |
BT_GATT_PRIMARY_SERVICE(BT_UUID_AQS_MGMT_SERVICE) | , | ||
BT_GATT_CHARACTERISTIC(BT_UUID_SLEEP_STATUS, BT_GATT_CHRC_READ|BT_GATT_CHRC_WRITE, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE_AUTHEN, on_read, on_recive, NULL) | , | ||
BT_GATT_CCC(on_cccd_changed, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE_AUTHEN) | , | ||
BT_GATT_CHARACTERISTIC(BT_UUID_REPORTING_STATUS, BT_GATT_CHRC_READ|BT_GATT_CHRC_WRITE, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE_AUTHEN, on_read, on_recive, NULL) | , | ||
BT_GATT_CCC(on_cccd_changed, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE_AUTHEN) | , | ||
BT_GATT_CHARACTERISTIC(BT_UUID_ID, BT_GATT_CHRC_READ|BT_GATT_CHRC_WRITE, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE_AUTHEN, on_read, on_recive, NULL) | , | ||
BT_GATT_CCC(on_cccd_changed, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE_AUTHEN) | , | ||
BT_GATT_CHARACTERISTIC(BT_UUID_WORKING_PERIOD, BT_GATT_CHRC_READ|BT_GATT_CHRC_WRITE, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE_AUTHEN, on_read, on_recive, NULL) | , | ||
BT_GATT_CCC(on_cccd_changed, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE_AUTHEN) | ) |
Definicja usługi Air Quality Sensor Management Service i jej charakterystyk
void on_cccd_changed | ( | const struct bt_gatt_attr * | attr, |
uint16_t | val ) |
attr | Struktura opisująca atrybuty warstwy GATT |
val | Typ zdarzenia, który spowodował wywołanie funkcji. |
|
static |
conn | Struktura opisująca połączenie, które spowodowało wywołanie funkcji |
attr | Struktura opisująca atrybuty warstwy GATT |
buf | Bufor, w którym należy umieścić odczytane dane |
len | Miejsce dostępne w buforze |
offset | Pozycja w buforze, od której należy zacząć umieszczać dane |
|
static |
conn | Struktura opisująca połączenie, które spowodowało wywołanie funkcji |
attr | Struktura opisująca atrybuty warstwy GATT |
buf | Bufor, w którym znajdują się dane do ustawienie |
len | Liczba bajtów znajdujących się w buforze |
offset | Początkowe miejsce danych w buforze |
flags | Flagi |
|
static |
conn | Struktura opisująca połączenie, którego dotyczy powiadomienie. |
user_data |
|
static |
inst | Parametr, którego dotyczy żądanie odczytu |
min_len | Wielkość zmiennej opisującej parametr |
len | Dostępne miejsce w buforze |
conn | Struktura opisująca połączenie, którego dotyczy żądanie odczytu |
attr | Struktura opisująca atrybuty GATT |
buf | Bufor |
offset | Początkowe miejsce w buforze od którego należy umieścić dane. |
enum command set_comm | ( | const struct bt_uuid * | uuid | ) |
uuid | wskaźnik do uuid, którego dotyczy żądanie |
const void * ss_var | ( | enum instruction | inst | ) |
inst | instrukcja, której dotyczy żądanie odczytu |
|
static |
len | |
status |
uint16_t pm25l = 0 |
Ostatnia wartość stężenia pyłu zawiesinowego wysłana do czujnika.