import { JDDevice } from "./device"; import { Packet } from "./packet"; import { JDRegister } from "./register"; import { JDNode } from "./node"; import { JDEvent } from "./event"; import { JDServiceClient } from "./serviceclient"; import { PackedValues } from "./pack"; import { JDServiceServer } from "./servers/serviceserver"; /** * A Jacdac service client hosting registers, events. * @category JDOM */ export declare class JDService extends JDNode { /** * Gets the service class * @category Control */ readonly serviceClass: number; private _role; private _registers; private _events; private _reports; private _specification; registersUseAcks: boolean; private readonly _clients; private _twin; /** * Gets the device this service belongs to * @category JDOM */ readonly device: JDDevice; /** * Gets the service index in the service list * @category Control */ readonly serviceIndex: number; /** * @internal */ constructor(device: JDDevice, serviceIndex: number); get disposed(): boolean; /** * Gets the node identifier * @category JDOM */ get id(): string; /** * Gets the ``SERVICE_NODE_NAME`` identifier * @category JDOM */ get nodeKind(): string; /** * Gets the service name * @category JDOM */ get name(): string; /** * Gets the service name and parent names and service instance index * @category JDOM */ get friendlyName(): string; /** * Gets the service qualified name and service instance index * @category JDOM */ get qualifiedName(): string; /** * Gets the index of this service class instance. Provides a stable ordering into a list of services. */ get serviceInstanceIndex(): number; /** * Gets the device holding the service * @category JDOM */ get parent(): JDNode; get role(): string; set role(value: string); report(identifier: number): Packet; get reports(): Packet[]; get mixins(): JDService[]; get isMixin(): boolean; get twin(): JDServiceServer; set twin(server: JDServiceServer); private _readingRegister; /** * Gets the ``reading`` register associated to this service, if the specification supports it. * @category Registers */ get readingRegister(): JDRegister; private _valueRegister; /** * Gets the ``value`` register associated to this service, if the specification supports it. * @category Registers */ get valueRegister(): JDRegister; private _intensityRegister; /** * Gets the ``intensity`` register associated to this service, if the specification supports it. * @category Registers */ get intensityRegister(): JDRegister; /** * Gets the service instance name, if resolved * @category Control */ get instanceName(): string; /** * Resolves the service instance name, if resolved * @category Control */ resolveInstanceName(): Promise; /** * Gets the specification of the service. Undefined if unknown * @category Services */ get specification(): jdspec.ServiceSpec; get events(): JDEvent[]; /** * Gets the list of registers in the service * @param options * @returns */ registers(options?: { ignoreNacks?: boolean; }): JDRegister[]; /** * Gets the registers and events * @category JDOM */ get children(): JDNode[]; /** * Gets a register for the given code * @param registerCode register identifier as found in the specification * @returns a register instance (if found in specifiaction) * @category Registers */ register(registerCode: number): JDRegister; /** * Gets an event for the given code * @param eventCode event identifier as found in the specification * @returns a event instance (if found in specifiaction) * @category Events */ event(eventCode: number): JDEvent; /** * Send packet to the service server * @param pkt packet to send * @param ack acknolegment required * @category Packets */ sendPacketAsync(pkt: Packet, ack?: boolean): Promise; /** * Send a command to the service server * @param pkt packet to send * @param ack acknolegment required * @category Packets */ sendCmdAsync(cmd: number, data?: Uint8Array, ack?: boolean): Promise; /** * Packs values and sends command to the service server * @param cmd packet to send * @param values unpacked values, layed as specified * @param ack acknolegment required * @category Packets */ sendCmdPackedAsync(cmd: number, values?: TValues, ack?: boolean): Promise; /** * Send a command and await response to the service server * @param pkt packet to send * @param ack acknolegment required * @category Packets */ sendCmdAwaitResponseAsync(pkt: Packet, timeout?: number): Promise; /** * @internal */ processPacket(pkt: Packet): void; /** * @internal */ compareTo(b: JDService): number; get clients(): JDServiceClient[]; addClient(client: JDServiceClient): void; removeClient(client: JDServiceClient): void; receiveWithInPipe(cmd: number, packFormat: string, timeout?: number): Promise; } //# sourceMappingURL=service.d.ts.map