summaryrefslogtreecommitdiff
path: root/include/bt_logger_lib.h
blob: 2ef667ace4411fa09f9607d7abb265a67031ff17 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/*********************************************************************
*
* Copyright (c) 2016, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
*   * Redistributions of source code must retain the above copyright
*     notice, this list of conditions and the following disclaimer.
*   * Redistributions in binary form must reproduce the above
*     copyright notice, this list of conditions and the following
*     disclaimer in the documentation and/or other materials provided
*     with the distribution.
*   * Neither the name of The Linux Foundation nor the names of its
*     contributors may be used to endorse or promote products derived
*     from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
************************************************************************/

#include <stdio.h>
#include <sys/types.h>

/**
 * Commands
 */
typedef enum  {
    VENDOR_LOGGER_LOGS = 201, // Signifies Packet containing Logger Log
    GENERATE_VND_LOG_SIGNAL, // Signifies command to generate logs
    START_SNOOP_SIGNAL,
    STOP_SNOOP_SIGNAL,
    STOP_LOGGING_SIGNAL,
} CommandTypes;

/*
** Set property: "persist.bt_logger.log_mask" by ORing these features

** Example: To enable Full snoop logging and Dynamic logcat logs capture,
** property value should be (HCI_SNOOP_LOG_FULL|DYNAMIC_LOGCAT_CAPTURE) = 3
*/
typedef enum {
    HCI_SNOOP_LOG_FULL = 1,     // Complete HCI snoop logs with media packets
    DYNAMIC_LOGCAT_CAPTURE = 2, // Level 6 logcat logs over logger socket
    HCI_SNOOP_LOG_LITE = 4,     // Always enabled, HCI snoop logs sans media packets
    HCI_SNOOP_ONLY_HEADER = 8,  //  HCI snoop logs with only ACL Header packets
    HCI_SNOOP_LOG_PROFILEFILTER = 16, // Profile filtered mode
} LoggingFlags;

void init_vnd_Logger(void);
void clean_vnd_logger(void);

typedef struct {
    /** Set to sizeof(bt_vndor_interface_t) */
    size_t          size;

    /*
     * Functions need to be implemented in Logger libray (libbt-logClient.so).
     */

    /*
     *  Initialize logging by conneting client socket
     *  to Logger process
     */
    int   (*init)(void);

    /**  Sending Logs of Logger process */
    void (*send_log_msg)(const char *tag, const char *fmt_str, va_list ap);
    void (*send_log_data)(const char *tag, const char *fmt_str, ...);

    /**  Sending Logs of Logger process */
    void (*send_event)(char evt);

    /** Closes the socket connection to logger process */
    int  (*cleanup)(void);

} bt_logger_interface_t;

extern uint16_t vendor_logging_level;

#define GENERATE_VND_LOGS() if(logger_interface)logger_interface->send_event(GENERATE_VND_LOG_SIGNAL)
#define START_SNOOP_LOGGING() if(logger_interface)logger_interface->send_event(START_SNOOP_SIGNAL)
#define STOP_SNOOP_LOGGING() if(logger_interface)logger_interface->send_event(STOP_SNOOP_SIGNAL)