esp_websocket_client: Expose frame fin flag in websocket event

This commit is contained in:
MacDue
2022-04-15 17:06:03 +01:00
parent 6e5bede4c7
commit b72a9ae710
2 changed files with 4 additions and 0 deletions

View File

@ -109,6 +109,7 @@ struct esp_websocket_client {
char *rx_buffer; char *rx_buffer;
char *tx_buffer; char *tx_buffer;
int buffer_size; int buffer_size;
bool last_fin;
ws_transport_opcodes_t last_opcode; ws_transport_opcodes_t last_opcode;
int payload_len; int payload_len;
int payload_offset; int payload_offset;
@ -133,6 +134,7 @@ static esp_err_t esp_websocket_client_dispatch_event(esp_websocket_client_handle
event_data.user_context = client->config->user_context; event_data.user_context = client->config->user_context;
event_data.data_ptr = data; event_data.data_ptr = data;
event_data.data_len = data_len; event_data.data_len = data_len;
event_data.fin = client->last_fin;
event_data.op_code = client->last_opcode; event_data.op_code = client->last_opcode;
event_data.payload_len = client->payload_len; event_data.payload_len = client->payload_len;
event_data.payload_offset = client->payload_offset; event_data.payload_offset = client->payload_offset;
@ -548,6 +550,7 @@ static esp_err_t esp_websocket_client_recv(esp_websocket_client_handle_t client)
return ESP_FAIL; return ESP_FAIL;
} }
client->payload_len = esp_transport_ws_get_read_payload_len(client->transport); client->payload_len = esp_transport_ws_get_read_payload_len(client->transport);
client->last_fin = esp_transport_ws_get_fin_flag(client->transport);
client->last_opcode = esp_transport_ws_get_read_opcode(client->transport); client->last_opcode = esp_transport_ws_get_read_opcode(client->transport);
if (rlen == 0 && client->last_opcode == WS_TRANSPORT_OPCODES_NONE ) { if (rlen == 0 && client->last_opcode == WS_TRANSPORT_OPCODES_NONE ) {

View File

@ -43,6 +43,7 @@ typedef enum {
typedef struct { typedef struct {
const char *data_ptr; /*!< Data pointer */ const char *data_ptr; /*!< Data pointer */
int data_len; /*!< Data length */ int data_len; /*!< Data length */
bool fin; /*!< Fin flag */
uint8_t op_code; /*!< Received opcode */ uint8_t op_code; /*!< Received opcode */
esp_websocket_client_handle_t client; /*!< esp_websocket_client_handle_t context */ esp_websocket_client_handle_t client; /*!< esp_websocket_client_handle_t context */
void *user_context; /*!< user_data context, from esp_websocket_client_config_t user_data */ void *user_context; /*!< user_data context, from esp_websocket_client_config_t user_data */