function [] = TestFirmwareCanCallback(rxCh)

global float1_0 float2_0;
global Int1_1 Int2_1 Int3_1 Int4_1;
global Int1_2 Int2_2 Int3_2 Int4_2;
global Int1_3 Int2_3 Int3_3 Int4_3;

rxMsg = receive(rxCh, Inf);
[srcID, dataID, seq_num] = DecodeCanID(rxMsg);

idx = find((dataID == 0) & (srcID == 3));
if(~isempty(idx))
 float1_0 = unpack(rxMsg(idx), 0, 32, 'LittleEndian', 'single');
 float2_0 = unpack(rxMsg(idx), 32, 32, 'LittleEndian', 'single');  
end


idx = find((dataID == 1) & (srcID == 3));
if(~isempty(idx))
 Int1_1 = unpack(rxMsg(idx), 0, 16, 'LittleEndian', 'uint16');
 Int2_1 = unpack(rxMsg(idx), 16, 16, 'LittleEndian', 'int16');  
 Int3_1 = unpack(rxMsg(idx), 32, 16, 'LittleEndian', 'uint16');
 Int4_1 = unpack(rxMsg(idx), 48, 16, 'LittleEndian', 'uint16'); 
end

idx = find((dataID == 2) & (srcID == 3));
if(~isempty(idx))
 Int1_2 = unpack(rxMsg(idx), 0, 16, 'LittleEndian', 'uint16');
 Int2_2 = unpack(rxMsg(idx), 16, 16, 'LittleEndian', 'int16');  
 Int3_2 = unpack(rxMsg(idx), 32, 16, 'LittleEndian', 'uint16');
 Int4_2 = unpack(rxMsg(idx), 48, 16, 'LittleEndian', 'int16'); 
end
 
idx = find((dataID == 3) & (srcID == 3));
if(~isempty(idx))
 Int1_3 = unpack(rxMsg(idx), 0, 16, 'LittleEndian', 'uint16');
 Int2_3 = unpack(rxMsg(idx), 16, 16, 'LittleEndian', 'int16');  
 Int3_3 = unpack(rxMsg(idx), 32, 16, 'LittleEndian', 'uint16');
 Int4_3 = unpack(rxMsg(idx), 48, 16, 'LittleEndian', 'int16'); 
end

%  disp([num2str(float1_0) '   ' num2str(float2_0) '   ' ...
%      num2str(Int1_1) '   ' num2str(Int2_1) '  ' num2str(Int3_1) '   ' num2str(Int4_1) '   ' ...
%      '   ' num2str(Int1_2) '   ' num2str(Int2_2) '   ' num2str(Int3_2) '   ' num2str(Int4_2) '   ' ...
%      '   ' num2str(Int1_3) '   ' num2str(Int2_3) '   ' num2str(Int3_3) '   ' num2str(Int4_3)]);
        
 disp([num2str(Int1_2) '   ' num2str(Int2_2) '   ' num2str(Int3_2) '   ' num2str(Int4_2/100)]);

end
    
