96 Commits

Author SHA1 Message Date
Martin Ling
eeaaaf3b9b Make use of Win32 functions conditional on _WIN32, not _MSC_VER.
Using _MSC_VER here means that the choice of signal() versus
SetConsoleCtrlHandler depends on the compiler being used, rather
than the OS being targeted. When built with MinGW rather than MSVC,
this happens to work because MinGW's signal emulation is used, but
that emulation is quite limited.

Instead, be consistent and use the Win32 API when building for that
platform, regardless of compiler.

Note that if building for Cygwin, _WIN32 is not defined and POSIX
APIs are used.
2022-08-17 12:54:22 +01:00
Martin Ling
c3fdf402d7 Reformat all code to new clang-format standard. 2022-08-03 23:46:44 +01:00
Martin Ling
ebb9e43fde Move some trailing comments on long lines. 2022-08-03 23:42:55 +01:00
Martin Ling
414b4a98da hackrf_transfer: Split a long line in usage(). 2022-08-03 23:03:15 +01:00
Martin Ling
7f5ae870ec hackrf_transfer: Clean up WAV headers. 2022-08-03 23:03:15 +01:00
colt
b5057b87e8 Report an amplitude of value -INFINITY as is instead of showing it as
-0.0 dBfs
2022-08-02 18:44:28 -05:00
colt
b47a808eaa Do dB ratio check BEFORE it's used 2022-07-11 13:25:14 -05:00
colt
151b431c64 Fix #902 - Report transmit amplitude 2022-07-06 22:34:26 -05:00
Yan
19a9074039 Avoid warnings by using PRIu64 2022-03-21 13:53:40 +00:00
Martin Ling
2c86f493d9 Keep track of longest shortfall.
This adds six cycles to the TX and RX shortfall paths.
2022-02-13 16:46:12 +00:00
Martin Ling
a7bd1e3ede Keep count of number of shortfalls.
To enable this, we keep a count of the current shortfall length. Each
time an SGPIO read/write cannot be completed due to a shortfall, we
increase this length. Each time an SGPIO read/write is completed
successfully, we reset the shortfall length to zero.

When a shortfall occurs and the existing shortfall length is zero, this
indicates a new shortfall, and the shortfall count is incremented.

This change adds one cycle to the normal RX & TX paths, to zero the
shortfall count. To enable this to be done in a single cycle, we keep a
zero handy in a high register.

The extra accounting adds 10 cycles to the TX and RX shortfall paths,
plus an additional 3 cycles to the RX shortfall path since there are
now two branches involved: one to the shortfall handler, and another
back to the main loop.
2022-02-13 16:46:12 +00:00
Martin Ling
c8d120ff6c Display total M0 and M4 counts at end of hackrf_transfer.
Doing this requires keeping track of when the 32-bit counters wrap, and
updating 64-bit running totals.
2022-02-13 16:46:12 +00:00
Martin Ling
eb2be7995c Add hackrf_transfer option to display buffer stats.
This adds the `hackrf_transfer -B` option, which displays the number of
bytes currently in the buffer along with the existing per-second stats.

The number of bytes in the buffer is indicated by the difference between
the M0 and M4 byte counters. In TX, the M4 count should lead the M0 count.
In RX, the M0 count should lead the M4 count.
2022-02-13 16:46:12 +00:00
Michael Ossmann
aa0485d4df Revert "Cleanup of host software CMake build system (#664)"
This reverts commit d60fb83320cea49fd20305f22838f948557f1b81.
2021-12-08 16:59:05 -07:00
Jamie Smith
d60fb83320 Cleanup of host software CMake build system (#664)
* Clean up the CMake build system and improve the FindFFTW3 module.

* Fixes for Linux build

* Include winsock.h to get struct timeval

* Couple more fixes for MSVC, also add new FindMath module

* Update host build README for new CMake changes (esp. Windows)

* Try to fix Travis OS X build error

* Add docs about pthread-win32

* Whoops, AppVeyor caught a bug in FindFFTW where the includes not being found weren't generating a fatal error.

* Travis rebuild bump

* One more fix: replace hardcoded include paths with a PATH_SUFFIX to standard include paths

* Invert Windows preprocessor flag so it's only needed when using a static build.  This preserves compatibility with the previous system.

* Fix copy-paste error

* Update cmake modules from amber-cmake upstream, incorporate TryLinkLibrary into FindUSB1

* Fix missing include
2021-12-03 14:11:04 -05:00
Clifford Heath
a9945ffaa3 Report amplitude once per second during receive (#890)
* Report amplitude once per second during receive

* Added missing M_LN10 for Windoze, fixed short frame detection for RSSI

* Tweaks to math expressions

* Tweaks to math expressions
2021-06-13 11:59:26 -06:00
Michael Ossmann
2ca991e1df Flush output streams. Do not fclose stdout/stdin. 2021-01-27 12:12:45 -07:00
Michael Ossmann
a6fa7876cb Give descriptive names to streams.
They were previously given the confusing name of fd even though they are
not file descriptors.
2021-01-27 11:59:29 -07:00
jaj
a9f6cbc367 fix _FILE_OFFSET_BITS 64 position in hackrf_transfer.c (must be included before <sys/stat.h>) 2020-03-16 13:16:15 +01:00
Michael Ossmann
ecd82e81c1 remove specific sample rate recommendations
HackRF One supports arbitrary sample rates from 2 Msps to 20 Msps.  In
early development we had ideas about preferred sample rates that we no
longer consider valid.
2020-01-22 06:39:08 -07:00
mgesteiro
c2d2492d41 FIXED: remove garbage at the end when capturing to stdout ('-r -') 2019-11-12 09:03:51 +01:00
Dominic Spill
cf4b3ae7f4 Cast all the things 2018-03-27 14:30:41 -06:00
Dominic Spill
e384a2d2b7 Explicitly cast variables to silence Windows build warnings 2018-03-27 14:11:51 -06:00
Dominic Spill
d4d74db27c Add helper functions for parsing frequency arguments 2018-03-27 11:57:52 -06:00
Dominic Spill
3168bb55e3 Revert "hackrf_transfer: fix Windows uint32 conversion build warnings"
This reverts commit a9bc8b7ff7c1a2fd910f99d7accd9f75196c71f0.
2018-03-26 19:11:55 -06:00
Dominic Spill
a9bc8b7ff7 hackrf_transfer: fix Windows uint32 conversion build warnings 2018-03-26 19:07:42 -06:00
Marco Bartolucci
e682fe812e Always call hackrf_set_hw_sync_mode in hackrf_transfer.
Avoids the need to manually disable the hw synchronisation by specifyinh the option -H 0.
Omitting -H 0 has the same effect.
2017-05-22 11:40:12 +02:00
Marco Bartolucci
8d0187770a Added "Waiting for sync" info in hackrf_transfer 2017-05-22 11:29:37 +02:00
Marco Bartolucci
e6a0161058 Avoid hackrf-transfer to abort if no samples are received within one second, when hardware sync mode is enabled. 2017-05-19 15:44:23 +02:00
Marco Bartolucci
533f9ee332 Hardware (CPLD-based) synchronisation
=======================================

This commit allows to synchronise multiple HackRFs with a synchronisation error **below 1 sampling period**

> WARNING: Use this at your own risk. If you don't know what you are doing you may damage your HackRF.
> The author takes no responsability for potential damages

Usage example: synchronise two HackRFs
======================================
1. Chose the master HackRF which will send the synchronisation pulse (HackRF0). HackRF1 will represent the slave hackrf.
2. Retreive the serial number of both HackRFs using `hackrf_info`
3. Use a wire to connect `SYNC_CMD` of HackRF0 to `SYNC_IN` of HackRF0 and HackRF1
4. Run `hackrf_transfer` with the argument `-H 1` to enable hardware synchronisation:
    ```
    $ hackrf_tranfer ... -r rec1.bin -d HackRF1_serial -H 1 | hackrf_transfer ... -r rec0.bin -d HackRF0_serial -H 1
    ```
rec0.bin and rec1.bin will have a time offset below 1 sampling period.
The 1PPS output of GNSS receivers can be used to synchronise HackRFs even if they are far from each other.
>DON'T APPLY INCOMPATIBLE VOLTAGE LEVELS TO THE CPLD PINS

Signal | Header |Pin | Description
-------|--------|----|------------
`SYNC_IN` | P28 | 16 | Synchronisation pulse input
`SYNC_CMD` | P28 | 15 | Synchronisation pulse output

Note:
=====
I had to remove CPLD-based decimation to use a GPIO for enabling hardware.

More info:
==========
[M. Bartolucci, J. A. Del Peral-Rosado, R. Estatuet-Castillo, J. A. Garcia-Molina, M. Crisci and G. E. Corazza, "Synchronisation of low-cost open source SDRs for navigation applications," 2016 8th ESA Workshop on Satellite Navigation Technologies and European Workshop on GNSS Signals and Signal Processing (NAVITEC), Noordwijk, 2016, pp. 1-7.](http://ieeexplore.ieee.org/document/7849328/)

[Alternative link](http://spcomnav.uab.es/docs/conferences/Bartolucci_NAVITEC_2016.pdf)
2017-05-16 11:39:44 +02:00
Dominic Spill
a1d6e7b3fe Modify hw sync mode to require an argument
- allows it to be ignored for HackRFs with older firmware
2017-02-09 16:35:56 -07:00
Michael Ossmann
4ac132a4ea hackrf_transfer: switched some output messages from stdout to stderr 2017-02-08 17:03:05 -07:00
Michael Ossmann
ad9ee61e64 fixed bug in bandwidth filter option error checking in hackrf_transfer 2017-02-07 16:19:05 -07:00
Michael Ossmann
e7d459b30f Changed "User cancel" message to "Exiting" because it can happen in situations other than a user action.
Fixes #319 investigate "User cancel error"
2017-02-01 21:00:35 -07:00
Dominic Spill
255b7b4705 Add USB API versioning 2017-01-30 18:30:17 -07:00
Michael Ossmann
f494e0b890 Fixed hackrf_transfer mode control logic. 2017-01-29 18:21:17 -07:00
Michael Ossmann
9211b70770 Added -h/-? option for help to all command line tools. 2017-01-29 17:37:29 -07:00
Dominic Spill
9e78ccb4e7 Correct argument parsing logic 2017-01-27 16:06:01 -07:00
Michael Ossmann
560b390f6c use preferred hackrf_sample_rate_set() instead of older function in hackrf_transfer 2017-01-26 19:03:39 -07:00
Michael Ossmann
b3246972ed use new libhackrf automatic baseband filter selection in hackrf_transfer 2017-01-26 18:58:31 -07:00
Dominic Spill
439ddaaa40 Support compiling with Visual Studio 2017-01-26 17:00:41 -07:00
Michael Ossmann
95c9ac6ffa Support files larger than 2147483647 bytes on 32-bit platforms.
Fixes issue #152.
2017-01-25 16:32:20 -07:00
Michael Ossmann
ba4ffbb1e4 hackrf_transfer: made -n option compatible with -R (repeat TX mode).
-n limits the total number of samples transferred via USB.
This fixes issue #192.
2017-01-25 15:35:12 -07:00
schneider42
d329dac414 Merge branch 'master' into streaming 2017-01-25 11:30:29 +01:00
Mike Davis
ddb19a86fe Add vendor request for enabling/disabling gpio-based sync 2017-01-22 22:28:11 +02:00
Dominic Spill
11ef7f74f6 Tidy clang build warnings
- Remove transceiver enums from hackrf.h
 - convert uint64_ts to int64_ts for frequency maths
2016-09-15 13:50:50 -06:00
Stefan `Sec` Zehl
ad6f9df89a First receive streaming implementation 2016-08-13 21:54:12 +02:00
Radoslav Gerganov
8ba15ad0b1 Make the 'do_exit' flag static
Both libhackrf and hackrf_transfer are using boolean flag named
"do_exit" which is not static. This is problematic because the flag is
used for different things. This patch fixes the problem by making the
flag static in both places.
2016-08-05 16:53:36 +03:00
Josh Blum
cccde1b431 hackrf_transfer - cast with uint32_t
The compiler (MSVC 2013) didnt have the uint typedef,
switched to using uint32_t which is the type of sample_rate_hz.
2016-07-20 17:37:35 -07:00
Michael Ossmann
ab58c3c29c Merge pull request #261 from rgerganov/std-in-out
Add support for transmitting/receiving from stdin/stdout
2016-07-20 15:20:15 -06:00