# Copyright (C) 2022 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Contains tables for relevant for Android.""" from python.generators.trace_processor_table.public import Column as C from python.generators.trace_processor_table.public import CppDouble from python.generators.trace_processor_table.public import CppInt32 from python.generators.trace_processor_table.public import CppInt64 from python.generators.trace_processor_table.public import CppOptional from python.generators.trace_processor_table.public import CppSelfTableId from python.generators.trace_processor_table.public import CppString from python.generators.trace_processor_table.public import Table from python.generators.trace_processor_table.public import TableDoc from python.generators.trace_processor_table.public import CppTableId from python.generators.trace_processor_table.public import CppUint32 from src.trace_processor.tables.metadata_tables import THREAD_TABLE ANDROID_LOG_TABLE = Table( python_module=__file__, class_name="AndroidLogTable", sql_name="android_logs", columns=[ C("ts", CppInt64()), C("utid", CppTableId(THREAD_TABLE)), C("prio", CppUint32()), C("tag", CppOptional(CppString())), C("msg", CppString()), ], tabledoc=TableDoc( doc=''' Log entries from Android logcat. NOTE: this table is not sorted by timestamp. This is why we omit the sorted flag on the ts column. ''', group='Events', columns={ 'ts': 'Timestamp of log entry.', 'utid': 'Thread writing the log entry.', 'prio': 'Priority of the log. 3=DEBUG, 4=INFO, 5=WARN, 6=ERROR.', 'tag': 'Tag of the log entry.', 'msg': 'Content of the log entry.' })) ANDROID_GAME_INTERVENTION_LIST_TABLE = Table( python_module=__file__, class_name='AndroidGameInterventionListTable', sql_name='android_game_intervention_list', columns=[ C('package_name', CppString()), C('uid', CppInt64()), C('current_mode', CppInt32()), C('standard_mode_supported', CppInt32()), C('standard_mode_downscale', CppOptional(CppDouble())), C('standard_mode_use_angle', CppOptional(CppInt32())), C('standard_mode_fps', CppOptional(CppDouble())), C('perf_mode_supported', CppInt32()), C('perf_mode_downscale', CppOptional(CppDouble())), C('perf_mode_use_angle', CppOptional(CppInt32())), C('perf_mode_fps', CppOptional(CppDouble())), C('battery_mode_supported', CppInt32()), C('battery_mode_downscale', CppOptional(CppDouble())), C('battery_mode_use_angle', CppOptional(CppInt32())), C('battery_mode_fps', CppOptional(CppDouble())), ], tabledoc=TableDoc( doc=''' A table presenting all game modes and interventions of games installed on the system. This is generated by the game_mode_intervention data-source. ''', group='Misc', columns={ 'package_name': '''name of the pakcage, e.g. com.google.android.gm.''', 'uid': '''UID processes of this package runs as.''', 'current_mode': '''current game mode the game is running at.''', 'standard_mode_supported': '''bool whether standard mode is supported.''', 'standard_mode_downscale': ''' resolution downscaling factor of standard mode. ''', 'standard_mode_use_angle': '''bool whether ANGLE is used in standard mode.''', 'standard_mode_fps': ''' frame rate that the game is throttled at in standard mode. ''', 'perf_mode_supported': '''bool whether performance mode is supported.''', 'perf_mode_downscale': '''resolution downscaling factor of performance mode.''', 'perf_mode_use_angle': '''bool whether ANGLE is used in performance mode.''', 'perf_mode_fps': ''' frame rate that the game is throttled at in performance mode. ''', 'battery_mode_supported': '''bool whether battery mode is supported.''', 'battery_mode_downscale': '''resolution downscaling factor of battery mode.''', 'battery_mode_use_angle': '''bool whether ANGLE is used in battery mode.''', 'battery_mode_fps': ''' frame rate that the game is throttled at in battery mode. ''' })) ANDROID_DUMPSTATE_TABLE = Table( python_module=__file__, class_name='AndroidDumpstateTable', sql_name='android_dumpstate', columns=[ C('section', CppOptional(CppString())), C('service', CppOptional(CppString())), C('line', CppString()), ], tabledoc=TableDoc( doc=''' Dumpsys entries from Android dumpstate. ''', group='Events', columns={ 'section': '''name of the dumpstate section.''', 'service': ''' name of the dumpsys service. Only present when dumpstate=="dumpsys", NULL otherwise. ''', 'line': ''' line-by-line contents of the section/service, one row per line. ''' })) # Keep this list sorted. ALL_TABLES = [ ANDROID_LOG_TABLE, ANDROID_DUMPSTATE_TABLE, ANDROID_GAME_INTERVENTION_LIST_TABLE, ]