metrics.h revision 77f579f8258ffe6c31c987e9b2d018c853f2af88
177f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen/****************************************************************************** 277f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen * 377f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen * Copyright (C) 2016 Google, Inc. 477f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen * 577f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen * Licensed under the Apache License, Version 2.0 (the "License"); 677f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen * you may not use this file except in compliance with the License. 777f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen * You may obtain a copy of the License at: 877f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen * 977f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen * http://www.apache.org/licenses/LICENSE-2.0 1077f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen * 1177f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen * Unless required by applicable law or agreed to in writing, software 1277f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen * distributed under the License is distributed on an "AS IS" BASIS, 1377f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1477f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen * See the License for the specific language governing permissions and 1577f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen * limitations under the License. 1677f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen * 1777f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen ******************************************************************************/ 1877f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen 1977f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen#pragma once 2077f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen 2177f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen#include <stdint.h> 2277f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen 2377f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssentypedef enum { 2477f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen DEVICE_TYPE_UNKNOWN, 2577f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen DEVICE_TYPE_BREDR, 2677f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen DEVICE_TYPE_LE, 2777f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen DEVICE_TYPE_DUMO, 2877f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen} device_type_t; 2977f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen 3077f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen// Record a pairing event at Unix epoch time |timestamp_ms| 3177f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen// |device_class| and |device_type| denote the type of device paired. 3277f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen// |disconnect_reason| is the HCI reason for pairing disconnection, 3377f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen// see stack/include/hcidefs.h 3477f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssenvoid metrics_pair_event(uint32_t disconnect_reason, uint64_t timestamp_ms, 3577f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen uint32_t device_class, device_type_t device_type); 3677f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen 3777f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssentypedef enum { 3877f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen WAKE_EVENT_UNKNOWN, 3977f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen WAKE_EVENT_ACQUIRED, 4077f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen WAKE_EVENT_RELEASED, 4177f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen} wake_event_type_t; 4277f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen 4377f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen// Record a wake event at Unix epoch time |timestamp_ms|. 4477f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen// |type| specifies whether it was acquired or relased, 4577f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen// |requestor| if provided is the service requesting the wake lock. 4677f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen// |name| is the name of the wake lock held. 4777f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssenvoid metrics_wake_event(wake_event_type_t type, const char *requestor, 4877f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen const char *name, uint64_t timestamp_ms); 4977f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen 5077f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssentypedef enum { 5177f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen SCAN_TYPE_UNKNOWN, 5277f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen SCAN_TECH_TYPE_LE, 5377f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen SCAN_TECH_TYPE_BREDR, 5477f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen SCAN_TECH_TYPE_BOTH, 5577f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen} scan_tech_t; 5677f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen 5777f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen// Record a scan event at Unix epoch time |timestamp_ms|. 5877f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen// |start| is true if this is the beginning of the scan. 5977f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen// |initiator| is a unique ID identifying the app starting the scan. 6077f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen// |type| is whether the scan reports BR/EDR, LE, or both. 6177f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen// |results| is the number of results to be reported. 6277f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssenvoid metrics_scan_event(bool start, const char *initator, scan_tech_t type, 6377f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen uint32_t results, uint64_t timestamp_ms); 6477f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen 6577f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen// Writes the metrics, in packed protobuf format, into the descriptor |fd|. 6677f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen// If |clear| is true, metrics events are cleared afterwards. 6777f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssenvoid metrics_write(int fd, bool clear); 6877f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen 6977f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen// Writes the metrics, in human-readable protobuf format, into the descriptor 7077f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssen// |fd|. If |clear| is true, metrics events are cleared afterwards. 7177f579f8258ffe6c31c987e9b2d018c853f2af88Marie Janssenvoid metrics_print(int fd, bool clear); 72