All files / sportident/src/SiStation ISiTargetMultiplexer.ts

100% Statements 18/18
100% Branches 2/2
100% Functions 4/4
100% Lines 18/18

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 706x                                                             6x 6x 6x 6x 6x       6x   18x 18x   18x     6x   3x 3x   3x     6x   1x 1x   1x                  
import * as utils from '../utils';
import * as siProtocol from '../siProtocol';
import {ISiDevice, ISiDeviceDriverData} from '../SiDevice/ISiDevice';
import {ISiStation} from './ISiStation';
import {SiSendTask} from './SiSendTask';
 
export interface ISiTargetMultiplexer extends utils.IEventTarget<SiTargetMultiplexerEvents> {
    _test: _ISiTargetMultiplexerTestData;
    stations: {[Target in SiTargetMultiplexerTarget]?: ISiStation<Target>};
    target: SiTargetMultiplexerTarget;
    latestTarget: SiTargetMultiplexerTarget;
    siDevice: ISiDevice<ISiDeviceDriverData<unknown>>;
    sendMessage: (
        target: SiTargetMultiplexerTarget,
        message: siProtocol.SiMessage,
        numResponses?: number,
        timeoutInMiliseconds?: number,
    ) => Promise<number[][]>;
    sendMessageToLatestTarget: (
        message: siProtocol.SiMessage,
        numResponses: number|undefined,
        timeoutInMiliseconds: number|undefined,
    ) => Promise<number[][]>;
}
 
export interface _ISiTargetMultiplexerTestData {
    latestTarget: SiTargetMultiplexerTarget;
    sendQueue: SiSendTask[];
}
 
/* eslint-disable no-unused-vars,no-shadow */
export enum SiTargetMultiplexerTarget {
    Unknown = 0,
    Switching = 1,
    Direct = 2,
    Remote = 3,
}
/* eslint-enable no-unused-vars,no-shadow */
 
export class SiTargetMultiplexerMessageEvent extends utils.Event<'message'> {
    constructor(
                public siTargetMultiplexer: ISiTargetMultiplexer,
                public message: siProtocol.SiMessage,
    ) {
        super();
    }
}
export class SiTargetMultiplexerDirectMessageEvent extends utils.Event<'directMessage'> {
    constructor(
                public siTargetMultiplexer: ISiTargetMultiplexer,
                public message: siProtocol.SiMessage,
    ) {
        super();
    }
}
export class SiTargetMultiplexerRemoteMessageEvent extends utils.Event<'remoteMessage'> {
    constructor(
                public siTargetMultiplexer: ISiTargetMultiplexer,
                public message: siProtocol.SiMessage,
    ) {
        super();
    }
}
 
export type SiTargetMultiplexerEvents = {
    'message': SiTargetMultiplexerMessageEvent,
    'directMessage': SiTargetMultiplexerDirectMessageEvent,
    'remoteMessage': SiTargetMultiplexerRemoteMessageEvent,
};