%Prueba CMSA-CD
%Limpiar figuras
clf
%Condición inicial
e=[1 0 0; 0 0 0; 0 0 0]; %estado visto por nodo 1 (fila 1), nodo 2 (fila 2) y nodo 3 (fila 3)
e11ant=0;
e22ant=0;
e33ant=0;

cambioe1=0;
cambioe2=0;
cambioe3=0;

%Distancia entre nodos
dist=5;

%Tiempo de transmisión para cada nodo
tiempotransmisione1=10;
tiempotransmisione2=10;
tiempotransmisione3=10;
itransmision=1;

%Tiempo total de prueba
tiempototal=200;

%Tiempo aleatorio esperado para transmitir
tiempomaxespera=40;
prob1=ceil(tiempomaxespera*rand(1,tiempototal)); %vector de probabilidades de espera
prob2=ceil(tiempomaxespera*rand(1,tiempototal));
prob3=ceil(tiempomaxespera*rand(1,tiempototal));

for i=1:tiempototal
    
    if(e11ant~=e(1,1)||e22ant~=e(2,2)||e33ant~=e(3,3))
        itransmision=i;
    end
   
    if (e11ant~=e(1,1))
        cambioe1=1;
    end
    if (e22ant~=e(2,2))
        cambioe2=1;
    end
    if (e33ant~=e(3,3))
        cambioe3=1;
    end
    
    if (cambioe1==1)
        if (i==itransmision+dist)
            e(2,1)=~(e(2,1));
            e(3,1)=~(e(3,1));
            cambioe1=0;
        end
    end
    if (cambioe2== 1)
        if (i==itransmision+dist)
            e(1,2)=~(e(1,2));
            e(3,2)=~(e(3,2));
            cambioe2=0;
        end
    end
    if (cambioe3==1)
        if (i==itransmision+dist)
            e(1,3)=~(e(1,3));
            e(2,3)=~(e(2,3));
            cambioe3=0;
        end
    end
   
    e11ant=e(1,1);
    e22ant=e(2,2);
    e33ant=e(3,3);
    
    %condicion de colision
    if((e(1,1)+e(2,2)+e(3,3)) > 1)
        e=[0 0 0; 0 0 0; 0 0 0];
        cambioe1=0;
        cambioe2=0;
        cambioe3=0;
        e11ant=0;
        e22ant=0;
        e33ant=0;
    end
    %parar la transmision
    if(e(1,1)==1&&i==itransmision+tiempotransmisione1)
        e(1,1)=0;
        itransmision=i;
    end
    if(e(2,2)==1&&i==itransmision+tiempotransmisione2)
        e(2,2)=0;
        itransmision=i;
    end
    if(e(3,3)==1&&i==itransmision+tiempotransmisione3)
        e(3,3)=0;      
        itransmision=i;
    end
    %analisis prob nodo 
    if((e(1,1)+e(1,2)+e(1,3))==0 && i==prob1(itransmision)+itransmision)
        e(1,1) = 1;
    end
    if((e(2,1)+e(2,2)+e(2,3))==0 && i==prob2(itransmision)+itransmision)
        e(2,2) = 1;
    end
    if((e(3,1)+e(3,2)+e(3,3))==0 && i==prob3(itransmision)+itransmision)
        e(3,3) = 1;
    end
    
    figure(1)
    for x=1:3
        if (x==1)
            color='r';
        else
            if (x==2)
            color='g';
            else
            color='b';
            end
        end
        subplot(3,1,x);
        stem(i,e(x,x),color)
        grid on
        hold on
    end
    
    
    figure(2)
    for x=1:3
        if (x==1)
            color='r';
            for y=1:3
            subplot(3,3,y);
            stem(i,e(x,y),color)
            grid on
            hold on
            end
        else
            if (x==2)
            color='g';
            for y=1:3
            subplot(3,3,y+3);
            stem(i,e(x,y),color)
            grid on
            hold on
            end
            else
            color='b';
            for y=1:3
            subplot(3,3,y+6);
            stem(i,e(x,y),color)
            grid on
            hold on
            end
            end
        end
        

    end
    
    
end