医美代码重构
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

82 lines
2.2 KiB

#include "driver/gpio.h"
#include "driver/timer.h"
#include "esp_log.h"
#include "esp_system.h"
#include "freertos/FreeRTOS.h"
#include "freertos/event_groups.h"
#include "freertos/task.h"
#include "nvs_flash.h"
#include "string.h"
//
#include "ble_spp_server_demo.h"
#include "motor_drive.h"
#define ble_uart_tx_size 128
#define ble_uart_rx_size 128
static uint8_t bluetooth_tx_buffer[ble_uart_tx_size] = {0};
static uint8_t bluetooth_rx_buffer[ble_uart_rx_size] = {0};
uint8_t ble_rx_buffer_now_len = 0;
uint8_t ble_rx_buffer_off = 0;
uint32_t start_time = 0;
uint16_t modbus_uart_rx_off_before = 0;
bleuart_t ble_uart_init_struct = {
.txbuf = bluetooth_tx_buffer,
.txbufsize = sizeof(bluetooth_tx_buffer),
.rxbuf = bluetooth_rx_buffer,
.rxbufsize = sizeof(bluetooth_rx_buffer),
.rxpacketReceiveOvertime = 200,
.receive_data_processing_flag = false,
.maxClientNum = 1,
.bleName = "yimei_ble",
};
void blerxcb(uint8_t *rxmessage, size_t rxsize) {
if ((rxsize + ble_rx_buffer_now_len) > ble_uart_init_struct.rxbufsize) {
ESP_LOGW("MAIN", "rx buffer overstep");
return;
}
for (int i = 0; i < rxsize; i++) {
ble_uart_init_struct.rxbuf[ble_rx_buffer_now_len++] = rxmessage[i];
ble_rx_buffer_off++;
start_time = esp_log_timestamp();
}
}
void buffer_all_init() {
ble_rx_buffer_now_len = 0;
memset(ble_uart_init_struct.rxbuf, 0, ble_uart_init_struct.rxbufsize);
}
void wait_ble_uart_receive_ms(uint16_t wait_time_ms) {
start_time = esp_log_timestamp();
while ((esp_log_timestamp() - start_time) < wait_time_ms) {
}
}
void app_main(void) {
ble_spp_server_demo_app_main(&ble_uart_init_struct);
bleuart_reg_cb(blerxcb);
while (true) {
if (ble_rx_buffer_off != 0) {
modbus_uart_rx_off_before = ble_rx_buffer_off;
wait_ble_uart_receive_ms(100);
if (ble_rx_buffer_off == modbus_uart_rx_off_before) {
ble_uart_init_struct.receive_data_processing_flag = true;
ESP_LOGI("MAIN", "%s", ble_uart_init_struct.rxbuf);
}
if (ble_uart_init_struct.receive_data_processing_flag == true) {
buffer_all_init();
ble_uart_init_struct.receive_data_processing_flag = false;
ble_rx_buffer_off = 0;
}
}
}
}