summaryrefslogtreecommitdiff
path: root/mesh/prvbeac-server.c
diff options
context:
space:
mode:
Diffstat (limited to 'mesh/prvbeac-server.c')
-rw-r--r--mesh/prvbeac-server.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/mesh/prvbeac-server.c b/mesh/prvbeac-server.c
index e712778f8..dd0e4cbf4 100644
--- a/mesh/prvbeac-server.c
+++ b/mesh/prvbeac-server.c
@@ -43,7 +43,7 @@ static bool prvbec_srv_pkt(uint16_t src, uint16_t dst, uint16_t app_idx,
uint32_t opcode;
uint8_t msg[5];
uint16_t n;
- uint8_t period = 0;
+ uint8_t period;
if (app_idx != APP_IDX_DEV_LOCAL)
return false;
@@ -65,18 +65,23 @@ static bool prvbec_srv_pkt(uint16_t src, uint16_t dst, uint16_t app_idx,
case OP_PRIVATE_BEACON_SET:
if (size == 1)
- period = 0xff;
+ node_mpb_mode_get(node, &period);
else if (size == 2)
period = pkt[1];
else
return true;
+ if (pkt[0] > 1)
+ return true;
+
+ node_mpb_mode_set(node, !!pkt[0], period);
+
/* fall through */
case OP_PRIVATE_BEACON_GET:
n = mesh_model_opcode_set(OP_PRIVATE_BEACON_STATUS, msg);
- msg[n++] = NOT_SUPPORTED;
+ msg[n++] = node_mpb_mode_get(node, &period);
msg[n++] = period;
l_debug("Get/Set Private Beacon (%d)", msg[n-2]);