You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
199 lines
6.5 KiB
199 lines
6.5 KiB
/******************************************************************************
|
|
*
|
|
* Copyright 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_modules.h"
|
|
#include "oi_status.h"
|
|
#include "oi_stddefs.h"
|
|
#include "oi_time.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(uint32_t 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(uint8_t 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.
|
|
*/
|
|
uint16_t 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]; \
|
|
uint32_t _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(int32_t size);
|
|
void OI_APP_Free(void* ptr);
|
|
|
|
/*****************************************************************************/
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
/**@}*/
|
|
|
|
#endif /* _OI_OSINTERFACE_H */
|