function [code ConvEncNewState] = ConvEncoder(msg, coderate, state)
% msg was vector in the main body of dvb function, sent tot ConvEncoder as
% a Column though, msg (input) is a column in this functuin
trel = poly2trellis(7, [171 133]); % Trellis with contraint length 7 and generator polynomials o'133' o'171'
if state == 0
if strcmp(coderate, '1/2') == 1
msg=[msg;zeros(48,1)];
[code ConvEncNewState] = convenc(msg,trel); % Encode the message.
code=code(1:end-48);
elseif strcmp(coderate, '2/3') == 1
s=4-rem(size(msg,1),4);
msg=[msg;zeros(s,1)];
[code ConvEncNewState] = convenc(msg,trel,[1 1 0 1]); % Encode the message.
code=code(1:end-s);
%assignin('base','code0',code)
elseif strcmp(coderate, '3/4') == 1
s=6-rem(size(msg,1),6);
msg=[msg;zeros(s,1)];
[code ConvEncNewState] = convenc(msg,trel,[1 1 0 1 1 0]); % Encode the message.
code=code(1:end-s);
elseif strcmp(coderate, '5/6') == 1
s=10-rem(size(msg,1),10);
msg=[msg;zeros(s,1)];
[code ConvEncNewState] = convenc(msg,trel,[1 1 0 1 1 0 0 1 1 0]); % Encode the message.
code=code(1:end-s);
elseif strcmp(coderate, '7/8') == 1
s=14-rem(size(msg,1),14);
msg=[msg;zeros(s,1)];
[code ConvEncNewState] = convenc(msg,trel,[1 1 0 1 0 1 0 1 1 0 0 1 1 0]); % Encode the message.
code=code(1:end-s);
end
else
if strcmp(coderate, '1/2') == 1
msg=[msg;zeros(48,1)];
[code ConvEncNewState] = convenc(msg,trel,state); % Encode the message.
code=code(1:end-48);
elseif strcmp(coderate, '2/3') == 1
s=4-rem(size(msg,1),4);
msg=[msg;zeros(s,1)];
[code ConvEncNewState] = convenc(msg,trel,[1 1 0 1],state); % Encode the message.
code=code(1:end-s);
elseif strcmp(coderate, '3/4') == 1
s=6-rem(size(msg,1),6);
msg=[msg;zeros(s,1)];
[code ConvEncNewState] = convenc(msg,trel,[1 1 0 1 1 0],state); % Encode the message.
code=code(1:end-s);
elseif strcmp(coderate, '5/6') == 1
s=10-rem(size(msg,1),10);
msg=[msg;zeros(s,1)];
[code ConvEncNewState] = convenc(msg,trel,[1 1 0 1 1 0 0 1 1 0],state); % Encode the message.
code=code(1:end-(s));
elseif strcmp(coderate, '7/8') == 1
s=14-rem(size(msg,1),14);
msg=[msg;zeros(s,1)];
[code ConvEncNewState] = convenc(msg,trel,[1 1 0 1 0 1 0 1 1 0 0 1 1 0],state); % Encode the message.
code=code(1:end-s);
end
end