mirror of
				https://github.com/0xFEEDC0DE64/arduino-esp32.git
				synced 2025-11-04 08:01:38 +01:00 
			
		
		
		
	
		
			
	
	
		
			198 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			198 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								/******************************************************************************
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *  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 */
							 | 
						||
| 
								 | 
							
								
							 |