android_logmsg.cpp revision e9df6ba5a8fcccf306a80b1670b423be8fe7746
1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/****************************************************************************** 2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 3e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Copyright (C) 1999-2012 Broadcom Corporation 4e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 5e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 6e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * you may not use this file except in compliance with the License. 7e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * You may obtain a copy of the License at: 8e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 9e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 11e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * See the License for the specific language governing permissions and 15e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * limitations under the License. 16e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 17e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/ 18e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "OverrideLog.h" 19e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern "C" 20e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 21e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project #include "nfc_hal_target.h" 22e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include <cutils/log.h> 24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef BTE_LOG_BUF_SIZE 27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project #define BTE_LOG_BUF_SIZE 1024 28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BTE_LOG_MAX_SIZE (BTE_LOG_BUF_SIZE - 12) 30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define MAX_NCI_PACKET_SIZE 259 31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define MAX_LOGCAT_LINE 4096 32e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectstatic char log_line[MAX_LOGCAT_LINE]; 33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectstatic const char* sTable = "0123456789abcdef"; 34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern UINT32 ScrProtocolTraceFlag; // = SCR_PROTO_TRACE_ALL; // 0x017F; 36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern "C" 37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project void DispNci (UINT8 *p, UINT16 len, BOOLEAN is_recv); 39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project void DispHciCmd (BT_HDR *p_buf); 40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project void DispHciEvt (BT_HDR *p_buf); 41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid LogMsg (UINT32 trace_set_mask, const char *fmt_str, ...) 45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project static char buffer [BTE_LOG_BUF_SIZE]; 47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project va_list ap; 48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT32 trace_type = trace_set_mask & 0x07; //lower 3 bits contain trace type 49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project int android_log_type = ANDROID_LOG_INFO; 50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project va_start (ap, fmt_str); 52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project vsnprintf (buffer, BTE_LOG_MAX_SIZE, fmt_str, ap); 53e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project va_end (ap); 54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (trace_type == TRACE_TYPE_ERROR) 55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project android_log_type = ANDROID_LOG_ERROR; 56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project __android_log_write (android_log_type, "NfcNciHal", buffer); 57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 59e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid DispNci (UINT8 *data, UINT16 len, BOOLEAN is_recv) 61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 62e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (!(ScrProtocolTraceFlag & SCR_PROTO_TRACE_NCI)) 63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return; 64e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project char line_buf[(MAX_NCI_PACKET_SIZE*2)+1]; 66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project int i,j; 67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project for(i = 0, j = 0; i < len && j < sizeof(line_buf)-3; i++) 69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project line_buf[j++] = sTable[(*data >> 4) & 0xf]; 71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project line_buf[j++] = sTable[*data & 0xf]; 72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project data++; 73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project line_buf[j] = '\0'; 75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project __android_log_write(ANDROID_LOG_DEBUG, (is_recv) ? "BrcmNciR": "BrcmNciX", line_buf); 77e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 78e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 79e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid DispHciCmd (BT_HDR *p_buf) 81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project int i,j; 83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project int nBytes = ((BT_HDR_SIZE + p_buf->offset + p_buf->len)*2)+1; 84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 * data = (UINT8*) p_buf; 85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project int data_len = BT_HDR_SIZE + p_buf->offset + p_buf->len; 86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (appl_trace_level < BT_TRACE_LEVEL_DEBUG) 88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return; 89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (nBytes > sizeof(log_line)) 91e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return; 92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 93e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project for(i = 0, j = 0; i < data_len && j < sizeof(log_line)-3; i++) 94e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project log_line[j++] = sTable[(*data >> 4) & 0xf]; 96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project log_line[j++] = sTable[*data & 0xf]; 97e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project data++; 98e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 99e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project log_line[j] = '\0'; 100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project __android_log_write(ANDROID_LOG_DEBUG, "BrcmHciX", log_line); 102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 105e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid DispHciEvt (BT_HDR *p_buf) 106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 107e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project int i,j; 108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project int nBytes = ((BT_HDR_SIZE + p_buf->offset + p_buf->len)*2)+1; 109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 * data = (UINT8*) p_buf; 110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project int data_len = BT_HDR_SIZE + p_buf->offset + p_buf->len; 111e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 112e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (appl_trace_level < BT_TRACE_LEVEL_DEBUG) 113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return; 114e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (nBytes > sizeof(log_line)) 116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return; 117e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 118e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project for(i = 0, j = 0; i < data_len && j < sizeof(log_line)-3; i++) 119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project log_line[j++] = sTable[(*data >> 4) & 0xf]; 121e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project log_line[j++] = sTable[*data & 0xf]; 122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project data++; 123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 124e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project log_line[j] = '\0'; 125e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project __android_log_write(ANDROID_LOG_DEBUG, "BrcmHciR", log_line); 127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 128