Skip to content

Commit 57791df

Browse files
PavelVPVcarlescufi
authored andcommitted
Bluetooth: Mesh: Fix sensor client sample publication
After publication API change in zephyrproject-rtos/zephyr#34310 it became impossible to publish several messages in a row, because a new message substitues the current message that is going to be published by access layer. This change swaps sensor after each work timeout. Signed-off-by: Pavel Vasilyev <[email protected]>
1 parent 0397675 commit 57791df

File tree

1 file changed

+20
-14
lines changed

1 file changed

+20
-14
lines changed

samples/bluetooth/mesh/sensor_client/src/model_handler.c

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -58,24 +58,30 @@ static struct k_work_delayable get_data_work;
5858

5959
static void get_data(struct k_work *work)
6060
{
61+
static bool req_temp_range;
6162
int err;
6263

63-
err = bt_mesh_sensor_cli_series_entries_get(
64-
&sensor_cli, NULL,
65-
&bt_mesh_sensor_rel_runtime_in_a_dev_op_temp_range, NULL, NULL,
66-
NULL);
67-
if (err) {
68-
printk("Error getting relative chip temperature data (%d)\n",
69-
err);
64+
/* Only one message can be published at a time. Swap sensor after each timeout. */
65+
if (req_temp_range) {
66+
err = bt_mesh_sensor_cli_series_entries_get(
67+
&sensor_cli, NULL,
68+
&bt_mesh_sensor_rel_runtime_in_a_dev_op_temp_range, NULL, NULL,
69+
NULL);
70+
if (err) {
71+
printk("Error getting relative chip temperature data (%d)\n",
72+
err);
73+
}
74+
} else {
75+
err = bt_mesh_sensor_cli_get(
76+
&sensor_cli, NULL, &bt_mesh_sensor_time_since_presence_detected,
77+
NULL);
78+
if (err) {
79+
printk("Error getting time since presence detected (%d)\n",
80+
err);
81+
}
7082
}
7183

72-
err = bt_mesh_sensor_cli_get(
73-
&sensor_cli, NULL, &bt_mesh_sensor_time_since_presence_detected,
74-
NULL);
75-
if (err) {
76-
printk("Error getting time since presence detected (%d)\n",
77-
err);
78-
}
84+
req_temp_range = !req_temp_range;
7985

8086
k_work_schedule(&get_data_work, K_MSEC(GET_DATA_INTERVAL));
8187
}

0 commit comments

Comments
 (0)