diff --git a/src/param/param_server.c b/src/param/param_server.c index a1febc2..0ecb16c 100644 --- a/src/param/param_server.c +++ b/src/param/param_server.c @@ -73,8 +73,9 @@ static void param_serve_pull_request(csp_packet_t * request, int all, int versio struct param_serve_context ctx; ctx.request = request; ctx.q_response.version = version; - /* If packet->data[1] == 1 ack with pull response */ - int ack_with_pull = request->data[1] == 1 ? 1 : 0; + /* ack_with_pull == ack with pull response */ + const int ack_with_pull = (request->data[1] & 0b01) != 0; + const int include_remotes = (request->data[1] & 0b10) != 0; if (__allocate(&ctx) < 0) { csp_buffer_free(request); @@ -147,6 +148,9 @@ static void param_serve_pull_request(csp_packet_t * request, int all, int versio if (param->mask & PM_HIDDEN) { continue; } + if (!include_remotes && *param->node != 0) { + continue; + } uint32_t include_mask = be32toh(ctx.request->data32[1]); uint32_t exclude_mask = 0x00000000; if (version >= 2) {