2.0.1 (#10)
* fix: 修复 iOS 和 macOS 断开后 GATT 被清理导致操作无法完成的问题 * fix: 调整 GATT 缓存 * fix: 修改 iOS 蓝牙使用描述 * fix: 修复无法通过设备地址生成 UUID 的问题,修复由于 bluez 未重写 hashCode 和 equals 导致无法比较缓存实例的问题 * fix: 修改版本信息 * fix: 修复BUG * fix: 调整示例程序 * fix: 优化代码 * fix: 修改版本号 * fix: 更新 REDEME.md * fix: 更新依赖项 * fix: 项目调整 --------- Co-authored-by: jetson2 <jetson2@const.cc>
This commit is contained in:
@ -1,3 +1,9 @@
|
||||
## 2.0.1
|
||||
|
||||
- Fix the issue that GATTs is cleared after peripheral disconnected on iOS and macOS.
|
||||
- Fix the issue that create UUID form peripheral's address failed on Linux.
|
||||
- Fix the issue that instance match failed on Linux.
|
||||
|
||||
## 2.0.0
|
||||
|
||||
- Rewrite the whole project with federated plugins.
|
||||
|
@ -1,6 +1,6 @@
|
||||
name: bluetooth_low_energy_windows
|
||||
description: Windows implementation of the bluetooth_low_energy plugin.
|
||||
version: 2.0.0
|
||||
version: 2.0.1
|
||||
homepage: https://github.com/yanshouwang/bluetooth_low_energy
|
||||
|
||||
environment:
|
||||
@ -10,7 +10,7 @@ environment:
|
||||
dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
bluetooth_low_energy_platform_interface: ^2.0.0
|
||||
bluetooth_low_energy_platform_interface: ^2.0.1
|
||||
win32: ^5.0.6
|
||||
|
||||
dev_dependencies:
|
||||
@ -23,5 +23,5 @@ flutter:
|
||||
implements: bluetooth_low_energy
|
||||
platforms:
|
||||
windows:
|
||||
pluginClass: BluetoothLowEnergyWindowsPluginCApi
|
||||
pluginClass: BluetoothLowEnergyPluginCApi
|
||||
dartPluginClass: BluetoothLowEnergyWindows
|
||||
|
@ -5,24 +5,24 @@
|
||||
cmake_minimum_required(VERSION 3.14)
|
||||
|
||||
# Project-level configuration.
|
||||
set(PROJECT_NAME "bluetooth_low_energy_windows")
|
||||
set(PROJECT_NAME "bluetooth_low_energy")
|
||||
project(${PROJECT_NAME} LANGUAGES CXX)
|
||||
|
||||
# This value is used when generating builds using this plugin, so it must
|
||||
# not be changed
|
||||
set(PLUGIN_NAME "bluetooth_low_energy_windows_plugin")
|
||||
set(PLUGIN_NAME "bluetooth_low_energy_plugin")
|
||||
|
||||
# Any new source files that you add to the plugin should be added here.
|
||||
list(APPEND PLUGIN_SOURCES
|
||||
"bluetooth_low_energy_windows_plugin.cpp"
|
||||
"bluetooth_low_energy_windows_plugin.h"
|
||||
"bluetooth_low_energy_plugin.cpp"
|
||||
"bluetooth_low_energy_plugin.h"
|
||||
)
|
||||
|
||||
# Define the plugin library target. Its name must not be changed (see comment
|
||||
# on PLUGIN_NAME above).
|
||||
add_library(${PLUGIN_NAME} SHARED
|
||||
"include/bluetooth_low_energy_windows/bluetooth_low_energy_windows_plugin_c_api.h"
|
||||
"bluetooth_low_energy_windows_plugin_c_api.cpp"
|
||||
"include/bluetooth_low_energy/bluetooth_low_energy_plugin_c_api.h"
|
||||
"bluetooth_low_energy_plugin_c_api.cpp"
|
||||
${PLUGIN_SOURCES}
|
||||
)
|
||||
|
||||
@ -47,7 +47,50 @@ target_link_libraries(${PLUGIN_NAME} PRIVATE flutter flutter_wrapper_plugin)
|
||||
# List of absolute paths to libraries that should be bundled with the plugin.
|
||||
# This list could contain prebuilt libraries, or libraries created by an
|
||||
# external build triggered from this build file.
|
||||
set(bluetooth_low_energy_windows_bundled_libraries
|
||||
set(bluetooth_low_energy_bundled_libraries
|
||||
""
|
||||
PARENT_SCOPE
|
||||
)
|
||||
|
||||
# === Tests ===
|
||||
# These unit tests can be run from a terminal after building the example, or
|
||||
# from Visual Studio after opening the generated solution file.
|
||||
|
||||
# Only enable test builds when building the example (which sets this variable)
|
||||
# so that plugin clients aren't building the tests.
|
||||
if (${include_${PROJECT_NAME}_tests})
|
||||
set(TEST_RUNNER "${PROJECT_NAME}_test")
|
||||
enable_testing()
|
||||
|
||||
# Add the Google Test dependency.
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(
|
||||
googletest
|
||||
URL https://github.com/google/googletest/archive/release-1.11.0.zip
|
||||
)
|
||||
# Prevent overriding the parent project's compiler/linker settings
|
||||
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
|
||||
# Disable install commands for gtest so it doesn't end up in the bundle.
|
||||
set(INSTALL_GTEST OFF CACHE BOOL "Disable installation of googletest" FORCE)
|
||||
FetchContent_MakeAvailable(googletest)
|
||||
|
||||
# The plugin's C API is not very useful for unit testing, so build the sources
|
||||
# directly into the test binary rather than using the DLL.
|
||||
add_executable(${TEST_RUNNER}
|
||||
test/bluetooth_low_energy_plugin_test.cpp
|
||||
${PLUGIN_SOURCES}
|
||||
)
|
||||
apply_standard_settings(${TEST_RUNNER})
|
||||
target_include_directories(${TEST_RUNNER} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
target_link_libraries(${TEST_RUNNER} PRIVATE flutter_wrapper_plugin)
|
||||
target_link_libraries(${TEST_RUNNER} PRIVATE gtest_main gmock)
|
||||
# flutter_wrapper_plugin has link dependencies on the Flutter DLL.
|
||||
add_custom_command(TARGET ${TEST_RUNNER} POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
"${FLUTTER_LIBRARY}" $<TARGET_FILE_DIR:${TEST_RUNNER}>
|
||||
)
|
||||
|
||||
# Enable automatic test discovery.
|
||||
include(GoogleTest)
|
||||
gtest_discover_tests(${TEST_RUNNER})
|
||||
endif()
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "bluetooth_low_energy_windows_plugin.h"
|
||||
#include "bluetooth_low_energy_plugin.h"
|
||||
|
||||
// This must be included before many other Windows headers.
|
||||
#include <windows.h>
|
||||
@ -13,17 +13,17 @@
|
||||
#include <memory>
|
||||
#include <sstream>
|
||||
|
||||
namespace bluetooth_low_energy_windows {
|
||||
namespace bluetooth_low_energy {
|
||||
|
||||
// static
|
||||
void BluetoothLowEnergyWindowsPlugin::RegisterWithRegistrar(
|
||||
void BluetoothLowEnergyPlugin::RegisterWithRegistrar(
|
||||
flutter::PluginRegistrarWindows *registrar) {
|
||||
auto channel =
|
||||
std::make_unique<flutter::MethodChannel<flutter::EncodableValue>>(
|
||||
registrar->messenger(), "bluetooth_low_energy_windows",
|
||||
registrar->messenger(), "bluetooth_low_energy",
|
||||
&flutter::StandardMethodCodec::GetInstance());
|
||||
|
||||
auto plugin = std::make_unique<BluetoothLowEnergyWindowsPlugin>();
|
||||
auto plugin = std::make_unique<BluetoothLowEnergyPlugin>();
|
||||
|
||||
channel->SetMethodCallHandler(
|
||||
[plugin_pointer = plugin.get()](const auto &call, auto result) {
|
||||
@ -33,11 +33,11 @@ void BluetoothLowEnergyWindowsPlugin::RegisterWithRegistrar(
|
||||
registrar->AddPlugin(std::move(plugin));
|
||||
}
|
||||
|
||||
BluetoothLowEnergyWindowsPlugin::BluetoothLowEnergyWindowsPlugin() {}
|
||||
BluetoothLowEnergyPlugin::BluetoothLowEnergyPlugin() {}
|
||||
|
||||
BluetoothLowEnergyWindowsPlugin::~BluetoothLowEnergyWindowsPlugin() {}
|
||||
BluetoothLowEnergyPlugin::~BluetoothLowEnergyPlugin() {}
|
||||
|
||||
void BluetoothLowEnergyWindowsPlugin::HandleMethodCall(
|
||||
void BluetoothLowEnergyPlugin::HandleMethodCall(
|
||||
const flutter::MethodCall<flutter::EncodableValue> &method_call,
|
||||
std::unique_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
|
||||
if (method_call.method_name().compare("getPlatformVersion") == 0) {
|
||||
@ -56,4 +56,4 @@ void BluetoothLowEnergyWindowsPlugin::HandleMethodCall(
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace bluetooth_low_energy_windows
|
||||
} // namespace bluetooth_low_energy
|
@ -0,0 +1,31 @@
|
||||
#ifndef FLUTTER_PLUGIN_BLUETOOTH_LOW_ENERGY_PLUGIN_H_
|
||||
#define FLUTTER_PLUGIN_BLUETOOTH_LOW_ENERGY_PLUGIN_H_
|
||||
|
||||
#include <flutter/method_channel.h>
|
||||
#include <flutter/plugin_registrar_windows.h>
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace bluetooth_low_energy {
|
||||
|
||||
class BluetoothLowEnergyPlugin : public flutter::Plugin {
|
||||
public:
|
||||
static void RegisterWithRegistrar(flutter::PluginRegistrarWindows *registrar);
|
||||
|
||||
BluetoothLowEnergyPlugin();
|
||||
|
||||
virtual ~BluetoothLowEnergyPlugin();
|
||||
|
||||
// Disallow copy and assign.
|
||||
BluetoothLowEnergyPlugin(const BluetoothLowEnergyPlugin&) = delete;
|
||||
BluetoothLowEnergyPlugin& operator=(const BluetoothLowEnergyPlugin&) = delete;
|
||||
|
||||
// Called when a method is called on this plugin's channel from Dart.
|
||||
void HandleMethodCall(
|
||||
const flutter::MethodCall<flutter::EncodableValue> &method_call,
|
||||
std::unique_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||
};
|
||||
|
||||
} // namespace bluetooth_low_energy
|
||||
|
||||
#endif // FLUTTER_PLUGIN_BLUETOOTH_LOW_ENERGY_PLUGIN_H_
|
@ -0,0 +1,12 @@
|
||||
#include "include/bluetooth_low_energy/bluetooth_low_energy_plugin_c_api.h"
|
||||
|
||||
#include <flutter/plugin_registrar_windows.h>
|
||||
|
||||
#include "bluetooth_low_energy_plugin.h"
|
||||
|
||||
void BluetoothLowEnergyPluginCApiRegisterWithRegistrar(
|
||||
FlutterDesktopPluginRegistrarRef registrar) {
|
||||
bluetooth_low_energy::BluetoothLowEnergyPlugin::RegisterWithRegistrar(
|
||||
flutter::PluginRegistrarManager::GetInstance()
|
||||
->GetRegistrar<flutter::PluginRegistrarWindows>(registrar));
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
#ifndef FLUTTER_PLUGIN_BLUETOOTH_LOW_ENERGY_WINDOWS_PLUGIN_H_
|
||||
#define FLUTTER_PLUGIN_BLUETOOTH_LOW_ENERGY_WINDOWS_PLUGIN_H_
|
||||
|
||||
#include <flutter/method_channel.h>
|
||||
#include <flutter/plugin_registrar_windows.h>
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace bluetooth_low_energy_windows {
|
||||
|
||||
class BluetoothLowEnergyWindowsPlugin : public flutter::Plugin {
|
||||
public:
|
||||
static void RegisterWithRegistrar(flutter::PluginRegistrarWindows *registrar);
|
||||
|
||||
BluetoothLowEnergyWindowsPlugin();
|
||||
|
||||
virtual ~BluetoothLowEnergyWindowsPlugin();
|
||||
|
||||
// Disallow copy and assign.
|
||||
BluetoothLowEnergyWindowsPlugin(const BluetoothLowEnergyWindowsPlugin&) = delete;
|
||||
BluetoothLowEnergyWindowsPlugin& operator=(const BluetoothLowEnergyWindowsPlugin&) = delete;
|
||||
|
||||
private:
|
||||
// Called when a method is called on this plugin's channel from Dart.
|
||||
void HandleMethodCall(
|
||||
const flutter::MethodCall<flutter::EncodableValue> &method_call,
|
||||
std::unique_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
|
||||
};
|
||||
|
||||
} // namespace bluetooth_low_energy_windows
|
||||
|
||||
#endif // FLUTTER_PLUGIN_BLUETOOTH_LOW_ENERGY_WINDOWS_PLUGIN_H_
|
@ -1,12 +0,0 @@
|
||||
#include "include/bluetooth_low_energy_windows/bluetooth_low_energy_windows_plugin_c_api.h"
|
||||
|
||||
#include <flutter/plugin_registrar_windows.h>
|
||||
|
||||
#include "bluetooth_low_energy_windows_plugin.h"
|
||||
|
||||
void BluetoothLowEnergyWindowsPluginCApiRegisterWithRegistrar(
|
||||
FlutterDesktopPluginRegistrarRef registrar) {
|
||||
bluetooth_low_energy_windows::BluetoothLowEnergyWindowsPlugin::RegisterWithRegistrar(
|
||||
flutter::PluginRegistrarManager::GetInstance()
|
||||
->GetRegistrar<flutter::PluginRegistrarWindows>(registrar));
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
#ifndef FLUTTER_PLUGIN_BLUETOOTH_LOW_ENERGY_WINDOWS_PLUGIN_C_API_H_
|
||||
#define FLUTTER_PLUGIN_BLUETOOTH_LOW_ENERGY_WINDOWS_PLUGIN_C_API_H_
|
||||
#ifndef FLUTTER_PLUGIN_BLUETOOTH_LOW_ENERGY_PLUGIN_C_API_H_
|
||||
#define FLUTTER_PLUGIN_BLUETOOTH_LOW_ENERGY_PLUGIN_C_API_H_
|
||||
|
||||
#include <flutter_plugin_registrar.h>
|
||||
|
||||
@ -13,11 +13,11 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
FLUTTER_PLUGIN_EXPORT void BluetoothLowEnergyWindowsPluginCApiRegisterWithRegistrar(
|
||||
FLUTTER_PLUGIN_EXPORT void BluetoothLowEnergyPluginCApiRegisterWithRegistrar(
|
||||
FlutterDesktopPluginRegistrarRef registrar);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif // FLUTTER_PLUGIN_BLUETOOTH_LOW_ENERGY_WINDOWS_PLUGIN_C_API_H_
|
||||
#endif // FLUTTER_PLUGIN_BLUETOOTH_LOW_ENERGY_PLUGIN_C_API_H_
|
@ -0,0 +1,43 @@
|
||||
#include <flutter/method_call.h>
|
||||
#include <flutter/method_result_functions.h>
|
||||
#include <flutter/standard_method_codec.h>
|
||||
#include <gtest/gtest.h>
|
||||
#include <windows.h>
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <variant>
|
||||
|
||||
#include "bluetooth_low_energy_plugin.h"
|
||||
|
||||
namespace bluetooth_low_energy {
|
||||
namespace test {
|
||||
|
||||
namespace {
|
||||
|
||||
using flutter::EncodableMap;
|
||||
using flutter::EncodableValue;
|
||||
using flutter::MethodCall;
|
||||
using flutter::MethodResultFunctions;
|
||||
|
||||
} // namespace
|
||||
|
||||
TEST(BluetoothLowEnergyPlugin, GetPlatformVersion) {
|
||||
BluetoothLowEnergyPlugin plugin;
|
||||
// Save the reply value from the success callback.
|
||||
std::string result_string;
|
||||
plugin.HandleMethodCall(
|
||||
MethodCall("getPlatformVersion", std::make_unique<EncodableValue>()),
|
||||
std::make_unique<MethodResultFunctions<>>(
|
||||
[&result_string](const EncodableValue* result) {
|
||||
result_string = std::get<std::string>(*result);
|
||||
},
|
||||
nullptr, nullptr));
|
||||
|
||||
// Since the exact string varies by host, just ensure that it's a string
|
||||
// with the expected format.
|
||||
EXPECT_TRUE(result_string.rfind("Windows ", 0) == 0);
|
||||
}
|
||||
|
||||
} // namespace test
|
||||
} // namespace bluetooth_low_energy
|
Reference in New Issue
Block a user