#include "nh_helper_event.h" /** * Espressif wraps Tag-Length-Value(TLV) data in the packet for events * | 1 | 1 | N | * | Tag | Length | Value | */ nh_ret_t nh_event_get_type(nh_event_type_t *type, uint8_t *event) { *type = event[0]; return NH_RET_SUCCESS; } /** * Parse Init event TLV data * @param init * @param data Event data * @param max_len * @return */ nh_ret_t nh_event_parse_init(nh_event_init_t *init, uint8_t *event) { uint8_t ptr = 0; uint8_t data_len = event[1]; uint8_t *data = &event[2]; while (ptr < data_len) { uint8_t tag = data[ptr]; uint8_t len = data[ptr + 1]; uint8_t *val = &data[ptr + 2]; switch (tag) { case NH_EVENT_INIT_TAG_CAP: /* Device capabilities, length should be 1 */ init->capabilities = val[0]; break; case NH_EVENT_INIT_TAG_FREQ: init->spi_freq = val[0]; break; case NH_EVENT_INIT_TAG_CHIP_ID: init->chip_id = val[0]; break; case NH_EVENT_INIT_TAG_RAW_TP: /* Not implemented */ default: break; } ptr += 2 + len; /* Increment, total length is 2 + payload length */ } return NH_RET_SUCCESS; }