📄 highbios.h
字号:
/*-----------------------------------------------------------------------------
* COMSYS P115 Basic IO Module *
* Copyright (c) *
* 2003-03-06 by Yuwu Zhang *
* Beijing.China *
* sun_wizard@163.net *
-----------------------------------------------------------------------------*/
/**
* Notes
* Do NOT call any io functions in stdio.h, or the system will crash!
* Call functions below will be OK.
*
* Last update
* 2003/5/27
*
*/
#ifndef __BasicIO_H__
#define __BasicIO_H__
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include <stdlib.h>
#include <ctype.h>
#include "C_m40800.h"
#include "C_P115.h"
#include "C_int.h"
#include "System.h"
#include "file_sys_api.h"
#define true ((char)1)
#define false ((char)0)
// Screen size
#define MAX_COL 16 // 4行16列
#define MAX_ROW 4
// Key value
#define vk_UP 0x09
#define vk_DOWN 0x0c
#define vk_FUNC 0x0b
#define vk_ESC 0x1b
#define vk_ENTER 0x0d
#define vk_BACK 0x0a
#define vk_LEFT vk_UP
#define vk_RIGHT vk_DOWN
// Device id
#define COM1 1
#define IRDA 2
#define SLE4428 11
#define SLE4442 12
#define AT24C64 21
#define AT24C32 22
#define AT24C16 23
#define AT24C08 24
#define AT24C04 25
#define AT24C02 26
#define AT24C01 27
#define AT1604 31
#define AT1608 32
#define AT45D041 41
#define CPU1 51
#define CPU2 52
#define SAM1 61
#define SAM2 62
// PASSWORD TYPE FOR AT1604
#define AT1604_PWD_SC 0
#define AT1604_PWD_SC1 1
#define AT1604_PWD_EZ1 2
#define AT1604_PWD_SC2 3
#define AT1604_PWD_EZ2 4
#define AT1604_PWD_SC3 5
#define AT1604_PWD_EZ3 6
#define AT1604_PWD_SC4 7
#define AT1604_PWD_EZ4 8
// ZONE AREA FOR AT1604
#define AT1604_ZONE_1 1
#define AT1604_ZONE_2 2
#define AT1604_ZONE_3 3
#define AT1604_ZONE_4 4
// PASSWORD TYPE FOR AT1608
#define AT1608_PWD_W1 0
#define AT1608_PWD_R1 1
#define AT1608_PWD_W2 2
#define AT1608_PWD_R2 3
#define AT1608_PWD_W3 4
#define AT1608_PWD_R3 5
#define AT1608_PWD_W4 6
#define AT1608_PWD_R4 7
#define AT1608_PWD_W5 8
#define AT1608_PWD_R5 9
#define AT1608_PWD_W6 10
#define AT1608_PWD_R6 11
#define AT1608_PWD_W7 12
#define AT1608_PWD_R7 13
#define AT1608_PWD_W8 14
#define AT1608_PWD_R8 15
// ZONE AREA FOR AT1608
#define AT1608_ZONE_1 0
#define AT1608_ZONE_2 1
#define AT1608_ZONE_3 2
#define AT1608_ZONE_4 3
#define AT1608_ZONE_5 4
#define AT1608_ZONE_6 5
#define AT1608_ZONE_7 6
#define AT1608_ZONE_8 7
// DEVICE OPTION
#define SELECT_AT1604_ZONE 1
#define SELECT_AT1608_ZONE 2
#define SLE4428_PROT_MODE 3
#define SLE4442_FUSE_MODE 4
// LCD ICON OBJECT
#define LCD_ICON_ALL 0
#define LCD_ICON_SIGNAL 1
#define LCD_ICON_MESSAGE 2
#define LCD_ICON_PRINTER 3
#define LCD_ICON_CARD 4
#define LCD_ICON_TIME 5
#define LCD_ICON_BATTERY 6
// DATA STRUCTURE
typedef unsigned char bool;
typedef unsigned char uchar;
typedef unsigned long ulong;
typedef int BOOL;
typedef unsigned char BYTE;
typedef unsigned int UINT;
typedef UINT (* Event)(void * arg);
typedef BYTE HDEV;
#define INVALID_DEV_HANDLE 0
typedef struct tagPoint {
int x;
int y;
} TPoint;
typedef struct tagSize {
int cx;
int cy;
} TSize;
typedef struct tagRect {
int left;
int top;
int right;
int bottom;
} TRect;
// 数据进制定义:8位、10位、16位
enum DigitMode {
modeOct = 0x08,
modeDec = 0x0A,
modeHex = 0x10
};
// Display style
#define WITH_REVERSE_STYLE true // 采用反显风格
#define NO_REVERSE_STYLE false // 不用反显风格
// Alignment mode
#define ALIGN_CENTER 1 // 采用中间对齐
#define ALIGN_LEFT 2 // 左对齐
#define ALIGN_RIGHT 3 // 右对齐
// Message Box type
#define MB_OK 1
#define MB_CANCEL 2
// ShowMessage return values
#define MR_OK 1
#define MR_CANCEL 2
// 居中对齐的左边位置
#define LEFT_ALIGN_CENTER(str) ((MAX_COL - strlen(str)) / 2)
// 右对齐的左边位置
#define LEFT_ALIGN_RIGHT(str) (MAX_COL - strlen(str))
// Function alias
#define zero(arr) memset(arr, 0, sizeof(arr))
#define printf _output // 格式化输出,光标会被自动定位
#define inkey get_char // 获取按键,不等待
#define MIN_LCD_VOLUME 0x10
#define MAX_LCD_VOLUME 0x30
extern int pinyin_cursor_x;
extern int pinyin_cursor_y;
// LCD Control
void LcdClearScreen();
void LcdDisplayPixel(int x, int y);
void LcdClearPixel(int x, int y);
void LcdDisplayChar(int x, int y, char ch);
void LcdReverseChar(int x, int y, char ch);
void LcdDisplayString(int x, int y, char * str);
void LcdReverseString(int x, int y, char * str);
BYTE LcdGetVolume();
void LcdSetVolume(BYTE brightness); // brightness(0x10-0x30)
void DisplayLine(int y, const char * title, int alignMode, bool bReverse);
void ShowProgress(int line, int per);
bool ShowMemo(const char ** memo, int count, int alignMode);
void ShowComsysLogo(const char *title);
void DisplayTitle(const char *title, bool bReverse);
void DisplayMidTitle(const char *title, bool bReverse);
void DisplayOkCancel(int type);
void DisplayMidOkCancel(int type);
int ShowMessage(const char *title, const char *msg, int type, bool wait);
int ShowInputBox(const char *title, char *buffer, int *len, int type);
// 保存屏幕
void get_screen(unsigned char *buffer);
// 恢复屏幕
void put_screen(unsigned char *buffer);
// Standard io routines
unsigned char get_char();
void gotoxy(int x, int y);
void getxy(int *x, int *y);
void clrscr();
void clrline(int line);
void set_cursor(bool on);
bool get_cursor();
bool get_beep();
void set_beep(bool on);
bool get_blight();
void set_blight(bool on);
char getch();
char get_key();
void putch(char ch);
void putwch(ushort wch);
int _puts(const char * buffer);
int _gets(char * buffer);
bool getstr(char * buffer, int maxLength, int * length);
bool getabc(char * buffer, int maxLength, int * length);
int _output(const char * fmt, ...);
bool get_chinese(int max_length, unsigned char *buffer, int * length);
// IO control, COM1, IRDA, CARD(s) ...
HDEV open(int device, int option);
void close(HDEV hDev);
int read(HDEV hDev, int addr, BYTE * buffer, int length);
int write(HDEV hDev, int addr, const BYTE * buffer, int length);
bool ic_verify(HDEV hDev, int type, BYTE * pwd);
bool ic_modify(HDEV hDev, int type, BYTE * new_pwd);
bool setopt(int option, int value);
bool ic_exist();
// CPU card
int icc_open(int device, BYTE *resp, BYTE *rlen);
void icc_close(int device);
int icc_command(int device, BYTE *cmd, int len, BYTE *resp, BYTE *rlen);
// System
unsigned long GetTickCount();
void delay(unsigned long milliseconds);
// Graphics
void Pixel(int x, int y, bool on);
void Line(int x1, int y1, int x2, int y2);
void Rectangle(int x, int y, int a, int b);
void Ellipse(int a, int b, int r1, int r2);
void FillEllipse(int a, int b, int r1, int r2);
void FillRectangle(int x, int y, int a, int b);
void DrawBitmap(TPoint pt, TSize size, const BYTE * buffer, bool reverse);
void ClearLine(int x1, int y1, int x2, int y2);
void LcdSetIcon(int object, unsigned int level);
// DATE & TIME
TDate GetDate();
TTime GetTime();
bool SetDate(TDate date);
bool SetTime(TTime time);
char * GetCurrentDate();
char * GetCurrentTime();
bool SetCurrentDate();
bool SetCurrentTime();
// Timer
msgtype *get_msg();
void free_msg(msgtype *message);
msgtype *get_my_msg(unsigned char procid);
unsigned int get_timer();
void proc_timer();
// Flash
bool FlashSectorErase(int sector);
bool FlashWrite(ulong addr, BYTE *buf, unsigned int count);
bool FlashRead(ulong addr, BYTE *buf, unsigned int count);
#ifdef __cplusplus
}
#endif // __cplusplus
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -