3.0.0 • Published 9 months ago

@evva/abrevva-capacitor v3.0.0

Weekly downloads
-
License
SEE LICENSE IN <L...
Repository
github
Last release
9 months ago

Abrevva Capacitor Plugin

NPM Version NPM Downloads NPM Unpacked Size (with version) GitHub last commit GitHub branch check runs EVVA License

The EVVA Capacitor Plugin is a collection of tools to work with electronical EVVA access components. It allows for scanning and connecting via BLE.

Features

  • BLE Scanner for EVVA components in range
  • Localize EVVA components encountered by a scan
  • Disengage EVVA components encountered by a scan
  • Read / Write data via BLE

Requirements

  • Capacitor >= 5.0.0
  • Java 17+ (Android)
  • Android SDK (Android)
  • Android 10+ (API level 29) (Android)
  • Xcode 15.4 (iOS)
  • iOS 15.0+ (iOS)

Installation

Capacitor 6

npm install @evva/abrevva-capacitor
npx cap sync

Capacitor 5

npm install @evva/abrevva-capacitor@1.0.1
npx cap sync

Examples

Initialize and scan for EVVA components

import { AbrevvaBLEClient, ScanResult } from "@evva/abrevva-capacitor";

class ExampleClass {
  private results: ScanResult[];
  
  async startScan(event: any) {
    this.results = [];
    
    await AbrevvaBLEClient.requestLEScan({ timeout: 5_000 }, (result: ScanResult) => {
      this.results.push(result);
    });
  }
}

Localize EVVA component

With the signalize method you can localize EVVA components. On a successful signalization the component will emit a melody indicating its location.

const success = await AbrevvaBLEClient.signalize('deviceId');

Perform disengage on EVVA components

For the component disengage you have to provide access credentials to the EVVA component. Those are generally acquired in the form of access media metadata from the Xesar software.

const status = await AbrevvaBLEClient.disengage(
  'mobileId',
  'mobileDeviceKey',
  'mobileGroupId',
  'mobileAccessData',
  false,
);

API

Interfaces

AbrevvaBLEInterface

MethodSignature
initialize(options?: InitializeOptions | undefined) => Promise<void>
isEnabled() => Promise<BooleanResult>
isLocationEnabled() => Promise<BooleanResult>
startEnabledNotifications() => Promise<void>
stopEnabledNotifications() => Promise<void>
openLocationSettings() => Promise<void>
openBluetoothSettings() => Promise<void>
openAppSettings() => Promise<void>
requestLEScan(options?: RequestBleDeviceOptions | undefined) => Promise<void>
stopLEScan() => Promise<void>
addListener(eventName: "onEnabledChanged", listenerFunc: (result: BooleanResult) => void) => PluginListenerHandle
addListener(eventName: string, listenerFunc: (event: ReadResult) => void) => PluginListenerHandle
addListener(eventName: "onScanResult", listenerFunc: (result: ScanResultInternal) => void) => PluginListenerHandle
connect(options: DeviceIdOptions & TimeoutOptions) => Promise<void>
disconnect(options: DeviceIdOptions) => Promise<void>
read(options: ReadOptions & TimeoutOptions) => Promise<ReadResult>
write(options: WriteOptions & TimeoutOptions) => Promise<void>
signalize(options: SignalizeOptions) => Promise<void>
disengage(options: DisengageOptions) => Promise<StringResult>
startNotifications(options: ReadOptions) => Promise<void>
stopNotifications(options: ReadOptions) => Promise<void>

InitializeOptions

PropType
androidNeverForLocationboolean

BooleanResult

PropType
valueboolean

RequestBleDeviceOptions

PropType
servicesstring[]
namestring
namePrefixstring
optionalServicesstring[]
allowDuplicatesboolean
scanModeScanMode
timeoutnumber

PluginListenerHandle

PropType
remove() => Promise<void>

ReadResult

PropType
valuestring

ScanResultInternal

PropType
deviceBleDevice
localNamestring
rssinumber
txPowernumber
manufacturerData{ key: string: T; }
serviceData{ key: string: T; }
uuidsstring[]
rawAdvertisementT

BleDevice

PropType
deviceIdstring
namestring
uuidsstring[]

DeviceIdOptions

PropType
deviceIdstring

TimeoutOptions

PropType
timeoutnumber

ReadOptions

PropType
deviceIdstring
servicestring
characteristicstring

WriteOptions

PropType
deviceIdstring
servicestring
characteristicstring
valuestring

SignalizeOptions

PropType
deviceIdstring

StringResult

PropType
valuestring

DisengageOptions

PropType
deviceIdstring
mobileIdstring
mobileDeviceKeystring
mobileGroupIdstring
mobileAccessDatastring
isPermanentReleaseboolean

AbrevvaCryptoInterface

MethodSignature
encrypt(options: { key: string; iv: string; adata: string; pt: string; tagLength: number; }) => Promise<{ cipherText: string; authTag: string; }>
encryptFile(options: { sharedSecret: string; ptPath: string; ctPath: string; }) => Promise<void>
decrypt(options: { key: string; iv: string; adata: string; ct: string; tagLength: number; }) => Promise<{ plainText: string; authOk: boolean; }>
decryptFile(options: { sharedSecret: string; ctPath: string; ptPath: string; }) => Promise<void>
decryptFileFromURL(options: { sharedSecret: string; url: string; ptPath: string; }) => Promise<void>
generateKeyPair() => Promise<{ privateKey: string; publicKey: string; }>
computeSharedSecret(options: { privateKey: string; peerPublicKey: string; }) => Promise<{ sharedSecret: string; }>
computeED25519PublicKey(options: { privateKey: string; }) => Promise<{ publicKey: string; }>
sign(options: { privateKey: string; data: string; }) => Promise<{ signature: string; }>
verify(options: { publicKey: string; data: string; signature: string; }) => Promise<void>
random(options: { numBytes: number; }) => Promise<{ value: string; }>
derive(options: { key: string; salt: string; info: string; length: number; }) => Promise<{ value: string; }>

Enums

ScanMode

MembersValue
SCAN_MODE_LOW_POWER0
SCAN_MODE_BALANCED1
SCAN_MODE_LOW_LATENCY2
3.0.0

9 months ago

2.0.1

9 months ago