summaryrefslogtreecommitdiffstats
path: root/heimdall/source/BridgeManager.cpp
diff options
context:
space:
mode:
authorBenjamin Dobell <benjamin.dobell+git@glassechidna.com.au>2013-01-22 13:53:30 +0100
committerBenjamin Dobell <benjamin.dobell+git@glassechidna.com.au>2013-01-22 13:53:30 +0100
commit31b1b0b2b0c9312e597ad35e26729474c21b20b9 (patch)
tree7cf1870cd39bc8510d7cd1db60c5bdb55bcbcdbb /heimdall/source/BridgeManager.cpp
parentFixed --repartition flag parsing bug. (diff)
downloadHeimdall-31b1b0b2b0c9312e597ad35e26729474c21b20b9.tar
Heimdall-31b1b0b2b0c9312e597ad35e26729474c21b20b9.tar.gz
Heimdall-31b1b0b2b0c9312e597ad35e26729474c21b20b9.tar.bz2
Heimdall-31b1b0b2b0c9312e597ad35e26729474c21b20b9.tar.lz
Heimdall-31b1b0b2b0c9312e597ad35e26729474c21b20b9.tar.xz
Heimdall-31b1b0b2b0c9312e597ad35e26729474c21b20b9.tar.zst
Heimdall-31b1b0b2b0c9312e597ad35e26729474c21b20b9.zip
Diffstat (limited to 'heimdall/source/BridgeManager.cpp')
-rw-r--r--heimdall/source/BridgeManager.cpp73
1 files changed, 35 insertions, 38 deletions
diff --git a/heimdall/source/BridgeManager.cpp b/heimdall/source/BridgeManager.cpp
index fa83b1c..2bc96cf 100644
--- a/heimdall/source/BridgeManager.cpp
+++ b/heimdall/source/BridgeManager.cpp
@@ -591,14 +591,40 @@ bool BridgeManager::BeginSession(void)
if (!ReceivePacket(&beginSessionResponse))
return (false);
- unsigned int result = beginSessionResponse.GetResult();
+ unsigned int deviceDefaultPacketSize = beginSessionResponse.GetResult();
- if (result != 0) // Assume 0 means don't care, otherwise use the response as the fileTransferPacketSize.
- fileTransferPacketSize = result;
+ if (deviceDefaultPacketSize != 0) // 0 means changing the packet size is not supported.
+ {
+ Interface::Print("\nThis device may take up to 2 minutes to respond.\nPlease be patient!\n\n");
+ Sleep(2000); // Give the user time to read the message.
+
+ fileTransferSequenceTimeout = 120000; // 2 minutes!
+ fileTransferPacketSize = 1048576; // 1 MiB
+ fileTransferSequenceMaxLength = 100; // 100 MiB per sequence. Which is the same as the default of 800 * 131072.
+
+ FilePartSizePacket filePartSizePacket(fileTransferPacketSize);
+
+ if (!SendPacket(&filePartSizePacket))
+ {
+ Interface::PrintError("Failed to send file part size packet!\n");
+ return (false);
+ }
+
+ SessionSetupResponse filePartSizeResponse;
+
+ if (!ReceivePacket(&filePartSizeResponse))
+ return (false);
+
+ if (filePartSizeResponse.GetResult() != 0)
+ {
+ Interface::PrintError("Unexpected file part size response!\nExpected: 0\nReceived: %d\n", filePartSizeResponse.GetResult());
+ return (false);
+ }
+ }
// -------------------- KIES DOESN'T DO THIS --------------------
- DeviceTypePacket deviceTypePacket;
+ /*DeviceTypePacket deviceTypePacket;
if (!SendPacket(&deviceTypePacket))
{
@@ -626,39 +652,7 @@ bool BridgeManager::BeginSession(void)
if (verbose)
Interface::Print("Session begun with device of type: %d.\n\n", deviceType);
else
- Interface::Print("Session begun.\n\n", deviceType);
-
- if (deviceType == 30)
- {
- Interface::Print("In certain situations this device may take up to 2 minutes to respond.\nPlease be patient!\n\n", deviceType);
- Sleep(2000); // Give the user time to read the message.
-
- // The SGH-I727 is very unstable/unreliable using the default settings. Flashing
- // seems to be much more reliable using the following setup.
-
- fileTransferSequenceMaxLength = 30;
- fileTransferSequenceTimeout = 120000; // 2 minutes!
- fileTransferPacketSize = 1048576; // 1 MiB
-
- FilePartSizePacket filePartSizePacket(fileTransferPacketSize); // 1 MiB
-
- if (!SendPacket(&filePartSizePacket))
- {
- Interface::PrintError("Failed to send file part size packet!\n");
- return (false);
- }
-
- SessionSetupResponse filePartSizeResponse;
-
- if (!ReceivePacket(&filePartSizeResponse))
- return (false);
-
- if (filePartSizeResponse.GetResult() != 0)
- {
- Interface::PrintError("Unexpected file part size response!\nExpected: 0\nReceived: %d\n", filePartSizeResponse.GetResult());
- return (false);
- }
- }
+ Interface::Print("Session begun.\n\n");
return (true);
@@ -666,7 +660,10 @@ bool BridgeManager::BeginSession(void)
Interface::PrintError("Unexpected device info response!\nExpected: 0, 3, 30, 180 or 190\nReceived:%d\n", deviceType);
return (false);
- }
+ }*/
+
+ Interface::Print("Session begun.\n\n");
+ return (true);
}
bool BridgeManager::EndSession(bool reboot) const