diff --git a/main/audio/codecs/es8388_audio_codec.cc b/main/audio/codecs/es8388_audio_codec.cc index aa26ae77..f3fd6fbb 100644 --- a/main/audio/codecs/es8388_audio_codec.cc +++ b/main/audio/codecs/es8388_audio_codec.cc @@ -186,9 +186,6 @@ void Es8388AudioCodec::EnableOutput(bool enable) { // Set analog output volume to 0dB, default is -45dB uint8_t reg_val = 30; // 0dB - if(input_reference_){ - reg_val = 27; - } uint8_t regs[] = { 46, 47, 48, 49 }; // HP_LVOL, HP_RVOL, SPK_LVOL, SPK_RVOL for (uint8_t reg : regs) { ctrl_if_->write_reg(ctrl_if_, reg, 1, ®_val, 1); diff --git a/main/boards/yunliao-s3/README.md b/main/boards/yunliao-s3/README.md index a4946b44..0cf6973f 100644 --- a/main/boards/yunliao-s3/README.md +++ b/main/boards/yunliao-s3/README.md @@ -49,8 +49,8 @@ > | 单手机配网 | X | ✓ | > | 扫码访问控制台 | X | ✓ | > | 繁日英文界面 | X | ✓ | -> | 多语言支持 | X | ✓ | -> | 外接蓝牙音箱 | X | ✓ | +> | 多语言支持 | 需自行编译 | ✓ | +> | 外接蓝牙音箱 | ✓ | ✓ | # 编译配置命令 diff --git a/main/boards/yunliao-s3/config.h b/main/boards/yunliao-s3/config.h index be740022..4f2b9d61 100644 --- a/main/boards/yunliao-s3/config.h +++ b/main/boards/yunliao-s3/config.h @@ -22,7 +22,9 @@ #define BOOT_BUTTON_PIN GPIO_NUM_2 #define BOOT_5V_PIN GPIO_NUM_3 //5V升压输出 -#define BOOT_4G_PIN GPIO_NUM_5 //4G模块使能 +#define MON_BTLINK_PIN GPIO_NUM_4 //检测BT连接状态 +#define BOOT_4G5V_PIN GPIO_NUM_5 //4G模块供电 +#define BOOT_4GEN_PIN GPIO_NUM_6 //4G模块使能 #define MON_BATT_PIN GPIO_NUM_43 //检测PMU电池指示 #define MON_BATT_CNT 70 //检测PMU电池秒数 #define MON_USB_PIN GPIO_NUM_47 //检测USB插入 @@ -49,7 +51,7 @@ #define DISPLAY_SWAP_XY true #define DISPLAY_MIRROR_X false #define DISPLAY_MIRROR_Y true -#define DISPLAY_INVERT_COLOR false +#define DISPLAY_INVERT_COLOR true #define DISPLAY_RGB_ORDER_COLOR LCD_RGB_ELEMENT_ORDER_RGB #define DISPLAY_OFFSET_X 0 diff --git a/main/boards/yunliao-s3/power_manager.cc b/main/boards/yunliao-s3/power_manager.cc index 6a8ef74c..d6cc2d12 100644 --- a/main/boards/yunliao-s3/power_manager.cc +++ b/main/boards/yunliao-s3/power_manager.cc @@ -42,6 +42,8 @@ static void calBattLife() { } PowerManager::PowerManager(){ + m_bt_task_handle = nullptr; + bt_link_callback_ = nullptr; } void PowerManager::Initialize(){ @@ -57,7 +59,7 @@ void PowerManager::Initialize(){ // 初始化4G控制引脚 gpio_config_t io_conf_4g = { - .pin_bit_mask = 1<(arg); + int last_level = -1; + for (;;) { + vTaskDelay(pdMS_TO_TICKS(100)); + int level = gpio_get_level(MON_BTLINK_PIN); + if (level != last_level) { + last_level = level; + if (level == 1) { + ESP_LOGI(TAG, "BTLINK %d high - BT connected", MON_BTLINK_PIN); + if (instance->bt_link_callback_) { + instance->bt_link_callback_(true); + } + } else { + ESP_LOGI(TAG, "BTLINK %d low - BT disconnected", MON_BTLINK_PIN); + if (instance->bt_link_callback_) { + instance->bt_link_callback_(false); + } + } + } + } + vTaskDelete(NULL); +} + +void PowerManager::OnBtLinkStatusChanged(std::function callback) { + bt_link_callback_ = callback; } \ No newline at end of file diff --git a/main/boards/yunliao-s3/power_manager.h b/main/boards/yunliao-s3/power_manager.h index 921cf47a..47139d7e 100644 --- a/main/boards/yunliao-s3/power_manager.h +++ b/main/boards/yunliao-s3/power_manager.h @@ -21,17 +21,25 @@ public: void Shutdown5V(); void Start4G(); void Shutdown4G(); + void Enable4G(); + void Disable4G(); void Sleep(); void CheckBatteryStatus(); void OnChargingStatusChanged(std::function callback); void OnChargingStatusDisChanged(std::function callback); + void OnBtLinkStatusChanged(std::function callback); + void InitializeBtModul(); + void DeinitBtModul(); private: esp_timer_handle_t timer_handle_; std::function charging_callback_; std::function discharging_callback_; + std::function bt_link_callback_; int is_charging_ = -1; int is_discharging_ = -1; int call_count_ = 0; + TaskHandle_t m_bt_task_handle; + static void BtTask(void *arg); }; #endif \ No newline at end of file diff --git a/main/boards/yunliao-s3/yunliao_s3.cc b/main/boards/yunliao-s3/yunliao_s3.cc index 57db4985..944fa285 100644 --- a/main/boards/yunliao-s3/yunliao_s3.cc +++ b/main/boards/yunliao-s3/yunliao_s3.cc @@ -153,6 +153,8 @@ class YunliaoS3 : public DualNetworkBoard { }), [this](const PropertyList& properties) { bool enable = properties["enable"].value(); SetAecMode(enable); + Settings settings("aec", true); + settings.SetInt("mode", enable); return true; }); @@ -169,8 +171,6 @@ class YunliaoS3 : public DualNetworkBoard { app.StopListening(); app.SetDeviceState(kDeviceStateIdle); app.SetAecMode(newMode); - Settings settings("aec", true); - settings.SetInt("mode", newMode); } void SwitchTFT() { Settings settings("display", true); @@ -203,11 +203,6 @@ class YunliaoS3 : public DualNetworkBoard { } } }); - if (GetNetworkType() == NetworkType::WIFI) { - power_manager_->Shutdown4G(); - } else { - power_manager_->Start4G(); - } GetBacklight()->RestoreBrightness(); while (gpio_get_level(BOOT_BUTTON_PIN) == 0) { vTaskDelay(pdMS_TO_TICKS(10)); @@ -216,6 +211,16 @@ class YunliaoS3 : public DualNetworkBoard { Settings settings("aec", false); auto& app = Application::GetInstance(); app.SetAecMode(settings.GetInt("mode",kAecOnDeviceSide) == kAecOnDeviceSide ? kAecOnDeviceSide : kAecOff); + power_manager_->Start4G(); + if (GetNetworkType() == NetworkType::WIFI) { + power_manager_->Disable4G(); + }else{ + power_manager_->Enable4G(); + } + power_manager_->OnBtLinkStatusChanged([this](bool is_connected) { + SetAecMode(!is_connected); + }); + power_manager_->InitializeBtModul(); InitializeTools(); }