{"code":"import * as Devices from \"./devices\";\r\nimport { catMockBLE } from \"../config\";\r\nvar MockBleService = /** @class */ (function () {\r\n    function MockBleService(Config) {\r\n        /* Implementation */\r\n        this.devices = [];\r\n        this.Config = Config;\r\n        catMockBLE.info(Config.BLE.MOCK_BLE_DEVICES);\r\n        for (var devID in Config.BLE.MOCK_BLE_DEVICES) {\r\n            var knownDevices = {\r\n                'nfc300': Devices.NFC300,\r\n                'soilmoisture': Devices.SoilMoisturePOD,\r\n                'temperature': Devices.TemperaturePOD,\r\n                'stream_test': Devices.StreamTestDevice\r\n            };\r\n            var constructor = knownDevices[Config.BLE.MOCK_BLE_DEVICES[devID].type];\r\n            var device = new constructor(devID, Config.BLE.MOCK_BLE_DEVICES[devID].args);\r\n            this.devices.push(device);\r\n        }\r\n        catMockBLE.info('Created ' + this.devices.length + ' fake devices');\r\n        this.scanInfo = { 'inProgress': false, 'discoveryTimer': null };\r\n        this.connectionInfo = { 'inProgress': false, 'connected': false, 'device': null };\r\n    }\r\n    // eslint-disable-next-line no-unused-vars\r\n    MockBleService.prototype.isEnabled = function (yesCallback, noCallback) {\r\n        setTimeout(yesCallback, 0);\r\n    };\r\n    /* Call the success function every 500 ms with a device from the devices list */\r\n    MockBleService.prototype.startScan = function (services, success, failure) {\r\n        var i = 0;\r\n        if (this.scanInfo.inProgress) {\r\n            catMockBLE.error('startScan called twice without stopScan being called in between', Error);\r\n            setTimeout(failure, 10);\r\n            return;\r\n        }\r\n        this.scanInfo.inProgress = true;\r\n        var that = this;\r\n        function discoverFunction() {\r\n            that.scanInfo.discoveryTimer = null;\r\n            if (!that.scanInfo.inProgress) {\r\n                catMockBLE.error('discover callback triggered outside of scanning period.  This is probably a race condition.', Error);\r\n                return;\r\n            }\r\n            for (i = 0; i < that.devices.length; ++i) {\r\n                success(that.devices[i]);\r\n            }\r\n        }\r\n        this.scanInfo.discoveryTimer = setTimeout(discoverFunction, this.Config.BLE.MOCK_BLE_SCAN_DELAY);\r\n    };\r\n    // eslint-disable-next-line no-unused-vars\r\n    MockBleService.prototype.stopScan = function (success, failure) {\r\n        if (!this.scanInfo.inProgress) {\r\n            catMockBLE.error('stopScan called without startScan first being called.', Error);\r\n            return;\r\n        }\r\n        if (this.scanInfo.discoveryTimer !== null) {\r\n            clearTimeout(this.scanInfo.discoveryTimer);\r\n            this.scanInfo.discoveryTimer = null;\r\n        }\r\n        this.scanInfo.inProgress = false;\r\n        if (success) {\r\n            setTimeout(success, 0);\r\n        }\r\n    };\r\n    MockBleService.prototype.connect = function (deviceID, success, failure) {\r\n        if (this.connectionInfo.connected || this.connectionInfo.inProgress) {\r\n            catMockBLE.error('Connect called twice', Error);\r\n            setTimeout(function () {\r\n                failure('Connect called twice to id: ' + deviceID);\r\n            }, 20);\r\n            return;\r\n        }\r\n        for (var i = 0; i < this.devices.length; ++i) {\r\n            if (this.devices[i].device.iotileID === deviceID) {\r\n                if (this.devices[i].connected) {\r\n                    setTimeout(function () { failure('Connect called on device with other connected: ' + deviceID); }, 20);\r\n                }\r\n                else {\r\n                    var that = this;\r\n                    setTimeout(function () { that.finishConnection(success); }, that.Config.BLE.MOCK_BLE_SCAN_DELAY);\r\n                    this.connectionInfo.inProgress = true;\r\n                    this.connectionInfo.device = this.devices[i];\r\n                    this.connectionInfo.disconnected = failure;\r\n                }\r\n                break;\r\n            }\r\n        }\r\n        //If none of our devices matched, notify that we couldn't find the device\r\n        if (!this.connectionInfo.inProgress) {\r\n            setTimeout(function () {\r\n                failure('Could not find device by id: ' + deviceID);\r\n            }, 20);\r\n        }\r\n    };\r\n    MockBleService.prototype.finishConnection = function (callback) {\r\n        if (!this.connectionInfo.inProgress) {\r\n            catMockBLE.error('finishConnection called in invalid state.', Error);\r\n        }\r\n        this.connectionInfo.inProgress = false;\r\n        this.connectionInfo.connected = true;\r\n        callback(this.connectionInfo.device);\r\n    };\r\n    MockBleService.prototype.isConnected = function (deviceID, success, failure) {\r\n        if (this.connectionInfo.connected && this.connectionInfo.device.id === deviceID) {\r\n            setTimeout(success, 0);\r\n        }\r\n        else {\r\n            setTimeout(failure, 0);\r\n        }\r\n    };\r\n    MockBleService.prototype.disconnect = function (deviceID, success, failure) {\r\n        if (this.connectionInfo.connected && this.connectionInfo.device.id === deviceID) {\r\n            this.connectionInfo.device.disconnect(success);\r\n            this.connectionInfo.connected = false;\r\n            this.connectionInfo.device = null;\r\n        }\r\n        else {\r\n            setTimeout(failure, 0);\r\n        }\r\n    };\r\n    MockBleService.prototype.force_disconnect = function () {\r\n        if (this.connectionInfo.connected) {\r\n            this.connectionInfo.disconnected(\"Unexpected disconnection\");\r\n            this.disconnect(this.connectionInfo.device.id, function () { }, function () { });\r\n        }\r\n    };\r\n    MockBleService.prototype.write = function (deviceID, serviceID, charID, value, success, failure) {\r\n        if ((!this.connectionInfo.connected) || this.connectionInfo.device.id !== deviceID) {\r\n            setTimeout(failure, 10);\r\n            return;\r\n        }\r\n        this.connectionInfo.device.write(serviceID, charID, value, success, failure);\r\n    };\r\n    MockBleService.prototype.writeWithoutResponse = function (deviceID, serviceID, charID, value, success, failure) {\r\n        if ((!this.connectionInfo.connected) || this.connectionInfo.device.id !== deviceID) {\r\n            setTimeout(failure, 10);\r\n            return;\r\n        }\r\n        this.connectionInfo.device.write(serviceID, charID, value, success, failure);\r\n    };\r\n    MockBleService.prototype.startNotification = function (deviceID, serviceID, charID, success, failure) {\r\n        if ((!this.connectionInfo.connected) || this.connectionInfo.device.id !== deviceID) {\r\n            setTimeout(failure, 10);\r\n            return;\r\n        }\r\n        this.connectionInfo.device.subscribe(serviceID, charID, success, failure);\r\n    };\r\n    MockBleService.prototype.stopNotification = function (deviceID, serviceID, charID, success, failure) {\r\n        if ((!this.connectionInfo.connected) || this.connectionInfo.device.id !== deviceID) {\r\n            setTimeout(failure, 10);\r\n            return;\r\n        }\r\n        this.connectionInfo.device.unsubscribe(serviceID, charID, success, failure);\r\n    };\r\n    return MockBleService;\r\n}());\r\nexport { MockBleService };\r\n//# sourceMappingURL=mock-ble-serv.js.map","map":"{\"version\":3,\"file\":\"mock-ble-serv.js\",\"sourceRoot\":\"\",\"sources\":[\"../src/mocks/mock-ble-serv.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/kaylie/ArchSys/iotile-device/iotile-device/mocks/mock-ble-serv.d.ts","text":"import { MockBLEDevice } from \"./mock-ble-device\";\r\nexport declare class MockBleService {\r\n    devices: MockBLEDevice[];\r\n    scanInfo: {\r\n        inProgress: boolean;\r\n        discoveryTimer: any;\r\n    };\r\n    connectionInfo: any;\r\n    Config: any;\r\n    constructor(Config: any);\r\n    isEnabled(yesCallback: any, noCallback: any): void;\r\n    startScan(services: any, success: any, failure: any): void;\r\n    stopScan(success: any, failure: any): void;\r\n    connect(deviceID: number, success: any, failure: any): void;\r\n    finishConnection(callback: any): void;\r\n    isConnected(deviceID: number, success: any, failure: any): void;\r\n    disconnect(deviceID: number, success: any, failure: any): void;\r\n    force_disconnect(): void;\r\n    write(deviceID: number, serviceID: string, charID: string, value: ArrayBuffer, success: any, failure: any): void;\r\n    writeWithoutResponse(deviceID: number, serviceID: string, charID: string, value: ArrayBuffer, success: any, failure: any): void;\r\n    startNotification(deviceID: number, serviceID: string, charID: string, success: any, failure: any): void;\r\n    stopNotification(deviceID: number, serviceID: string, charID: string, success: any, failure: any): void;\r\n}\r\n"}}
