blob: edc1626512e360104824bd7b0819e4b3d11465d1 [file] [log] [blame]
bigbiffce8f83c2015-12-12 18:30:21 -05001/*
bigbiff bigbiff19fb79c2016-09-05 21:04:51 -04002 Copyright 2013 to 2017 TeamWin
bigbiffce8f83c2015-12-12 18:30:21 -05003 TWRP is free software: you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation, either version 3 of the License, or
6 (at your option) any later version.
7
8 TWRP is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License
14 along with TWRP. If not, see <http://www.gnu.org/licenses/>.
15*/
16
bigbiff bigbiff19fb79c2016-09-05 21:04:51 -040017#ifndef _TWRPBACK_HPP
18#define _TWRPBACK_HPP
bigbiffce8f83c2015-12-12 18:30:21 -050019
bigbiff bigbiff19fb79c2016-09-05 21:04:51 -040020#include <fstream>
bigbiff bigbiffadcb4d82017-09-25 10:51:56 -040021#include "../twrpDigest/twrpMD5.hpp"
bigbiffce8f83c2015-12-12 18:30:21 -050022
23class twrpback {
24public:
25 int adbd_fd; // adbd data stream
bigbiffce8f83c2015-12-12 18:30:21 -050026 twrpback(void);
27 virtual ~twrpback(void);
bigbiff bigbiffadcb4d82017-09-25 10:51:56 -040028 bool backup(std::string command); // adb backup stream
29 bool restore(void); // adb restore stream
bigbiffce8f83c2015-12-12 18:30:21 -050030 void adblogwrite(std::string writemsg); // adb debugging log function
bigbiff bigbiff19fb79c2016-09-05 21:04:51 -040031 void createFifos(void); // create fifos needed for adb backup
32 void closeFifos(void); // close created fifos
33 void streamFileForTWRP(void); // stream file to twrp via bu
34 void setStreamFileName(std::string fn); // tell adb backup what file to load on storage
35 void threadStream(void); // thread bu for streaming
bigbiffce8f83c2015-12-12 18:30:21 -050036
37private:
38 int read_fd; // ors input fd
39 int write_fd; // ors operation fd
40 int ors_fd; // ors output fd
41 int adb_control_twrp_fd; // fd for bu to twrp communication
42 int adb_control_bu_fd; // fd for twrp to bu communication
43 int adb_read_fd; // adb read data stream
44 int adb_write_fd; // adb write data stream
bigbiff bigbiff38b83c12017-12-28 19:58:52 -050045 int debug_adb_fd; // fd to write debug tars
bigbiffce8f83c2015-12-12 18:30:21 -050046 bool firstPart; // first partition in the stream
47 FILE *adbd_fp; // file pointer for adb stream
48 char cmd[512]; // store result of commands
49 char operation[512]; // operation to send to ors
50 std::ofstream adblogfile; // adb stream log file
bigbiff bigbiff19fb79c2016-09-05 21:04:51 -040051 std::string streamFn;
52 typedef void (twrpback::*ThreadPtr)(void);
53 typedef void* (*PThreadPtr)(void *);
bigbiffce8f83c2015-12-12 18:30:21 -050054 void adbloginit(void); // setup adb log stream file
bigbiff bigbiff19fb79c2016-09-05 21:04:51 -040055 void close_backup_fds(); // close backup resources
56 void close_restore_fds(); // close restore resources
bigbiff bigbiffadcb4d82017-09-25 10:51:56 -040057 bool checkMD5Trailer(char adbReadStream[], uint64_t md5fnsize, twrpMD5* digest); // Check MD5 Trailer
bigbiff bigbiff38b83c12017-12-28 19:58:52 -050058 void printErrMsg(std::string msg, int errNum); // print error msg to adb log
bigbiffce8f83c2015-12-12 18:30:21 -050059};
bigbiff bigbiff19fb79c2016-09-05 21:04:51 -040060
61#endif // _TWRPBACK_HPP