mesh: remove element and index, add destination and status to status event

This commit is contained in:
Milanka Ringwald 2019-12-05 14:30:16 +01:00
parent 43d70f1d1b
commit 5c1e046aaa
4 changed files with 83 additions and 60 deletions

View File

@ -2875,10 +2875,10 @@ typedef uint8_t sm_key_t[16];
#define MESH_SUBEVENT_MESSAGE_NOT_ACKNOWLEDGED 0x30
/**
* @format 114114
* @format 121114
* @param subevent_code
* @param element_index
* @param model_identifier
* @param dest
* @param status
* @param present_value
* @param target_value optional, if value > 0, than remaining_time_ms must be read
* @param remaining_time_ms
@ -2886,10 +2886,10 @@ typedef uint8_t sm_key_t[16];
#define MESH_SUBEVENT_GENERIC_ON_OFF_STATUS 0x31
/**
* @format 114224
* @format 121224
* @param subevent_code
* @param element_index
* @param model_identifier
* @param dest
* @param status
* @param present_value
* @param target_value optional, if value > 0, than remaining_time_ms must be read
* @param remaining_time_ms
@ -2915,4 +2915,12 @@ typedef uint8_t sm_key_t[16];
*/
#define MESH_SUBEVENT_HEALTH_ATTENTION_TIMER_CHANGED 0x34
/**
* @format 1211
* @param subevent_code
* @param dest
* @param status
* @param transition_time_gdtt
*/
#define MESH_SUBEVENT_GENERIC_DEFAULT_TRANSITION_TIME_STATUS 0x35
#endif

View File

@ -7824,22 +7824,22 @@ static inline uint16_t mesh_subevent_message_not_acknowledged_get_dest(const uin
}
/**
* @brief Get field element_index from event MESH_SUBEVENT_GENERIC_ON_OFF_STATUS
* @brief Get field dest from event MESH_SUBEVENT_GENERIC_ON_OFF_STATUS
* @param event packet
* @return element_index
* @note: btstack_type 1
* @return dest
* @note: btstack_type 2
*/
static inline uint8_t mesh_subevent_generic_on_off_status_get_element_index(const uint8_t * event){
return event[3];
static inline uint16_t mesh_subevent_generic_on_off_status_get_dest(const uint8_t * event){
return little_endian_read_16(event, 3);
}
/**
* @brief Get field model_identifier from event MESH_SUBEVENT_GENERIC_ON_OFF_STATUS
* @brief Get field status from event MESH_SUBEVENT_GENERIC_ON_OFF_STATUS
* @param event packet
* @return model_identifier
* @note: btstack_type 4
* @return status
* @note: btstack_type 1
*/
static inline uint32_t mesh_subevent_generic_on_off_status_get_model_identifier(const uint8_t * event){
return little_endian_read_32(event, 4);
static inline uint8_t mesh_subevent_generic_on_off_status_get_status(const uint8_t * event){
return event[5];
}
/**
* @brief Get field present_value from event MESH_SUBEVENT_GENERIC_ON_OFF_STATUS
@ -7848,7 +7848,7 @@ static inline uint32_t mesh_subevent_generic_on_off_status_get_model_identifier(
* @note: btstack_type 1
*/
static inline uint8_t mesh_subevent_generic_on_off_status_get_present_value(const uint8_t * event){
return event[8];
return event[6];
}
/**
* @brief Get field target_value from event MESH_SUBEVENT_GENERIC_ON_OFF_STATUS
@ -7857,7 +7857,7 @@ static inline uint8_t mesh_subevent_generic_on_off_status_get_present_value(cons
* @note: btstack_type 1
*/
static inline uint8_t mesh_subevent_generic_on_off_status_get_target_value(const uint8_t * event){
return event[9];
return event[7];
}
/**
* @brief Get field remaining_time_ms from event MESH_SUBEVENT_GENERIC_ON_OFF_STATUS
@ -7866,26 +7866,26 @@ static inline uint8_t mesh_subevent_generic_on_off_status_get_target_value(const
* @note: btstack_type 4
*/
static inline uint32_t mesh_subevent_generic_on_off_status_get_remaining_time_ms(const uint8_t * event){
return little_endian_read_32(event, 10);
return little_endian_read_32(event, 8);
}
/**
* @brief Get field element_index from event MESH_SUBEVENT_GENERIC_LEVEL_STATUS
* @brief Get field dest from event MESH_SUBEVENT_GENERIC_LEVEL_STATUS
* @param event packet
* @return element_index
* @note: btstack_type 1
* @return dest
* @note: btstack_type 2
*/
static inline uint8_t mesh_subevent_generic_level_status_get_element_index(const uint8_t * event){
return event[3];
static inline uint16_t mesh_subevent_generic_level_status_get_dest(const uint8_t * event){
return little_endian_read_16(event, 3);
}
/**
* @brief Get field model_identifier from event MESH_SUBEVENT_GENERIC_LEVEL_STATUS
* @brief Get field status from event MESH_SUBEVENT_GENERIC_LEVEL_STATUS
* @param event packet
* @return model_identifier
* @note: btstack_type 4
* @return status
* @note: btstack_type 1
*/
static inline uint32_t mesh_subevent_generic_level_status_get_model_identifier(const uint8_t * event){
return little_endian_read_32(event, 4);
static inline uint8_t mesh_subevent_generic_level_status_get_status(const uint8_t * event){
return event[5];
}
/**
* @brief Get field present_value from event MESH_SUBEVENT_GENERIC_LEVEL_STATUS
@ -7894,7 +7894,7 @@ static inline uint32_t mesh_subevent_generic_level_status_get_model_identifier(c
* @note: btstack_type 2
*/
static inline uint16_t mesh_subevent_generic_level_status_get_present_value(const uint8_t * event){
return little_endian_read_16(event, 8);
return little_endian_read_16(event, 6);
}
/**
* @brief Get field target_value from event MESH_SUBEVENT_GENERIC_LEVEL_STATUS
@ -7903,7 +7903,7 @@ static inline uint16_t mesh_subevent_generic_level_status_get_present_value(cons
* @note: btstack_type 2
*/
static inline uint16_t mesh_subevent_generic_level_status_get_target_value(const uint8_t * event){
return little_endian_read_16(event, 10);
return little_endian_read_16(event, 8);
}
/**
* @brief Get field remaining_time_ms from event MESH_SUBEVENT_GENERIC_LEVEL_STATUS
@ -7912,7 +7912,7 @@ static inline uint16_t mesh_subevent_generic_level_status_get_target_value(const
* @note: btstack_type 4
*/
static inline uint32_t mesh_subevent_generic_level_status_get_remaining_time_ms(const uint8_t * event){
return little_endian_read_32(event, 12);
return little_endian_read_32(event, 10);
}
/**
@ -7980,6 +7980,34 @@ static inline uint8_t mesh_subevent_health_attention_timer_changed_get_element_i
return event[3];
}
/**
* @brief Get field dest from event MESH_SUBEVENT_GENERIC_DEFAULT_TRANSITION_TIME_STATUS
* @param event packet
* @return dest
* @note: btstack_type 2
*/
static inline uint16_t mesh_subevent_generic_default_transition_time_status_get_dest(const uint8_t * event){
return little_endian_read_16(event, 3);
}
/**
* @brief Get field status from event MESH_SUBEVENT_GENERIC_DEFAULT_TRANSITION_TIME_STATUS
* @param event packet
* @return status
* @note: btstack_type 1
*/
static inline uint8_t mesh_subevent_generic_default_transition_time_status_get_status(const uint8_t * event){
return event[5];
}
/**
* @brief Get field transition_time_gdtt from event MESH_SUBEVENT_GENERIC_DEFAULT_TRANSITION_TIME_STATUS
* @param event packet
* @return transition_time_gdtt
* @note: btstack_type 1
*/
static inline uint8_t mesh_subevent_generic_default_transition_time_status_get_transition_time_gdtt(const uint8_t * event){
return event[6];
}
/* API_END */

View File

@ -230,18 +230,13 @@ static void generic_level_status_handler(mesh_model_t *mesh_model, mesh_pdu_t *
remaining_time_gdtt = mesh_access_parser_get_u8(&parser);
}
uint8_t event[16];
int pos = 0;
event[pos++] = HCI_EVENT_MESH_META;
// reserve for size
pos++;
event[pos++] = MESH_SUBEVENT_GENERIC_LEVEL_STATUS;
// element index
event[pos++] = mesh_model->element->element_index;
// model_id
little_endian_store_32(event, pos, mesh_model->model_identifier);
pos += 4;
uint8_t event[14] = {HCI_EVENT_MESH_META, 12, MESH_SUBEVENT_GENERIC_LEVEL_STATUS};
int pos = 3;
// dest
little_endian_store_16(event, pos, mesh_pdu_src(pdu));
pos += 2;
event[pos++] = ERROR_CODE_SUCCESS;
little_endian_store_16(event, pos, present_value);
pos += 2;
@ -250,8 +245,7 @@ static void generic_level_status_handler(mesh_model_t *mesh_model, mesh_pdu_t *
little_endian_store_32(event, pos, (uint32_t) mesh_access_time_gdtt2ms(remaining_time_gdtt));
pos += 4;
event[1] = pos - 2;
(*mesh_model->model_packet_handler)(HCI_EVENT_PACKET, 0, event, pos);
mesh_access_message_processed(pdu);
}

View File

@ -155,25 +155,18 @@ static void generic_on_off_status_handler(mesh_model_t *mesh_model, mesh_pdu_t *
remaining_time_gdtt = mesh_access_parser_get_u8(&parser);
}
uint8_t event[14] = {HCI_EVENT_MESH_META, 12, MESH_SUBEVENT_GENERIC_ON_OFF_STATUS};
int pos = 0;
event[pos++] = HCI_EVENT_MESH_META;
// reserve for size
pos++;
event[pos++] = MESH_SUBEVENT_GENERIC_ON_OFF_STATUS;
// element index
event[pos++] = mesh_model->element->element_index;
// model_id
little_endian_store_32(event, pos, mesh_model->model_identifier);
pos += 4;
uint8_t event[12] = {HCI_EVENT_MESH_META, 10, MESH_SUBEVENT_GENERIC_ON_OFF_STATUS};
int pos = 3;
// dest
little_endian_store_16(event, pos, mesh_pdu_src(pdu));
pos += 2;
event[pos++] = ERROR_CODE_SUCCESS;
event[pos++] = present_value;
event[pos++] = target_value;
little_endian_store_32(event, pos, (uint32_t) mesh_access_time_gdtt2ms(remaining_time_gdtt));
pos += 4;
event[1] = pos - 2;
(*mesh_model->model_packet_handler)(HCI_EVENT_PACKET, 0, event, pos);
mesh_access_message_processed(pdu);
}