#ifndef us_c
#define us_c

#ifdef __cplusplus
extern "C" {
#endif

// シリアル通信関連
#include <us.h>

// ボーレート
#define _BAUDRATE 115200

/*--------------------------------------------------------
 以下のいずれかのdefineをインクルード元で宣言の事
#define __DBGU__      // 割り込みを使用しないポーリング版
#define __DBGU_INT__  // 割り込みを使用したFIFO版
#define __DBGU_PDC__  // 割り込み及びPDCを使用した版
#define __US0__       // 割り込みを使用しないポーリング版
#define __US0_INT__   // 割り込みを使用したFIFO版
#define __US0_PDC__   // 割り込み及びPDC(送信のみ)を使用したFIFO版
#define __US1__       // 割り込みを使用しないポーリング版
#define __US1_INT__   // 割り込みを使用したFIFO版
#define __US1_PDC__   // 割り込み及びPDC(送信のみ)を使用したFIFO版
#define __UDP__       // 割り込みを使用したFIFO版
*-------------------------------------------------------*/

#if defined(__DBGU__) | defined(__DBGU_INT__) | defined(__DBGU_PDC__) | defined(__US0__) | defined(__US0_INT__) | defined(__US0_PDC__) | defined(__US1__) | defined(__US1_INT__) | defined(__US1_PDC__) | defined(__UDP__)
#else
#error  NOT SELECTED UART
#endif

//--------------------------------------------------------
// DBGU (ポーリング版)
#if defined (__DBGU__)
#define _us_init(b,t,ts,r,rs)   dbgu_init (b)
#define _us_rx_buff             dbgu_rx_buff
#define _us_tx_buff             dbgu_tx_buff
#define _us_putc                dbgu_putc
#define _us_getc                dbgu_getc
#define _us_puts                dbgu_puts
#define _us_putb                dbgu_sys_puts
#define _us_printf              dbgu_printf
#define _us_scanf               dbgu_scanf
#define _us_rx_purge            dbgu_rx_purge
// DBGU (割り込み版)
#elif defined (__DBGU_INT__)
#define _us_init(b,t,ts,r,rs)   dbgu_int_init (b,t,ts,r,rs)
#define _us_rx_buff             dbgu_int_rx_buff
#define _us_tx_buff             dbgu_int_tx_buff
#define _us_putc                dbgu_int_putc
#define _us_getc                dbgu_int_getc
#define _us_puts                dbgu_int_puts
#define _us_putb                dbgu_int_sys_puts
#define _us_printf              dbgu_int_printf
#define _us_scanf               dbgu_int_scanf
#define _us_rx_purge            dbgu_int_rx_purge
// DBGU (割り込み&PDC版)
#elif defined (__DBGU_PDC__)
#define _us_init(b,t,ts,r,rs)   dbgu_pdc_init (b,t,ts,r,rs)
#define _us_rx_buff             dbgu_pdc_rx_buff
#define _us_tx_buff             dbgu_pdc_tx_buff
#define _us_putc                dbgu_pdc_putc
#define _us_getc                dbgu_pdc_getc
#define _us_puts                dbgu_pdc_puts
#define _us_putb                dbgu_pdc_sys_puts
#define _us_printf              dbgu_pdc_printf
#define _us_scanf               dbgu_pdc_scanf
#define _us_rx_purge            dbgu_pdc_rx_purge
// US0 (ポーリング版)
#elif defined (__US0__)
#define _us_init(b,t,ts,r,rs)   us0_init (b)
#define _us_rx_buff             us0_rx_buff
#define _us_tx_buff             us0_tx_buff
#define _us_putc                us0_putc
#define _us_getc                us0_getc
#define _us_puts                us0_puts
#define _us_putb                us0_sys_puts
#define _us_printf              us0_printf
#define _us_scanf               us0_scanf
#define _us_rx_purge            us0_rx_purge
// US0 (割り込み版)
#elif defined (__US0_INT__)
#define _us_init(b,t,ts,r,rs)   us0_int_init (b,t,ts,r,rs)
#define _us_rx_buff             us0_int_rx_buff
#define _us_tx_buff             us0_int_tx_buff
#define _us_putc                us0_int_putc
#define _us_getc                us0_int_getc
#define _us_puts                us0_int_puts
#define _us_putb                us0_int_sys_puts
#define _us_printf              us0_int_printf
#define _us_scanf               us0_int_scanf
#define _us_rx_purge            us0_int_rx_purge
// US0 (割り込み&PDC版)
#elif defined (__US0_PDC__)
#define _us_init(b,t,ts,r,rs)   us0_pdc_init (b,t,ts,r,rs)
#define _us_rx_buff             us0_pdc_rx_buff
#define _us_tx_buff             us0_pdc_tx_buff
#define _us_putc                us0_pdc_putc
#define _us_getc                us0_pdc_getc
#define _us_puts                us0_pdc_puts
#define _us_putb                us0_pdc_sys_puts
#define _us_printf              us0_pdc_printf
#define _us_scanf               us0_pdc_scanf
#define _us_rx_purge            us0_pdc_rx_purge
// US1 (ポーリング版)
#elif defined (__US1__)
#define _us_init(b,t,ts,r,rs)   us1_init (b)
#define _us_rx_buff             us1_rx_buff
#define _us_tx_buff             us1_tx_buff
#define _us_putc                us1_putc
#define _us_getc                us1_getc
#define _us_puts                us1_puts
#define _us_putb                us1_sys_puts
#define _us_printf              us1_printf
#define _us_scanf               us1_scanf
#define _us_rx_purge            us1_rx_purge
// US1 (割り込み版)
#elif defined (__US1_INT__) & !defined (__AT91SAM7S32__)
#define _us_init(b,t,ts,r,rs)   us1_int_init (b,t,ts,r,rs)
#define _us_rx_buff             us1_int_rx_buff
#define _us_tx_buff             us1_int_tx_buff
#define _us_putc                us1_int_putc
#define _us_getc                us1_int_getc
#define _us_puts                us1_int_puts
#define _us_putb                us1_int_sys_puts
#define _us_printf              us1_int_printf
#define _us_scanf               us1_int_scanf
#define _us_rx_purge            us1_int_rx_purge
// US1 (割り込み&PDC版)
#elif defined (__US1_PDC__) & !defined (__AT91SAM7S32__)
#define _us_init(b,t,ts,r,rs)   us1_pdc_init (b,t,ts,r,rs)
#define _us_rx_buff             us1_pdc_rx_buff
#define _us_tx_buff             us1_pdc_tx_buff
#define _us_putc                us1_pdc_putc
#define _us_getc                us1_pdc_getc
#define _us_puts                us1_pdc_puts
#define _us_putb                us1_pdc_sys_puts
#define _us_printf              us1_pdc_printf
#define _us_scanf               us1_pdc_scanf
#define _us_rx_purge            us1_pdc_rx_purge
// UDP (割り込み)
#elif defined (__UDP__) & !defined (__AT91SAM7S32__)
#define _us_init(b,t,ts,r,rs)   udp_init (t,ts,r,rs)
#define _us_rx_buff             udp_rx_buff
#define _us_putc                udp_putc
#define _us_getc                udp_getc
#define _us_puts                udp_puts
#define _us_putb                udp_sys_puts
#define _us_printf              udp_printf
#define _us_scanf               udp_scanf
#define _us_rx_purge            udp_rx_purge
extern unsigned int CDCDSerialDriver_GetSerialBaudrate();
#else
#error  NOT SUPPORTED UART
#endif

//--------------------------------------------------------
// 送受信用バッファ
char txb[100], rxb[100];

#ifdef __cplusplus
}
#endif

#endif
