1ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta/****************************************************************************** 2ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * 3ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * Copyright (C) 2014 The Android Open Source Project 4ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * Copyright 2002 - 2004 Open Interface North America, Inc. All rights reserved. 5ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * 6ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * Licensed under the Apache License, Version 2.0 (the "License"); 7ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * you may not use this file except in compliance with the License. 8ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * You may obtain a copy of the License at: 9ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * 10ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * http://www.apache.org/licenses/LICENSE-2.0 11ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * 12ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * Unless required by applicable law or agreed to in writing, software 13ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * distributed under the License is distributed on an "AS IS" BASIS, 14ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * See the License for the specific language governing permissions and 16ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * limitations under the License. 17ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * 18ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta ******************************************************************************/ 19ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta#ifndef _OI_OSINTERFACE_H 20ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta#define _OI_OSINTERFACE_H 21ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta/** 22ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta @file 23ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * This file provides the platform-independent interface for functions for which 24ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * implementation is platform-specific. 25ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * 26ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * The functions in this header file define the operating system or hardware 27ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * services needed by the BLUEmagic 3.0 protocol stack. The 28ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * actual implementation of these services is platform-dependent. 29ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * 30ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta */ 31ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 32ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta/********************************************************************************** 33ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta $Revision: #1 $ 34ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta***********************************************************************************/ 35ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 36ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta#include "oi_stddefs.h" 37ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta#include "oi_time.h" 38ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta#include "oi_status.h" 39ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta#include "oi_modules.h" 40ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 41ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta/** \addtogroup Misc Miscellaneous APIs */ 42ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta/**@{*/ 43ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 44ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta#ifdef __cplusplus 45ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Guptaextern "C" { 46ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta#endif 47ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 48ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 49ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta/** 50ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * Terminates execution. 51ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * 52ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * @param reason Reason for termination 53ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta */ 54ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Guptavoid OI_FatalError(OI_STATUS reason); 55ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 56ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta/** 57ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * This function logs an error. 58ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * 59ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * When built for release mode, BLUEmagic 3 errors are logged to 60ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * this function. (in debug mode, errors are logged via 61ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * OI_Print()). 62ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * 63ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * @param module Module in which the error was detected (see 64ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * oi_modules.h) 65ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * @param lineno Line number of the C file OI_SLOG_ERROR called 66ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * @param status Status code associated with the error event 67ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta */ 68ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Guptavoid OI_LogError(OI_MODULE module, OI_INT lineno, OI_STATUS status); 69ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 70ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta/** 71ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * This function initializes the debug code handling. 72ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * 73ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * When built for debug mode, this function performs platform 74ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * dependent initialization to handle message codes passed in 75ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * via OI_SetMsgCode(). 76ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta */ 77ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Guptavoid OI_InitDebugCodeHandler(void); 78ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 79ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 80ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta/** 81ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * This function reads the time from the real time clock. 82ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * 83ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * All timing in BM3 is relative, typically a granularity 84ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * of 5 or 10 msecs is adequate. 85ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * 86ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * @param[out] now Pointer to the buffer to which the current 87ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * time will be returned 88ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta */ 89ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Guptavoid OI_Time_Now(OI_TIME *now); 90ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 91ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta/** 92ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * This function causes the current thread to sleep for the 93ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * specified amount of time. This function must be called 94ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * without the stack access token. 95ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * 96ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * @note BM3 corestack and profiles never suspend and never call 97ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * OI_Sleep. The use of OI_Sleep is limited to applications and 98ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * platform-specific code. 99ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * 100ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * If your port and applications never use OI_Sleep, this function can be left unimplemented. 101ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * 102ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * @param milliseconds Number of milliseconds to sleep 103ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta */ 104ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Guptavoid OI_Sleep(OI_UINT32 milliseconds); 105ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 106ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 107ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta/** 108ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * Defines for message type codes. 109ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta */ 110ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta#define OI_MSG_CODE_APPLICATION 0 /**< Application output */ 111ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta#define OI_MSG_CODE_ERROR 1 /**< Error message output */ 112ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta#define OI_MSG_CODE_WARNING 2 /**< Warning message output */ 113ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta#define OI_MSG_CODE_TRACE 3 /**< User API function trace output */ 114ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta#define OI_MSG_CODE_PRINT1 4 /**< Catagory 1 debug print output */ 115ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta#define OI_MSG_CODE_PRINT2 5 /**< Catagory 2 debug print output */ 116ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta#define OI_MSG_CODE_HEADER 6 /**< Error/Debug output header */ 117ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 118ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta/** 119ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * This function is used to indicate the type of text being output with 120ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * OI_Print(). For the Linux and Win32 platforms, it will set 121ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * the color of the text. Other possible uses could be to insert 122ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * HTML style tags, add some other message type indication, or 123ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * be completely ignored altogether. 124ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * 125ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * @param code OI_MSG_CODE_* indicating setting the message type. 126ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta */ 127ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Guptavoid OI_SetMsgCode(OI_UINT8 code); 128ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 129ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta/** 130ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * All output from OI_Printf() and all debug output is sent to OI_Print. 131ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * Typically, if the platform has a console, OI_Print() is sent to stdout. 132ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * Embedded platforms typically send OI_Print() output to a serial port. 133ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * 134ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * @param str String to print 135ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta */ 136ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Guptavoid OI_Print(OI_CHAR const *str); 137ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 138ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta/** 139ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * In cases where OI_Print() is sending output to a logfile in addition to console, 140ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * it is desirable to also put console input into the logfile. 141ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * This function can be called by the console input process. 142ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * 143ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * @note This is an optional API which is strictly 144ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * between the platform-specific stack_console and osinterface 145ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * modules. This API need only be implemented on those 146ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * platforms where is serves a useful purpose, e.g., win32. 147ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * 148ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * @param str Console input string 149ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta */ 150ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 151ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Guptavoid OI_Print_ConsoleInput(OI_CHAR const *str); 152ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 153ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta/** 154ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * This function computes the CRC16 of the program image. 155ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta */ 156ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant GuptaOI_UINT16 OI_ProgramImageCRC16(void); 157ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 158ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta/** 159ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * Writes an integer to stdout in hex. This macro is intended 160ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * for selective use when debugging in small memory 161ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * configurations or other times when it is not possible to use 162ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * OI_DBGPRINT. 163ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * 164ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * @param n the integer to print 165ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta */ 166ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 167ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta#define OI_Print_Int(n) \ 168ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta{ \ 169ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta static const OI_CHAR _digits[] = "0123456789ABCDEF"; \ 170ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta OI_CHAR _buf[9]; \ 171ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta OI_CHAR *_str = &_buf[8]; \ 172ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta OI_UINT32 _i = n; \ 173ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta *_str = 0; \ 174ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta do { *(--_str) = _digits[(_i & 0xF)]; _i >>= 4; } while (_i); \ 175ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta OI_Print(_str); \ 176ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta} 177ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 178ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta/** 179ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * Application Dynamic Memory allocation. 180ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * 181ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * These APIs are provided for application use on those 182ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * platforms which have no dynamic memory support. Memory is 183ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * allocated from the pool-based heap managed by the stack's 184ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta * internal memory manager. 185ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta */ 186ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Guptavoid *OI_APP_Malloc(OI_INT32 size); 187ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Guptavoid OI_APP_Free(void *ptr); 188ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 189ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta/*****************************************************************************/ 190ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta#ifdef __cplusplus 191ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta} 192ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta#endif 193ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 194ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta/**@}*/ 195ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 196ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta#endif /* _OI_OSINTERFACE_H */ 197ce24765fe7620c34e8d88ed4f826c8a6917582b2Hemant Gupta 198