From b77439a1e3399e0d6a3e39fc8acc135f42b2740b Mon Sep 17 00:00:00 2001 From: Matthias Ringwald Date: Wed, 14 Aug 2019 18:30:21 +0200 Subject: [PATCH] mesh: route heartbeat control message to configuration server --- src/mesh/mesh.c | 16 ++++++++++++++++ src/mesh/mesh_configuration_server.c | 3 +++ src/mesh/mesh_configuration_server.h | 2 ++ 3 files changed, 21 insertions(+) diff --git a/src/mesh/mesh.c b/src/mesh/mesh.c index 97e05111a..07d7b0e77 100644 --- a/src/mesh/mesh.c +++ b/src/mesh/mesh.c @@ -1081,6 +1081,19 @@ static int mesh_node_startup_from_tlv(void){ return prov_data_valid; } +static void mesh_control_message_handler(mesh_pdu_t * pdu){ + // get opcode + uint8_t opcode = mesh_pdu_control_opcode(pdu); + printf("Opcode: 0x%02x\n", opcode); + switch(opcode){ + case 0x0a: + mesh_configuration_server_process_heartbeat(pdu); + break; + default: + break; + } + mesh_upper_transport_message_processed_by_higher_layer(pdu); +} static void mesh_node_setup_default_models(void){ // configure Config Server @@ -1137,6 +1150,9 @@ void mesh_init(void){ // register for seq number updates mesh_sequence_number_set_update_callback(&mesh_persist_iv_index_and_sequence_number_if_needed); + + // register for control messages + mesh_upper_transport_register_control_message_handler(&mesh_control_message_handler); } /** diff --git a/src/mesh/mesh_configuration_server.c b/src/mesh/mesh_configuration_server.c index 5d684d77c..3d4e63593 100644 --- a/src/mesh/mesh_configuration_server.c +++ b/src/mesh/mesh_configuration_server.c @@ -2202,3 +2202,6 @@ const mesh_operation_t * mesh_configuration_server_get_operations(void){ return mesh_configuration_server_model_operations; } +void mesh_configuration_server_process_heartbeat(mesh_pdu_t * pdu){ + printf("HEARTBEAT\n"); +} diff --git a/src/mesh/mesh_configuration_server.h b/src/mesh/mesh_configuration_server.h index c5496059a..ff849d0f5 100644 --- a/src/mesh/mesh_configuration_server.h +++ b/src/mesh/mesh_configuration_server.h @@ -84,6 +84,8 @@ const mesh_operation_t * mesh_configuration_server_get_operations(void); void mesh_configuration_server_feature_changed(void); +void mesh_configuration_server_process_heartbeat(mesh_pdu_t * pdu); + // PTS Testing void config_nekey_list_set_max(uint16_t max);