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