mirror of
https://github.com/jfdelnero/rf-tools.git
synced 2026-07-12 13:54:21 -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 update_flag;
|
||||
|
||||
update_flag = 0;
|
||||
|
||||
if ( ctx->acc > (((uint32_t)0xFFFFFFFF) - ctx->inc_acc) )
|
||||
{
|
||||
// Overflow... Next bit
|
||||
ctx->cur_bit = ctx->tx_reg & ctx->mask;
|
||||
// If mask == 0 -> shifter empty !
|
||||
ctx->mask >>= 1;
|
||||
|
||||
update_flag = 0x2;
|
||||
}
|
||||
|
||||
ctx->acc += ctx->inc_acc;
|
||||
|
||||
if( ctx->cur_bit )
|
||||
return 1;
|
||||
return 1 | update_flag;
|
||||
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(" -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(" -bits_stream_out\t\t: Enable bits stream output\n");
|
||||
printf(" -verbose \t\t\t: Verbose mode\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");
|
||||
@@ -479,6 +480,8 @@ int main(int argc, char* argv[])
|
||||
int level;
|
||||
int verbose;
|
||||
int message_size;
|
||||
int ser_state;
|
||||
int data_stream_mode;
|
||||
|
||||
wave_io * wave1;
|
||||
|
||||
@@ -525,6 +528,12 @@ int main(int argc, char* argv[])
|
||||
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;
|
||||
if(isOption(argc,argv,"message",(char*)&message,NULL)>0)
|
||||
{
|
||||
@@ -770,7 +779,9 @@ int main(int argc, char* argv[])
|
||||
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)
|
||||
freqidx++;
|
||||
@@ -804,7 +815,9 @@ int main(int argc, char* argv[])
|
||||
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)
|
||||
freqidx++;
|
||||
@@ -815,6 +828,11 @@ int main(int argc, char* argv[])
|
||||
freqidx--;
|
||||
}
|
||||
|
||||
if( (ser_state & 0x2) && data_stream_mode )
|
||||
{
|
||||
fprintf(stderr,"%d", ser_state & 1);
|
||||
}
|
||||
|
||||
iqgen.Frequency = (double)CENTRAL_IF_FREQ + settle_buf[freqidx];
|
||||
iq_wave_buf[j] = get_next_iq(&iqgen);
|
||||
j++;
|
||||
@@ -835,7 +853,9 @@ int main(int argc, char* argv[])
|
||||
else
|
||||
iqgen.Amplitude = 0;
|
||||
|
||||
if( serial_tx_getlinestate(&ser) )
|
||||
ser_state = serial_tx_getlinestate(&ser);
|
||||
|
||||
if( ser_state & 1 )
|
||||
{
|
||||
if(freqidx < settle_size - 1)
|
||||
freqidx++;
|
||||
|
||||
Reference in New Issue
Block a user