mirror of
https://github.com/jfdelnero/rf-tools.git
synced 2026-08-16 00:23:30 -04:00
pocsag : bit stream output mode.
This commit is contained in:
+8
-2
@@ -48,20 +48,26 @@ void serial_init(serial_gen * ctx, int bitcnt, unsigned int sample_rate, unsigne
|
|||||||
|
|
||||||
int serial_tx_getlinestate(serial_gen * ctx)
|
int serial_tx_getlinestate(serial_gen * ctx)
|
||||||
{
|
{
|
||||||
|
int update_flag;
|
||||||
|
|
||||||
|
update_flag = 0;
|
||||||
|
|
||||||
if ( ctx->acc > (((uint32_t)0xFFFFFFFF) - ctx->inc_acc) )
|
if ( ctx->acc > (((uint32_t)0xFFFFFFFF) - ctx->inc_acc) )
|
||||||
{
|
{
|
||||||
// Overflow... Next bit
|
// Overflow... Next bit
|
||||||
ctx->cur_bit = ctx->tx_reg & ctx->mask;
|
ctx->cur_bit = ctx->tx_reg & ctx->mask;
|
||||||
// If mask == 0 -> shifter empty !
|
// If mask == 0 -> shifter empty !
|
||||||
ctx->mask >>= 1;
|
ctx->mask >>= 1;
|
||||||
|
|
||||||
|
update_flag = 0x2;
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->acc += ctx->inc_acc;
|
ctx->acc += ctx->inc_acc;
|
||||||
|
|
||||||
if( ctx->cur_bit )
|
if( ctx->cur_bit )
|
||||||
return 1;
|
return 1 | update_flag;
|
||||||
else
|
else
|
||||||
return 0;
|
return 0 | update_flag;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+23
-3
@@ -144,6 +144,7 @@ void printhelp(char* argv[])
|
|||||||
printf(" -fmessage:message_file.txt\t: File message to send\n");
|
printf(" -fmessage:message_file.txt\t: File message to send\n");
|
||||||
printf(" -level:[0-127]\t\t: Output level (Default: 126)\n");
|
printf(" -level:[0-127]\t\t: Output level (Default: 126)\n");
|
||||||
printf(" -settle_time:[0-100]\t\t: Frequency change settle time, in percent of a bit period (Default: 20)\n");
|
printf(" -settle_time:[0-100]\t\t: Frequency change settle time, in percent of a bit period (Default: 20)\n");
|
||||||
|
printf(" -bits_stream_out\t\t: Enable bits stream output\n");
|
||||||
printf(" -verbose \t\t\t: Verbose mode\n");
|
printf(" -verbose \t\t\t: Verbose mode\n");
|
||||||
printf(" -help \t\t\t: This help\n\n");
|
printf(" -help \t\t\t: This help\n\n");
|
||||||
printf("Example : ./pocsag -generate -stdout -ric:154232 -message:\"Hello\" -alpha | hackrf_transfer -f 466200500 -t - -x 10 -a 0 -s 2000000\n");
|
printf("Example : ./pocsag -generate -stdout -ric:154232 -message:\"Hello\" -alpha | hackrf_transfer -f 466200500 -t - -x 10 -a 0 -s 2000000\n");
|
||||||
@@ -479,6 +480,8 @@ int main(int argc, char* argv[])
|
|||||||
int level;
|
int level;
|
||||||
int verbose;
|
int verbose;
|
||||||
int message_size;
|
int message_size;
|
||||||
|
int ser_state;
|
||||||
|
int data_stream_mode;
|
||||||
|
|
||||||
wave_io * wave1;
|
wave_io * wave1;
|
||||||
|
|
||||||
@@ -525,6 +528,12 @@ int main(int argc, char* argv[])
|
|||||||
freqshift = atoi(temp_str);
|
freqshift = atoi(temp_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data_stream_mode = 0;
|
||||||
|
if(isOption(argc,argv,"bits_stream_out",NULL,NULL)>0)
|
||||||
|
{
|
||||||
|
data_stream_mode = 1;
|
||||||
|
}
|
||||||
|
|
||||||
message[0] = 0;
|
message[0] = 0;
|
||||||
if(isOption(argc,argv,"message",(char*)&message,NULL)>0)
|
if(isOption(argc,argv,"message",(char*)&message,NULL)>0)
|
||||||
{
|
{
|
||||||
@@ -770,7 +779,9 @@ int main(int argc, char* argv[])
|
|||||||
serial_tx_settxreg(&ser,0xAA);
|
serial_tx_settxreg(&ser,0xAA);
|
||||||
}
|
}
|
||||||
|
|
||||||
if( serial_tx_getlinestate(&ser) )
|
ser_state = serial_tx_getlinestate(&ser);
|
||||||
|
|
||||||
|
if( ser_state & 1 )
|
||||||
{
|
{
|
||||||
if(freqidx < settle_size - 1)
|
if(freqidx < settle_size - 1)
|
||||||
freqidx++;
|
freqidx++;
|
||||||
@@ -804,7 +815,9 @@ int main(int argc, char* argv[])
|
|||||||
serial_tx_settxreg(&ser,tmp);
|
serial_tx_settxreg(&ser,tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
if( serial_tx_getlinestate(&ser) )
|
ser_state = serial_tx_getlinestate(&ser);
|
||||||
|
|
||||||
|
if( ser_state & 1 )
|
||||||
{
|
{
|
||||||
if(freqidx < settle_size - 1)
|
if(freqidx < settle_size - 1)
|
||||||
freqidx++;
|
freqidx++;
|
||||||
@@ -815,6 +828,11 @@ int main(int argc, char* argv[])
|
|||||||
freqidx--;
|
freqidx--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( (ser_state & 0x2) && data_stream_mode )
|
||||||
|
{
|
||||||
|
fprintf(stderr,"%d", ser_state & 1);
|
||||||
|
}
|
||||||
|
|
||||||
iqgen.Frequency = (double)CENTRAL_IF_FREQ + settle_buf[freqidx];
|
iqgen.Frequency = (double)CENTRAL_IF_FREQ + settle_buf[freqidx];
|
||||||
iq_wave_buf[j] = get_next_iq(&iqgen);
|
iq_wave_buf[j] = get_next_iq(&iqgen);
|
||||||
j++;
|
j++;
|
||||||
@@ -835,7 +853,9 @@ int main(int argc, char* argv[])
|
|||||||
else
|
else
|
||||||
iqgen.Amplitude = 0;
|
iqgen.Amplitude = 0;
|
||||||
|
|
||||||
if( serial_tx_getlinestate(&ser) )
|
ser_state = serial_tx_getlinestate(&ser);
|
||||||
|
|
||||||
|
if( ser_state & 1 )
|
||||||
{
|
{
|
||||||
if(freqidx < settle_size - 1)
|
if(freqidx < settle_size - 1)
|
||||||
freqidx++;
|
freqidx++;
|
||||||
|
|||||||
Reference in New Issue
Block a user