}
}
+var BluetoothGATTServer_valid_getConnectionMtu_errors = ['InvalidStateError', 'NotSupportedError', 'UnknownError'];
+var BluetoothGATTServer_valid_getConnectionMtu_exceptions = ['TypeMismatchError', 'SecurityError'];
+
+BluetoothGATTServer.prototype.getConnectionMtu = function() {
+ privUtils_.log('Entered BluetoothGATTServer.getConnectionMtu()');
+ var args = AV.validateArgs(arguments, [
+ {
+ name: 'clientAddress',
+ type: AV.Types.STRING
+ },
+ {
+ name: 'successCallback',
+ type: AV.Types.FUNCTION
+ },
+ {
+ name: 'errorCallback',
+ type: AV.Types.FUNCTION,
+ optional: true
+ }
+ ]);
+
+ var callback = function(result) {
+ if (native.isFailure(result)) {
+ native.callIfPossible(args.errorCallback,
+ native.getErrorObjectAndValidate(result,
+ BluetoothGATTServer_valid_getConnectionMtu_errors, UnknownError));
+ } else {
+ args.successCallback(native.getResultObject(result));
+ }
+ };
+
+ var result = native.call('BluetoothGATTServerGetConnectionMtu',
+ {clientAddress: args.clientAddress}, callback);
+ if (native.isFailure(result)) {
+ throw native.getErrorObjectAndValidate(result, BluetoothGATTServer_valid_getConnectionMtu_exceptions,
+ UnknownError);
+ }
+}
+
var GATTServer = new BluetoothGATTServer();
// class BluetoothManager ///////////////////////////
}
}
+void BluetoothGATTServer::GetConnectionMtu(const picojson::value& args,
+ picojson::object& out) {
+ ScopeLogger();
+
+ const auto client_address = args.get("clientAddress").get<std::string>();
+
+ unsigned int mtu = 0;
+ auto ret = bt_gatt_server_get_device_mtu(client_address.c_str(), &mtu);
+ if (BT_ERROR_NONE != ret) {
+ LoggerE("bt_gatt_server_get_device_mtu(): %d (%s)", ret, get_error_message(ret));
+ ReportError(BluetoothErrorToPlatformResult(ret), &out);
+ }
+ LoggerD("bt_gatt_server_get_device_mtu(): success, MTU: %u", mtu);
+
+ ReportSuccess(picojson::value{static_cast<double>(mtu)}, out);
+}
+
PlatformResult BluetoothGATTServer::Initialize() {
ScopeLogger();
void Start(picojson::object& out);
void Stop(picojson::object& out);
+ void GetConnectionMtu(const picojson::value& args, picojson::object& out);
static bool DestroyService(int total, int index, bt_gatt_h handle, void* user_data);
static bool DestroyCharacteristic(int total, int index, bt_gatt_h handle, void* user_data);
REGISTER_METHOD(BluetoothGATTServerStart);
REGISTER_METHOD(BluetoothGATTServerStop);
+ REGISTER_METHOD(BluetoothGATTServerGetConnectionMtu);
#undef REGISTER_METHOD
}
ReportSuccess(out);
}
+void BluetoothInstance::BluetoothGATTServerGetConnectionMtu(const picojson::value& args,
+ picojson::object& out) {
+ ScopeLogger();
+
+ CHECK_PRIVILEGE_ACCESS(kPrivilegeBluetooth, &out);
+
+ double callback_id = args.get(JSON_CALLBACK_ID).get<double>();
+ worker.add_job([this, callback_id, args] {
+ ScopeLogger("Async call: BluetoothGATTServerGetConnectionMtu");
+ picojson::value response = picojson::value(picojson::object());
+ picojson::object& async_out = response.get<picojson::object>();
+ async_out[JSON_CALLBACK_ID] = picojson::value(callback_id);
+ this->bluetooth_gatt_server_.GetConnectionMtu(args, async_out);
+ this->PostMessage(response.serialize().c_str());
+ });
+
+ ReportSuccess(out);
+}
+
} // namespace bluetooth
} // namespace extension
picojson::object& out);
void BluetoothGATTServerStart(const picojson::value& args, picojson::object& out);
void BluetoothGATTServerStop(const picojson::value& args, picojson::object& out);
+ void BluetoothGATTServerGetConnectionMtu(const picojson::value& args, picojson::object& out);
BluetoothAdapter bluetooth_adapter_;
BluetoothDevice bluetooth_device_;