|
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.