theta-ble-client-react-native
Version:
This library provides a way to control RICOH THETA using
131 lines (122 loc) • 3.81 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ThetaDevice = void 0;
var ThetaBleClient = _interopRequireWildcard(require("../native"));
var _service = require("../service");
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
/* eslint no-useless-catch: 0 */
/**
* THETA camera device
*
* Call ThetaBle.scan() to obtain.
*/
class ThetaDevice {
/**
* ID of THETA
*
* Granted by {@link theta-ble.scan}
*/
/**
* Name of THETA.
*/
/**
* UUID registered with THETA.
*/
get uuid() {
return this._uuid;
}
notifyList = new Map();
/**
* Use in {@link theta-ble.scan}
*
* @param id ID obtained from scan
* @param name THETA name
*/
constructor(id, name) {
this.id = id;
this.name = name;
this.eventListener = ThetaBleClient.addNotifyListener(notify => {
if (notify.deviceId === this.id) {
var _this$notifyList$get;
(_this$notifyList$get = this.notifyList.get(notify.characteristic)) === null || _this$notifyList$get === void 0 || _this$notifyList$get(notify);
}
});
}
/**
* Connect to THETA.
*/
async connect(uuid) {
try {
await ThetaBleClient.nativeConnect(this.id, uuid);
if (uuid) {
this._uuid = uuid;
}
} catch (error) {
throw error;
}
}
/**
* Whether connected to THETA.
*
* @return Whether connected or not.
*/
async isConnected() {
return await ThetaBleClient.nativeIsConnected(this.id);
}
/**
* Disconnect from THETA.
*/
async disconnect() {
try {
await ThetaBleClient.nativeDisconnect(this.id);
} catch (error) {
throw error;
}
}
async getService(service) {
try {
if (!(await ThetaBleClient.nativeContainService(this.id, service))) {
return;
}
return this.newThetaService(service);
} catch (error) {
throw error;
}
}
newThetaService(service) {
switch (service) {
case _service.BleServiceEnum.CAMERA_CONTROL_COMMANDS:
return new _service.CameraControlCommands(this);
case _service.BleServiceEnum.CAMERA_CONTROL_COMMAND_V2:
return new _service.CameraControlCommandV2(this);
case _service.BleServiceEnum.CAMERA_INFORMATION:
return new _service.CameraInformation(this);
case _service.BleServiceEnum.CAMERA_STATUS_COMMAND:
return new _service.CameraStatusCommand(this);
case _service.BleServiceEnum.SHOOTING_CONTROL_COMMAND:
return new _service.ShootingControlCommand(this);
case _service.BleServiceEnum.BLUETOOTH_CONTROL_COMMAND:
return new _service.BluetoothControlCommand(this);
case _service.BleServiceEnum.WLAN_CONTROL_COMMAND:
return new _service.WlanControlCommand(this);
case _service.BleServiceEnum.WLAN_CONTROL_COMMAND_V2:
return new _service.WlanControlCommandV2(this);
default:
break;
}
return;
}
/**
* Clean up resources.
*
* Call when you are done using it.
*/
release() {
this.eventListener.remove();
ThetaBleClient.nativeReleaseDevice(this.id).then().catch();
}
}
exports.ThetaDevice = ThetaDevice;
//# sourceMappingURL=theta-device.js.map