embox

Форк
0
94 строки · 2.0 Кб
1
#include <unistd.h>
2
#include <stdio.h>
3
#include <string.h>
4

5
#include <framework/cmd/api.h>
6

7
#include <config/custom_config_qspi.h>
8

9
#include <ble_common.h>
10
#include <ble_mgr.h>
11
#include <ble_gap.h>
12
#include <sys_clock_mgr.h>
13

14
/*
15
 * BLE adv demo advertising data
16
 */
17
static const uint8_t adv_data[] = {
18
	0xf, GAP_DATA_TYPE_LOCAL_NAME,
19
	'E', 'm', 'b', 'o', 'x', ' ', 'A', 'D', 'V', ' ', 'D', 'e', 'm', 'o'
20
};
21

22
extern void ad_ble_init(void);
23

24
static void handle_evt_gap_connected(ble_evt_gap_connected_t *evt) {
25
}
26

27
static void handle_evt_gap_disconnected(ble_evt_gap_disconnected_t *evt) {
28
	/* Restart advertising */
29
	ble_gap_adv_start(GAP_CONN_MODE_UNDIRECTED);
30
}
31

32
static void handle_evt_gap_pair_req(ble_evt_gap_pair_req_t *evt) {
33
	ble_gap_pair_reply(evt->conn_idx, true, evt->bond);
34
}
35

36
int main(int argc, char **argv) {
37
	ble_mgr_init();
38

39
	ad_ble_init();
40

41
	ble_peripheral_start();
42

43
	/* Set device name */
44
	ble_gap_device_name_set("Embox ADV Demo", ATT_PERM_READ);
45

46
	/* Set advertising data */
47
	ble_gap_adv_data_set(sizeof(adv_data), adv_data, 0, NULL);
48

49
	/* Start advertising */
50
	ble_gap_adv_start(GAP_CONN_MODE_UNDIRECTED);
51

52
	if (!cm_lp_clk_is_avail()) {
53
		fprintf(stderr, "No low power enabled\n");
54
		return -1;
55
	} else {
56
		ad_ble_lpclock_available();
57
	}
58

59
	/* TODO The only difference from the original ble_adv example
60
	 * is removed watchdog. */
61
	for (;;) {
62
		ble_evt_hdr_t *hdr;
63

64
		/*
65
		 * Wait for a BLE event - this task will block
66
		 * indefinitely until something is received.
67
		 */
68
		hdr = ble_get_event(true);
69

70
		if (!hdr) {
71
			continue;
72
		}
73

74
		switch (hdr->evt_code) {
75
		case BLE_EVT_GAP_CONNECTED:
76
			handle_evt_gap_connected((ble_evt_gap_connected_t *) hdr);
77
			break;
78
		case BLE_EVT_GAP_DISCONNECTED:
79
			handle_evt_gap_disconnected((ble_evt_gap_disconnected_t *) hdr);
80
			break;
81
		case BLE_EVT_GAP_PAIR_REQ:
82
			handle_evt_gap_pair_req((ble_evt_gap_pair_req_t *) hdr);
83
			break;
84
		default:
85
			ble_handle_event_default(hdr);
86
			break;
87
		}
88

89
		/* Free event buffer (it's not needed anymore) */
90
		OS_FREE(hdr);
91
	}
92

93
	return 0;
94
}
95

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.