1a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard/* 2a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard** 3a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard** Copyright 2011, The Android Open Source Project 4a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard** 5a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard** Licensed under the Apache License, Version 2.0 (the "License"); 6a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard** you may not use this file except in compliance with the License. 7a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard** You may obtain a copy of the License at 8a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard** 9a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard** http://www.apache.org/licenses/LICENSE-2.0 10a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard** 11a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard** Unless required by applicable law or agreed to in writing, software 12a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard** distributed under the License is distributed on an "AS IS" BASIS, 13a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard** See the License for the specific language governing permissions and 15a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard** limitations under the License. 16a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard*/ 17a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard 18a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard#ifndef LATINIME_DEBUG_H 19a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard#define LATINIME_DEBUG_H 20a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard 21a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard#include "defines.h" 22a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard 23a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalardstatic inline unsigned char* convertToUnibyteString(unsigned short* input, unsigned char* output, 24a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard const unsigned int length) { 251ff8dc47be1734555af1c0c011ea6cf72b395a43Jean Chalard unsigned int i = 0; 26a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard for (; i <= length && input[i] != 0; ++i) 27a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard output[i] = input[i] & 0xFF; 28a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard output[i] = 0; 29a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard return output; 30a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard} 31ce9e52a12a6af8fca0eba42aaae24602fbd5c998Ken Wakasa 32a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalardstatic inline unsigned char* convertToUnibyteStringAndReplaceLastChar(unsigned short* input, 33a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard unsigned char* output, const unsigned int length, unsigned char c) { 341ff8dc47be1734555af1c0c011ea6cf72b395a43Jean Chalard unsigned int i = 0; 35a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard for (; i <= length && input[i] != 0; ++i) 36a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard output[i] = input[i] & 0xFF; 371ff8dc47be1734555af1c0c011ea6cf72b395a43Jean Chalard if (i > 0) output[i-1] = c; 38a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard output[i] = 0; 39a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard return output; 40a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard} 41ce9e52a12a6af8fca0eba42aaae24602fbd5c998Ken Wakasa 42a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalardstatic inline void LOGI_S16(unsigned short* string, const unsigned int length) { 43a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard unsigned char tmp_buffer[length]; 44a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard convertToUnibyteString(string, tmp_buffer, length); 459fb6f47a6a11f62d134d4d6259181ac987fc1ad3satok AKLOGI(">> %s", tmp_buffer); 46a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard // The log facility is throwing out log that comes too fast. The following 47a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard // is a dirty way of slowing down processing so that we can see all log. 48a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard // TODO : refactor this in a blocking log or something. 49a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard // usleep(10); 50a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard} 51ce9e52a12a6af8fca0eba42aaae24602fbd5c998Ken Wakasa 52a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalardstatic inline void LOGI_S16_PLUS(unsigned short* string, const unsigned int length, 53a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard unsigned char c) { 54a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard unsigned char tmp_buffer[length+1]; 55a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard convertToUnibyteStringAndReplaceLastChar(string, tmp_buffer, length, c); 569fb6f47a6a11f62d134d4d6259181ac987fc1ad3satok AKLOGI(">> %s", tmp_buffer); 57a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard // Likewise 58a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard // usleep(10); 59a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard} 60a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard 61c2bbc6a4499a6da979381fa0e8e6e855a5ac6aa4Jean Chalardstatic inline void printDebug(const char* tag, int* codes, int codesSize, int MAX_PROXIMITY_CHARS) { 62c2bbc6a4499a6da979381fa0e8e6e855a5ac6aa4Jean Chalard unsigned char *buf = (unsigned char*)malloc((1 + codesSize) * sizeof(*buf)); 63c2bbc6a4499a6da979381fa0e8e6e855a5ac6aa4Jean Chalard 64c2bbc6a4499a6da979381fa0e8e6e855a5ac6aa4Jean Chalard buf[codesSize] = 0; 65c2bbc6a4499a6da979381fa0e8e6e855a5ac6aa4Jean Chalard while (--codesSize >= 0) 66c2bbc6a4499a6da979381fa0e8e6e855a5ac6aa4Jean Chalard buf[codesSize] = (unsigned char)codes[codesSize * MAX_PROXIMITY_CHARS]; 679fb6f47a6a11f62d134d4d6259181ac987fc1ad3satok AKLOGI("%s, WORD = %s", tag, buf); 68c2bbc6a4499a6da979381fa0e8e6e855a5ac6aa4Jean Chalard 69c2bbc6a4499a6da979381fa0e8e6e855a5ac6aa4Jean Chalard free(buf); 70c2bbc6a4499a6da979381fa0e8e6e855a5ac6aa4Jean Chalard} 71c2bbc6a4499a6da979381fa0e8e6e855a5ac6aa4Jean Chalard 72a5d58497018f465080f08fbbfed35de883bc8be3Jean Chalard#endif // LATINIME_DEBUG_H 73