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.
325 lines
10 KiB
325 lines
10 KiB
#ifndef _CONSFUNC_H
|
|
#define _CONSFUNC_H
|
|
|
|
/*******************************************************************************
|
|
* Copyright 2013-2016 Avago Technologies
|
|
* Copyright (c) 2009 to 2012 PLX Technology Inc. All rights reserved.
|
|
*
|
|
* This software is available to you under a choice of one of two
|
|
* licenses. You may choose to be licensed under the terms of the GNU
|
|
* General Public License (GPL) Version 2, available from the file
|
|
* COPYING in the main directorY of this source tree, or the
|
|
* BSD license below:
|
|
*
|
|
* Redistribution and use in source and binary forms, with or
|
|
* without modification, are permitted provided that the following
|
|
* conditions are met:
|
|
*
|
|
* - Redistributions of source code must retain the above
|
|
* copyright notice, this list of conditions and the following
|
|
* disclaimer.
|
|
*
|
|
* - Redistributions in binary form must reproduce the above
|
|
* copyright notice, this list of conditions and the following
|
|
* disclaimer in the documentation and/or other materials
|
|
* provided with the distribution.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
|
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
|
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
* SOFTWARE.
|
|
******************************************************************************/
|
|
|
|
/******************************************************************************
|
|
*
|
|
* File Name:
|
|
*
|
|
* ConsFunc.h
|
|
*
|
|
* Description:
|
|
*
|
|
* Header file for the Console functions
|
|
*
|
|
* Revision History:
|
|
*
|
|
* 04-01-16 : PLX SDK v7.30
|
|
*
|
|
******************************************************************************/
|
|
|
|
|
|
#if defined(_WIN32) || defined(_WIN64)
|
|
#include <stdio.h>
|
|
#include <conio.h>
|
|
#include <Windows.h>
|
|
#define PLX_MSWINDOWS
|
|
#elif defined(PLX_LINUX)
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#include <termios.h>
|
|
#include <sys/ioctl.h>
|
|
#include <sys/time.h>
|
|
#include <sys/types.h>
|
|
#elif defined(PLX_DOS)
|
|
#include <stdio.h>
|
|
#include <conio.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
#include <dpmi.h>
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/*************************************
|
|
* Definitions
|
|
************************************/
|
|
#if defined(PLX_MSWINDOWS)
|
|
|
|
#define Plx_sleep Sleep
|
|
#define Plx_strcmp strcmp
|
|
#define Plx_strcasecmp stricmp
|
|
#define Plx_strncasecmp strnicmp
|
|
#define Cons_clear Plx_clrscr
|
|
#define Cons_fflush fflush
|
|
#define Cons_flushinp() FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE))
|
|
#define Cons_fputs Plx_fputs
|
|
#define Cons_kbhit _kbhit
|
|
#define Cons_getch _getch
|
|
#define Cons_puts puts
|
|
#define Cons_putchar putchar
|
|
#define Cons_scanf scanf
|
|
#define Cons_printf Plx_printf
|
|
|
|
#elif defined(PLX_LINUX)
|
|
|
|
#define Plx_sleep(arg) usleep((arg) * 1000)
|
|
#define Plx_strcmp strcmp
|
|
#define Plx_strcasecmp strcasecmp
|
|
#define Plx_strncasecmp strncasecmp
|
|
#define Cons_clear Plx_clrscr
|
|
#define Cons_fflush fflush
|
|
#define Cons_flushinp do {while (Plx_kbhit()) Plx_getch();} while (0)
|
|
#define Cons_fputs Plx_fputs
|
|
#define Cons_kbhit Plx_kbhit
|
|
#define Cons_getch Plx_getch
|
|
#define Cons_puts puts
|
|
#define Cons_putchar putchar
|
|
#define Cons_scanf scanf
|
|
#define Cons_printf Plx_printf
|
|
|
|
#elif defined(PLX_DOS)
|
|
|
|
#define Plx_sleep(arg) usleep((arg) * 1000)
|
|
#define Plx_strcmp strcmp
|
|
#define Plx_strcasecmp strcasecmp
|
|
#define Plx_strncasecmp strncasecmp
|
|
#define Cons_clear clrscr
|
|
#define Cons_fflush fflush
|
|
#define Cons_flushinp() do {while (kbhit()) getch();} while (0)
|
|
#define Cons_fputs Plx_fputs
|
|
#define Cons_kbhit kbhit
|
|
#define Cons_getch getch
|
|
#define Cons_puts puts
|
|
#define Cons_putchar putchar
|
|
#define Cons_scanf scanf
|
|
#define Cons_printf Plx_printf
|
|
|
|
#endif
|
|
|
|
|
|
#if !defined(min)
|
|
#define min(a, b) (((a) < (b)) ? (a) : (b))
|
|
#endif
|
|
|
|
|
|
/******************************************************************
|
|
* A 64-bit HEX value (0xFFFF FFFF FFFF FFFF) requires 20 decimal
|
|
* digits or 22 octal digits. The following constant defines the
|
|
* buffer size used to hold an ANSI string converted from a
|
|
* 64-bit HEX value.
|
|
*****************************************************************/
|
|
#define MAX_DECIMAL_BUFFER_SIZE 30
|
|
|
|
#define DEFAULT_SCREEN_SIZE 25 // Default lines to display before halting, if enabled
|
|
#define SCREEN_THROTTLE_OFFSET 2 // Num lines to offset for halting
|
|
|
|
#define _Pause \
|
|
do \
|
|
{ \
|
|
Cons_printf(" -- Press any key to continue --"); \
|
|
Cons_getch(); \
|
|
Cons_printf("\r \r"); \
|
|
} \
|
|
while(0)
|
|
|
|
|
|
#define _PauseWithExit \
|
|
do \
|
|
{ \
|
|
Cons_printf(" -- Press any key to continue or ESC to exit --"); \
|
|
if (Cons_getch() == 27) \
|
|
{ \
|
|
Cons_printf("\r \n"); \
|
|
ConsoleEnd(); \
|
|
exit(0); \
|
|
} \
|
|
Cons_printf("\r \r"); \
|
|
} \
|
|
while(0)
|
|
|
|
// Standard key codes
|
|
#define CONS_KEY_NULL '\0'
|
|
#define CONS_KEY_ESCAPE 27
|
|
#define CONS_KEY_NEWLINE '\n'
|
|
#define CONS_KEY_CARRIAGE_RET '\r'
|
|
#define CONS_KEY_TAB '\t'
|
|
#define CONS_KEY_BACKSPACE '\b'
|
|
|
|
// 1st extended key code
|
|
#if defined(PLX_LINUX)
|
|
#define CONS_KEY_EXT_CODE 91
|
|
#define CONS_KEY_KEYPAD_CODE 79
|
|
#elif defined(PLX_MSWINDOWS)
|
|
#define CONS_KEY_EXT_CODE 224
|
|
#define CONS_KEY_KEYPAD_CODE 1 // For code compatability, not actually used
|
|
#elif defined(PLX_DOS)
|
|
#define CONS_KEY_EXT_CODE 0
|
|
#define CONS_KEY_KEYPAD_CODE 1 // For code compatability, not actually used
|
|
#endif
|
|
|
|
// Extended key codes
|
|
#if defined(PLX_LINUX)
|
|
#define CONS_KEY_EXT_BACKSPACE 127
|
|
#define CONS_KEY_ARROW_UP 65
|
|
#define CONS_KEY_ARROW_DOWN 66
|
|
#define CONS_KEY_ARROW_LEFT 68
|
|
#define CONS_KEY_ARROW_RIGHT 67
|
|
#define CONS_KEY_HOME 49
|
|
#define CONS_KEY_HOME_XTERM 72 // Code different in GUI terminal
|
|
#define CONS_KEY_END 70
|
|
#define CONS_KEY_END_XTERM 52 // Code different in GUI terminal
|
|
#define CONS_KEY_INSERT 50
|
|
#define CONS_KEY_DELETE 51
|
|
#define CONS_KEY_PAGE_UP 53
|
|
#define CONS_KEY_PAGE_DOWN 54
|
|
#else
|
|
#define CONS_KEY_EXT_BACKSPACE 127
|
|
#define CONS_KEY_ARROW_UP 72
|
|
#define CONS_KEY_ARROW_DOWN 80
|
|
#define CONS_KEY_ARROW_LEFT 75
|
|
#define CONS_KEY_ARROW_RIGHT 77
|
|
#define CONS_KEY_HOME 71
|
|
#define CONS_KEY_HOME_XTERM 254 // Added for code compatability
|
|
#define CONS_KEY_END 79
|
|
#define CONS_KEY_END_XTERM 253 // Added for code compatability
|
|
#define CONS_KEY_INSERT 82
|
|
#define CONS_KEY_DELETE 83
|
|
#define CONS_KEY_PAGE_UP 73
|
|
#define CONS_KEY_PAGE_DOWN 81
|
|
#endif
|
|
|
|
// Preset cursor sizes/types
|
|
#define CONS_CURSOR_DISABLED 0
|
|
#define CONS_CURSOR_UNDERLINE 20
|
|
#define CONS_CURSOR_INSERT 70
|
|
#define CONS_CURSOR_DEFAULT CONS_CURSOR_UNDERLINE
|
|
|
|
|
|
|
|
|
|
/*************************************
|
|
* Functions
|
|
************************************/
|
|
void
|
|
ConsoleInitialize(
|
|
void
|
|
);
|
|
|
|
void
|
|
ConsoleEnd(
|
|
void
|
|
);
|
|
|
|
unsigned short
|
|
ConsoleScreenHeightSet(
|
|
unsigned short NumLines
|
|
);
|
|
|
|
unsigned short
|
|
ConsoleScreenHeightGet(
|
|
void
|
|
);
|
|
|
|
void
|
|
ConsoleCursorPropertiesSet(
|
|
int size
|
|
);
|
|
|
|
unsigned char
|
|
ConsoleIoThrottleGet(
|
|
void
|
|
);
|
|
|
|
void
|
|
ConsoleIoThrottleSet(
|
|
unsigned char bEnable
|
|
);
|
|
|
|
void
|
|
ConsoleIoThrottleReset(
|
|
void
|
|
);
|
|
|
|
void
|
|
ConsoleIoThrottleLock(
|
|
unsigned char bLock
|
|
);
|
|
|
|
void
|
|
ConsoleIoIncrementLine(
|
|
void
|
|
);
|
|
|
|
void
|
|
ConsoleIoOutputDisable(
|
|
unsigned char bEnable
|
|
);
|
|
|
|
int
|
|
Plx_fputs(
|
|
const char *string,
|
|
FILE *stream
|
|
);
|
|
|
|
int
|
|
Plx_printf(
|
|
const char *format,
|
|
...
|
|
);
|
|
|
|
void
|
|
Plx_clrscr(
|
|
void
|
|
);
|
|
|
|
// Linux-specific functions
|
|
#if defined(PLX_LINUX)
|
|
int
|
|
Plx_kbhit(
|
|
void
|
|
);
|
|
|
|
int
|
|
Plx_getch(
|
|
void
|
|
);
|
|
#endif
|
|
|
|
|
|
|
|
#endif
|
|
|