JavaScript APIs / oro:hci

oro:hci

oro:hci exposes host controller interface helpers for low-level Bluetooth adapter access.

Examples#

Inspect local Bluetooth adapters before opening a low-level HCI socket:

import { listAdapters, getAdapter } from 'oro:hci'

const adapters = listAdapters()
console.log(adapters)

if (adapters.length > 0) {
  console.log(getAdapter(adapters[0].devId))
}

API reference#

Module specifiers#

oro:hci

TypeScript declarations#

These declarations are generated from the runtime's published TypeScript surface.

oro:hci#

declare module "oro:hci" {
    /**
     * Enumerate available HCI adapters on the host.
     * @return {HCIAdapter[]}
     */
    export function listAdapters(): HCIAdapter[];
    /**
     * Retrieve information for a specific adapter.
     * @param {number} devId Adapter identifier (e.g. `0` for `hci0`)
     * @return {HCIAdapter}
     */
    export function getAdapter(devId: number): HCIAdapter;
    /**
     * Enable or disable an adapter by bringing it up or down.
     * @param {number} devId Adapter identifier
     * @param {boolean} up When `true`, powers the adapter; otherwise powers it off
     * @return {{ devId: number, up: boolean }}
     */
    export function setAdapterState(devId: number, up: boolean): {
        devId: number;
        up: boolean;
    };
    /**
     * Low-level socket for interacting with a Bluetooth controller via HCI.
     * @extends EventEmitter
     */
    export class HCISocket extends EventEmitter {
        /**
         * Convenience helper mirroring {@link listAdapters}.
         * @return {HCIAdapter[]}
         */
        static listAdapters(): HCIAdapter[];
        /**
         * Convenience helper mirroring {@link getAdapter}.
         * @param {number} devId
         * @return {HCIAdapter}
         */
        static getAdapter(devId: number): HCIAdapter;
        /**
         * Convenience helper mirroring {@link setAdapterState}.
         * @param {number} devId
         * @param {boolean} up
         * @return {{ devId: number, up: boolean }}
         */
        static setAdapterState(devId: number, up: boolean): {
            devId: number;
            up: boolean;
        };
        /**
         * @param {(number|{ devId?: number })} [options] Optional adapter identifier or configuration object.
         */
        constructor(options?: (number | {
            devId?: number;
        }));
        id: bigint;
        devId: any;
        _closed: boolean;
        /**
         * Indicates whether the socket has been closed.
         * @return {boolean}
         */
        get closed(): boolean;
        /**
         * Write an HCI packet to the controller.
         * @param {ArrayBufferView|ArrayBuffer|Buffer|string|number[]} chunk HCI packet bytes.
         * @return {number} Number of bytes written.
         */
        write(chunk: ArrayBufferView | ArrayBuffer | Buffer | string | number[]): number;
        /**
         * Stop receiving data and close the underlying socket.
         */
        close(): void;
    }
    export default HCISocket;
    export type HCIAdapter = {
        /**
         * Numeric adapter identifier (e.g. `0` for `hci0`)
         */
        devId: number;
        /**
         * System name reported by the controller
         */
        name: string;
        /**
         * Controller Bluetooth address in canonical form
         */
        bdaddr: string;
        /**
         * Raw adapter flags as reported by the kernel
         */
        flags: number;
        /**
         * Primary/AMP type label or numeric fallback
         */
        type: (string | number);
        /**
         * Transport the controller is attached to
         */
        bus: (string | number);
        /**
         * Indicates whether the adapter is currently powered
         */
        powered: boolean;
    };
    import { EventEmitter } from "oro:events";
    import { Buffer } from "oro:buffer";
}

See also#

Source repository · Edit this page · View Markdown