Skip to content

Commit daa9f7d

Browse files
committedJun 6, 2017
Refactoring: Moved LoadTimingData() into Greenpak4Device
1 parent b76069b commit daa9f7d

File tree

3 files changed

+62
-60
lines changed

3 files changed

+62
-60
lines changed
 

Diff for: ‎src/gp4tchar/main.cpp

+4-60
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ using namespace std;
2828

2929
DevkitCalibration g_devkitCal;
3030

31-
bool LoadTimingData(string fname);
32-
3331
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3432
// Entry point
3533

@@ -126,8 +124,11 @@ int main(int argc, char* argv[])
126124
//Load timing data from disk
127125
LogNotice("Loading timing data...\n");
128126
string tfname = "timing.json";
129-
if(!LoadTimingData(tfname))
127+
if(!g_calDevice.LoadTimingData(tfname))
128+
{
129+
LogWarning("Couldn't load existing timing data file\n");
130130
return 1;
131+
}
131132

132133
//Measure delay through each element
133134
/*
@@ -163,63 +164,6 @@ int main(int argc, char* argv[])
163164
return 0;
164165
}
165166

166-
bool LoadTimingData(string fname)
167-
{
168-
//Open the file (non-existence is a legal no-op, return success silently)
169-
FILE* fp = fopen(fname.c_str(), "rb");
170-
if(fp == NULL)
171-
return true;
172-
if(0 != fseek(fp, 0, SEEK_END))
173-
{
174-
LogError("Failed to seek to end of timing data file %s\n", fname.c_str());
175-
fclose(fp);
176-
return false;
177-
}
178-
size_t len = ftell(fp);
179-
if(0 != fseek(fp, 0, SEEK_SET))
180-
{
181-
LogError("Failed to seek to start of timing data file %s\n", fname.c_str());
182-
return false;
183-
}
184-
char* json_string = new char[len + 1];
185-
json_string[len] = '\0';
186-
if(len != fread(json_string, 1, len, fp))
187-
{
188-
LogError("Failed to read contents of timing data file %s\n", fname.c_str());
189-
delete[] json_string;
190-
fclose(fp);
191-
return false;
192-
}
193-
fclose(fp);
194-
195-
//Parse the JSON
196-
json_tokener* tok = json_tokener_new();
197-
if(!tok)
198-
{
199-
LogError("Failed to create JSON tokenizer object\n");
200-
delete[] json_string;
201-
return false;
202-
}
203-
json_tokener_error err;
204-
json_object* object = json_tokener_parse_verbose(json_string, &err);
205-
if(NULL == object)
206-
{
207-
const char* desc = json_tokener_error_desc(err);
208-
LogError("JSON parsing failed (err = %s)\n", desc);
209-
delete[] json_string;
210-
return false;
211-
}
212-
213-
//Load stuff
214-
if(!g_calDevice.LoadTimingData(object))
215-
return false;
216-
217-
//Done
218-
json_object_put(object);
219-
json_tokener_free(tok);
220-
return true;
221-
}
222-
223167
void WaitForKeyPress()
224168
{
225169
LogNotice("Press any key to continue . . .\n");

Diff for: ‎src/greenpak4/Greenpak4Device.cpp

+57
Original file line numberDiff line numberDiff line change
@@ -1299,6 +1299,63 @@ void Greenpak4Device::SaveTimingData(string fname)
12991299
fclose(fp);
13001300
}
13011301

1302+
bool Greenpak4Device::LoadTimingData(string fname)
1303+
{
1304+
//Read it
1305+
FILE* fp = fopen(fname.c_str(), "rb");
1306+
if(fp == NULL)
1307+
return false;
1308+
if(0 != fseek(fp, 0, SEEK_END))
1309+
{
1310+
LogError("Failed to seek to end of timing data file %s\n", fname.c_str());
1311+
fclose(fp);
1312+
return false;
1313+
}
1314+
size_t len = ftell(fp);
1315+
if(0 != fseek(fp, 0, SEEK_SET))
1316+
{
1317+
LogError("Failed to seek to start of timing data file %s\n", fname.c_str());
1318+
return false;
1319+
}
1320+
char* json_string = new char[len + 1];
1321+
json_string[len] = '\0';
1322+
if(len != fread(json_string, 1, len, fp))
1323+
{
1324+
LogError("Failed to read contents of timing data file %s\n", fname.c_str());
1325+
delete[] json_string;
1326+
fclose(fp);
1327+
return false;
1328+
}
1329+
fclose(fp);
1330+
1331+
//Parse the JSON
1332+
json_tokener* tok = json_tokener_new();
1333+
if(!tok)
1334+
{
1335+
LogError("Failed to create JSON tokenizer object\n");
1336+
delete[] json_string;
1337+
return false;
1338+
}
1339+
json_tokener_error err;
1340+
json_object* object = json_tokener_parse_verbose(json_string, &err);
1341+
if(NULL == object)
1342+
{
1343+
const char* desc = json_tokener_error_desc(err);
1344+
LogError("JSON parsing failed (err = %s)\n", desc);
1345+
delete[] json_string;
1346+
return false;
1347+
}
1348+
1349+
//Load stuff
1350+
if(!LoadTimingData(object))
1351+
return false;
1352+
1353+
//Done
1354+
json_object_put(object);
1355+
json_tokener_free(tok);
1356+
return true;
1357+
}
1358+
13021359
bool Greenpak4Device::LoadTimingData(json_object* object)
13031360
{
13041361
//Make a map of description -> entity

Diff for: ‎src/greenpak4/Greenpak4Device.h

+1
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,7 @@ class Greenpak4Device
334334
void PrintTimingData() const;
335335
void SaveTimingData(std::string fname);
336336
bool LoadTimingData(json_object* object);
337+
bool LoadTimingData(std::string fname);
337338

338339
protected:
339340

0 commit comments

Comments
 (0)
Please sign in to comment.