1/* 2 * Copyright (c) 2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16import { hasComplete } from "../utils" 17 18export function mockBluetooth() { 19 const bluetooth = { 20 startBLEScan: function (...args) { 21 console.warn("bluetooth.startBLEScan interface mocked in the Previewer. How this interface works on the" + 22 " Previewer may be different from that on a real device.") 23 args[0].success() 24 hasComplete(args[0].complete) 25 }, 26 stopBLEScan: function (...args) { 27 console.warn("bluetooth.stopBLEScan interface mocked in the Previewer. How this interface works on the" + 28 " Previewer may be different from that on a real device.") 29 args[0].success() 30 hasComplete(args[0].complete) 31 }, 32 subscribeBLEFound: function (...args) { 33 console.warn("bluetooth.subscribeBLEFound interface mocked in the Previewer. How this interface works on the" + 34 " Previewer may be different from that on a real device.") 35 const options = { 36 addrType: 'public', 37 addr: 'xx:xx:xx:xx', 38 rssi: 123, 39 txpower: 'xxx', 40 data: 'xxx' 41 } 42 const min = 1 43 const max = 6 44 clearInterval(this.unsubscribeBLE) 45 delete this.unsubscribeBLE 46 this.unsubscribeBLE = setInterval(() => { 47 const randomAddr = Math.floor(Math.random() * (max - min)) + min 48 const optionsArr = Array(randomAddr).fill(options) 49 args[0].success(optionsArr) 50 }, 1000) 51 }, 52 unsubscribeBLEFound: function () { 53 console.warn("bluetooth.unsubscribeBLEFound interface mocked in the Previewer. How this interface works on the" + 54 " Previewer may be different from that on a real device.") 55 clearInterval(this.unsubscribeBLE) 56 delete this.unsubscribeBLE 57 } 58 } 59 return bluetooth 60} 61