Initial commit - sync AliceRC to Gitea
This commit is contained in:
@@ -0,0 +1,140 @@
|
||||
/**
|
||||
* @file app_main.h
|
||||
* @brief AliceRC application header
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* GPIO Pin Mapping - ESP32S3 */
|
||||
/* ADC Channels */
|
||||
#define ADC_CH1_GPIO 4
|
||||
#define ADC_CH2_GPIO 5
|
||||
#define ADC_CH3_GPIO 6
|
||||
#define ADC_CH4_GPIO 7
|
||||
#define ADC_CH5_GPIO 15
|
||||
#define ADC_CH6_GPIO 16
|
||||
#define ADC_CH7_GPIO 17
|
||||
#define ADC_CH8_GPIO 9
|
||||
#define ADC_BAT_GPIO 8
|
||||
|
||||
/* NRF24L01 - ESP32S3 */
|
||||
#define NRF_MOSI_GPIO 1
|
||||
#define NRF_MISO_GPIO 40
|
||||
#define NRF_SCLK_GPIO 39
|
||||
#define NRF_CS_GPIO 38
|
||||
#define NRF_CE_GPIO 2
|
||||
#define NRF_IRQ_GPIO 42
|
||||
|
||||
/* LLCC68 (E220) - ESP32S3 only */
|
||||
#define LLCC_CS_GPIO 10
|
||||
#define LLCC_SCLK_GPIO 11
|
||||
#define LLCC_MISO_GPIO 12
|
||||
#define LLCC_MOSI_GPIO 13
|
||||
#define LLCC_NRST_GPIO 14
|
||||
#define LLCC_BUSY_GPIO 45
|
||||
#define LLCC_IRQ_GPIO 45 /* shared with BUSY? Check datasheet */
|
||||
|
||||
/* OLED SSD1315 - I2C */
|
||||
#define OLED_SCL_GPIO 37
|
||||
#define OLED_SDA_GPIO 36
|
||||
|
||||
/* Buttons */
|
||||
#define BTN_UP_GPIO 35
|
||||
#define BTN_DOWN_GPIO 48
|
||||
#define BTN_SEL_GPIO 47
|
||||
#define BTN_BACK_GPIO 3
|
||||
|
||||
/* Other peripherals */
|
||||
#define USB_DM_GPIO 19
|
||||
#define USB_DP_GPIO 20
|
||||
#define AUDIO_PWM_GPIO 26 /* ESP32S3: PWM audio */
|
||||
#define AUDIO_DAC_GPIO 26 /* ESP32: DAC audio */
|
||||
#define PWR_EN_GPIO 41
|
||||
#define STATUS_LED_GPIO 0
|
||||
|
||||
/* ESP32 (basic) GPIO mapping */
|
||||
/* ADC Channels */
|
||||
#define ESP32_ADC_CH1_GPIO 36
|
||||
#define ESP32_ADC_CH2_GPIO 39
|
||||
#define ESP32_ADC_CH3_GPIO 34
|
||||
#define ESP32_ADC_CH4_GPIO 35
|
||||
#define ESP32_ADC_CH5_GPIO 32
|
||||
#define ESP32_ADC_CH6_GPIO 33
|
||||
#define ESP32_ADC_CH7_GPIO 25
|
||||
#define ESP32_ADC_CH8_GPIO 13
|
||||
|
||||
/* NRF24L01 - ESP32 */
|
||||
#define ESP32_NRF_MOSI_GPIO 23
|
||||
#define ESP32_NRF_MISO_GPIO 19
|
||||
#define ESP32_NRF_SCLK_GPIO 18
|
||||
#define ESP32_NRF_CS_GPIO 5
|
||||
#define ESP32_NRF_CE_GPIO 22
|
||||
#define ESP32_NRF_IRQ_GPIO 21
|
||||
|
||||
/* OLED - ESP32 */
|
||||
#define ESP32_OLED_SCL_GPIO 17
|
||||
#define ESP32_OLED_SDA_GPIO 16
|
||||
|
||||
/* Buttons - ESP32 */
|
||||
#define ESP32_BTN_UP_GPIO 4
|
||||
#define ESP32_BTN_DOWN_GPIO 2
|
||||
#define ESP32_BTN_SEL_GPIO 15
|
||||
|
||||
/* Battery */
|
||||
#define BAT_ADC_CHANNEL ADC_CHANNEL_0
|
||||
#define BAT_DIVIDER_RATIO 2.0f /* Voltage divider ratio */
|
||||
#define BAT_FULL_MV 4200 /* Full battery mV */
|
||||
#define BAT_EMPTY_MV 3200 /* Empty battery mV */
|
||||
|
||||
/* Task priorities */
|
||||
#define TASK_PRIO_RF 5
|
||||
#define TASK_PRIO_UI 4
|
||||
#define TASK_PRIO_ADC 3
|
||||
#define TASK_PRIO_AUDIO 2
|
||||
|
||||
/* Task stack sizes */
|
||||
#define TASK_STACK_RF 4096
|
||||
#define TASK_STACK_UI 4096
|
||||
#define TASK_STACK_ADC 2048
|
||||
#define TASK_STACK_AUDIO 2048
|
||||
|
||||
/* Function declarations */
|
||||
void app_init(void);
|
||||
void app_init_gpio(void);
|
||||
void app_create_tasks(void);
|
||||
uint8_t battery_get_percent(uint16_t mv);
|
||||
|
||||
/* Data type definitions */
|
||||
typedef struct adc_data_s {
|
||||
uint16_t channels[8];
|
||||
uint16_t battery_mv;
|
||||
} adc_data_t;
|
||||
|
||||
typedef struct {
|
||||
uint8_t key; /* KEY_UP, KEY_DOWN, KEY_SEL, KEY_BACK */
|
||||
uint8_t action; /* 0=press, 1=release, 2=long_press */
|
||||
} ui_event_t;
|
||||
|
||||
/* Queue handles (defined in app_main.c) */
|
||||
extern QueueHandle_t adc_data_queue;
|
||||
extern QueueHandle_t rf_command_queue;
|
||||
extern QueueHandle_t ui_event_queue;
|
||||
|
||||
/* RF task */
|
||||
void rf_task(void *pvParameters);
|
||||
/* UI task */
|
||||
void ui_task(void *pvParameters);
|
||||
/* ADC task */
|
||||
void adc_task(void *pvParameters);
|
||||
/* Audio task */
|
||||
void audio_task(void *pvParameters);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user