Release fw 0.8.4: doc sync, System UI, BT/FM polish.
Align README, manual, and backlog to 0.8.4; add Web UI System tab for OTA/DSP uploads, serial in health header, FM seek down, and BT1035 paired list plus auto-reconnect API. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
#include "core/BluetoothJson.hpp"
|
||||
|
||||
#include <expected>
|
||||
#include <vector>
|
||||
|
||||
namespace bluetooth {
|
||||
|
||||
@@ -94,6 +95,34 @@ public:
|
||||
*/
|
||||
[[nodiscard]] std::expected<void, bt1035::Bt1035Error> disconnect();
|
||||
|
||||
/**
|
||||
* @brief listPaired — read paired remotes from the module.
|
||||
*
|
||||
* @dname listPaired
|
||||
* @return Device list on success, or Bt1035Error.
|
||||
* @pubstate queries AT+PLIST via the driver.
|
||||
*
|
||||
* @author Michele Bigi
|
||||
* @date 2026-07-07
|
||||
*/
|
||||
[[nodiscard]] std::expected<std::vector<core::Bt1035PairedDevice>,
|
||||
bt1035::Bt1035Error>
|
||||
listPaired();
|
||||
|
||||
/**
|
||||
* @brief setAutoReconnect — configure power-on reconnect attempts.
|
||||
*
|
||||
* @dname setAutoReconnect
|
||||
* @param times 0 off, 1–15 per Feasycom manual.
|
||||
* @return Ok on success, or Bt1035Error.
|
||||
* @pubstate writes AT+AUTOCONN via the driver.
|
||||
*
|
||||
* @author Michele Bigi
|
||||
* @date 2026-07-07
|
||||
*/
|
||||
[[nodiscard]] std::expected<void, bt1035::Bt1035Error> setAutoReconnect(
|
||||
std::uint8_t times);
|
||||
|
||||
private:
|
||||
bt1035::Bt1035Driver& driver_;
|
||||
bool pairingActive_;
|
||||
|
||||
@@ -28,12 +28,26 @@ BluetoothService::refreshStatus()
|
||||
.booted = driver_.isBooted(),
|
||||
.pairing = pairingActive_,
|
||||
.a2dpState = core::Bt1035A2dpState::Standby,
|
||||
.deviceName = {},
|
||||
.autoReconnect = 0U,
|
||||
};
|
||||
|
||||
if (!status.booted) {
|
||||
return status;
|
||||
}
|
||||
|
||||
if (auto name = driver_.queryDeviceName(); name) {
|
||||
status.deviceName = std::move(*name);
|
||||
} else {
|
||||
return std::unexpected(name.error());
|
||||
}
|
||||
|
||||
if (auto reconnect = driver_.queryAutoReconnect(); reconnect) {
|
||||
status.autoReconnect = *reconnect;
|
||||
} else {
|
||||
return std::unexpected(reconnect.error());
|
||||
}
|
||||
|
||||
auto a2dp = driver_.queryA2dpState();
|
||||
if (!a2dp) {
|
||||
return std::unexpected(a2dp.error());
|
||||
@@ -65,4 +79,16 @@ std::expected<void, bt1035::Bt1035Error> BluetoothService::disconnect()
|
||||
return driver_.disconnectA2dp();
|
||||
}
|
||||
|
||||
std::expected<std::vector<core::Bt1035PairedDevice>, bt1035::Bt1035Error>
|
||||
BluetoothService::listPaired()
|
||||
{
|
||||
return driver_.queryPairedList();
|
||||
}
|
||||
|
||||
std::expected<void, bt1035::Bt1035Error> BluetoothService::setAutoReconnect(
|
||||
std::uint8_t times)
|
||||
{
|
||||
return driver_.setAutoReconnect(times);
|
||||
}
|
||||
|
||||
} // namespace bluetooth
|
||||
|
||||
Reference in New Issue
Block a user