资源描述:
《通讯协议 (例子)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、通讯协议(例子)通讯协议BA通讯协议BASR通讯协议BASR通讯协议BchaASRchbchrchs通讯协议prbchaprapssprrchbchrchsobuf[]busy[]sqibuf[]recv[]mpMWQS通讯协议模型(主程序)VVMft001DEFINEQS=2QSL=1M=4ML=3W=2WL=1rr=0ss=1aa=2bb=3VARerr:0..1;INITerr=0;PROCchr:chrs();chs:chrs();cha:chab();chb:chab();pra:mpra()
2、;prb:mprb();SPECAG(err!=1);进程模块说明1(通道)MODULEchrs()VARcontents[0..QSL]:{ack,red,green,blue};seq[0..QSL]:0..ML;len:0..QS;start:0..QSL;INIT(forxxin[0..QSL]):contents[xx]=0;(forxxin[0..QSL]):seq[xx]=0;len=0;start=0;TRANSlen>0:(len,start):=(len-1,(start+1)%M)
3、;//loosychannel进程模块说明2(通道)MODULEchab()VARcontents[0..QSL]:{ack,red,green,blue};len:0..QS;start:0..QSL;INIT(forxxin[0..QSL]):contents[xx]=0;len=0;start=0;TRANSFALSE:TRUE;过程说明1PROCEDUREchget(nn,c,s)VARINITTRANSnn=rr:(c,s,chr.start,chr.len):=(chr.contents[c
4、hr.start],chr.seq[chr.start],(chr.start+1)%QS,chr.len-1)&RETURN;nn=ss:(c,s,chs.start,chs.len):=(chs.contents[chs.start],chs.seq[chs.start],(chs.start+1)%QS,chs.len-1)&RETURN;nn=aa:(c,cha.start,cha.len):=(cha.contents[cha.start],(cha.start+1)%QS,cha.len-1
5、)&RETURN;nn=bb:(c,chb.start,chb.len):=(chb.contents[chb.start],(chb.start+1)%QS,chb.len-1)&RETURN;过程说明2PROCEDUREchput(nn,c,s)VARpc:{s0,s1};pos:0..QS;INITpc=s0;pos=0;TRANSnn=0&pc=s0:(pos,pc):=((chr.start+chr.len)%QS,s1);nn=0&pc=s1:(chr.contents[pos],chr.s
6、eq[pos],chr.len):=(c,s,chr.len+1)&RETURN;nn=1&pc=s0:(pos,pc):=((chs.start+chs.len)%QS,s1);nn=1&pc=s1:(chs.contents[pos],chs.seq[pos],chs.len):=(c,s,chs.len+1)&RETURN;nn=2&pc=s0:(pos,pc):=((cha.start+cha.len)%QS,s1);nn=2&pc=s1:(cha.contents[pos],cha.len):
7、=(c,cha.len+1)&RETURN;nn=3&pc=s0:(pos,pc):=((chb.start+chb.len)%QS,s1);nn=3&pc=s1:(chb.contents[pos],chb.len):=(c,chb.len+1)&RETURN;进程模块说明3(pss)MODULEmpss()VARbusy[0..ML]:0..1;obuf[0..ML]:{ack,red,green,blue};q:0..ML;s:0..ML;//q=oldestunacked,s=nexttosen
8、dy:0..ML;wd:0..W;INIT(forxxin[0..ML]):busy[xx]=0;(forxxin[0..ML]):obuf[xx]=0;q=0;s=0;y=0;wd=0;TRANSwd0&chr.len0:chget(ss,ack,y)&(busy[y]):=(0);wd>0&busy[q]=0:(wd,q):=(wd-1,