Don't await buffer flush if interrupted by Ctrl-C.
This commit is contained in:
@ -322,6 +322,7 @@ char* u64toa(uint64_t val, t_u64toa* str)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static volatile bool do_exit = false;
|
static volatile bool do_exit = false;
|
||||||
|
static volatile bool interrupted = false;
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
static HANDLE interrupt_handle;
|
static HANDLE interrupt_handle;
|
||||||
#endif
|
#endif
|
||||||
@ -638,6 +639,7 @@ static hackrf_device* device = NULL;
|
|||||||
BOOL WINAPI sighandler(int signum)
|
BOOL WINAPI sighandler(int signum)
|
||||||
{
|
{
|
||||||
if (CTRL_C_EVENT == signum) {
|
if (CTRL_C_EVENT == signum) {
|
||||||
|
interrupted = true;
|
||||||
fprintf(stderr, "Caught signal %d\n", signum);
|
fprintf(stderr, "Caught signal %d\n", signum);
|
||||||
stop_main_loop();
|
stop_main_loop();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -647,6 +649,7 @@ BOOL WINAPI sighandler(int signum)
|
|||||||
#else
|
#else
|
||||||
void sigint_callback_handler(int signum)
|
void sigint_callback_handler(int signum)
|
||||||
{
|
{
|
||||||
|
interrupted = true;
|
||||||
fprintf(stderr, "Caught signal %d\n", signum);
|
fprintf(stderr, "Caught signal %d\n", signum);
|
||||||
do_exit = true;
|
do_exit = true;
|
||||||
}
|
}
|
||||||
@ -1388,7 +1391,7 @@ int main(int argc, char** argv)
|
|||||||
interval_timer.it_value.tv_sec = 0;
|
interval_timer.it_value.tv_sec = 0;
|
||||||
setitimer(ITIMER_REAL, &interval_timer, NULL);
|
setitimer(ITIMER_REAL, &interval_timer, NULL);
|
||||||
#endif
|
#endif
|
||||||
if (transmit) {
|
if (transmit && !interrupted) {
|
||||||
// Wait for TX to finish.
|
// Wait for TX to finish.
|
||||||
hackrf_await_tx_flush(device);
|
hackrf_await_tx_flush(device);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user