#include<stdio.h>
#include<string.h>
char data[100], concatdata[117], src_crc[17], dest_crc[17], frame[120], divident[18];
char divisor[18];
char res[17] = "0000000000000000";
void crc_cal(int node)
{
int i, j;
for (j
= 17; j
<= strlen(concatdata
); j
++) {
if (divident[0] == '1')
{
for (i = 1; i <= 16; i++)
if (divident[i] != divisor[i])
divident[i - 1] = '1';
else
divident[i - 1] = '0';
}
else
{
for (i = 1; i <= 16; i++)
divident[i - 1] = divident[i];
}
if (node == 0)
divident[i - 1] = concatdata[j];
else
divident[i - 1] = frame[j];
}
divident[i] = '\0';
printf("\ncrc is %s\n", divident
); if (node == 0)
{
}
else
}
int main()
{
int i;
printf("enter the generator bits\n"); {
printf("please enter the geneartor length min of 17 bits\n"); }
printf("\n At src node :\n Enter the msg to be sent :"); strcat(concatdata
, "0000000000000000"); for (i = 0; i <= 16; i++)
divident[i] = concatdata[i];
divident[i] = '\0';
crc_cal(0);
printf("\n The frame transmitted is :\t"); printf("\n%s%s", data
, src_crc
); printf("\n\t\tSOURCE NODE TRANSMITTED THE FRAME---->"); printf("\n\n\n\n\t\t\tAT DESTINATION NODE\nenter the recived frame:\t"); for (i = 0; i <= 16; i++)
divident[i] = frame[i];
divident[i] = '\0';
crc_cal(1);
if ((strcmp(dest_crc
, res
)) == 0) printf("\nRecived frame is error free .\n "); else
printf("\nRecived frame containes one or more error "); return 1;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RyaW5nLmg+CgpjaGFyIGRhdGFbMTAwXSwgY29uY2F0ZGF0YVsxMTddLCBzcmNfY3JjWzE3XSwgZGVzdF9jcmNbMTddLCBmcmFtZVsxMjBdLCBkaXZpZGVudFsxOF07CmNoYXIgZGl2aXNvclsxOF07CmNoYXIgcmVzWzE3XSA9ICIwMDAwMDAwMDAwMDAwMDAwIjsKCnZvaWQgY3JjX2NhbChpbnQgbm9kZSkKewogICAgaW50IGksIGo7CiAgICBmb3IgKGogPSAxNzsgaiA8PSBzdHJsZW4oY29uY2F0ZGF0YSk7IGorKykKICAgIHsKICAgICAgICBpZiAoZGl2aWRlbnRbMF0gPT0gJzEnKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIChpID0gMTsgaSA8PSAxNjsgaSsrKQogICAgICAgICAgICAgICAgaWYgKGRpdmlkZW50W2ldICE9IGRpdmlzb3JbaV0pCiAgICAgICAgICAgICAgICAgICAgZGl2aWRlbnRbaSAtIDFdID0gJzEnOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIGRpdmlkZW50W2kgLSAxXSA9ICcwJzsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgZm9yIChpID0gMTsgaSA8PSAxNjsgaSsrKQogICAgICAgICAgICAgICAgZGl2aWRlbnRbaSAtIDFdID0gZGl2aWRlbnRbaV07CiAgICAgICAgfQogICAgICAgIGlmIChub2RlID09IDApCiAgICAgICAgICAgIGRpdmlkZW50W2kgLSAxXSA9IGNvbmNhdGRhdGFbal07CiAgICAgICAgZWxzZQogICAgICAgICAgICBkaXZpZGVudFtpIC0gMV0gPSBmcmFtZVtqXTsKICAgIH0KICAgIGRpdmlkZW50W2ldID0gJ1wwJzsKICAgIHByaW50ZigiXG5jcmMgaXMgJXNcbiIsIGRpdmlkZW50KTsKICAgIGlmIChub2RlID09IDApCiAgICB7CiAgICAgICAgc3RyY3B5KHNyY19jcmMsIGRpdmlkZW50KTsKICAgIH0KICAgIGVsc2UKICAgICAgICBzdHJjcHkoZGVzdF9jcmMsIGRpdmlkZW50KTsKfQoKaW50IG1haW4oKQp7CiAgICBpbnQgaTsKICAgIHByaW50ZigiZW50ZXIgdGhlIGdlbmVyYXRvciBiaXRzXG4iKTsKICAgIGdldHMoZGl2aXNvcik7CiAgICBpZiAoc3RybGVuKGRpdmlzb3IpIDwgMTcgfHwgc3RybGVuKGRpdmlzb3IpID4gMTcpCiAgICB7CiAgICAgICAgcHJpbnRmKCJwbGVhc2UgZW50ZXIgdGhlIGdlbmVhcnRvciBsZW5ndGggbWluIG9mIDE3IGJpdHNcbiIpOwogICAgICAgIGV4aXQoMCk7CiAgICB9CiAgICBwcmludGYoIlxuIEF0IHNyYyBub2RlIDpcbiBFbnRlciB0aGUgbXNnIHRvIGJlIHNlbnQgOiIpOwogICAgZ2V0cyhkYXRhKTsKICAgIHN0cmNweShjb25jYXRkYXRhLCBkYXRhKTsKICAgIHN0cmNhdChjb25jYXRkYXRhLCAiMDAwMDAwMDAwMDAwMDAwMCIpOwogICAgZm9yIChpID0gMDsgaSA8PSAxNjsgaSsrKQogICAgICAgIGRpdmlkZW50W2ldID0gY29uY2F0ZGF0YVtpXTsKICAgIGRpdmlkZW50W2ldID0gJ1wwJzsKICAgIGNyY19jYWwoMCk7CiAgICBwcmludGYoIlxuZGF0YSBpczpcdCIpOwogICAgcHV0cyhkYXRhKTsKICAgIHByaW50ZigiXG4gVGhlIGZyYW1lIHRyYW5zbWl0dGVkIGlzIDpcdCIpOwogICAgcHJpbnRmKCJcbiVzJXMiLCBkYXRhLCBzcmNfY3JjKTsKICAgIHByaW50ZigiXG5cdFx0U09VUkNFIE5PREUgVFJBTlNNSVRURUQgVEhFIEZSQU1FLS0tLT4iKTsKICAgIHByaW50ZigiXG5cblxuXG5cdFx0XHRBVCBERVNUSU5BVElPTiBOT0RFXG5lbnRlciB0aGUgcmVjaXZlZCBmcmFtZTpcdCIpOwogICAgZ2V0cyhmcmFtZSk7CiAgICBmb3IgKGkgPSAwOyBpIDw9IDE2OyBpKyspCiAgICAgICAgZGl2aWRlbnRbaV0gPSBmcmFtZVtpXTsKICAgIGRpdmlkZW50W2ldID0gJ1wwJzsKICAgIGNyY19jYWwoMSk7CiAgICBpZiAoKHN0cmNtcChkZXN0X2NyYywgcmVzKSkgPT0gMCkKICAgICAgICBwcmludGYoIlxuUmVjaXZlZCBmcmFtZSBpcyBlcnJvciBmcmVlIC5cbiAiKTsKICAgIGVsc2UKICAgICAgICBwcmludGYoIlxuUmVjaXZlZCBmcmFtZSBjb250YWluZXMgb25lIG9yIG1vcmUgZXJyb3IgIik7CiAgICByZXR1cm4gMTsKfQo=