web_lib

Common web application libraries
git clone https://radroots.dev/git/web_lib.git
Log | Files | Refs | LICENSE

types.ts (2234B)


      1 import type { ResolveErrorMsg } from "@radroots/utils";
      2 import type { BleErrorMessage } from "./error.js";
      3 
      4 export type BleMessageData = string | ArrayBuffer | ArrayBufferView;
      5 
      6 export type BleMessageInput = BleMessageData;
      7 
      8 export type BleMessageEncoding = "utf-8";
      9 
     10 export type BleMessage = {
     11     bytes: Uint8Array;
     12     timestamp_ms: number;
     13 };
     14 
     15 export type BleAvailability = {
     16     supported: boolean;
     17     secure_context: boolean;
     18     window_available: boolean;
     19     navigator_available: boolean;
     20     bluetooth_available: boolean;
     21 };
     22 
     23 export type BleAvailabilityState = BleAvailability & {
     24     adapter_available: boolean | "unknown";
     25 };
     26 
     27 export type BlePermissionState = PermissionState | "unknown";
     28 
     29 export type BleServiceProfile = {
     30     service_uuid: string;
     31     client_write_uuid: string;
     32     client_notify_uuid: string;
     33 };
     34 
     35 export const BLE_MESSAGE_PROFILE: BleServiceProfile = {
     36     service_uuid: "7e0b0001-7f62-49e1-9b3f-8e7a2f30a1d1",
     37     client_write_uuid: "7e0b0002-7f62-49e1-9b3f-8e7a2f30a1d1",
     38     client_notify_uuid: "7e0b0003-7f62-49e1-9b3f-8e7a2f30a1d1"
     39 };
     40 
     41 export type BleDeviceInfo = {
     42     id: string;
     43     name?: string;
     44     connected: boolean;
     45 };
     46 
     47 export type BleMessageHandler = (message: BleMessage) => void;
     48 export type BleDisconnectHandler = (reason: BleErrorMessage) => void;
     49 
     50 export type BleConnectOptions = {
     51     signal?: AbortSignal;
     52     timeout_ms?: number;
     53     profile?: BleServiceProfile;
     54     name_prefix?: string;
     55     accept_all_devices?: boolean;
     56 };
     57 
     58 export type BleWriteOptions = {
     59     signal?: AbortSignal;
     60     timeout_ms?: number;
     61     without_response?: boolean;
     62 };
     63 
     64 export interface IBleSession {
     65     get_active(): boolean;
     66     get_device_info(): BleDeviceInfo;
     67     send_message(message: BleMessageInput, opts?: BleWriteOptions): Promise<ResolveErrorMsg<void, BleErrorMessage>>;
     68     disconnect(): Promise<void>;
     69     set_on_message(handler?: BleMessageHandler): void;
     70     set_on_disconnect(handler?: BleDisconnectHandler): void;
     71 }
     72 
     73 export interface IBle {
     74     availability(): BleAvailability;
     75     availability_state(): Promise<BleAvailabilityState>;
     76     permission_state(): Promise<BlePermissionState>;
     77     connect(opts?: BleConnectOptions): Promise<ResolveErrorMsg<IBleSession, BleErrorMessage>>;
     78 }