1fb726d48Sopenharmony_ci/* 2fb726d48Sopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd. 3fb726d48Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4fb726d48Sopenharmony_ci * you may not use this file except in compliance with the License. 5fb726d48Sopenharmony_ci * You may obtain a copy of the License at 6fb726d48Sopenharmony_ci * 7fb726d48Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8fb726d48Sopenharmony_ci * 9fb726d48Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10fb726d48Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11fb726d48Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12fb726d48Sopenharmony_ci * See the License for the specific language governing permissions and 13fb726d48Sopenharmony_ci * limitations under the License. 14fb726d48Sopenharmony_ci */ 15fb726d48Sopenharmony_ci 16fb726d48Sopenharmony_ciimport { TraficEnum } from './utils/QueryEnum'; 17fb726d48Sopenharmony_ciimport { energyList } from './utils/AllMemoryCache'; 18fb726d48Sopenharmony_ciimport { Args } from './CommonArgs'; 19fb726d48Sopenharmony_ci 20fb726d48Sopenharmony_ciexport const systemDataSql = (args: Args): string => { 21fb726d48Sopenharmony_ci return `SELECT S.id, 22fb726d48Sopenharmony_ci S.ts - ${args.recordStartNS 23fb726d48Sopenharmony_ci } AS startNs, 24fb726d48Sopenharmony_ci D.data AS eventName, 25fb726d48Sopenharmony_ci (case when D.data = 'POWER_RUNNINGLOCK' then 1 when D.data = 'GNSS_STATE' then 2 else 0 end) AS appKey, 26fb726d48Sopenharmony_ci contents AS eventValue, 27fb726d48Sopenharmony_ci ((S.ts - ${args.recordStartNS}) / (${Math.floor((args.endNS - args.startNS) / args.width)})) as px 28fb726d48Sopenharmony_ci FROM hisys_all_event AS S 29fb726d48Sopenharmony_ci LEFT JOIN data_dict AS D ON S.event_name_id = D.id 30fb726d48Sopenharmony_ci LEFT JOIN data_dict AS D2 ON S.domain_id = D2.id 31fb726d48Sopenharmony_ci WHERE eventName IN ('POWER_RUNNINGLOCK', 'GNSS_STATE', 'WORK_START', 'WORK_REMOVE', 'WORK_STOP', 'WORK_ADD') 32fb726d48Sopenharmony_ci and startNs >= ${Math.floor(args.startNS)} 33fb726d48Sopenharmony_ci and startNs <= ${Math.floor(args.endNS)} 34fb726d48Sopenharmony_ci group by px;`; 35fb726d48Sopenharmony_ci}; 36fb726d48Sopenharmony_ci 37fb726d48Sopenharmony_ciexport const systemDataMemSql = (args: Args): string => { 38fb726d48Sopenharmony_ci return `SELECT S.id, 39fb726d48Sopenharmony_ci S.ts - ${args.recordStartNS} AS startNs, 40fb726d48Sopenharmony_ci D.data AS eventName, 41fb726d48Sopenharmony_ci (case when D.data = 'POWER_RUNNINGLOCK' then '1' when D.data = 'GNSS_STATE' then '2' else '0' end) AS appKey, 42fb726d48Sopenharmony_ci contents AS eventValue 43fb726d48Sopenharmony_ci FROM hisys_all_event AS S 44fb726d48Sopenharmony_ci LEFT JOIN data_dict AS D ON S.event_name_id = D.id 45fb726d48Sopenharmony_ci LEFT JOIN data_dict AS D2 ON S.domain_id = D2.id 46fb726d48Sopenharmony_ci WHERE eventName IN 47fb726d48Sopenharmony_ci ('POWER_RUNNINGLOCK', 'GNSS_STATE', 'WORK_START', 'WORK_REMOVE', 'WORK_STOP', 'WORK_ADD');`; 48fb726d48Sopenharmony_ci}; 49fb726d48Sopenharmony_ci 50fb726d48Sopenharmony_ciexport const chartEnergyAnomalyDataSql = (args: Args): string => { 51fb726d48Sopenharmony_ci return ` 52fb726d48Sopenharmony_ci select S.id, 53fb726d48Sopenharmony_ci S.ts - ${args.recordStartNS} as startNs, 54fb726d48Sopenharmony_ci D.data as eventName, 55fb726d48Sopenharmony_ci D2.data as appKey, 56fb726d48Sopenharmony_ci (case 57fb726d48Sopenharmony_ci when S.type==1 then group_concat(S.string_value, ',') 58fb726d48Sopenharmony_ci else group_concat(S.int_value, ',') end) as eventValue 59fb726d48Sopenharmony_ci from hisys_event_measure as S 60fb726d48Sopenharmony_ci left join data_dict as D 61fb726d48Sopenharmony_ci on D.id = S.name_id 62fb726d48Sopenharmony_ci left join app_name as APP on APP.id = S.key_id 63fb726d48Sopenharmony_ci left join data_dict as D2 on D2.id = APP.app_key 64fb726d48Sopenharmony_ci where D.data in 65fb726d48Sopenharmony_ci ('ANOMALY_SCREEN_OFF_ENERGY', 'ANOMALY_KERNEL_WAKELOCK', 'ANOMALY_CPU_HIGH_FREQUENCY', 'ANOMALY_WAKEUP') 66fb726d48Sopenharmony_ci or (D.data in ('ANOMALY_RUNNINGLOCK', 'ANORMALY_APP_ENERGY', 'ANOMALY_GNSS_ENERGY', 'ANOMALY_CPU_ENERGY', 67fb726d48Sopenharmony_ci 'ANOMALY_ALARM_WAKEUP') 68fb726d48Sopenharmony_ci and D2.data in ('APPNAME')) 69fb726d48Sopenharmony_ci group by S.serial, D.data`; 70fb726d48Sopenharmony_ci}; 71fb726d48Sopenharmony_ciexport const queryPowerValueSql = (args: Args): string => { 72fb726d48Sopenharmony_ci return ` 73fb726d48Sopenharmony_ci SELECT S.id, 74fb726d48Sopenharmony_ci S.ts - ${args.recordStartNS} as startNs, 75fb726d48Sopenharmony_ci D.data AS eventName, 76fb726d48Sopenharmony_ci D2.data AS appKey, 77fb726d48Sopenharmony_ci group_concat((CASE WHEN S.type = 1 THEN S.string_value ELSE S.int_value END), ',') AS eventValue 78fb726d48Sopenharmony_ci FROM hisys_event_measure AS S 79fb726d48Sopenharmony_ci LEFT JOIN data_dict AS D 80fb726d48Sopenharmony_ci ON D.id = S.name_id 81fb726d48Sopenharmony_ci LEFT JOIN app_name AS APP 82fb726d48Sopenharmony_ci ON APP.id = S.key_id 83fb726d48Sopenharmony_ci LEFT JOIN data_dict AS D2 84fb726d48Sopenharmony_ci ON D2.id = APP.app_key 85fb726d48Sopenharmony_ci where D.data in ('POWER_IDE_CPU', 'POWER_IDE_LOCATION', 'POWER_IDE_GPU', 'POWER_IDE_DISPLAY', 'POWER_IDE_CAMERA', 86fb726d48Sopenharmony_ci 'POWER_IDE_BLUETOOTH', 'POWER_IDE_FLASHLIGHT', 'POWER_IDE_AUDIO', 'POWER_IDE_WIFISCAN') 87fb726d48Sopenharmony_ci and D2.data in 88fb726d48Sopenharmony_ci ('BACKGROUND_ENERGY', 'FOREGROUND_ENERGY', 'SCREEN_ON_ENERGY', 'SCREEN_OFF_ENERGY', 'ENERGY', 'APPNAME') 89fb726d48Sopenharmony_ci GROUP BY S.serial, 90fb726d48Sopenharmony_ci APP.app_key, 91fb726d48Sopenharmony_ci D.data, 92fb726d48Sopenharmony_ci D2.data 93fb726d48Sopenharmony_ci ORDER BY eventName;`; 94fb726d48Sopenharmony_ci}; 95fb726d48Sopenharmony_ci 96fb726d48Sopenharmony_ciexport const queryStateDataSql = (args: Args): string => { 97fb726d48Sopenharmony_ci return ` 98fb726d48Sopenharmony_ci select S.id, 99fb726d48Sopenharmony_ci S.ts - ${args.recordStartNS} as startNs, 100fb726d48Sopenharmony_ci D.data as eventName, 101fb726d48Sopenharmony_ci D2.data as appKey, 102fb726d48Sopenharmony_ci S.int_value as eventValue 103fb726d48Sopenharmony_ci from hisys_event_measure as S 104fb726d48Sopenharmony_ci left join data_dict as D on D.id = S.name_id 105fb726d48Sopenharmony_ci left join app_name as APP on APP.id = S.key_id 106fb726d48Sopenharmony_ci left join data_dict as D2 on D2.id = APP.app_key 107fb726d48Sopenharmony_ci where (case when 'SENSOR_STATE'== '${args.eventName}' then D.data like '%SENSOR%' else D.data = '${args.eventName}' end) 108fb726d48Sopenharmony_ci and D2.data in ('BRIGHTNESS', 'STATE', 'VALUE', 'LEVEL', 'VOLUME', 'OPER_TYPE', 'VOLUME') 109fb726d48Sopenharmony_ci group by S.serial, APP.app_key, D.data, D2.data;`; 110fb726d48Sopenharmony_ci}; 111fb726d48Sopenharmony_ci 112fb726d48Sopenharmony_ciexport const queryStateProtoDataSql = (args: Args): string => { 113fb726d48Sopenharmony_ci return ` 114fb726d48Sopenharmony_ci SELECT S.id, 115fb726d48Sopenharmony_ci S.ts - ${args.recordStartNS} AS startNs, 116fb726d48Sopenharmony_ci D.data AS eventName, 117fb726d48Sopenharmony_ci '' AS appKey, 118fb726d48Sopenharmony_ci contents AS eventValue 119fb726d48Sopenharmony_ci FROM hisys_all_event AS S 120fb726d48Sopenharmony_ci LEFT JOIN data_dict AS D ON S.event_name_id = D.id 121fb726d48Sopenharmony_ci LEFT JOIN data_dict AS D2 ON S.domain_id = D2.id 122fb726d48Sopenharmony_ci WHERE eventName = ${args.eventName}`; 123fb726d48Sopenharmony_ci}; 124fb726d48Sopenharmony_cilet systemList: Array<unknown> = []; 125fb726d48Sopenharmony_cilet anomalyList: Array<unknown> = []; 126fb726d48Sopenharmony_cilet powerList: Array<unknown> = []; 127fb726d48Sopenharmony_ci 128fb726d48Sopenharmony_ciexport function resetEnergyEvent(): void { 129fb726d48Sopenharmony_ci systemList = []; 130fb726d48Sopenharmony_ci anomalyList = []; 131fb726d48Sopenharmony_ci powerList = []; 132fb726d48Sopenharmony_ci} 133fb726d48Sopenharmony_ci 134fb726d48Sopenharmony_ciexport function energySysEventReceiver(data: unknown, proc: Function): void { 135fb726d48Sopenharmony_ci // @ts-ignore 136fb726d48Sopenharmony_ci if (data.params.trafic === TraficEnum.Memory) { 137fb726d48Sopenharmony_ci if (systemList.length === 0) { 138fb726d48Sopenharmony_ci // @ts-ignore 139fb726d48Sopenharmony_ci systemList = proc(systemDataMemSql(data.params)); 140fb726d48Sopenharmony_ci } 141fb726d48Sopenharmony_ci // @ts-ignore 142fb726d48Sopenharmony_ci systemBufferHandler(data, systemList, data.params.trafic !== TraficEnum.SharedArrayBuffer); 143fb726d48Sopenharmony_ci // @ts-ignore 144fb726d48Sopenharmony_ci } else if (data.params.trafic === TraficEnum.ProtoBuffer) { 145fb726d48Sopenharmony_ci // @ts-ignore 146fb726d48Sopenharmony_ci let sql = systemDataSql(data.params); 147fb726d48Sopenharmony_ci let res = proc(sql); 148fb726d48Sopenharmony_ci // @ts-ignore 149fb726d48Sopenharmony_ci systemBufferHandler(data, res, data.params.trafic !== TraficEnum.SharedArrayBuffer); 150fb726d48Sopenharmony_ci } 151fb726d48Sopenharmony_ci} 152fb726d48Sopenharmony_ci 153fb726d48Sopenharmony_ciexport function hiSysEnergyAnomalyDataReceiver(data: unknown, proc: Function): void { 154fb726d48Sopenharmony_ci // @ts-ignore 155fb726d48Sopenharmony_ci if (data.params.trafic === TraficEnum.Memory) { 156fb726d48Sopenharmony_ci if (anomalyList.length === 0) { 157fb726d48Sopenharmony_ci // @ts-ignore 158fb726d48Sopenharmony_ci anomalyList = proc(chartEnergyAnomalyDataSql(data.params)); 159fb726d48Sopenharmony_ci } 160fb726d48Sopenharmony_ci // @ts-ignore 161fb726d48Sopenharmony_ci anomalyBufferHandler(data, anomalyList, data.params.trafic !== TraficEnum.SharedArrayBuffer); 162fb726d48Sopenharmony_ci // @ts-ignore 163fb726d48Sopenharmony_ci } else if (data.params.trafic === TraficEnum.ProtoBuffer) { 164fb726d48Sopenharmony_ci // @ts-ignore 165fb726d48Sopenharmony_ci let sql = chartEnergyAnomalyDataSql(data.params); 166fb726d48Sopenharmony_ci let res = proc(sql); 167fb726d48Sopenharmony_ci // @ts-ignore 168fb726d48Sopenharmony_ci anomalyBufferHandler(data, res, data.params.trafic !== TraficEnum.SharedArrayBuffer); 169fb726d48Sopenharmony_ci } 170fb726d48Sopenharmony_ci} 171fb726d48Sopenharmony_ci 172fb726d48Sopenharmony_ciexport function hiSysEnergyPowerReceiver(data: unknown, proc: Function): void { 173fb726d48Sopenharmony_ci // @ts-ignore 174fb726d48Sopenharmony_ci if (data.params.trafic === TraficEnum.Memory) { 175fb726d48Sopenharmony_ci if (powerList.length === 0) { 176fb726d48Sopenharmony_ci // @ts-ignore 177fb726d48Sopenharmony_ci powerList = proc(queryPowerValueSql(data.params)); 178fb726d48Sopenharmony_ci } 179fb726d48Sopenharmony_ci // @ts-ignore 180fb726d48Sopenharmony_ci powerBufferHandler(data, powerList, data.params.trafic !== TraficEnum.SharedArrayBuffer); 181fb726d48Sopenharmony_ci // @ts-ignore 182fb726d48Sopenharmony_ci } else if (data.params.trafic === TraficEnum.ProtoBuffer) { 183fb726d48Sopenharmony_ci // @ts-ignore 184fb726d48Sopenharmony_ci let sql = queryPowerValueSql(data.params); 185fb726d48Sopenharmony_ci let res = proc(sql); 186fb726d48Sopenharmony_ci // @ts-ignore 187fb726d48Sopenharmony_ci powerBufferHandler(data, res, data.params.trafic !== TraficEnum.SharedArrayBuffer); 188fb726d48Sopenharmony_ci } 189fb726d48Sopenharmony_ci} 190fb726d48Sopenharmony_ci 191fb726d48Sopenharmony_ciexport function hiSysEnergyStateReceiver(data: unknown, proc: Function): void { 192fb726d48Sopenharmony_ci // @ts-ignore 193fb726d48Sopenharmony_ci if (data.params.trafic === TraficEnum.Memory) { 194fb726d48Sopenharmony_ci let res: unknown[]; 195fb726d48Sopenharmony_ci let list: unknown[]; 196fb726d48Sopenharmony_ci // @ts-ignore 197fb726d48Sopenharmony_ci if (!energyList.has(data.params.eventName)) { 198fb726d48Sopenharmony_ci // @ts-ignore 199fb726d48Sopenharmony_ci list = proc(queryStateDataSql(data.params)); 200fb726d48Sopenharmony_ci // @ts-ignore 201fb726d48Sopenharmony_ci energyList.set(data.params.eventName, list); 202fb726d48Sopenharmony_ci } else { 203fb726d48Sopenharmony_ci // @ts-ignore 204fb726d48Sopenharmony_ci list = energyList.get(data.params.eventName) || []; 205fb726d48Sopenharmony_ci } 206fb726d48Sopenharmony_ci res = list; 207fb726d48Sopenharmony_ci // @ts-ignore 208fb726d48Sopenharmony_ci stateBufferHandler(data, res, data.params.trafic !== TraficEnum.SharedArrayBuffer); 209fb726d48Sopenharmony_ci // @ts-ignore 210fb726d48Sopenharmony_ci } else if (data.params.trafic === TraficEnum.ProtoBuffer) { 211fb726d48Sopenharmony_ci // @ts-ignore 212fb726d48Sopenharmony_ci let stateDataSql = queryStateDataSql(data.params); 213fb726d48Sopenharmony_ci let stateDataRes = proc(stateDataSql); 214fb726d48Sopenharmony_ci // @ts-ignore 215fb726d48Sopenharmony_ci stateBufferHandler(data, stateDataRes, data.params.trafic !== TraficEnum.SharedArrayBuffer); 216fb726d48Sopenharmony_ci } 217fb726d48Sopenharmony_ci} 218fb726d48Sopenharmony_ci 219fb726d48Sopenharmony_cifunction systemBufferHandler(data: unknown, res: unknown[], transfer: boolean): void { 220fb726d48Sopenharmony_ci let hiSysEnergy = new HiSysEnergy(data, res, transfer); 221fb726d48Sopenharmony_ci let systemDataList: unknown = []; 222fb726d48Sopenharmony_ci let workCountMap: Map<string, number> = new Map<string, number>(); 223fb726d48Sopenharmony_ci let nameIdMap: Map<string, Array<unknown>> = new Map<string, []>(); 224fb726d48Sopenharmony_ci res.forEach((it, index) => { 225fb726d48Sopenharmony_ci // @ts-ignore 226fb726d48Sopenharmony_ci data.params.trafic === TraficEnum.ProtoBuffer && (it = it.energyData); 227fb726d48Sopenharmony_ci // @ts-ignore 228fb726d48Sopenharmony_ci let parsedData = it.eventValue; 229fb726d48Sopenharmony_ci // @ts-ignore 230fb726d48Sopenharmony_ci if (typeof it.eventValue === 'string') { 231fb726d48Sopenharmony_ci try { 232fb726d48Sopenharmony_ci // @ts-ignore 233fb726d48Sopenharmony_ci parsedData = JSON.parse(it.eventValue); 234fb726d48Sopenharmony_ci } catch (error) { } 235fb726d48Sopenharmony_ci } 236fb726d48Sopenharmony_ci // @ts-ignore 237fb726d48Sopenharmony_ci it.eventValue = parsedData; 238fb726d48Sopenharmony_ci let beanData: unknown = {}; 239fb726d48Sopenharmony_ci // @ts-ignore 240fb726d48Sopenharmony_ci if (it.appKey === '1') { 241fb726d48Sopenharmony_ci // @ts-ignore 242fb726d48Sopenharmony_ci eventNameWithPowerRunninglock(beanData, it, systemDataList); 243fb726d48Sopenharmony_ci // @ts-ignore 244fb726d48Sopenharmony_ci } else if (it.appKey === '2') { 245fb726d48Sopenharmony_ci // @ts-ignore 246fb726d48Sopenharmony_ci eventNameWithGnssState(beanData, it, systemDataList); 247fb726d48Sopenharmony_ci } else { 248fb726d48Sopenharmony_ci // @ts-ignore 249fb726d48Sopenharmony_ci beanData.dataType = 3; 250fb726d48Sopenharmony_ci // @ts-ignore 251fb726d48Sopenharmony_ci if (it.eventValue.NAME) { 252fb726d48Sopenharmony_ci // @ts-ignore 253fb726d48Sopenharmony_ci beanData.appName = it.NAME; 254fb726d48Sopenharmony_ci } 255fb726d48Sopenharmony_ci // @ts-ignore 256fb726d48Sopenharmony_ci if (it.eventValue.WORKID) { 257fb726d48Sopenharmony_ci // @ts-ignore 258fb726d48Sopenharmony_ci beanData.workId = it.WORKID; 259fb726d48Sopenharmony_ci } 260fb726d48Sopenharmony_ci // @ts-ignore 261fb726d48Sopenharmony_ci if (it.eventName === 'WORK_START') { 262fb726d48Sopenharmony_ci // @ts-ignore 263fb726d48Sopenharmony_ci eventNameWithWorkStart(nameIdMap, beanData, workCountMap, it, systemDataList); 264fb726d48Sopenharmony_ci // @ts-ignore 265fb726d48Sopenharmony_ci } else if (it.eventName === 'WORK_STOP') { 266fb726d48Sopenharmony_ci // @ts-ignore 267fb726d48Sopenharmony_ci eventNameWithWorkStop(nameIdMap, beanData, workCountMap, it, systemDataList); 268fb726d48Sopenharmony_ci } 269fb726d48Sopenharmony_ci } 270fb726d48Sopenharmony_ci // @ts-ignore 271fb726d48Sopenharmony_ci hiSysEnergy.id[index] = beanData.id; 272fb726d48Sopenharmony_ci // @ts-ignore 273fb726d48Sopenharmony_ci hiSysEnergy.startNs[index] = beanData.startNs; 274fb726d48Sopenharmony_ci // @ts-ignore 275fb726d48Sopenharmony_ci hiSysEnergy.count[index] = beanData.count; 276fb726d48Sopenharmony_ci // @ts-ignore 277fb726d48Sopenharmony_ci hiSysEnergy.type[index] = beanData.dataType; 278fb726d48Sopenharmony_ci // @ts-ignore 279fb726d48Sopenharmony_ci hiSysEnergy.token[index] = beanData.token; 280fb726d48Sopenharmony_ci // @ts-ignore 281fb726d48Sopenharmony_ci hiSysEnergy.dataType[index] = beanData.dataType; 282fb726d48Sopenharmony_ci }); 283fb726d48Sopenharmony_ci postMessage(data, transfer, hiSysEnergy, res.length); 284fb726d48Sopenharmony_ci} 285fb726d48Sopenharmony_ci 286fb726d48Sopenharmony_cifunction eventNameWithPowerRunninglock(beanData: unknown, it: unknown, systemDataList: Array<unknown>): void { 287fb726d48Sopenharmony_ci let lockCount = 0; 288fb726d48Sopenharmony_ci let tokedIds: Array<string> = []; 289fb726d48Sopenharmony_ci // @ts-ignore 290fb726d48Sopenharmony_ci beanData.dataType = 1; 291fb726d48Sopenharmony_ci // @ts-ignore 292fb726d48Sopenharmony_ci if (it.eventValue.TAG.endsWith('_ADD')) { 293fb726d48Sopenharmony_ci // @ts-ignore 294fb726d48Sopenharmony_ci beanData.startNs = it.startNs; 295fb726d48Sopenharmony_ci lockCount++; 296fb726d48Sopenharmony_ci // @ts-ignore 297fb726d48Sopenharmony_ci beanData.id = it.id; 298fb726d48Sopenharmony_ci // @ts-ignore 299fb726d48Sopenharmony_ci beanData.count = lockCount; 300fb726d48Sopenharmony_ci // @ts-ignore 301fb726d48Sopenharmony_ci beanData.token = it.eventValue.MESSAGE.split('=')[1]; 302fb726d48Sopenharmony_ci // @ts-ignore 303fb726d48Sopenharmony_ci beanData.type = 1; 304fb726d48Sopenharmony_ci // @ts-ignore 305fb726d48Sopenharmony_ci tokedIds.push(beanData.token); 306fb726d48Sopenharmony_ci systemDataList.push(beanData); 307fb726d48Sopenharmony_ci } else { 308fb726d48Sopenharmony_ci // @ts-ignore 309fb726d48Sopenharmony_ci beanData.id = it.id; 310fb726d48Sopenharmony_ci // @ts-ignore 311fb726d48Sopenharmony_ci beanData.startNs = it.startNs; 312fb726d48Sopenharmony_ci // @ts-ignore 313fb726d48Sopenharmony_ci let toked = it.eventValue.MESSAGE.split('=')[1]; 314fb726d48Sopenharmony_ci let number = tokedIds.indexOf(toked); 315fb726d48Sopenharmony_ci if (number > -1) { 316fb726d48Sopenharmony_ci lockCount--; 317fb726d48Sopenharmony_ci // @ts-ignore 318fb726d48Sopenharmony_ci beanData.count = lockCount; 319fb726d48Sopenharmony_ci // @ts-ignore 320fb726d48Sopenharmony_ci beanData.token = it.eventValue.MESSAGE.split('=')[1]; 321fb726d48Sopenharmony_ci // @ts-ignore 322fb726d48Sopenharmony_ci beanData.type = 1; 323fb726d48Sopenharmony_ci systemDataList.push(beanData); 324fb726d48Sopenharmony_ci Reflect.deleteProperty(tokedIds, 'number'); 325fb726d48Sopenharmony_ci } 326fb726d48Sopenharmony_ci } 327fb726d48Sopenharmony_ci} 328fb726d48Sopenharmony_ci 329fb726d48Sopenharmony_cifunction eventNameWithGnssState(beanData: unknown, it: unknown, systemDataList: Array<unknown>): void { 330fb726d48Sopenharmony_ci let locationIndex = -1; 331fb726d48Sopenharmony_ci let locationCount = 0; 332fb726d48Sopenharmony_ci // @ts-ignore 333fb726d48Sopenharmony_ci beanData.dataType = 2; 334fb726d48Sopenharmony_ci // @ts-ignore 335fb726d48Sopenharmony_ci if (it.eventValue.STATE === 'stop') { 336fb726d48Sopenharmony_ci if (locationIndex === -1) { 337fb726d48Sopenharmony_ci // @ts-ignore 338fb726d48Sopenharmony_ci beanData.startNs = 0; 339fb726d48Sopenharmony_ci // @ts-ignore 340fb726d48Sopenharmony_ci beanData.count = 1; 341fb726d48Sopenharmony_ci } else { 342fb726d48Sopenharmony_ci // @ts-ignore 343fb726d48Sopenharmony_ci beanData.startNs = it.startNs; 344fb726d48Sopenharmony_ci locationCount--; 345fb726d48Sopenharmony_ci // @ts-ignore 346fb726d48Sopenharmony_ci beanData.count = locationCount; 347fb726d48Sopenharmony_ci } 348fb726d48Sopenharmony_ci // @ts-ignore 349fb726d48Sopenharmony_ci beanData.state = 'stop'; 350fb726d48Sopenharmony_ci } else { 351fb726d48Sopenharmony_ci // @ts-ignore 352fb726d48Sopenharmony_ci beanData.startNs = it.startNs; 353fb726d48Sopenharmony_ci locationCount++; 354fb726d48Sopenharmony_ci // @ts-ignore 355fb726d48Sopenharmony_ci beanData.count = locationCount; 356fb726d48Sopenharmony_ci // @ts-ignore 357fb726d48Sopenharmony_ci beanData.state = 'start'; 358fb726d48Sopenharmony_ci } 359fb726d48Sopenharmony_ci locationIndex = 0; 360fb726d48Sopenharmony_ci // @ts-ignore 361fb726d48Sopenharmony_ci beanData.type = 2; 362fb726d48Sopenharmony_ci systemDataList.push(beanData); 363fb726d48Sopenharmony_ci} 364fb726d48Sopenharmony_ci 365fb726d48Sopenharmony_cifunction eventNameWithWorkStart( 366fb726d48Sopenharmony_ci nameIdMap: Map<string, Array<unknown>>, 367fb726d48Sopenharmony_ci beanData: unknown, 368fb726d48Sopenharmony_ci workCountMap: Map<string, number>, 369fb726d48Sopenharmony_ci it: unknown, 370fb726d48Sopenharmony_ci systemDataList: Array<unknown> 371fb726d48Sopenharmony_ci): void { 372fb726d48Sopenharmony_ci // @ts-ignore 373fb726d48Sopenharmony_ci let nameIdList = nameIdMap.get(beanData.appName); 374fb726d48Sopenharmony_ci let workCount = 0; 375fb726d48Sopenharmony_ci if (nameIdList === undefined) { 376fb726d48Sopenharmony_ci workCount = 1; 377fb726d48Sopenharmony_ci // @ts-ignore 378fb726d48Sopenharmony_ci nameIdMap.set(beanData.appName, [beanData.workId]); 379fb726d48Sopenharmony_ci } else { 380fb726d48Sopenharmony_ci // @ts-ignore 381fb726d48Sopenharmony_ci nameIdList.push(beanData.workId); 382fb726d48Sopenharmony_ci workCount = nameIdList.length; 383fb726d48Sopenharmony_ci } 384fb726d48Sopenharmony_ci // @ts-ignore 385fb726d48Sopenharmony_ci let count = workCountMap.get(beanData.appName); 386fb726d48Sopenharmony_ci if (count === undefined) { 387fb726d48Sopenharmony_ci // @ts-ignore 388fb726d48Sopenharmony_ci workCountMap.set(beanData.appName, 1); 389fb726d48Sopenharmony_ci } else { 390fb726d48Sopenharmony_ci // @ts-ignore 391fb726d48Sopenharmony_ci workCountMap.set(beanData.appName, count + 1); 392fb726d48Sopenharmony_ci } 393fb726d48Sopenharmony_ci // @ts-ignore 394fb726d48Sopenharmony_ci beanData.startNs = it.startNs; 395fb726d48Sopenharmony_ci // @ts-ignore 396fb726d48Sopenharmony_ci beanData.count = workCount; 397fb726d48Sopenharmony_ci // @ts-ignore 398fb726d48Sopenharmony_ci beanData.type = 0; 399fb726d48Sopenharmony_ci systemDataList.push(beanData); 400fb726d48Sopenharmony_ci} 401fb726d48Sopenharmony_ci 402fb726d48Sopenharmony_cifunction eventNameWithWorkStop( 403fb726d48Sopenharmony_ci nameIdMap: Map<string, Array<unknown>>, 404fb726d48Sopenharmony_ci beanData: unknown, 405fb726d48Sopenharmony_ci workCountMap: Map<string, number>, 406fb726d48Sopenharmony_ci it: unknown, 407fb726d48Sopenharmony_ci systemDataList: Array<unknown> 408fb726d48Sopenharmony_ci): void { 409fb726d48Sopenharmony_ci // @ts-ignore 410fb726d48Sopenharmony_ci let nameIdList: unknown = nameIdMap.get(beanData.appName); 411fb726d48Sopenharmony_ci // @ts-ignore 412fb726d48Sopenharmony_ci let index = nameIdList.indexOf(beanData.workId); 413fb726d48Sopenharmony_ci if (nameIdList !== undefined && index > -1) { 414fb726d48Sopenharmony_ci // @ts-ignore 415fb726d48Sopenharmony_ci nameIdList.remove(index); 416fb726d48Sopenharmony_ci // @ts-ignore 417fb726d48Sopenharmony_ci let workCount = workCountMap.get(beanData.appName); 418fb726d48Sopenharmony_ci if (workCount !== undefined) { 419fb726d48Sopenharmony_ci workCount = workCount - 1; 420fb726d48Sopenharmony_ci // @ts-ignore 421fb726d48Sopenharmony_ci workCountMap.set(beanData.appName, workCount); 422fb726d48Sopenharmony_ci // @ts-ignore 423fb726d48Sopenharmony_ci beanData.startNs = it.startNs; 424fb726d48Sopenharmony_ci // @ts-ignore 425fb726d48Sopenharmony_ci beanData.count = workCount; 426fb726d48Sopenharmony_ci // @ts-ignore 427fb726d48Sopenharmony_ci beanData.type = 0; 428fb726d48Sopenharmony_ci systemDataList.push(beanData); 429fb726d48Sopenharmony_ci } 430fb726d48Sopenharmony_ci } 431fb726d48Sopenharmony_ci} 432fb726d48Sopenharmony_ci 433fb726d48Sopenharmony_cifunction postMessage(data: unknown, transfer: boolean, hiSysEnergy: HiSysEnergy, len: number): void { 434fb726d48Sopenharmony_ci (self as unknown as Worker).postMessage( 435fb726d48Sopenharmony_ci { 436fb726d48Sopenharmony_ci // @ts-ignore 437fb726d48Sopenharmony_ci id: data.id, 438fb726d48Sopenharmony_ci // @ts-ignore 439fb726d48Sopenharmony_ci action: data.action, 440fb726d48Sopenharmony_ci results: transfer 441fb726d48Sopenharmony_ci ? { 442fb726d48Sopenharmony_ci id: hiSysEnergy.id.buffer, 443fb726d48Sopenharmony_ci startNs: hiSysEnergy.startNs.buffer, 444fb726d48Sopenharmony_ci count: hiSysEnergy.count.buffer, 445fb726d48Sopenharmony_ci type: hiSysEnergy.type.buffer, 446fb726d48Sopenharmony_ci token: hiSysEnergy.token.buffer, 447fb726d48Sopenharmony_ci dataType: hiSysEnergy.dataType.buffer, 448fb726d48Sopenharmony_ci } 449fb726d48Sopenharmony_ci : {}, 450fb726d48Sopenharmony_ci len: len, 451fb726d48Sopenharmony_ci transfer: transfer, 452fb726d48Sopenharmony_ci }, 453fb726d48Sopenharmony_ci transfer 454fb726d48Sopenharmony_ci ? [ 455fb726d48Sopenharmony_ci hiSysEnergy.id.buffer, 456fb726d48Sopenharmony_ci hiSysEnergy.startNs.buffer, 457fb726d48Sopenharmony_ci hiSysEnergy.count.buffer, 458fb726d48Sopenharmony_ci hiSysEnergy.type.buffer, 459fb726d48Sopenharmony_ci hiSysEnergy.token.buffer, 460fb726d48Sopenharmony_ci hiSysEnergy.dataType.buffer, 461fb726d48Sopenharmony_ci ] 462fb726d48Sopenharmony_ci : [] 463fb726d48Sopenharmony_ci ); 464fb726d48Sopenharmony_ci} 465fb726d48Sopenharmony_ci 466fb726d48Sopenharmony_ciclass HiSysEnergy { 467fb726d48Sopenharmony_ci id: Uint16Array; 468fb726d48Sopenharmony_ci startNs: Float64Array; 469fb726d48Sopenharmony_ci count: Uint32Array; 470fb726d48Sopenharmony_ci type: Uint32Array; 471fb726d48Sopenharmony_ci token: Float64Array; 472fb726d48Sopenharmony_ci dataType: Uint16Array; 473fb726d48Sopenharmony_ci 474fb726d48Sopenharmony_ci constructor(data: unknown, res: unknown[], transfer: boolean) { 475fb726d48Sopenharmony_ci // @ts-ignore 476fb726d48Sopenharmony_ci this.id = new Uint16Array(transfer ? res.length : data.params.sharedArrayBuffers.id); 477fb726d48Sopenharmony_ci // @ts-ignore 478fb726d48Sopenharmony_ci this.startNs = new Float64Array(transfer ? res.length : data.params.sharedArrayBuffers.startNs); 479fb726d48Sopenharmony_ci // @ts-ignore 480fb726d48Sopenharmony_ci this.count = new Uint32Array(transfer ? res.length : data.params.sharedArrayBuffers.count); 481fb726d48Sopenharmony_ci // @ts-ignore 482fb726d48Sopenharmony_ci this.type = new Uint32Array(transfer ? res.length : data.params.sharedArrayBuffers.type); 483fb726d48Sopenharmony_ci // @ts-ignore 484fb726d48Sopenharmony_ci this.token = new Float64Array(transfer ? res.length : data.params.sharedArrayBuffers.token); 485fb726d48Sopenharmony_ci // @ts-ignore 486fb726d48Sopenharmony_ci this.dataType = new Uint16Array(transfer ? res.length : data.params.sharedArrayBuffers.dataType); 487fb726d48Sopenharmony_ci } 488fb726d48Sopenharmony_ci} 489fb726d48Sopenharmony_ci 490fb726d48Sopenharmony_cifunction anomalyBufferHandler(data: unknown, res: unknown[], transfer: boolean): void { 491fb726d48Sopenharmony_ci // @ts-ignore 492fb726d48Sopenharmony_ci let id = new Int32Array(transfer ? res.length : data.params.sharedArrayBuffers.id); 493fb726d48Sopenharmony_ci // @ts-ignore 494fb726d48Sopenharmony_ci let startNs = new Float64Array(transfer ? res.length : data.params.sharedArrayBuffers.startNs); 495fb726d48Sopenharmony_ci res.forEach((it, index) => { 496fb726d48Sopenharmony_ci // @ts-ignore 497fb726d48Sopenharmony_ci data.params.trafic === TraficEnum.ProtoBuffer && (it = it.energyData); 498fb726d48Sopenharmony_ci // @ts-ignore 499fb726d48Sopenharmony_ci id[index] = it.id; 500fb726d48Sopenharmony_ci // @ts-ignore 501fb726d48Sopenharmony_ci startNs[index] = it.startNs; 502fb726d48Sopenharmony_ci }); 503fb726d48Sopenharmony_ci (self as unknown as Worker).postMessage( 504fb726d48Sopenharmony_ci { 505fb726d48Sopenharmony_ci // @ts-ignore 506fb726d48Sopenharmony_ci id: data.id, 507fb726d48Sopenharmony_ci // @ts-ignore 508fb726d48Sopenharmony_ci action: data.action, 509fb726d48Sopenharmony_ci results: transfer 510fb726d48Sopenharmony_ci ? { 511fb726d48Sopenharmony_ci id: id.buffer, 512fb726d48Sopenharmony_ci startNs: startNs.buffer, 513fb726d48Sopenharmony_ci } 514fb726d48Sopenharmony_ci : {}, 515fb726d48Sopenharmony_ci len: res.length, 516fb726d48Sopenharmony_ci transfer: transfer, 517fb726d48Sopenharmony_ci }, 518fb726d48Sopenharmony_ci transfer ? [startNs.buffer, id.buffer] : [] 519fb726d48Sopenharmony_ci ); 520fb726d48Sopenharmony_ci} 521fb726d48Sopenharmony_ci 522fb726d48Sopenharmony_cifunction powerBufferHandler(data: unknown, res: unknown[], transfer: boolean): void { 523fb726d48Sopenharmony_ci // @ts-ignore 524fb726d48Sopenharmony_ci let id = new Uint32Array(transfer ? res.length : data.params.sharedArrayBuffers.id); 525fb726d48Sopenharmony_ci // @ts-ignore 526fb726d48Sopenharmony_ci let startNs = new Float64Array(transfer ? res.length : data.params.sharedArrayBuffers.startNs); 527fb726d48Sopenharmony_ci res.forEach((it, index) => { 528fb726d48Sopenharmony_ci // @ts-ignore 529fb726d48Sopenharmony_ci data.params.trafic === TraficEnum.ProtoBuffer && (it = it.energyData); 530fb726d48Sopenharmony_ci // @ts-ignore 531fb726d48Sopenharmony_ci id[index] = it.id; 532fb726d48Sopenharmony_ci // @ts-ignore 533fb726d48Sopenharmony_ci startNs[index] = it.startNs; 534fb726d48Sopenharmony_ci }); 535fb726d48Sopenharmony_ci (self as unknown as Worker).postMessage( 536fb726d48Sopenharmony_ci { 537fb726d48Sopenharmony_ci // @ts-ignore 538fb726d48Sopenharmony_ci id: data.id, 539fb726d48Sopenharmony_ci // @ts-ignore 540fb726d48Sopenharmony_ci action: data.action, 541fb726d48Sopenharmony_ci results: transfer 542fb726d48Sopenharmony_ci ? { 543fb726d48Sopenharmony_ci id: id.buffer, 544fb726d48Sopenharmony_ci startNs: startNs.buffer, 545fb726d48Sopenharmony_ci } 546fb726d48Sopenharmony_ci : {}, 547fb726d48Sopenharmony_ci len: res.length, 548fb726d48Sopenharmony_ci transfer: transfer, 549fb726d48Sopenharmony_ci }, 550fb726d48Sopenharmony_ci transfer ? [id.buffer, startNs.buffer] : [] 551fb726d48Sopenharmony_ci ); 552fb726d48Sopenharmony_ci} 553fb726d48Sopenharmony_ci 554fb726d48Sopenharmony_cifunction stateBufferHandler(data: unknown, res: unknown[], transfer: boolean): void { 555fb726d48Sopenharmony_ci // @ts-ignore 556fb726d48Sopenharmony_ci let startNs = new Float64Array(transfer ? res.length : data.params.sharedArrayBuffers.startNs); 557fb726d48Sopenharmony_ci // @ts-ignore 558fb726d48Sopenharmony_ci let eventValue = new Float32Array(transfer ? res.length : data.params.sharedArrayBuffers.eventValue); 559fb726d48Sopenharmony_ci // @ts-ignore 560fb726d48Sopenharmony_ci let id = new Uint32Array(transfer ? res.length : data.params.sharedArrayBuffers.id); 561fb726d48Sopenharmony_ci res.forEach((it, index) => { 562fb726d48Sopenharmony_ci // @ts-ignore 563fb726d48Sopenharmony_ci data.params.trafic === TraficEnum.ProtoBuffer && (it = it.energyData); 564fb726d48Sopenharmony_ci // @ts-ignore 565fb726d48Sopenharmony_ci id[index] = it.id; 566fb726d48Sopenharmony_ci // @ts-ignore 567fb726d48Sopenharmony_ci startNs[index] = it.startNs; 568fb726d48Sopenharmony_ci // @ts-ignore 569fb726d48Sopenharmony_ci let eventName = it.eventName.toLocaleLowerCase(); 570fb726d48Sopenharmony_ci if (eventName.includes('sensor')) { 571fb726d48Sopenharmony_ci if (eventName.includes('enable')) { 572fb726d48Sopenharmony_ci eventValue[index] = 0; 573fb726d48Sopenharmony_ci } else { 574fb726d48Sopenharmony_ci eventValue[index] = 1; 575fb726d48Sopenharmony_ci } 576fb726d48Sopenharmony_ci } else { 577fb726d48Sopenharmony_ci // @ts-ignore 578fb726d48Sopenharmony_ci eventValue[index] = it.eventValue; 579fb726d48Sopenharmony_ci } 580fb726d48Sopenharmony_ci }); 581fb726d48Sopenharmony_ci (self as unknown as Worker).postMessage( 582fb726d48Sopenharmony_ci { 583fb726d48Sopenharmony_ci // @ts-ignore 584fb726d48Sopenharmony_ci id: data.id, 585fb726d48Sopenharmony_ci // @ts-ignore 586fb726d48Sopenharmony_ci action: data.action, 587fb726d48Sopenharmony_ci results: transfer 588fb726d48Sopenharmony_ci ? { 589fb726d48Sopenharmony_ci id: id.buffer, 590fb726d48Sopenharmony_ci startNs: startNs.buffer, 591fb726d48Sopenharmony_ci eventValue: eventValue.buffer, 592fb726d48Sopenharmony_ci } 593fb726d48Sopenharmony_ci : {}, 594fb726d48Sopenharmony_ci len: res.length, 595fb726d48Sopenharmony_ci transfer: transfer, 596fb726d48Sopenharmony_ci }, 597fb726d48Sopenharmony_ci transfer ? [id.buffer, startNs.buffer, eventValue.buffer] : [] 598fb726d48Sopenharmony_ci ); 599fb726d48Sopenharmony_ci} 600