/*
 *  Shinobi Library
 *  Copyright (c) 1998-2000 SEGA
 *
 *       Serial
 *
 *  Module  : Library Header File
 *  File    : sg_sycom.h
 *  Create  : 1999-01-12
 *  Modify  : 2000-08-24
 *  Version : 0.44
 *  Note    :
 */


#ifndef _SG_SYCOM_H_
#define _SG_SYCOM_H_

#include <sg_xpt.h>

/*
 *  DEFINES / MACROS
 */

/******** 通信速度定義 *****************************************************/
#define SYD_COM_SPEED_9600       0xa2     /* 通信速度   9600BPS            */
#define SYD_COM_SPEED_19200      0x50     /* 通信速度  19200BPS            */
#define SYD_COM_SPEED_28800      0x35     /* 通信速度  28800BPS            */
#define SYD_COM_SPEED_38400      0x28     /* 通信速度  38400BPS            */
#define SYD_COM_SPEED_57600      0x1a     /* 通信速度  57600BPS            */
#define SYD_COM_SPEED_115200     0x0d     /* 通信速度 115200BPS            */
#define SYD_COM_SPEED_230400     0x06     /* 通信速度 230400BPS            */

#define SYD_COM_SPEED_260K       0x05     /* 通信速度 260kBPS              */
#define SYD_COM_SPEED_312K       0x04     /* 通信速度 312kBPS              */
#define SYD_COM_SPEED_390K       0x03     /* 通信速度 390kBPS              */
#define SYD_COM_SPEED_520K       0x02     /* 通信速度 520kBPS              */
#define SYD_COM_SPEED_780K       0x01     /* 通信速度 780kBPS              */
#define SYD_COM_SPEED_1M         0x00     /* 通信速度 1.5MBPS              */


/******** データビット定義 *************************************************/
#define SYD_COM_DATA_8BIT        0x00     /* 8ビット                       */
#define SYD_COM_DATA_7BIT        0x40     /* 7ビット                       */

/******** パリティ設定定義 *************************************************/
#define SYD_COM_PARITY_OFF       0x00     /* パリティなし                  */
#define SYD_COM_PARITY_EVEN      0x20     /* 偶数パリティ                  */
#define SYD_COM_PARITY_ODD       0x30     /* 奇数パリティ                  */

/******** ストップビット定義 ***********************************************/
#define SYD_COM_STOP_1BIT        0x00     /* 1ビット                       */
#define SYD_COM_STOP_2BIT        0x08     /* 2ビット                       */

/******** フロー制御定義 ***************************************************/
#define SYD_COM_FLOW_OFF         0x00     /* フロー制御なし                */
#define SYD_COM_FLOW_HARD        0x08     /* ハードウェアフロー            */

/******** エラーコード *****************************************************/
#define SYD_COMERR_OK            (0)      /* エラーなし                    */
#define SYD_COMERR_TIMEOUT       (-1)     /* 送信タイムアウト              */




/*
 *  TYPEDEFS
 */

/******** オープンパラメータ ***********************************************/
typedef struct {
	Uint8 speed;
	Uint8 stopbit;
	Uint8 databit;
	Uint8 parity;
	Uint8 flow;
	Uint8 reserved[3];
} SYS_COM_PARAM;


/*
 *  PROTOTYPES
 */


extern Sint32 syComInit(void* rcvbuf, Uint32 size);
extern void syComExit(void);
extern Sint32 syComOpen(Uint8 speed);
extern Sint32 syComOpenEx(const SYS_COM_PARAM* param);
extern Sint32 syComPutq(Sint8 data);
extern Sint32 syComPutWait(Sint8 data);
extern Sint32 syComIsPut(void);
extern Sint32 syComClose(void);
extern Sint32 syComIsGet(void);
extern Sint32 syComGet(void);
extern Sint32 syComPeep(void);
extern Sint32 syComIsBreak(void);
extern void syComFlush(void);
extern void syComPrint(const char* str);
extern void syComPrintf(const char* fmt, ...);
extern void syComSetErrFunc(void (*func)(Sint32 err));
extern void syComRtsEnable(Sint32 flag);
extern void syComRtsSet(Sint32 data);
extern void syComCtsEnable(Sint32 flag);
extern void syComCtsSet(Sint32 data);

#endif /* _SG_SYCOM_H_ */
