Commit 7317ba8f authored by martin hou's avatar martin hou

fix: 任务模式适配调整

parent 6117ac6a
......@@ -46,9 +46,17 @@ export function Home() {
// alert(JSON.stringify(dinfo));
});
const getJensen = () => {
const getJensen = async () => {
if (sn == null) return alert('Please connect to a device first'), null;
return mgr.getInstance(sn);
const tid = 'jensen-task';
const success = await mgr.registerTask(sn, tid);
if (!success) return alert('Failed to register task'), null;
return mgr.getInstance(sn, tid);
}
const releaseJensen = async () => {
const tid = 'jensen-task';
if (sn) mgr.unregisterTask(sn, tid);
}
useEffect(() => {
......@@ -102,17 +110,18 @@ export function Home() {
const info = async () => {
// alert(sn);
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
// console.log('jensen -> ', jensen);
let info = await jensen?.getDeviceInfo();
// alert(JSON.stringify(info));
Logger.info('jensen', 'info', 'Device Info: ' + JSON.stringify(info));
await releaseJensen();
}
let bluetoothDevices: BluetoothDevice[] = [];
const bluetoothScan = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
setDevices([]);
setGreeting('scan started at: ' + new Date().toLocaleString());
......@@ -125,10 +134,11 @@ export function Home() {
// console.log(devices);
// setDevices(devices);
setGreeting('scanning...');
await releaseJensen();
}
const scanBluetooth = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
const scan = async () => {
await jensen.startBluetoothScan(10, 5);
......@@ -145,23 +155,26 @@ export function Home() {
setTimeout(scan, 5000);
};
scan();
await releaseJensen();
}
const stopBluetoothScan = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let rst = await jensen.stopBluetoothScan(5);
if (rst == null || rst.result != 'success') return alert('stop bluetooth scan failed.');
setGreeting('scan stopped');
await releaseJensen();
}
const getScanResults = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let devices = await jensen.getScanResults(5);
console.log(devices);
if (devices == null) return alert('get scan results failed.');
setDevices(devices);
await releaseJensen();
}
const connect = async () => {
......@@ -180,10 +193,11 @@ export function Home() {
}
const disconnectBTDevice = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let r = await jensen.disconnectBTDevice();
console.log(r);
await releaseJensen();
}
const clsBtnConnect: React.CSSProperties = {
......@@ -209,36 +223,40 @@ export function Home() {
}
const doConnectBluetooth = async (mac:string) => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let rst = await jensen.connectBTDevice(mac, 10);
alert('connect: ' + rst.result);
await releaseJensen();
}
const getTime = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let time = await jensen.getTime();
// alert(JSON.stringify(time));
Logger.info('jensen', 'getTime', 'Time: ' + JSON.stringify(time));
await releaseJensen();
}
const listFiles = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let fc = await jensen.getFileCount();
// alert(fc?.count);
let files = await jensen.listFiles();
console.log(files);
setFiles(files)
await releaseJensen();
}
const getBluetoothStatus = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let info = await jensen.getBluetoothStatus();
// alert(JSON.stringify(info));
Logger.info('jensen', 'getBluetoothStatus', 'Bluetooth: ' + JSON.stringify(info));
await releaseJensen();
}
/*
......@@ -263,7 +281,7 @@ export function Home() {
*/
const updateDeviceTone = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let resp = await jensen.requestToneUpdate('826d9bac0b535e7babe02b389327a9f2', 1050688);
if (resp.code != 0x00) return alert(resp.result);
......@@ -278,13 +296,14 @@ export function Home() {
if (this.status != 200) return alert('Http Error: ' + this.status);
jensen.updateTone(new Uint8Array(this.response), 30).then((info) => {
alert(JSON.stringify(info));
releaseJensen();
});
}
xhr.send();
}
const updateUAC = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
const uac_firmwares = {
......@@ -306,17 +325,19 @@ export function Home() {
if (this.status != 200) return alert('Http Error: ' + this.status);
jensen.updateUAC(new Uint8Array(this.response), 30).then((info) => {
alert(JSON.stringify(info));
releaseJensen();
});
}
xhr.send();
}
const batteryStatus = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let status = await jensen.getBatteryStatus(5);
// alert(JSON.stringify(status));
Logger.info('jensen', 'batteryStatus', 'Battery: ' + JSON.stringify(status));
await releaseJensen();
}
let filename = '';
......@@ -331,12 +352,10 @@ export function Home() {
// 2025Jun24-165914-Wip00.hda, 232704 @ 19392
filename = file.name;
filelength = file.length;
get_file();
}
const get_file = () => {
let jensen = getJensen();
const get_file = async () => {
let jensen = await getJensen();
if (jensen == null) return;
let recvBytes = 0;
let stime = new Date().getTime();
......@@ -346,6 +365,7 @@ export function Home() {
if (recvBytes >= filelength) {
let cost = new Date().getTime() - stime;
alert('File Transfer Complete, Cost: ' + cost + ' ms');
releaseJensen();
}
}, function(recvBytes) {
let percent = Math.floor(recvBytes / filelength * 100);
......@@ -363,7 +383,7 @@ export function Home() {
*/
const setWebUSBTimeout = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let ts = prompt('Please Input the Timeout (ms):', '10000');
if (ts === undefined || ts === null) return;
......@@ -371,26 +391,29 @@ export function Home() {
if (isNaN(timeout) || timeout <= 0) return alert('Please Input the Correct Timeout');
await jensen.setWebUSBTimeout(timeout, 30);
Logger.info('jensen', 'setWebUSBTimeout', 'Set Timeout Success');
await releaseJensen();
}
const getWebUSBTimeout = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let rst = await jensen.getWebUSBTimeout(5);
// alert(JSON.stringify(rst));
Logger.info('jensen', 'getWebUSBTimeout', 'WebUSB Timeout: ' + JSON.stringify(rst));
await releaseJensen();
}
const listFirmwares = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let model = jensen.getModel();
let versions = firmwareVersions.filter((item) => item.model == model);
setFirmwares(versions);
await releaseJensen();
}
const updateFirmware = async (version: string, url: string) => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
// let rst = await jensen.requestFirmwareUpgrade(version, url);
// alert(JSON.stringify(rst));
......@@ -404,10 +427,12 @@ export function Home() {
versionNumber = (parseInt(parts[0]) << 16) | (parseInt(parts[1]) << 8) | (parseInt(parts[2]));
} else {
alert('invalid version number');
await releaseJensen();
return;
}
} else {
alert('invalid version number');
await releaseJensen();
return;
}
......@@ -425,6 +450,7 @@ export function Home() {
// alert('firmware upgrade accepted');
Logger.info('jensen', 'ota', 'firmware transfer start');
jensen.uploadFirmware(Array.from(new Uint8Array(this.response)), 30).then((info) => {
releaseJensen();
if (info == null)
{
Logger.info('jensen', 'ota', 'firmware transfer timedout');
......@@ -439,6 +465,7 @@ export function Home() {
else
{
alert('cannot upgrade firmware: ' + info.result);
releaseJensen();
}
});
}
......@@ -446,41 +473,46 @@ export function Home() {
}
const turnPopupOn = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
// await jensen.();
let rst = await jensen.setNotification(true, 5);
Logger.info('jensen', 'popup', 'Turn Popup On: ' + JSON.stringify(rst));
await releaseJensen();
}
const turnPopupOff = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
// await jensen.turnPopupOff();
let rst = await jensen.setNotification(false, 5);
Logger.info('jensen', 'popup', 'Turn Popup On: ' + JSON.stringify(rst));
await releaseJensen();
}
const getSettings = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let rst = await jensen.getSettings(5);
Logger.info('jensen', 'settings', 'Get Settings: ' + JSON.stringify(rst));
await releaseJensen();
}
const getPairedDevices = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let devices = await jensen.getPairedDevices(5);
// alert(JSON.stringify(devices));
Logger.info('jensen', 'bluetooth', 'Paired Devices: ' + JSON.stringify(devices));
await releaseJensen();
}
const clearPairedDevices = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let rst = await jensen.clearPairedDevices(5);
Logger.info('jensen', 'bluetooth', 'Clear Paired Devices: ' + JSON.stringify(rst));
await releaseJensen();
}
/**
......@@ -536,7 +568,7 @@ export function Home() {
const blocksRef = useRef<Uint8Array[]>([]);
const scheduleLiveTick = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let live = await jensen.getRealtime(1);
// 若无数据直接调度下一次
......@@ -556,15 +588,16 @@ export function Home() {
// 根据live.rest的值决定timeout的间隔时长,如果>1则为50,否则为100
let timeout = live.rest > 1 ? 50 : 100;
liveTimeoutRef.current = window.setTimeout(scheduleLiveTick, Math.max(0, timeout | 0));
await releaseJensen();
}
const startSession = async () => {
const jensen = getJensen();
const jensen = await getJensen();
if (jensen == null) return;
let rst = await jensen.startRealtime(2, 1);
Logger.info('jensen', 'live', 'Start Live: ' + JSON.stringify(rst));
await releaseJensen();
if (liveTimeoutRef.current !== null) {
window.clearTimeout(liveTimeoutRef.current);
}
......@@ -677,14 +710,15 @@ export function Home() {
}
const startLive = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
startLiveSession();
await releaseJensen();
}
const stopLive = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let rst = await jensen.stopRealtime(1);
Logger.info('jensen', 'live', 'Stop Live: ' + JSON.stringify(rst));
......@@ -707,6 +741,7 @@ export function Home() {
a.download = 'live.pcm';
a.click();
URL.revokeObjectURL(url);
await releaseJensen();
}
const muteControl = async () => {
......@@ -718,56 +753,63 @@ export function Home() {
}
const sendKey = async (mode: number, keyCode: number) => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let rst = await jensen.sendKeyCode(mode, keyCode, 5);
Logger.info('jensen', 'live', 'Send Key: ' + JSON.stringify(rst));
await releaseJensen();
}
const enterMassStorageMode = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let rst = await jensen.enterMassStorageMode(5);
Logger.info('jensen', 'live', 'Enter MassStorage Mode: ' + JSON.stringify(rst));
await releaseJensen();
}
const getRecordingStatus = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let rst = await jensen.getRecordingStatus(5);
Logger.info('jensen', 'recording', 'Get Recording Status: ' + JSON.stringify(rst));
await releaseJensen();
}
const switchRecordingQuality = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let current = await jensen.getRecordingQuality(5);
let next = current.quality == 'normal' ? 'high' : 'normal';
let rst = await jensen.setRecordingQuality(next as 'normal' | 'high', 5);
Logger.info('jensen', 'quality', 'Set Recording Quality: ' + JSON.stringify(rst));
await releaseJensen();
}
const getRecordingQuality = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let rst = await jensen.getRecordingQuality(5);
Logger.info('jensen', 'quality', 'Get Recording Quality: ' + JSON.stringify(rst));
await releaseJensen();
}
const switchAudioInputDevice = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let current = await jensen.getAudioInputDevice(5);
let next = current.device == 'bt-mic' ? 'mic' : 'bt-mic';
let rst = await jensen.setAudioInputDevice(next as 'bt-mic' | 'mic', 5);
Logger.info('jensen', 'audio-input', 'Set Audio Input Device: ' + JSON.stringify(rst));
await releaseJensen();
}
const getAudioInputDevice = async () => {
let jensen = getJensen();
let jensen = await getJensen();
if (jensen == null) return;
let rst = await jensen.getAudioInputDevice(5);
Logger.info('jensen', 'audio-input', 'Get Audio Input Device: ' + JSON.stringify(rst));
await releaseJensen();
}
return (
......
......@@ -17,6 +17,8 @@ export type FileTaskData = {
export function buildTasks(jensen: Jensen, tm: TaskManager) {
// ===================== 初始化任务 =====================
return;
// 时间同步
tm.registerInitializeTask({
tag: 'time-sync',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment