mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-02-25 06:40:10 +00:00
mesh: ignore generic on off server message with invalid on/off value
This commit is contained in:
parent
e7dae087f0
commit
6445d71a6d
@ -221,7 +221,8 @@ static void generic_on_off_get_handler(mesh_model_t *generic_on_off_server_model
|
|||||||
mesh_access_message_processed(pdu);
|
mesh_access_message_processed(pdu);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void generic_on_off_handle_set_message(mesh_model_t *mesh_model, mesh_pdu_t * pdu){
|
// returns if set message was valid
|
||||||
|
static bool generic_on_off_handle_set_message(mesh_model_t *mesh_model, mesh_pdu_t * pdu){
|
||||||
btstack_assert(mesh_model != NULL);
|
btstack_assert(mesh_model != NULL);
|
||||||
btstack_assert(mesh_model->model_data != NULL);
|
btstack_assert(mesh_model->model_data != NULL);
|
||||||
|
|
||||||
@ -229,6 +230,9 @@ static void generic_on_off_handle_set_message(mesh_model_t *mesh_model, mesh_pdu
|
|||||||
mesh_access_parser_init(&parser, (mesh_pdu_t*) pdu);
|
mesh_access_parser_init(&parser, (mesh_pdu_t*) pdu);
|
||||||
uint8_t on_off_value = mesh_access_parser_get_u8(&parser);
|
uint8_t on_off_value = mesh_access_parser_get_u8(&parser);
|
||||||
|
|
||||||
|
// check for valid value
|
||||||
|
if (on_off_value > 1) return false;
|
||||||
|
|
||||||
// The TID field is a transaction identifier indicating whether the message is
|
// The TID field is a transaction identifier indicating whether the message is
|
||||||
// a new message or a retransmission of a previously sent message
|
// a new message or a retransmission of a previously sent message
|
||||||
mesh_generic_on_off_state_t * generic_on_off_server_state = (mesh_generic_on_off_state_t *)mesh_model->model_data;
|
mesh_generic_on_off_state_t * generic_on_off_server_state = (mesh_generic_on_off_state_t *)mesh_model->model_data;
|
||||||
@ -254,14 +258,17 @@ static void generic_on_off_handle_set_message(mesh_model_t *mesh_model, mesh_pdu
|
|||||||
mesh_access_state_changed(mesh_model);
|
mesh_access_state_changed(mesh_model);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void generic_on_off_set_handler(mesh_model_t *generic_on_off_server_model, mesh_pdu_t * pdu){
|
static void generic_on_off_set_handler(mesh_model_t *generic_on_off_server_model, mesh_pdu_t * pdu){
|
||||||
generic_on_off_handle_set_message(generic_on_off_server_model, pdu);
|
bool send_status = generic_on_off_handle_set_message(generic_on_off_server_model, pdu);
|
||||||
|
if (send_status){
|
||||||
mesh_transport_pdu_t * transport_pdu = (mesh_transport_pdu_t *) mesh_generic_on_off_status_message(generic_on_off_server_model);
|
mesh_transport_pdu_t * transport_pdu = (mesh_transport_pdu_t *) mesh_generic_on_off_status_message(generic_on_off_server_model);
|
||||||
if (!transport_pdu) return;
|
if (transport_pdu) {
|
||||||
generic_server_send_message(mesh_access_get_element_address(generic_on_off_server_model), mesh_pdu_src(pdu), mesh_pdu_netkey_index(pdu), mesh_pdu_appkey_index(pdu),(mesh_pdu_t *) transport_pdu);
|
generic_server_send_message(mesh_access_get_element_address(generic_on_off_server_model), mesh_pdu_src(pdu), mesh_pdu_netkey_index(pdu), mesh_pdu_appkey_index(pdu),(mesh_pdu_t *) transport_pdu);
|
||||||
|
}
|
||||||
|
}
|
||||||
mesh_access_message_processed(pdu);
|
mesh_access_message_processed(pdu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user