| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- /******************************************************************************
- *
- * Copyright (C) 2014 The Android Open Source Project
- * Copyright 2002 - 2004 Open Interface North America, Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************/
- #ifndef _OI_OSINTERFACE_H
- #define _OI_OSINTERFACE_H
- /**
- @file
- * This file provides the platform-independent interface for functions for which
- * implementation is platform-specific.
- *
- * The functions in this header file define the operating system or hardware
- * services needed by the BLUEmagic 3.0 protocol stack. The
- * actual implementation of these services is platform-dependent.
- *
- */
- /**********************************************************************************
- $Revision: #1 $
- ***********************************************************************************/
- #include "oi_stddefs.h"
- #include "oi_time.h"
- #include "oi_status.h"
- #include "oi_modules.h"
- /** \addtogroup Misc Miscellaneous APIs */
- /**@{*/
- #ifdef __cplusplus
- extern "C" {
- #endif
- /**
- * Terminates execution.
- *
- * @param reason Reason for termination
- */
- void OI_FatalError(OI_STATUS reason);
- /**
- * This function logs an error.
- *
- * When built for release mode, BLUEmagic 3 errors are logged to
- * this function. (in debug mode, errors are logged via
- * OI_Print()).
- *
- * @param module Module in which the error was detected (see
- * oi_modules.h)
- * @param lineno Line number of the C file OI_SLOG_ERROR called
- * @param status Status code associated with the error event
- */
- void OI_LogError(OI_MODULE module, OI_INT lineno, OI_STATUS status);
- /**
- * This function initializes the debug code handling.
- *
- * When built for debug mode, this function performs platform
- * dependent initialization to handle message codes passed in
- * via OI_SetMsgCode().
- */
- void OI_InitDebugCodeHandler(void);
- /**
- * This function reads the time from the real time clock.
- *
- * All timing in BM3 is relative, typically a granularity
- * of 5 or 10 msecs is adequate.
- *
- * @param[out] now Pointer to the buffer to which the current
- * time will be returned
- */
- void OI_Time_Now(OI_TIME *now);
- /**
- * This function causes the current thread to sleep for the
- * specified amount of time. This function must be called
- * without the stack access token.
- *
- * @note BM3 corestack and profiles never suspend and never call
- * OI_Sleep. The use of OI_Sleep is limited to applications and
- * platform-specific code.
- *
- * If your port and applications never use OI_Sleep, this function can be left unimplemented.
- *
- * @param milliseconds Number of milliseconds to sleep
- */
- void OI_Sleep(OI_UINT32 milliseconds);
- /**
- * Defines for message type codes.
- */
- #define OI_MSG_CODE_APPLICATION 0 /**< Application output */
- #define OI_MSG_CODE_ERROR 1 /**< Error message output */
- #define OI_MSG_CODE_WARNING 2 /**< Warning message output */
- #define OI_MSG_CODE_TRACE 3 /**< User API function trace output */
- #define OI_MSG_CODE_PRINT1 4 /**< Catagory 1 debug print output */
- #define OI_MSG_CODE_PRINT2 5 /**< Catagory 2 debug print output */
- #define OI_MSG_CODE_HEADER 6 /**< Error/Debug output header */
- /**
- * This function is used to indicate the type of text being output with
- * OI_Print(). For the Linux and Win32 platforms, it will set
- * the color of the text. Other possible uses could be to insert
- * HTML style tags, add some other message type indication, or
- * be completely ignored altogether.
- *
- * @param code OI_MSG_CODE_* indicating setting the message type.
- */
- void OI_SetMsgCode(OI_UINT8 code);
- /**
- * All output from OI_Printf() and all debug output is sent to OI_Print.
- * Typically, if the platform has a console, OI_Print() is sent to stdout.
- * Embedded platforms typically send OI_Print() output to a serial port.
- *
- * @param str String to print
- */
- void OI_Print(OI_CHAR const *str);
- /**
- * In cases where OI_Print() is sending output to a logfile in addition to console,
- * it is desirable to also put console input into the logfile.
- * This function can be called by the console input process.
- *
- * @note This is an optional API which is strictly
- * between the platform-specific stack_console and osinterface
- * modules. This API need only be implemented on those
- * platforms where is serves a useful purpose, e.g., win32.
- *
- * @param str Console input string
- */
- void OI_Print_ConsoleInput(OI_CHAR const *str);
- /**
- * This function computes the CRC16 of the program image.
- */
- OI_UINT16 OI_ProgramImageCRC16(void);
- /**
- * Writes an integer to stdout in hex. This macro is intended
- * for selective use when debugging in small memory
- * configurations or other times when it is not possible to use
- * OI_DBGPRINT.
- *
- * @param n the integer to print
- */
- #define OI_Print_Int(n) \
- { \
- static const OI_CHAR _digits[] = "0123456789ABCDEF"; \
- OI_CHAR _buf[9]; \
- OI_CHAR *_str = &_buf[8]; \
- OI_UINT32 _i = n; \
- *_str = 0; \
- do { *(--_str) = _digits[(_i & 0xF)]; _i >>= 4; } while (_i); \
- OI_Print(_str); \
- }
- /**
- * Application Dynamic Memory allocation.
- *
- * These APIs are provided for application use on those
- * platforms which have no dynamic memory support. Memory is
- * allocated from the pool-based heap managed by the stack's
- * internal memory manager.
- */
- void *OI_APP_Malloc(OI_INT32 size);
- void OI_APP_Free(void *ptr);
- /*****************************************************************************/
- #ifdef __cplusplus
- }
- #endif
- /**@}*/
- #endif /* _OI_OSINTERFACE_H */
|