You are on page 1of 4

8b:Lab program

#include<iostream>
using namespace std;
class Transmitter
{
protected:
unsigned int payload;
unsigned int paritybit;
unsigned int payloadtobin;
unsigned int xorpayloadbin;
public:
Transmitter()
{
payload=0;
paritybit=0;

payloadtobin=0;
xorpayloadbin=0;
}
void payloadconvtobinary()
{
cout<<"\n enter payload";
cin>>payload;
int remainder;
int i=1;
int total=0;
int x=payload;
while(x!=0){
remainder = x%2;
x /= 2;
payloadtobin += remainder*i;
i *= 10;
}
cout<<"\n payload converted to binary
is"<<payloadtobin;
}

void paritybitfunc()
{
int result;
int num=payloadtobin;
int arr[15],i=0;
while(num!=0)
{

int res=payloadtobin%10;
arr[i]=res;
num=num/10;
}
for (int i = 1; i < 5; i++)
result = result ^ arr[i];
paritybit=result;

cout<<"\n the paritybit is "<<paritybit;


}

};
class RECEIVER:public Transmitter
{
protected:
unsigned int rx_pkt;
unsigned int rx_pktbin;
unsigned int E_flag;
unsigned int E_flagparitybit;
public:
RECEIVER()
{
rx_pkt=0;
rx_pktbin=0;

E_flag=0;
E_flagparitybit=0;
}
void get_rx_pkt()
{
cout<<"\n enter rx_pkt";
cin>>rx_pkt;
}
void calculationof_E_flag()
{
int remainder,i=1;
int x=rx_pkt;
while(x!=0){
remainder = x%2;
x /= 2;
E_flag += remainder*i;
i *= 10;
}
cout<<"\n rxpkt converted to binary is"<<E_flag;

void XOR_E_flagparitybitfunc()
{
int result,i;
int num=E_flag;
int arr1[15];
while(num!=0)
{

int res=E_flag%10;
arr1[i]=res;
num=num/10;
}
for (int i = 1; i < 5; i++)
result = result ^ arr1[i];
E_flagparitybit=result;

cout<<"\n E_flagparitybit is"<<E_flagparitybit;


}
void calcof_rx_data()
{
if(E_flagparitybit==paritybit)
{
cout<<"\n message received successfully";
// datapacket=paritybit*3276+(payload-32768);
//rx_data=rx_pkt-32768;
}
else
{
cout<<"\n the message is corrupted";
}

}
};//E_flag is got from rx_pkt by xor all bits
class transceiver:public RECEIVER
{
public:
transceiver()
{
Transmitter();
RECEIVER();
}
};
int main()
{
transceiver T1;
T1.payloadconvtobinary();
T1.paritybitfunc();
//T1.getandcalculatepayload();
T1.get_rx_pkt();
T1.calculationof_E_flag();
T1.XOR_E_flagparitybitfunc();
T1.calcof_rx_data();
return 0;
}

You might also like