提交 19707bf4 编写于 作者: M manjaro

syn is not good

上级 402d1229
......@@ -30,7 +30,8 @@ std::atomic<int> curr_deal = 0;
//Sample rate in Hz
double sprate = 240000 ;
std::atomic<bool> syn = false;
const int searchRange = 1001;
std::atomic<int> syn = searchRange/10;
//消费者线程,for rx
void dealer();
int runRecieve()
......@@ -173,7 +174,7 @@ int runRecieve()
memcpy(dest, src , copyto * sizeof(SPTYPE) * 2 );
total_red = copyto;
curr_active = 1 - curr_active;
if (!syn)
if (syn>3)
{
rx_stream_cmd.stream_mode = UHD_STREAM_MODE_STOP_CONTINUOUS;
UHD_DO(uhd_rx_streamer_issue_stream_cmd(rx_streamer, &rx_stream_cmd));
......@@ -184,7 +185,6 @@ int runRecieve()
}
rx_stream_cmd.stream_mode = UHD_STREAM_MODE_START_CONTINUOUS;
UHD_DO(uhd_rx_streamer_issue_stream_cmd(rx_streamer, &rx_stream_cmd));
}
}
}
......@@ -200,31 +200,33 @@ int runRecieve()
}
void runDeal()
{
const int DealEnd = READ_BUF_SIZE - WAVSIZE;
const int steps = 201;
float (*cross[steps])[2][2] ;
for (int i=0;i<steps;++i)
float (*cross[searchRange])[2][2] ;
for (int i=0;i<searchRange;++i)
cross[i] = new float[DealEnd][2][2];
float (*judge[steps])[2] ;
for (int i=0;i<steps;++i)
float (*judge[searchRange])[2] ;
for (int i=0;i<searchRange;++i)
judge[i] = new float[DealEnd][2];
float (*freq_mv[steps])[2];
for (int i=0;i<steps;++i)
float (*freq_mv[searchRange])[2];
for (int i=0;i<searchRange;++i)
freq_mv[i] = new float[DealEnd][2];
float (*sig[steps])[2] ;
for (int i=0;i<steps;++i)
float (*sig[searchRange])[2] ;
for (int i=0;i<searchRange;++i)
sig[i] = new float[DealEnd][2];
const float pi = 3.1415927;
for (int df = 0;df<steps;++df)
#pragma omp parallel for
for (int df = 0;df<searchRange;++df)
{
float f = (df-steps/2)*50;
float f = (df-searchRange/2.0)*10;
for (int pv = 0;pv<DealEnd;++pv)
{
float t = pv / sprate;
......@@ -232,7 +234,7 @@ void runDeal()
freq_mv[df][pv][1] = sin(2*pi*f*t);
}
}
int startDF = 0, endDF = steps;
int startDF =0, endDF = searchRange;
while (!stop_signal_called) {
if ((int)curr_active==(int)curr_deal)
{
......@@ -244,8 +246,9 @@ void runDeal()
fprintf(stderr,"Dealing %d\n",deal);
float maxAbs = 0;
int maxDF = 2;
int stp = syn;
#pragma omp parallel for
for (int df = startDF;df<endDF;++df)
for (int df = startDF;df<endDF;df+=stp)
{
//xorr
#pragma omp simd
......@@ -294,25 +297,31 @@ void runDeal()
printf ("MaxDF=%d\n",maxDF);
for (size_t i=0;i<DealEnd;++i)
{
if (judge[maxDF][i][0] >= 1000 || judge[maxDF][i][1] >= 1000 )
if (judge[maxDF][i][0] >= 5000 || judge[maxDF][i][1] >= 5000 )
{
if (judge[maxDF][i][0] * 8 < judge[maxDF][i][1])
if (judge[maxDF][i][0] * 32 < judge[maxDF][i][1])
{
printf("%lu:0=%f, 1=%f, 1\n",i,judge[maxDF][i][0],judge[maxDF][i][1]);
fflush(stdout);
i+=WAVSIZE;
startDF = (maxDF - 2)<0?0:(maxDF - 2);
endDF = (maxDF + 2)>steps?steps:((maxDF + 2));
syn = true;
startDF = (maxDF - stp*2)<0?0:(maxDF - stp*2);
endDF = (maxDF + stp*2)>searchRange?searchRange:((maxDF + stp*2));
if (syn > 3)
syn = (endDF - startDF)/10;
if (syn<1)
syn = 1;
}
else if (judge[maxDF][i][1] * 8 < judge[maxDF][i][0])
else if (judge[maxDF][i][1] * 32 < judge[maxDF][i][0])
{
printf("%lu:0=%f, 1=%f, 0\n",i,judge[maxDF][i][0],judge[maxDF][i][1]);
fflush(stdout);
i+=WAVSIZE;
startDF = (maxDF - 2)<0?0:(maxDF - 2);
endDF = (maxDF + 2)>steps?steps:((maxDF + 2));
syn = true;
startDF = (maxDF - stp*2)<0?0:(maxDF - stp*2);
endDF = (maxDF + stp*2)>searchRange?searchRange:((maxDF + stp*2));
if (syn > 3)
syn = (endDF - startDF)/10;
if (syn<1)
syn = 1;
}
}
......@@ -320,7 +329,7 @@ void runDeal()
//判决
curr_deal = 1-deal;
}
for (int i=0;i<steps;++i)
for (int i=0;i<searchRange;++i)
{
delete [] cross[i];
delete [] judge[i];
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册