mirror of
https://github.com/Xinyuan-LilyGO/TTGO_TWatch_Library.git
synced 2026-03-07 16:46:53 +01:00
52 lines
1.7 KiB
C++
52 lines
1.7 KiB
C++
#include "app_fft.h"
|
|
|
|
extern EventGroupHandle_t global_event_group;
|
|
lv_obj_t *chart = NULL;
|
|
|
|
static void change_fft_event_cb(lv_event_t *e);
|
|
|
|
extern void resume_vadTaskHandler(void);
|
|
|
|
void app_fft_load(lv_obj_t *cont) {
|
|
resume_vadTaskHandler();
|
|
/* Create a diagram. */
|
|
chart = lv_chart_create(cont);
|
|
lv_obj_set_size(chart, 240, 180);
|
|
lv_obj_align(chart, LV_ALIGN_BOTTOM_MID, 0, -5);
|
|
lv_chart_set_type(chart, LV_CHART_TYPE_LINE);
|
|
lv_chart_set_point_count(chart, SAMPLES / 2);
|
|
lv_obj_set_style_opa(chart, LV_OPA_0, LV_PART_INDICATOR);
|
|
/* Set the chart range. */
|
|
lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, -3000, 3000);
|
|
lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_X, 0, SAMPLES);
|
|
|
|
lv_chart_series_t *ser1 = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_RED), LV_CHART_AXIS_PRIMARY_Y);
|
|
|
|
lv_obj_add_event_cb(chart, change_fft_event_cb, LV_EVENT_MSG_RECEIVED, ser1);
|
|
lv_msg_subsribe_obj(MSG_FFT_ID, chart, NULL);
|
|
xEventGroupSetBits(global_event_group, FFT_READY);
|
|
|
|
lv_obj_add_event_cb(
|
|
chart, [](lv_event_t *e) { xEventGroupSetBits(global_event_group, FFT_STOP); }, LV_EVENT_DELETE, NULL);
|
|
}
|
|
|
|
static void change_fft_event_cb(lv_event_t *e) {
|
|
lv_obj_t *chart = lv_event_get_target(e);
|
|
lv_chart_series_t *ser = (lv_chart_series_t *)lv_event_get_user_data(e);
|
|
lv_msg_t *m = lv_event_get_msg(e);
|
|
uint16_t *fft = (uint16_t *)lv_msg_get_payload(m);
|
|
|
|
//lv_coord_t *ser_array = lv_chart_get_y_array(chart, ser);
|
|
|
|
for (int i = 0; i < SAMPLES / 2; i++) {
|
|
ser->y_points[i] = (uint16_t)fft[i];
|
|
}
|
|
lv_chart_refresh(chart);
|
|
}
|
|
|
|
app_t app_fft = {
|
|
.setup_func_cb = app_fft_load,
|
|
.exit_func_cb = nullptr,
|
|
.user_data = nullptr,
|
|
};
|