% Devolve o status de término de trajectória para um microcontrolador
%
% [finall,finone,fin,error,errorstr]=statmotionfin(H,scuid)
%
% H: Handler das comunicações
% scuid: Lista de controladores
% finall => Todos os motores terminaram o movimento
% finone => Um dos tres motores terminaram o movimento
% fin    => Flags de término de movimento para cada motor: [s2 s1 s0]

function [finall,finone,fin,pwm,err,errstr]=statmotionfin(H,scuid)

finall=0;
finone=0;
fin=[0 0 0];

err=0;
errstr='OK';

if (nargin==1)
    state=H;
else
    state=zeros(length(scuid),8);
    for i=1:length(scuid)
        [x,state(i,:),x,err,errstr]=readjoint(H,scuid(i),0);
        if (err==1), disp 'fff'; return, end
    end
end

pwm=1;
finall=1;
finone=0;
for i=1:size(state,1)
    pwm=bitand(pwm,state(i,1));
    finall=bitand(finall,state(i,4));
    finone=bitor(finone,state(i,5));
end
fin=state(1,6:8);
