| /* | |
| * Copyright (c) 2019, 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, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT | |
| * 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 "adspmsgd_apps.h" | |
| #include "remote.h" | |
| #include <stdio.h> | |
| #include <android/log.h> | |
| #define LOG_NODE_SIZE 258 | |
| #define LOG_FILENAME_SIZE 30 | |
| #define LOG_MSG_SIZE LOG_NODE_SIZE - LOG_FILENAME_SIZE - \ | |
| sizeof(enum adspmsgd_apps_Level) - (3*sizeof(unsigned short)) | |
| typedef struct __attribute__((packed)) | |
| { | |
| enum adspmsgd_apps_Level level; | |
| unsigned short line; | |
| unsigned short thread_id; | |
| unsigned short asid; | |
| char str[LOG_MSG_SIZE]; | |
| char file [LOG_FILENAME_SIZE]; | |
| } LogNode; | |
| static inline android_LogPriority convert_level_to_android_priority( | |
| enum adspmsgd_apps_Level level) | |
| { | |
| switch (level) { | |
| case LOW: | |
| return ANDROID_LOG_DEBUG; | |
| case MEDIUM: | |
| return ANDROID_LOG_INFO; | |
| case HIGH: | |
| return ANDROID_LOG_WARN; | |
| case ERROR: | |
| return ANDROID_LOG_ERROR; | |
| case FATAL: | |
| return ANDROID_LOG_FATAL; | |
| default: | |
| return ANDROID_LOG_DEFAULT; | |
| } | |
| } | |
| int adspmsgd_apps_log(const unsigned char *log_message_buffer, | |
| int log_message_bufferLen) | |
| { | |
| LogNode *logMessage = (LogNode *)log_message_buffer; | |
| while ( (log_message_bufferLen > 0) && (logMessage != NULL)) { | |
| __android_log_print(convert_level_to_android_priority(logMessage->level), | |
| "adsprpc", "%s:%d:0x%x:%d:%s", logMessage->file, logMessage->line, | |
| logMessage->thread_id, logMessage->asid, logMessage->str); | |
| logMessage++; | |
| log_message_bufferLen -= sizeof(LogNode); | |
| }; | |
| return 0; | |
| } |