% Leitura dos sensores de Força de um pé.
%
% [reaction,rx,error,errorstr,tries]=readreaction(H,foot)
%
% Entradas:
% H    => Handler das comunicações com o Master
% foot => Pé alvo
%
% Saídas:
% reaction => Valores dos sensores de força
% 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 [reaction,rx,error,errorstr,tries]=readspecial(H,scu_id)

% Carregamento em memória das constantes
data;

% Construção da mensagem a enviar
message=buildmessage(OP_READ_SENSORS,scu_id,PARAM_SPECIAL);

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

% Error indica se ocorreu algum erro na mensagem de resposta
error=(rx(1)~=MESSAGE_SUCESS || rx(2)~=message(2));

% O array servos indica o parametro pedido para cada um dos servos
reaction=[];
if (~error)
    for i=3:USART_RECV_LENGTH, reaction=[reaction double(rx(i))]; end
    errorstr='';
% Na ocorrencia de um erro, definir a string de erro
else
    if (rx(1)==MESSAGE_INVREQ)
        errorstr='Invalid foot!';
    elseif (rx(2)~=message(2))
        errorstr='Type packet is different from the source!';
    else
        errorstr='Unknown error!';
    end
    cportreset(H);
end
