📄 main.c
字号:
(((voice_data_down_line_g729d[i][6] & BIT4) >> 4) << 9)|
(((voice_data_down_line_g729d[i][6] & BIT3) >> 3) << 10)| //a6.3
(((voice_data_down_line_g729d[i][6] & BIT2) >> 2) << 11)| //a6.2
(((voice_data_down_line_g729d[i][7] & BIT1) >> 1) << 12)| //a7.0
(((voice_data_down_line_g729d[i][7] & BIT0) >> 0) << 13)|
(((voice_data_down_line_g729d[i][8] & BIT8) >> 8) << 14); //a8.0
//Buffer_data[5]=0;
Buffer_data[5]= (((voice_data_down_line_g729d[i][8] & BIT7) >> 7) << 0)| //a8.7
(((voice_data_down_line_g729d[i][8] & BIT6) >> 6) << 1)|
(((voice_data_down_line_g729d[i][8] & BIT5) >> 5) << 2)| //a8.5
(((voice_data_down_line_g729d[i][8] & BIT4) >> 4) << 3)| //a8.4
(((voice_data_down_line_g729d[i][8] & BIT3) >> 3) << 4)| //a8.3
(((voice_data_down_line_g729d[i][8] & BIT2) >> 2) << 5)|
(((voice_data_down_line_g729d[i][8] & BIT1) >> 1) << 6)|
(((voice_data_down_line_g729d[i][8] & BIT0) >> 0) << 7)| //a8.0
(((voice_data_down_line_g729d[i][9] & BIT1) >> 1) << 8)| //a9.1
(((voice_data_down_line_g729d[i][9] & BIT0) >> 0) << 9)| //a9.0
(((voice_data_down_line_g729d[i][10] & BIT5) >> 5)<< 10)|
(((voice_data_down_line_g729d[i][10] & BIT4) >> 4) <<11)|
(((voice_data_down_line_g729d[i][10] & BIT3) >> 3) <<12)|
(((voice_data_down_line_g729d[i][10] & BIT2) >> 2) <<13)| //a10.2
( 0<<14);
//以上是对从G729D拿出数据进行BCH编码后,然后把90bit的数据流,打包成6个word.
//dengbing for test 20060403
for (t=0;t<6;t++)
Receive_Buffer_data[i][t]=Buffer_data[t];
//dengbing for test 20060403
//下面是通过BCH的接收到90个bit,然后根据BCH解码,得到64个bit,然后打包成为12个word的数据。
for (t=0;t<6;t++)
{ Receive_Buffer_Temp=Receive_Buffer_data[i][t];
for (j=0;j<15;j++)
{
if((Receive_Buffer_Temp & 0x01)==0)
channel_out_bit[t*15+j]=0;
else
channel_out_bit[t*15+j]=1;
Receive_Buffer_Temp=Receive_Buffer_Temp>>1;
}
}
//以上的程序是通过对6个word中15个bit转换为90bit,分别存储在Channel_out_bit[]中。
*/
/*
for (j=10;j<25;j++)
word_tran_bit[j-10]=channel_out_bit[j];
for(j=0;j<10;j++)
word_tran_bit[15+j]=channel_out_bit[j];
for(j=25;j<31;j++)
word_tran_bit[j]=channel_out_bit[j];
//以上的程序摘取BCH译码的数据,进行如下的译码的过程。
*/
// TEST for programm the dengbing 2006-4-4
Receive_Buffer_Temp=BCH1_CRC;
for(j=14;j>=0;j--)
{
if((Receive_Buffer_Temp&0x01)==0)
channel_out_bit[j]=0;
else
channel_out_bit[j]=1;
Receive_Buffer_Temp=(Receive_Buffer_Temp>>1);
}
Receive_Buffer_Temp=BCH1_data;
for(j=15;j>=0;j--)
{
if((Receive_Buffer_Temp&0x01)==0)
channel_out_bit[15+j]=0;
else
channel_out_bit[15+j]=1;
Receive_Buffer_Temp=(Receive_Buffer_Temp>>1);
}
for(j=0;j<31;j++)
word_tran_bit[j]=channel_out_bit[j];
//TEST for grogramm the dengbing 2006-4-4.
flag=decode_bch(word_tran_bit,3);
for(j=33;j<43;j++)
word1_tran_bit[j-33]=channel_out_bit[j];
for(j=31;j<33;j++)
word1_tran_bit[10+j-31]=channel_out_bit[j];
word1_tran_bit[12]=channel_out_bit[37];
word1_tran_bit[13]=channel_out_bit[59];
word1_tran_bit[14]=channel_out_bit[38];
word1_tran_bit[15]=channel_out_bit[58];
word1_tran_bit[16]=channel_out_bit[44];
word1_tran_bit[17]=channel_out_bit[11];
word1_tran_bit[18]=channel_out_bit[47];
word1_tran_bit[19]=channel_out_bit[54];
word1_tran_bit[20]=channel_out_bit[10];
for(j=21;j<31;j++)
word1_tran_bit[j]=0;
flag1=decode_bch(word1_tran_bit,2);
// 以上的程序进行对接收到信号进行BCH解码的过程。
for(j=0;j<16;j++)
serial_bit_channel[j]=word_tran_bit[15+j];
for(j=10;j<12;j++)
serial_bit_channel[6+j]=word1_tran_bit[j]; // 次敏感比特的头两个比特。
//对次敏感比特的通过BCH译码后的比特,取改变channel_out_bit中的值。
channel_out_bit[66]= word1_tran_bit[12];
channel_out_bit[84]= word1_tran_bit[13];
channel_out_bit[67]= word1_tran_bit[14];
channel_out_bit[83]= word1_tran_bit[15];
channel_out_bit[44]= word1_tran_bit[16];
channel_out_bit[46]= word1_tran_bit[17];
channel_out_bit[55]= word1_tran_bit[18];
channel_out_bit[49]= word1_tran_bit[19];
channel_out_bit[48]= word1_tran_bit[20];
channel_out_bit[72]= word1_tran_bit[21];
channel_out_bit[79]= word1_tran_bit[22];
channel_out_bit[45]= word1_tran_bit[23];
//把剩余的比特也赋值到serial_bit_channel中。
for(j=0;j<46;j++)
serial_bit_channel[j+18]=channel_out_bit[j+43];
//把64个比特语音打成12个word中。
for(j=0;j<64;j++)
BCH_decode_data[table[j]-1]=serial_bit_channel[j];
/*
voice_data_up_line_g729d[i][1]=((serial_bit_channel[18]&BIT0)<<7)|
((serial_bit_channel[7]&BIT0)<<6)|
((serial_bit_channel[19]&BIT0)<<5)|
((serial_bit_channel[4]&BIT0)<<4)|
((serial_bit_channel[10]&BIT0)<<3)|
((serial_bit_channel[12]&BIT0)<<2)|
((serial_bit_channel[17]&BIT0)<<1)|
((serial_bit_channel[6]&BIT0)<<0);
voice_data_up_line_g729d[i][2]=((serial_bit_channel[20]&BIT0)<<9)| //a2.9
((serial_bit_channel[21]&BIT0)<<8)|
((serial_bit_channel[22]&BIT0)<<7)|
((serial_bit_channel[23]&BIT0)<<6)|
((serial_bit_channel[24]&BIT0)<<5)|
((serial_bit_channel[25]&BIT0)<<4)|
((serial_bit_channel[26]&BIT0)<<3)|
((serial_bit_channel[27]&BIT0)<<2)|
((serial_bit_channel[28]&BIT0)<<1)|
((serial_bit_channel[29]&BIT0)<<0);
voice_data_up_line_g729d[i][3]=((serial_bit_channel[3]&BIT0)<<7)| //a3.7
((serial_bit_channel[1]&BIT0)<<6)|
((serial_bit_channel[0]&BIT0)<<5)|
((serial_bit_channel[2]&BIT0)<<4)|
((serial_bit_channel[5]&BIT0)<<3)|
((serial_bit_channel[15]&BIT0)<<2)|
((serial_bit_channel[30]&BIT0)<<1)|
((serial_bit_channel[31]&BIT0)<<0); //a3.0 //26
voice_data_up_line_g729d[i][4]((serial_bit_channel[32]&BIT0)<<8)| //a3.7
((serial_bit_channel[33]&BIT0)<<7)|
((serial_bit_channel[34]&BIT0)<<6)|
((serial_bit_channel[35]&BIT0)<<5)|
((serial_bit_channel[36]&BIT0)<<4)|
((serial_bit_channel[37]&BIT0)<<3)|
((serial_bit_channel[38]&BIT0)<<2)|
((serial_bit_channel[39]&BIT0)<<1)|
((serial_bit_channel[40]&BIT0)<<0);
/*i=1;
for(j=0;j<8;j++)
{
voice_data_up_line_g729d[i][3]=^(serial_bit_channel[32+j]);
voice_data_up_line_g729d[i][3]<<1;
}
*/
/*
voice_data_up_line_g729d[i][5]=0;
for(j=0;j<2;j++)
{
voice_data_up_line_g729d[i][3]=^(serial_bit_channel[40+j]);
voice_data_up_line_g729d[i][3]<<1;
}
voice_data_up_line_g729d[i][6]=((serial_bit_channel[14]&BIT0)<<2)| //a6.2 //42
((serial_bit_channel[9]&BIT0)<<1)|
((serial_bit_channel[11]&BIT0)<<0); //44
voice_data_up_line_g729d[i][7]=((serial_bit_channel[16]&BIT0)<<3)| //a6.2 //45
((serial_bit_channel[47]&BIT0)<<2)|
((serial_bit_channel[48]&BIT0)<<1)|
((serial_bit_channel[49]&BIT0)<<0); // 48
voice_data_up_line_g729d[i][8]=0;
for(j=49;j<57;j++)
{
voice_data_up_line_g729d[i][8]=^serial_bit_channel(j);
voice_data_up_line_g729d[i][8]<<1;
}
voice_data_up_line_g729d[i][9]=((serial_bit_channel[57]&BIT0)<<1)| //a6.2 //42
((serial_bit_channel[58]&BIT0)<<0);
voice_data_up_line_g729d[i][10]=((serial_bit_channel[59]&BIT0)<<5)| //a6.2 //45
((serial_bit_channel[60]&BIT0)<<4)|
((serial_bit_channel[61]&BIT0)<<3)|
((serial_bit_channel[62]&BIT0)<<2)| // 48
((serial_bit_channel[13]&BIT0)<<1)|
((serial_bit_channel[8]&BIT0)<<0);
//上述程序是把BCH解出的64个bit,分别放到12word中,供G729D用。
*/
point_org=BCH1_data;
for (j=0;j<16;j++)
{//test_db=(*point_org);
word_tran_bit[j]=(point_org&0x8000)>>15;
point_org=(point_org)<<1;
}
//point_org++;
point_crc=BCH1_CRC;
for(j=16;j<32;j++)
{
word_tran_bit[j]=(point_crc&0x4000)>>14;
point_crc=(point_crc)<<1;
}
for (j=0;j<32;j++)
{
if(j%20==0) error_tran_bit[j]=word_tran_bit[j]^1;
else error_tran_bit[j]=word_tran_bit[j];
}
flag1=decode_bch(error_tran_bit,3);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -