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 { query } from '../SqlLite'; 17fb726d48Sopenharmony_ciimport { ClockStruct } from '../ui-worker/ProcedureWorkerClock'; 18fb726d48Sopenharmony_ci 19fb726d48Sopenharmony_ciexport const queryClockData = (traceId?: string): Promise< 20fb726d48Sopenharmony_ci Array<{ 21fb726d48Sopenharmony_ci name: string; 22fb726d48Sopenharmony_ci num: number; 23fb726d48Sopenharmony_ci srcname: string; 24fb726d48Sopenharmony_ci maxValue?: number; 25fb726d48Sopenharmony_ci }> 26fb726d48Sopenharmony_ci> => 27fb726d48Sopenharmony_ci query( 28fb726d48Sopenharmony_ci 'queryClockData', 29fb726d48Sopenharmony_ci ` 30fb726d48Sopenharmony_ci select name || ' Frequency' name, COUNT(*) num, name srcname 31fb726d48Sopenharmony_cifrom (select id, name 32fb726d48Sopenharmony_ci from clock_event_filter 33fb726d48Sopenharmony_ci where type = 'clock_set_rate') 34fb726d48Sopenharmony_cigroup by name 35fb726d48Sopenharmony_ciunion 36fb726d48Sopenharmony_ciselect name || ' State' name, COUNT(*) num, name srcname 37fb726d48Sopenharmony_cifrom (select id, name 38fb726d48Sopenharmony_ci from clock_event_filter 39fb726d48Sopenharmony_ci where type != 'clock_set_rate') 40fb726d48Sopenharmony_cigroup by name; 41fb726d48Sopenharmony_ci`, {}, {traceId: traceId} 42fb726d48Sopenharmony_ci ); 43fb726d48Sopenharmony_ci 44fb726d48Sopenharmony_ciexport const queryClockFrequency = (clockName: string): Promise<Array<ClockStruct>> => 45fb726d48Sopenharmony_ci query( 46fb726d48Sopenharmony_ci 'queryClockFrequency', 47fb726d48Sopenharmony_ci `with freq as ( select measure.filter_id, measure.ts, measure.type, measure.value from clock_event_filter 48fb726d48Sopenharmony_ci left join measure 49fb726d48Sopenharmony_ci where 50fb726d48Sopenharmony_ci clock_event_filter.name = $clockName 51fb726d48Sopenharmony_ci and 52fb726d48Sopenharmony_ci clock_event_filter.type = 'clock_set_rate' 53fb726d48Sopenharmony_ci and 54fb726d48Sopenharmony_ci clock_event_filter.id = measure.filter_id 55fb726d48Sopenharmony_ci order by measure.ts) 56fb726d48Sopenharmony_ci select 57fb726d48Sopenharmony_ci freq.filter_id as filterId, 58fb726d48Sopenharmony_ci freq.ts - r.start_ts as startNS,freq.type,freq.value from freq,trace_range r order by startNS`, 59fb726d48Sopenharmony_ci { $clockName: clockName } 60fb726d48Sopenharmony_ci ); 61fb726d48Sopenharmony_ci 62fb726d48Sopenharmony_ciexport const queryClockState = (clockName: string): Promise<Array<ClockStruct>> => 63fb726d48Sopenharmony_ci query( 64fb726d48Sopenharmony_ci 'queryClockState', 65fb726d48Sopenharmony_ci `with state as ( 66fb726d48Sopenharmony_ci select 67fb726d48Sopenharmony_ci filter_id, 68fb726d48Sopenharmony_ci ts, 69fb726d48Sopenharmony_ci endts, 70fb726d48Sopenharmony_ci endts-ts as dur, 71fb726d48Sopenharmony_ci type, 72fb726d48Sopenharmony_ci value 73fb726d48Sopenharmony_ci from 74fb726d48Sopenharmony_ci (select 75fb726d48Sopenharmony_ci measure.filter_id, 76fb726d48Sopenharmony_ci measure.ts, 77fb726d48Sopenharmony_ci lead(ts, 1, null) over( order by measure.ts) endts, 78fb726d48Sopenharmony_ci measure.type, 79fb726d48Sopenharmony_ci measure.value 80fb726d48Sopenharmony_ci from clock_event_filter,trace_range 81fb726d48Sopenharmony_ci left join measure 82fb726d48Sopenharmony_ci where 83fb726d48Sopenharmony_ci clock_event_filter.name = $clockName 84fb726d48Sopenharmony_ci and clock_event_filter.type != 'clock_set_rate' and clock_event_filter.id = measure.filter_id 85fb726d48Sopenharmony_ci order by measure.ts)) 86fb726d48Sopenharmony_ci select s.filter_id as filterId,s.ts-r.start_ts as startNS,s.type,s.value,s.dur from state s,trace_range r`, 87fb726d48Sopenharmony_ci { $clockName: clockName } 88fb726d48Sopenharmony_ci ); 89fb726d48Sopenharmony_ci 90fb726d48Sopenharmony_ciexport const queryBootTime = (): //@ts-ignore 91fb726d48Sopenharmony_ciPromise<Array<unknown>> => 92fb726d48Sopenharmony_ci query( 93fb726d48Sopenharmony_ci 'queryBootTime', 94fb726d48Sopenharmony_ci `select CS.ts -TR.start_ts as ts ,clock_name from clock_snapshot as CS ,trace_range as TR 95fb726d48Sopenharmony_ci where clock_name = 'boottime'`, 96fb726d48Sopenharmony_ci {} 97fb726d48Sopenharmony_ci ); 98fb726d48Sopenharmony_ci 99fb726d48Sopenharmony_ciexport const queryScreenState = (): Promise<Array<ClockStruct>> => 100fb726d48Sopenharmony_ci query( 101fb726d48Sopenharmony_ci 'queryScreenState', 102fb726d48Sopenharmony_ci `select 103fb726d48Sopenharmony_ci m.type, 104fb726d48Sopenharmony_ci m.ts-r.start_ts as startNS, 105fb726d48Sopenharmony_ci value, filter_id as filterId 106fb726d48Sopenharmony_ci from 107fb726d48Sopenharmony_ci measure m,trace_range r 108fb726d48Sopenharmony_ci where filter_id in (select id from process_measure_filter where name = 'ScreenState') order by startNS; 109fb726d48Sopenharmony_ci` 110fb726d48Sopenharmony_ci ); 111fb726d48Sopenharmony_ci 112fb726d48Sopenharmony_ciexport const queryRealTime = (): Promise< 113fb726d48Sopenharmony_ci Array<{ 114fb726d48Sopenharmony_ci ts: number; 115fb726d48Sopenharmony_ci name: string; 116fb726d48Sopenharmony_ci }> 117fb726d48Sopenharmony_ci> => 118fb726d48Sopenharmony_ci query( 119fb726d48Sopenharmony_ci 'queryRealTime', 120fb726d48Sopenharmony_ci `SELECT 121fb726d48Sopenharmony_ci ( CASE WHEN CS.clock_name = 'realtime' THEN CS.ts ELSE CS.ts - TR.start_ts END ) AS ts, 122fb726d48Sopenharmony_ci CS.clock_name AS name 123fb726d48Sopenharmony_ci FROM 124fb726d48Sopenharmony_ci clock_snapshot AS CS, 125fb726d48Sopenharmony_ci trace_range AS TR 126fb726d48Sopenharmony_ci WHERE 127fb726d48Sopenharmony_ci CS.clock_name = 'realtime' 128fb726d48Sopenharmony_ci OR CS.clock_name = 'boottime';` 129fb726d48Sopenharmony_ci ); 130