Files
xiaozhi-esp32/main/boards/esp32-cgc-144/board_control.cc
wdmomoxx 02abd71588 更新ESP32 CGC MCP控制方式,添加一个ESP32 CGC 144的开发板 (#736)
* Update README.md

* Update config.h

增加MCP控制方式

* Update esp32_cgc_board.cc

增加MCP控制方式

* Update CMakeLists.txt

增加ESP32 CGC 144开发板

* Update Kconfig.projbuild

增加ESP32 CGC 144开发板

* Create README.md

增加ESP32 CGC 144开发板

* Add files via upload

* Update config.h

修改注释
2025-06-03 12:20:57 +08:00

61 lines
1.9 KiB
C++

#include <freertos/FreeRTOS.h>
#include <freertos/timers.h>
#include <freertos/task.h>
#include <esp_log.h>
#include "board.h"
#include "boards/common/wifi_board.h"
#include "boards/esp32-cgc-144/config.h"
#include "iot/thing.h"
#include "audio_codec.h"
#define TAG "BoardControl"
namespace iot {
class BoardControl : public Thing {
public:
BoardControl() : Thing("BoardControl", "当前 AI 机器人管理和控制") {
// 修改音量调节
properties_.AddNumberProperty("volume", "当前音量值", [this]() -> int {
auto codec = Board::GetInstance().GetAudioCodec();
return codec->output_volume();
});
// 定义设备可以被远程执行的指令
#if defined(ESP32_CGC_144_lite)
methods_.AddMethod("SetVolume", "设置音量", ParameterList({
Parameter("volume", "0到100之间的整数", kValueTypeNumber, true)
}), [this](const ParameterList& parameters) {
auto codec = Board::GetInstance().GetAudioCodec();
// 获取传入的音量值
int volume = parameters["volume"].number();
// 限制音量值
if (volume > 66) {
volume = 66;
}
codec->SetOutputVolume(static_cast<uint8_t>(volume));
});
#else
methods_.AddMethod("SetVolume", "设置音量", ParameterList({
Parameter("volume", "0到100之间的整数", kValueTypeNumber, true)
}), [this](const ParameterList& parameters) {
auto codec = Board::GetInstance().GetAudioCodec();
// 获取传入的音量值
int volume = parameters["volume"].number();
// 限制音量值
if (volume > 100) {
volume = 100;
}
codec->SetOutputVolume(static_cast<uint8_t>(volume));
});
#endif
}
};
} // namespace iot
DECLARE_THING(BoardControl);