% Leitura do estado do barramento CAN entre slaves.
%
% [array,state,rx,error,errorstr,tries]=readcanstat(H)
%
% Entradas:
%  H => Handler para comunicar com o Master
%
% Saídas:
%  array    => [estado de erro, #erros de transmissão, #erros de recepção]
%  state    => Bits de estado dos servos
%  rx       => Mensagem de baixo nível recebida
%  error    => Código de erro, se existente
%  errorstr => String descritiva do erro
%  tries    => Número de tentativas para efectuar a comunicação
%
% (c) Milton Ruas da Silva, 2006

function [array,state,rx,error,errorstr]=readcanstat(H)

% Carregamento em memória das constantes
data;

% Construção da mensagem a enviar
message=buildmessage(OP_READ_EXTBUFF,0,0);

% Envio da mensagem de request e leitura da resposta
[rx,error,errorstr]=sendmessage(H,message);

% O array servos indica o parametro pedido para cada um dos servos
array=[];
state=[];

if (~error)
    for i=3:USART_RECV_LENGTH, array=[array double(rx(i))]; end
    for i=7:-1:0, state=[state bitand(bitshift(rx(end),-i),1)]; end
end
