mesh: use mesh_access_message builder in health_server, remove mesh_access_network builder

This commit is contained in:
Matthias Ringwald 2020-03-09 16:22:21 +01:00
parent 2f6af885c0
commit 3e081242c0
3 changed files with 10 additions and 53 deletions

View File

@ -734,41 +734,6 @@ void mesh_access_transport_add_model_identifier(mesh_transport_pdu_t * pdu, uint
mesh_access_transport_add_uint16( pdu, mesh_model_get_model_id(model_identifier) );
}
mesh_network_pdu_t * mesh_access_network_init(uint32_t opcode){
mesh_network_pdu_t * pdu = mesh_network_pdu_get();
if (!pdu) return NULL;
pdu->len = mesh_access_setup_opcode(&pdu->data[10], opcode) + 10;
return pdu;
}
void mesh_access_network_add_uint8(mesh_network_pdu_t * pdu, uint8_t value){
pdu->data[pdu->len++] = value;
}
void mesh_access_network_add_uint16(mesh_network_pdu_t * pdu, uint16_t value){
little_endian_store_16(pdu->data, pdu->len, value);
pdu->len += 2;
}
void mesh_access_network_add_uint24(mesh_network_pdu_t * pdu, uint16_t value){
little_endian_store_24(pdu->data, pdu->len, value);
pdu->len += 3;
}
void mesh_access_network_add_uint32(mesh_network_pdu_t * pdu, uint16_t value){
little_endian_store_32(pdu->data, pdu->len, value);
pdu->len += 4;
}
void mesh_access_network_add_model_identifier(mesh_network_pdu_t * pdu, uint32_t model_identifier){
if (mesh_model_is_bluetooth_sig(model_identifier)){
mesh_access_network_add_uint16( pdu, mesh_model_get_model_id(model_identifier) );
} else {
mesh_access_network_add_uint32( pdu, model_identifier );
}
}
// mesh_message_t builder
mesh_message_pdu_t * mesh_access_message_init(uint32_t opcode, bool segmented, uint8_t num_segments){
btstack_assert(num_segments > 0);

View File

@ -256,15 +256,7 @@ void mesh_access_transport_add_uint32(mesh_transport_pdu_t * pdu, uint32_t value
void mesh_access_transport_add_model_identifier(mesh_transport_pdu_t * pdu, uint32_t model_identifier);
void mesh_access_transport_add_label_uuid(mesh_transport_pdu_t * pdu, uint8_t * value);
// message builder network
mesh_network_pdu_t * mesh_access_network_init(uint32_t opcode);
void mesh_access_network_add_uint8(mesh_network_pdu_t * pdu, uint8_t value);
void mesh_access_network_add_uint16(mesh_network_pdu_t * pdu, uint16_t value);
void mesh_access_network_add_uint24(mesh_network_pdu_t * pdu, uint16_t value);
void mesh_access_network_add_uint32(mesh_network_pdu_t * pdu, uint16_t value);
void mesh_access_network_add_model_identifier(mesh_network_pdu_t * pdu, uint32_t model_identifier);
mesh_message_pdu_t mesh_access_pdu_init(uint32_t opcode, bool segmented, uint8_t num_segments);
mesh_message_pdu_t * mesh_access_message_init(uint32_t opcode, bool segmented, uint8_t num_segments);
void mesh_access_message_add_uint8(mesh_message_pdu_t * pdu, uint8_t value);
void mesh_access_message_add_uint16(mesh_message_pdu_t * pdu, uint16_t value);
void mesh_access_message_add_uint24(mesh_message_pdu_t * pdu, uint16_t value);

View File

@ -120,29 +120,29 @@ static mesh_pdu_t * health_attention_status(void){
// report fault status - used for both current as well as registered faults, see registered_faults param
static mesh_pdu_t * health_fault_status(mesh_model_t * mesh_model, uint32_t opcode, uint16_t company_id, bool registered_faults){
mesh_network_pdu_t * transport_pdu = mesh_access_network_init(opcode);
if (!transport_pdu) return NULL;
mesh_message_pdu_t * message_pdu = mesh_access_message_init(opcode, false, 1);
if (!message_pdu) return NULL;
mesh_health_fault_t * fault = mesh_health_server_fault_for_company_id(mesh_model, company_id);
if (fault == NULL){
// no fault state with company_id found
mesh_access_network_add_uint8(transport_pdu, 0);
mesh_access_network_add_uint16(transport_pdu, company_id);
mesh_access_message_add_uint8(message_pdu, 0);
mesh_access_message_add_uint16(message_pdu, company_id);
} else {
mesh_access_network_add_uint8(transport_pdu, fault->test_id);
mesh_access_network_add_uint16(transport_pdu, fault->company_id);
mesh_access_message_add_uint8(message_pdu, fault->test_id);
mesh_access_message_add_uint16(message_pdu, fault->company_id);
int i;
if (registered_faults){
for (i = 0; i < fault->num_registered_faults; i++){
mesh_access_network_add_uint8(transport_pdu, fault->registered_faults[i]);
mesh_access_message_add_uint8(message_pdu, fault->registered_faults[i]);
}
} else {
for (i = 0; i < fault->num_current_faults; i++){
mesh_access_network_add_uint8(transport_pdu, fault->current_faults[i]);
mesh_access_message_add_uint8(message_pdu, fault->current_faults[i]);
}
}
}
return (mesh_pdu_t *) transport_pdu;
return (mesh_pdu_t *) message_pdu;
}
static void health_fault_get_handler(mesh_model_t *mesh_model, mesh_pdu_t * pdu){