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