Added Switch Case on recive site for payload pagination

This commit is contained in:
simon 2024-10-04 14:38:07 +02:00
parent 7f1369f1cf
commit b6fbe05312

View File

@ -71,7 +71,8 @@ static void espnow_deinit(espnow_send_param_t *send_param) {
void espnow_data_prepare(espnow_send_param_t *send_param) { void espnow_data_prepare(espnow_send_param_t *send_param) {
espnow_data_t *buf = (espnow_data_t *)send_param->buffer; espnow_data_t *buf = (espnow_data_t *)send_param->buffer;
ESP_LOGI(tag, "Example_Data_SIZE: %u, send_param_len: %d\n", sizeof(espnow_data_t), send_param->len); ESP_LOGI(tag, "Example_Data_SIZE: %u, send_param_len: %d\n",
sizeof(espnow_data_t), send_param->len);
assert(send_param->len >= sizeof(espnow_data_t)); assert(send_param->len >= sizeof(espnow_data_t));
buf->type = IS_BROADCAST_ADDR(send_param->dest_mac) buf->type = IS_BROADCAST_ADDR(send_param->dest_mac)
@ -159,16 +160,22 @@ int espnow_data_parse(uint8_t *data, uint16_t data_len, uint8_t *state,
buf->crc = 0; buf->crc = 0;
crc_cal = esp_crc16_le(UINT16_MAX, (uint8_t const *)buf, data_len); crc_cal = esp_crc16_le(UINT16_MAX, (uint8_t const *)buf, data_len);
if(buf->realPayload.status.isMaster) { switch (buf->unionPage) {
case UNION_STATUS:
if (buf->realPayload.status.isMaster) {
ESP_LOGI(tag, "Recived Data from Master"); ESP_LOGI(tag, "Recived Data from Master");
} else { } else {
ESP_LOGI(tag, "Recived Data from Slave"); ESP_LOGI(tag, "Recived Data from Slave");
} }
break;
case UNION_SENSORDATA:
ESP_LOGI(tag, "Yeah Daten %d", buf->realPayload.sensorData.dataPoint);
break;
}
if (crc_cal == crc) { if (crc_cal == crc) {
return buf->type; return buf->type;
} }
return -1; return -1;
} }
@ -184,8 +191,7 @@ static void espnow_task(void *pvParameter) {
ESP_LOGI(tag, "Start sending broadcast data"); ESP_LOGI(tag, "Start sending broadcast data");
/* Start sending broadcast ESPNOW data. */ /* Start sending broadcast ESPNOW data. */
espnow_send_param_t *send_param = espnow_send_param_t *send_param = (espnow_send_param_t *)pvParameter;
(espnow_send_param_t *)pvParameter;
if (esp_now_send(send_param->dest_mac, send_param->buffer, send_param->len) != if (esp_now_send(send_param->dest_mac, send_param->buffer, send_param->len) !=
ESP_OK) { ESP_OK) {
ESP_LOGE(tag, "Send error"); ESP_LOGE(tag, "Send error");
@ -237,8 +243,8 @@ static void espnow_task(void *pvParameter) {
case EXAMPLE_ESPNOW_RECV_CB: { case EXAMPLE_ESPNOW_RECV_CB: {
espnow_event_recv_cb_t *recv_cb = &evt.info.recv_cb; espnow_event_recv_cb_t *recv_cb = &evt.info.recv_cb;
ret = espnow_data_parse(recv_cb->data, recv_cb->data_len, ret = espnow_data_parse(recv_cb->data, recv_cb->data_len, &recv_state,
&recv_state, &recv_seq, &recv_magic); &recv_seq, &recv_magic);
free(recv_cb->data); free(recv_cb->data);
if (ret == EXAMPLE_ESPNOW_DATA_BROADCAST) { if (ret == EXAMPLE_ESPNOW_DATA_BROADCAST) {
ESP_LOGI(tag, "Receive %dth broadcast data from: " MACSTR ", len: %d", ESP_LOGI(tag, "Receive %dth broadcast data from: " MACSTR ", len: %d",
@ -318,8 +324,7 @@ static void espnow_task(void *pvParameter) {
static esp_err_t espnow_init(void) { static esp_err_t espnow_init(void) {
espnow_send_param_t *send_param; espnow_send_param_t *send_param;
s_espnow_queue = s_espnow_queue = xQueueCreate(ESPNOW_QUEUE_SIZE, sizeof(espnow_event_t));
xQueueCreate(ESPNOW_QUEUE_SIZE, sizeof(espnow_event_t));
if (s_espnow_queue == NULL) { if (s_espnow_queue == NULL) {
ESP_LOGE(tag, "Create mutex fail"); ESP_LOGE(tag, "Create mutex fail");
return ESP_FAIL; return ESP_FAIL;
@ -380,8 +385,7 @@ static esp_err_t espnow_init(void) {
memcpy(send_param->dest_mac, s_broadcast_mac, ESP_NOW_ETH_ALEN); memcpy(send_param->dest_mac, s_broadcast_mac, ESP_NOW_ETH_ALEN);
espnow_data_prepare(send_param); espnow_data_prepare(send_param);
xTaskCreate(espnow_task, "espnow_task", 2048, send_param, 4, xTaskCreate(espnow_task, "espnow_task", 2048, send_param, 4, NULL);
NULL);
return ESP_OK; return ESP_OK;
} }
@ -397,7 +401,7 @@ void app_main(void) {
ESP_LOGI(tag, "ESP MASTER State %d\n", isMaster); ESP_LOGI(tag, "ESP MASTER State %d\n", isMaster);
vTaskDelay(500/portTICK_PERIOD_MS); vTaskDelay(500 / portTICK_PERIOD_MS);
wifi_init(); wifi_init();
espnow_init(); espnow_init();