Skip to content

Commit b8b81a5

Browse files
committed
applications: nrf_desktop: LED indicates peer search
Instead of breathing LED when the device is disconnected, do this when it is actively searching for a peer. This commit also shortens the breathing time from 1s to 0.5s. Jira:DESK-753 Signed-off-by: Pawel Dunaj <[email protected]>
1 parent 11d7bd1 commit b8b81a5

File tree

11 files changed

+103
-17
lines changed

11 files changed

+103
-17
lines changed

applications/nrf_desktop/configuration/common/led_state.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ enum led_system_state {
3131
enum led_peer_state {
3232
LED_PEER_STATE_DISCONNECTED,
3333
LED_PEER_STATE_CONNECTED,
34+
LED_PEER_STATE_PEER_SEARCH,
3435
LED_PEER_STATE_CONFIRM_SELECT,
3536
LED_PEER_STATE_CONFIRM_ERASE,
3637
LED_PEER_STATE_ERASE_ADV,

applications/nrf_desktop/configuration/nrf52840_pca10056/led_state_def.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@ static const struct led_effect led_system_state_effect[LED_SYSTEM_STATE_COUNT] =
3131

3232
static const struct led_effect led_peer_state_effect[LED_PEER_CNT][LED_PEER_STATE_COUNT] = {
3333
{
34-
[LED_PEER_STATE_DISCONNECTED] = LED_EFFECT_LED_BREATH(1000, LED_COLOR(100)),
34+
[LED_PEER_STATE_DISCONNECTED] = LED_EFFECT_LED_OFF(),
3535
[LED_PEER_STATE_CONNECTED] = LED_EFFECT_LED_ON(LED_COLOR(100)),
36+
[LED_PEER_STATE_PEER_SEARCH] = LED_EFFECT_LED_BREATH(1000, LED_COLOR(100)),
3637
[LED_PEER_STATE_CONFIRM_SELECT] = LED_EFFECT_LED_BLINK(50, LED_COLOR(100)),
3738
[LED_PEER_STATE_CONFIRM_ERASE] = LED_EFFECT_LED_BLINK(25, LED_COLOR(100)),
3839
[LED_PEER_STATE_ERASE_ADV] = LED_EFFECT_LED_BREATH(100, LED_COLOR(100)),

applications/nrf_desktop/configuration/nrf52840_pca10059/led_state_def.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,17 @@ static const struct led_effect led_system_state_effect[LED_SYSTEM_STATE_COUNT] =
3131

3232
static const struct led_effect led_peer_state_effect[LED_PEER_CNT][LED_PEER_STATE_COUNT] = {
3333
{
34-
[LED_PEER_STATE_DISCONNECTED] = LED_EFFECT_LED_BREATH(1000, LED_COLOR(100)),
34+
[LED_PEER_STATE_DISCONNECTED] = LED_EFFECT_LED_OFF(),
3535
[LED_PEER_STATE_CONNECTED] = LED_EFFECT_LED_ON(LED_COLOR(100)),
36+
[LED_PEER_STATE_PEER_SEARCH] = LED_EFFECT_LED_BREATH(500, LED_COLOR(100)),
3637
[LED_PEER_STATE_CONFIRM_SELECT] = LED_EFFECT_LED_BLINK(50, LED_COLOR(100)),
3738
[LED_PEER_STATE_CONFIRM_ERASE] = LED_EFFECT_LED_BLINK(25, LED_COLOR(100)),
3839
[LED_PEER_STATE_ERASE_ADV] = LED_EFFECT_LED_BREATH(100, LED_COLOR(100)),
3940
},
4041
{
41-
[LED_PEER_STATE_DISCONNECTED] = LED_EFFECT_LED_BREATH(1000, LED_COLOR(100)),
42+
[LED_PEER_STATE_DISCONNECTED] = LED_EFFECT_LED_OFF(),
4243
[LED_PEER_STATE_CONNECTED] = LED_EFFECT_LED_ON(LED_COLOR(100)),
44+
[LED_PEER_STATE_PEER_SEARCH] = LED_EFFECT_LED_BREATH(500, LED_COLOR(100)),
4345
[LED_PEER_STATE_CONFIRM_SELECT] = LED_EFFECT_LED_BLINK(50, LED_COLOR(100)),
4446
[LED_PEER_STATE_CONFIRM_ERASE] = LED_EFFECT_LED_BLINK(25, LED_COLOR(100)),
4547
[LED_PEER_STATE_ERASE_ADV] = LED_EFFECT_LED_BREATH(100, LED_COLOR(100)),

applications/nrf_desktop/configuration/nrf52840_pca20041/led_state_def.h

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,29 +31,33 @@ static const struct led_effect led_system_state_effect[LED_SYSTEM_STATE_COUNT] =
3131

3232
static const struct led_effect led_peer_state_effect[LED_PEER_CNT][LED_PEER_STATE_COUNT] = {
3333
{
34-
[LED_PEER_STATE_DISCONNECTED] = LED_EFFECT_LED_BREATH(1000, LED_COLOR(150, 0, 0)),
34+
[LED_PEER_STATE_DISCONNECTED] = LED_EFFECT_LED_OFF(),
3535
[LED_PEER_STATE_CONNECTED] = LED_EFFECT_LED_ON(LED_COLOR(150, 0, 0)),
36+
[LED_PEER_STATE_PEER_SEARCH] = LED_EFFECT_LED_BREATH(500, LED_COLOR(150, 0, 0)),
3637
[LED_PEER_STATE_CONFIRM_SELECT] = LED_EFFECT_LED_BLINK(50, LED_COLOR(150, 0, 0)),
3738
[LED_PEER_STATE_CONFIRM_ERASE] = LED_EFFECT_LED_BLINK(25, LED_COLOR(150, 0, 0)),
3839
[LED_PEER_STATE_ERASE_ADV] = LED_EFFECT_LED_BREATH(100, LED_COLOR(150, 0, 0)),
3940
},
4041
{
41-
[LED_PEER_STATE_DISCONNECTED] = LED_EFFECT_LED_BREATH(1000, LED_COLOR(0, 150, 0)),
42+
[LED_PEER_STATE_DISCONNECTED] = LED_EFFECT_LED_OFF(),
4243
[LED_PEER_STATE_CONNECTED] = LED_EFFECT_LED_ON(LED_COLOR(0, 150, 0)),
44+
[LED_PEER_STATE_PEER_SEARCH] = LED_EFFECT_LED_BREATH(500, LED_COLOR(0, 150, 0)),
4345
[LED_PEER_STATE_CONFIRM_SELECT] = LED_EFFECT_LED_BLINK(50, LED_COLOR(0, 150, 0)),
4446
[LED_PEER_STATE_CONFIRM_ERASE] = LED_EFFECT_LED_BLINK(25, LED_COLOR(0, 150, 0)),
4547
[LED_PEER_STATE_ERASE_ADV] = LED_EFFECT_LED_BREATH(100, LED_COLOR(0, 150, 0)),
4648
},
4749
{
48-
[LED_PEER_STATE_DISCONNECTED] = LED_EFFECT_LED_BREATH(1000, LED_COLOR(0, 0, 150)),
50+
[LED_PEER_STATE_DISCONNECTED] = LED_EFFECT_LED_OFF(),
4951
[LED_PEER_STATE_CONNECTED] = LED_EFFECT_LED_ON(LED_COLOR(0, 0, 150)),
52+
[LED_PEER_STATE_PEER_SEARCH] = LED_EFFECT_LED_BREATH(500, LED_COLOR(0, 0, 150)),
5053
[LED_PEER_STATE_CONFIRM_SELECT] = LED_EFFECT_LED_BLINK(50, LED_COLOR(0, 0, 150)),
5154
[LED_PEER_STATE_CONFIRM_ERASE] = LED_EFFECT_LED_BLINK(25, LED_COLOR(0, 0, 150)),
5255
[LED_PEER_STATE_ERASE_ADV] = LED_EFFECT_LED_BREATH(100, LED_COLOR(0, 0, 150)),
5356
},
5457
{
55-
[LED_PEER_STATE_DISCONNECTED] = LED_EFFECT_LED_BREATH(1000, LED_COLOR(150, 150, 150)),
58+
[LED_PEER_STATE_DISCONNECTED] = LED_EFFECT_LED_OFF(),
5659
[LED_PEER_STATE_CONNECTED] = LED_EFFECT_LED_ON(LED_COLOR(150, 150, 150)),
60+
[LED_PEER_STATE_PEER_SEARCH] = LED_EFFECT_LED_BREATH(500, LED_COLOR(150, 150, 150)),
5761
[LED_PEER_STATE_CONFIRM_SELECT] = LED_EFFECT_LED_BLINK(50, LED_COLOR(150, 150, 150)),
5862
[LED_PEER_STATE_CONFIRM_ERASE] = LED_EFFECT_LED_BLINK(25, LED_COLOR(150, 150, 150)),
5963
[LED_PEER_STATE_ERASE_ADV] = LED_EFFECT_LED_BREATH(100, LED_COLOR(150, 150, 150)),

applications/nrf_desktop/configuration/nrf52_pca20037/led_state_def.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,22 +28,25 @@ static const struct led_effect led_system_state_effect[LED_SYSTEM_STATE_COUNT];
2828

2929
static const struct led_effect led_peer_state_effect[LED_PEER_CNT][LED_PEER_STATE_COUNT] = {
3030
{
31-
[LED_PEER_STATE_DISCONNECTED] = LED_EFFECT_LED_BREATH(1000, LED_COLOR(255)),
31+
[LED_PEER_STATE_DISCONNECTED] = LED_EFFECT_LED_OFF(),
3232
[LED_PEER_STATE_CONNECTED] = LED_EFFECT_LED_ON(LED_COLOR(255)),
33+
[LED_PEER_STATE_PEER_SEARCH] = LED_EFFECT_LED_BREATH(500, LED_COLOR(255)),
3334
[LED_PEER_STATE_CONFIRM_SELECT] = LED_EFFECT_LED_CLOCK(1, LED_COLOR(255)),
3435
[LED_PEER_STATE_CONFIRM_ERASE] = LED_EFFECT_LED_BLINK(25, LED_COLOR(255)),
3536
[LED_PEER_STATE_ERASE_ADV] = LED_EFFECT_LED_BREATH(100, LED_COLOR(255)),
3637
},
3738
{
38-
[LED_PEER_STATE_DISCONNECTED] = LED_EFFECT_LED_BREATH(1000, LED_COLOR(255)),
39+
[LED_PEER_STATE_DISCONNECTED] = LED_EFFECT_LED_OFF(),
3940
[LED_PEER_STATE_CONNECTED] = LED_EFFECT_LED_ON(LED_COLOR(255)),
41+
[LED_PEER_STATE_PEER_SEARCH] = LED_EFFECT_LED_BREATH(500, LED_COLOR(255)),
4042
[LED_PEER_STATE_CONFIRM_SELECT] = LED_EFFECT_LED_CLOCK(2, LED_COLOR(255)),
4143
[LED_PEER_STATE_CONFIRM_ERASE] = LED_EFFECT_LED_BLINK(25, LED_COLOR(255)),
4244
[LED_PEER_STATE_ERASE_ADV] = LED_EFFECT_LED_BREATH(100, LED_COLOR(255)),
4345
},
4446
{
45-
[LED_PEER_STATE_DISCONNECTED] = LED_EFFECT_LED_BREATH(1000, LED_COLOR(255)),
47+
[LED_PEER_STATE_DISCONNECTED] = LED_EFFECT_LED_OFF(),
4648
[LED_PEER_STATE_CONNECTED] = LED_EFFECT_LED_ON(LED_COLOR(255)),
49+
[LED_PEER_STATE_PEER_SEARCH] = LED_EFFECT_LED_BREATH(500, LED_COLOR(255)),
4750
[LED_PEER_STATE_CONFIRM_SELECT] = LED_EFFECT_LED_CLOCK(3, LED_COLOR(255)),
4851
[LED_PEER_STATE_CONFIRM_ERASE] = LED_EFFECT_LED_BLINK(25, LED_COLOR(255)),
4952
[LED_PEER_STATE_ERASE_ADV] = LED_EFFECT_LED_BREATH(100, LED_COLOR(255)),

applications/nrf_desktop/src/events/Kconfig

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ config DESKTOP_INIT_LOG_BLE_PEER_EVENT
2222
bool "BLE peer event"
2323
default y
2424

25+
config DESKTOP_INIT_LOG_BLE_PEER_SEARCH_EVENT
26+
bool "BLE peer search event"
27+
default y
28+
2529
config DESKTOP_INIT_LOG_BLE_PEER_OPERATION_EVENT
2630
bool "BLE peer operation event"
2731
default y

applications/nrf_desktop/src/events/ble_event.c

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,34 @@ EVENT_TYPE_DEFINE(ble_peer_event,
5151
log_ble_peer_event,
5252
&ble_peer_event_info);
5353

54+
static int log_ble_peer_search_event(const struct event_header *eh, char *buf,
55+
size_t buf_len)
56+
{
57+
const struct ble_peer_search_event *event = cast_ble_peer_search_event(eh);
58+
59+
return snprintf(buf, buf_len, "%sactive", (event->active)?(""):("in"));
60+
}
61+
62+
static void profile_ble_peer_search_event(struct log_event_buf *buf,
63+
const struct event_header *eh)
64+
{
65+
const struct ble_peer_search_event *event = cast_ble_peer_search_event(eh);
66+
67+
ARG_UNUSED(event);
68+
profiler_log_encode_u32(buf, (u32_t)event->active);
69+
}
70+
71+
EVENT_INFO_DEFINE(ble_peer_search_event,
72+
ENCODE(PROFILER_ARG_U32),
73+
ENCODE("active"),
74+
profile_ble_peer_search_event);
75+
76+
EVENT_TYPE_DEFINE(ble_peer_search_event,
77+
IS_ENABLED(CONFIG_DESKTOP_INIT_LOG_BLE_PEER_SEARCH_EVENT),
78+
log_ble_peer_search_event,
79+
&ble_peer_search_event_info);
80+
81+
5482
static const char * const op_name[] = {
5583
#define X(name) STRINGIFY(name),
5684
PEER_OPERATION_LIST

applications/nrf_desktop/src/events/ble_event.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,14 @@ struct ble_peer_operation_event {
9393
};
9494
EVENT_TYPE_DECLARE(ble_peer_operation_event);
9595

96+
/** @brief BLE peer search event. */
97+
struct ble_peer_search_event {
98+
struct event_header header;
99+
100+
bool active;
101+
};
102+
EVENT_TYPE_DECLARE(ble_peer_search_event);
103+
96104
/** @brief BLE discovery complete event. */
97105
struct ble_discovery_complete_event {
98106
struct event_header header;

applications/nrf_desktop/src/modules/ble_adv.c

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,16 @@ enum peer_rpa {
9696

9797
static enum peer_rpa peer_is_rpa[CONFIG_BT_ID_MAX];
9898

99+
100+
static void broadcast_adv_state(bool active)
101+
{
102+
struct ble_peer_search_event *event = new_ble_peer_search_event();
103+
event->active = active;
104+
EVENT_SUBMIT(event);
105+
106+
LOG_INF("Advertising %s", (active)?("started"):("stopped"));
107+
}
108+
99109
static int ble_adv_stop(void)
100110
{
101111
int err = bt_le_adv_stop();
@@ -112,7 +122,7 @@ static int ble_adv_stop(void)
112122

113123
state = STATE_IDLE;
114124

115-
LOG_INF("Advertising stopped");
125+
broadcast_adv_state(false);
116126
}
117127

118128
return err;
@@ -270,8 +280,7 @@ static int ble_adv_start(bool can_fast_adv)
270280
}
271281
}
272282

273-
LOG_INF("Advertising started");
274-
283+
broadcast_adv_state(true);
275284
error:
276285
return err;
277286
}

applications/nrf_desktop/src/modules/ble_scan.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,13 @@ static size_t count_bond(void)
8282
return i;
8383
}
8484

85+
static void broadcast_scan_state(bool active)
86+
{
87+
struct ble_peer_search_event *event = new_ble_peer_search_event();
88+
event->active = active;
89+
EVENT_SUBMIT(event);
90+
}
91+
8592
static void scan_stop(void)
8693
{
8794
int err = bt_scan_stop();
@@ -97,6 +104,8 @@ static void scan_stop(void)
97104
}
98105

99106
scanning = false;
107+
broadcast_scan_state(scanning);
108+
100109
k_delayed_work_cancel(&scan_stop_trigger);
101110

102111
if (count_conn() < CONFIG_BT_MAX_CONN) {
@@ -248,6 +257,7 @@ static void scan_start(void)
248257
}
249258

250259
scanning = true;
260+
broadcast_scan_state(scanning);
251261

252262
k_delayed_work_submit(&scan_stop_trigger, SCAN_DURATION_MS);
253263
k_delayed_work_cancel(&scan_start_trigger);

0 commit comments

Comments
 (0)