Skip to main content
. 2016 Sep 28;16(10):1596. doi: 10.3390/s16101596
Algorithm 1. Automatic protocol adaptation.
Input:  unknown packet: packet
Output: matched protocol stack: ps
Initialize:PS={ps1,ps2,…,psi,…,pss} //existing protocols stacks
     PC={layer1,layer2,…,layeri,…,layerl} //protocol container
     Layer = {pi1,pi2,…,pij,…,pip} //deployed protocol in layer i
     SendToBus(packet); //send packet to protocol bus
   for all protocol stack psPS do
     if (psi.PsAnalyze(packet)==1){Return psi;} end for
     Ps ps=new PS();
   for all protocol player1 do
     boolean b=TryAnalyze(packet,ps,p,layer1);
     if (b==false){Return Null;}
     Return ps; end for
Procedure TryAnalyze(packet,ps,p,layer) //p is located in layer
    payload =p.Analyze(packet);
    If (payload==0){
      ps.push(p);
      Return true;}
    layeri = layer.next();
    If (layeri == null){Return false;}
   For all protocol pilayeri do
    boolean b = TryAnalyze(payload,ps,pi,layeri);
    if (b == true){ ps.push(p);}
    Return b; end for
Procedure End