Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
dsview
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Raptor Engineering Public Development
dsview
Commits
abbb5a6a
Commit
abbb5a6a
authored
Jan 04, 2020
by
DreamSourceLab
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add save data reminder when hardware detach
parent
e24b0d44
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
88 additions
and
9 deletions
+88
-9
DSView/pv/dialogs/storeprogress.cpp
DSView/pv/dialogs/storeprogress.cpp
+8
-3
DSView/pv/dialogs/storeprogress.h
DSView/pv/dialogs/storeprogress.h
+3
-0
DSView/pv/mainwindow.cpp
DSView/pv/mainwindow.cpp
+39
-1
DSView/pv/mainwindow.h
DSView/pv/mainwindow.h
+2
-0
DSView/pv/sigsession.cpp
DSView/pv/sigsession.cpp
+11
-0
DSView/pv/sigsession.h
DSView/pv/sigsession.h
+3
-0
DSView/pv/storesession.cpp
DSView/pv/storesession.cpp
+19
-5
DSView/pv/storesession.h
DSView/pv/storesession.h
+3
-0
No files found.
DSView/pv/dialogs/storeprogress.cpp
View file @
abbb5a6a
...
...
@@ -21,6 +21,7 @@
#include "storeprogress.h"
#include "dsmessagebox.h"
#include "pv/sigsession.h"
#include "QVBoxLayout"
...
...
@@ -59,15 +60,19 @@ void StoreProgress::reject()
{
using
namespace
Qt
;
_store_session
.
cancel
();
save_done
();
QDialog
::
reject
();
}
void
StoreProgress
::
timeout
()
{
if
(
_done
)
if
(
_done
)
{
_store_session
.
session
().
set_saving
(
false
);
save_done
();
close
();
else
}
else
{
QTimer
::
singleShot
(
100
,
this
,
SLOT
(
timeout
()));
}
}
void
StoreProgress
::
save_run
(
QString
session_file
)
...
...
@@ -76,7 +81,7 @@ void StoreProgress::save_run(QString session_file)
if
(
_store_session
.
save_start
(
session_file
))
show
();
else
show_error
();
show_error
();
QTimer
::
singleShot
(
100
,
this
,
SLOT
(
timeout
()));
}
...
...
DSView/pv/dialogs/storeprogress.h
View file @
abbb5a6a
...
...
@@ -60,6 +60,9 @@ private:
void
show_error
();
void
closeEvent
(
QCloseEvent
*
e
);
signals:
void
save_done
();
public
slots
:
void
save_run
(
QString
session_file
);
void
export_run
();
...
...
DSView/pv/mainwindow.cpp
View file @
abbb5a6a
...
...
@@ -54,6 +54,10 @@
#include "device/device.h"
#include "device/file.h"
#include "data/logicsnapshot.h"
#include "data/dsosnapshot.h"
#include "data/analogsnapshot.h"
#include "dialogs/about.h"
#include "dialogs/deviceoptions.h"
#include "dialogs/storeprogress.h"
...
...
@@ -100,6 +104,7 @@ MainWindow::MainWindow(DeviceManager &device_manager,
QMainWindow
(
parent
),
_device_manager
(
device_manager
),
_session
(
device_manager
),
_hot_detach
(
false
),
_msg
(
NULL
)
{
setup_ui
();
...
...
@@ -460,9 +465,9 @@ void MainWindow::update_device_list()
"Please replug it into a USB 3.0 port."
));
}
}
}
void
MainWindow
::
reload
()
{
_trigger_widget
->
device_updated
();
...
...
@@ -534,7 +539,38 @@ void MainWindow::device_detach()
session_save
();
_view
->
hide_calibration
();
if
(
_session
.
get_device
()
->
dev_inst
()
->
mode
!=
DSO
&&
strncmp
(
_session
.
get_device
()
->
name
().
toLocal8Bit
(),
"virtual"
,
7
))
{
const
boost
::
shared_ptr
<
data
::
Snapshot
>
logic_snapshot
(
_session
.
get_snapshot
(
SR_CHANNEL_LOGIC
));
assert
(
logic_snapshot
);
const
boost
::
shared_ptr
<
data
::
Snapshot
>
analog_snapshot
(
_session
.
get_snapshot
(
SR_CHANNEL_ANALOG
));
assert
(
analog_snapshot
);
if
(
!
logic_snapshot
->
empty
()
||
!
analog_snapshot
->
empty
())
{
dialogs
::
DSMessageBox
msg
(
this
);
_msg
=
&
msg
;
msg
.
mBox
()
->
setText
(
tr
(
"Hardware Detached"
));
msg
.
mBox
()
->
setInformativeText
(
tr
(
"Save captured data?"
));
msg
.
mBox
()
->
addButton
(
tr
(
"Ok"
),
QMessageBox
::
AcceptRole
);
msg
.
mBox
()
->
addButton
(
tr
(
"Cancel"
),
QMessageBox
::
RejectRole
);
msg
.
mBox
()
->
setIcon
(
QMessageBox
::
Warning
);
if
(
msg
.
exec
())
on_save
();
_msg
=
NULL
;
}
}
_hot_detach
=
true
;
if
(
!
_session
.
get_saving
())
device_detach_post
();
}
void
MainWindow
::
device_detach_post
()
{
if
(
!
_hot_detach
)
return
;
_hot_detach
=
false
;
struct
sr_dev_driver
**
const
drivers
=
sr_driver_list
();
struct
sr_dev_driver
**
driver
;
for
(
driver
=
drivers
;
*
driver
;
driver
++
)
...
...
@@ -839,6 +875,7 @@ void MainWindow::on_save()
// dialogs::RegionOptions *regionDlg = new dialogs::RegionOptions(_view, _session, this);
// regionDlg->exec();
_session
.
set_saving
(
true
);
QString
session_file
;
QDir
dir
;
#if QT_VERSION >= 0x050400
...
...
@@ -854,6 +891,7 @@ void MainWindow::on_save()
}
StoreProgress
*
dlg
=
new
StoreProgress
(
_session
,
this
);
connect
(
dlg
,
SIGNAL
(
save_done
()),
this
,
SLOT
(
device_detach_post
()));
dlg
->
save_run
(
session_file
);
}
...
...
DSView/pv/mainwindow.h
View file @
abbb5a6a
...
...
@@ -146,6 +146,7 @@ private slots:
*/
void
device_attach
();
void
device_detach
();
void
device_detach_post
();
void
device_changed
(
bool
close
);
/*
...
...
@@ -160,6 +161,7 @@ private:
DeviceManager
&
_device_manager
;
SigSession
_session
;
bool
_hot_detach
;
pv
::
view
::
View
*
_view
;
dialogs
::
DSMessageBox
*
_msg
;
...
...
DSView/pv/sigsession.cpp
View file @
abbb5a6a
...
...
@@ -114,6 +114,7 @@ SigSession::SigSession(DeviceManager &device_manager) :
#endif
_lissajous_trace
=
NULL
;
_math_trace
=
NULL
;
_saving
=
false
;
_dso_feed
=
false
;
// Create snapshots & data containers
...
...
@@ -1749,4 +1750,14 @@ uint64_t SigSession::get_save_end() const
return
_save_end
;
}
bool
SigSession
::
get_saving
()
const
{
return
_saving
;
}
void
SigSession
::
set_saving
(
bool
saving
)
{
_saving
=
saving
;
}
}
// namespace pv
DSView/pv/sigsession.h
View file @
abbb5a6a
...
...
@@ -253,6 +253,8 @@ public:
void
set_save_end
(
uint64_t
end
);
uint64_t
get_save_start
()
const
;
uint64_t
get_save_end
()
const
;
bool
get_saving
()
const
;
void
set_saving
(
bool
saving
);
private:
void
set_capture_state
(
capture_state
state
);
...
...
@@ -360,6 +362,7 @@ private:
uint64_t
_save_start
;
uint64_t
_save_end
;
bool
_saving
;
bool
_dso_feed
;
...
...
DSView/pv/storesession.cpp
View file @
abbb5a6a
...
...
@@ -65,7 +65,8 @@ StoreSession::StoreSession(SigSession &session) :
_outModule
(
NULL
),
_units_stored
(
0
),
_unit_count
(
0
),
_has_error
(
false
)
_has_error
(
false
),
_canceled
(
false
)
{
}
...
...
@@ -74,6 +75,11 @@ StoreSession::~StoreSession()
wait
();
}
SigSession
&
StoreSession
::
session
()
{
return
_session
;
}
pair
<
uint64_t
,
uint64_t
>
StoreSession
::
progress
()
const
{
//lock_guard<mutex> lock(_mutex);
...
...
@@ -94,6 +100,7 @@ void StoreSession::wait()
void
StoreSession
::
cancel
()
{
_canceled
=
true
;
_thread
.
interrupt
();
}
...
...
@@ -174,7 +181,6 @@ bool StoreSession::save_start(QString session_file)
#endif
if
(
meta_file
==
NULL
)
{
_error
=
tr
(
"Generate temp file failed."
);
return
false
;
}
else
{
int
ret
=
sr_session_save_init
(
_file_name
.
toLocal8Bit
().
data
(),
meta_file
.
toLocal8Bit
().
data
(),
...
...
@@ -182,7 +188,6 @@ bool StoreSession::save_start(QString session_file)
session_file
.
toLocal8Bit
().
data
());
if
(
ret
!=
SR_OK
)
{
_error
=
tr
(
"Failed to create zip file. Please check write permission of this path."
);
return
false
;
}
else
{
_thread
=
boost
::
thread
(
&
StoreSession
::
save_proc
,
this
,
snapshot
);
return
!
_has_error
;
...
...
@@ -190,6 +195,7 @@ bool StoreSession::save_start(QString session_file)
}
}
QFile
::
remove
(
_file_name
);
_error
.
clear
();
return
false
;
}
...
...
@@ -199,6 +205,7 @@ void StoreSession::save_proc(shared_ptr<data::Snapshot> snapshot)
assert
(
snapshot
);
int
ret
=
SR_ERR
;
int
num
=
0
;
shared_ptr
<
data
::
LogicSnapshot
>
logic_snapshot
;
shared_ptr
<
data
::
AnalogSnapshot
>
analog_snapshot
;
shared_ptr
<
data
::
DsoSnapshot
>
dso_snapshot
;
...
...
@@ -210,7 +217,7 @@ void StoreSession::save_proc(shared_ptr<data::Snapshot> snapshot)
to_save_probes
++
;
}
_unit_count
=
logic_snapshot
->
get_sample_count
()
/
8
*
to_save_probes
;
int
num
=
logic_snapshot
->
get_block_num
();
num
=
logic_snapshot
->
get_block_num
();
bool
sample
;
BOOST_FOREACH
(
const
boost
::
shared_ptr
<
view
::
Signal
>
s
,
_session
.
get_signals
())
{
...
...
@@ -240,6 +247,8 @@ void StoreSession::save_proc(shared_ptr<data::Snapshot> snapshot)
_error
=
tr
(
"Failed to create zip file. Please check write permission of this path."
);
}
progress_updated
();
if
(
_has_error
)
QFile
::
remove
(
_file_name
);
return
;
}
_units_stored
+=
size
;
...
...
@@ -256,7 +265,7 @@ void StoreSession::save_proc(shared_ptr<data::Snapshot> snapshot)
break
;
}
if
(
ch_type
!=
-
1
)
{
const
int
num
=
snapshot
->
get_block_num
();
num
=
snapshot
->
get_block_num
();
_unit_count
=
snapshot
->
get_sample_count
()
*
snapshot
->
get_unit_bytes
()
*
snapshot
->
get_channel_num
();
...
...
@@ -292,6 +301,8 @@ void StoreSession::save_proc(shared_ptr<data::Snapshot> snapshot)
_error
=
tr
(
"Failed to create zip file. Please check write permission of this path."
);
}
progress_updated
();
if
(
_has_error
)
QFile
::
remove
(
_file_name
);
return
;
}
_units_stored
+=
size
;
...
...
@@ -300,6 +311,9 @@ void StoreSession::save_proc(shared_ptr<data::Snapshot> snapshot)
}
}
progress_updated
();
if
(
_canceled
||
num
==
0
)
QFile
::
remove
(
_file_name
);
}
QString
StoreSession
::
meta_gen
(
boost
::
shared_ptr
<
data
::
Snapshot
>
snapshot
)
...
...
DSView/pv/storesession.h
View file @
abbb5a6a
...
...
@@ -56,6 +56,8 @@ public:
~
StoreSession
();
SigSession
&
session
();
std
::
pair
<
uint64_t
,
uint64_t
>
progress
()
const
;
const
QString
&
error
()
const
;
...
...
@@ -103,6 +105,7 @@ private:
uint64_t
_unit_count
;
bool
_has_error
;
QString
_error
;
bool
_canceled
;
};
}
// pv
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment