#include <stdio.h>
#include <string.h>
#include "protocol.h"
#include "datalink.h"
#define MAX_SEQ 6
#define DATA_TIMER 2600
#define inc(k) if(k<MAX_SEQ) k=k + 1;else k = 0
typedef struct //定义数据包packet
{
unsigned char data[PKT_LEN];
} packet;
typedef enum
{
true,false
} boolean ;
typedef unsigned int seq_nr ;
typedef struct //定义帧frame
{
unsigned char kind; // FRAME_DATA
unsigned char ack;
unsigned char seq;
unsigned char data[PKT_LEN];
unsigned int padding;
} frame ;
static int phylsical_ready = 0; //物理层是否准备好的标志,为1表示物理层已准备好,为0表示物理层没准备好.
seq_nr next_frame_to_send=0;
seq_nr ack_expected=0;
seq_nr frame_expected=0;
seq_nr nbuffered = 0; //正在用的缓存
frame f;
seq_nr i;
packet buffer[MAX_SEQ+1];
int event,arg,len; //事件,帧长度
static boolean between(seq_nr a, seq_nr b, seq_nr c)