add PICli to pift

fix relative path in PIFileTransfer

git-svn-id: svn://db.shs.com.ru/pip@67 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
2015-04-07 09:05:25 +00:00
parent ac5d7f8e33
commit 8e7b44f6be
7 changed files with 109 additions and 35 deletions

View File

@@ -2,7 +2,7 @@
const uint PIBaseTransfer::signature = 0x54444950;
PIBaseTransfer::PIBaseTransfer(): crc(standardCRC_16()) {
PIBaseTransfer::PIBaseTransfer(): crc(standardCRC_16()), diag(false) {
header.sig = signature;
header.session_id = 0;
packet_header_size = sizeof(PacketHeader) + customHeader().size();
@@ -12,10 +12,11 @@ PIBaseTransfer::PIBaseTransfer(): crc(standardCRC_16()) {
bytes_all = bytes_cur = 0;
replies_cnt = send_queue = 0;
timeout_ = 10.;
diag.setDisconnectTimeout(10.);
diag.setDisconnectTimeout(timeout_);
CONNECTU(&diag, qualityChanged, this, diagChanged);
packets_count = 32;
setPacketSize(4096);
srand(PISystemTime::current().toMilliseconds());
randomize();
}
@@ -103,8 +104,9 @@ void PIBaseTransfer::received(PIByteArray data) {
return;
}
if (header.session_id != h.session_id && is_receiving) {
sendBreak(h.session_id);
return;
// sendBreak(h.session_id);
// return;
finish_receive(false, true);
}
if (data.size() == sizeof(StartRequest)) {
StartRequest sr;
@@ -391,14 +393,21 @@ bool PIBaseTransfer::finish_send(bool ok) {
}
void PIBaseTransfer::finish_receive(bool ok) {
void PIBaseTransfer::finish_receive(bool ok, bool quet) {
if (ok) state_string = "receive done";
else state_string = "receive failed";
// piCoutObj << state_string << PIString::readableSize(bytes_all);
is_receiving = false;
if (!ok) sendBreak(header.session_id);
if (!ok && !quet) sendBreak(header.session_id);
diag.stop();
receiveFinished(ok);
bytes_all = bytes_cur = 0;
}
void PIBaseTransfer::diagChanged(PIDiagnostics::Quality new_quality, PIDiagnostics::Quality old_quality) {
if (is_receiving) {
if (new_quality == PIDiagnostics::Failure) stopReceive();
}
}