/* System	: 二足歩行ロボット(walk)
* File		: serial.h
* function	: 通信制御
* Version	: 1.0
* Date		: 2019/5/7
* CPU		: RL78/G12 ROM:16KB RAM:1.5KB fCLK:24MHz
* IDE		: CS+ for CC V6.01.00 [01 Dec 2017]
* Programmer	: Hajime Sugiyama
* Note		: */

#ifndef SERIAL_H
#define SERIAL_H

#define PACKET_SIZE 12				/* パケットデータ長 */

struct _F_SERIAL{
    unsigned char mode_changeable:1;		/* 動作モード変更可否 */
    unsigned char walking_motion_changeable:1;	/* 歩行動作変更可否 */
    unsigned char respose_pending:1;		/* 肯定応答未送信 */
    unsigned char bit3_7:5;
};
extern struct _F_SERIAL f_serial;		/* 通信フラグ */

/* 動作モード変更イベント	内蔵ﾌﾟﾛｸﾞﾗﾑ動作ﾓｰﾄﾞ,転送ﾌﾟﾛｸﾞﾗﾑ動作ﾓｰﾄﾞ,ﾊﾟｿｺﾝ操作ﾓｰﾄﾞ */
enum MODE_EV{NO_EVM,BUILTIN_EVM,RX_EVM,PC_EVM};
extern enum MODE_EV e_mode_event;		/* 動作モード変更指示 */

/* 歩行動作指示	動作指示なし,停止,前進,右回転,後退,左回転,ダンス */
enum WALK_EV{NO_EVW,STOP_EVW,FORWARD_EVW,RIGHT_EVW,BACKWARD_EVW,LEFT_EVW,DANCE_EVW};
extern enum WALK_EV e_walk_event;		/* 歩行動作指示 */

extern void uart0_initialize(void);		/* シリアル送受信回路初期化処理ユニット */
extern void uart0_start(void);			/* シリアル通信開始処理ユニット */
extern void get_sequence_data(void);		/* 受信歩行動作順序データ確定処理ユニット */
extern void uart0_send_mode_changed(void);	/* 送信開始処理ユニット（モード変更完了） */

#endif
