summaryrefslogtreecommitdiff
path: root/riff
diff options
context:
space:
mode:
authorSrimanta Panda <srimanta.panda@stericsson.com>2011-10-13 10:17:16 +0200
committerSrimanta Panda <srimanta.panda@stericsson.com>2011-10-13 10:27:32 +0200
commit7b1ae2029ad33a38e1e718a33e2879325b389332 (patch)
treea86e4cb793dff0147649c5731b46981ac701fed5 /riff
parentfac26f795cf96ec624a3a334ba9b78ea2d86811d (diff)
Added Windows Support
RIFF will be supported for the Windows platform. It requires libusb-win32 library to build it.
Diffstat (limited to 'riff')
-rw-r--r--riff/Config.cpp3
-rw-r--r--riff/DUT.cpp4
-rw-r--r--riff/DumpArea.cpp41
-rw-r--r--riff/EraseArea.cpp4
-rw-r--r--riff/InitializeDut.cpp24
-rw-r--r--riff/Logger.cpp11
-rw-r--r--riff/Logger.h6
-rw-r--r--riff/ProcessRawImage.cpp13
-rw-r--r--riff/Shutdown.cpp2
-rw-r--r--riff/main.cpp54
-rw-r--r--riff/main.h6
-rw-r--r--riff/riff.vcproj293
12 files changed, 396 insertions, 65 deletions
diff --git a/riff/Config.cpp b/riff/Config.cpp
index c35f333..127f2b7 100644
--- a/riff/Config.cpp
+++ b/riff/Config.cpp
@@ -15,6 +15,7 @@
* @{
*/
+
#include "Config.h"
#include "Utilities.h"
#include <fstream>
@@ -61,7 +62,7 @@ bool Config::load(const string& path)
return true;
} else {
- logger_.log(Logger::ERROR, "Failed to open configuration file \"%s\"", path.c_str());
+ logger_.log(Logger::ERR, "Failed to open configuration file \"%s\"", path.c_str());
return false;
}
}
diff --git a/riff/DUT.cpp b/riff/DUT.cpp
index 6019518..747727d 100644
--- a/riff/DUT.cpp
+++ b/riff/DUT.cpp
@@ -31,7 +31,7 @@ using namespace std;
do { \
if (0 != error) \
{ \
- logger_.log(Logger::ERROR,"COMMAND ERROR: %s %d", message, error); \
+ logger_.log(Logger::ERR,"COMMAND ERROR: %s %d", message, error); \
usb_destroy_device(commDevice_, error); \
errorcode_ = error; \
return; \
@@ -59,7 +59,7 @@ DUT::~DUT()
int error = DestroyContext(&lcdContext_);
if (0 != error) {
- logger_.log(Logger::ERROR, "LCD ERROR: Failed to destroy LCD context %d", error);
+ logger_.log(Logger::ERR, "LCD ERROR: Failed to destroy LCD context %d", error);
} else {
logger_.log(Logger::INFO, "LCD context destroyed successfully");
}
diff --git a/riff/DumpArea.cpp b/riff/DumpArea.cpp
index 2f7fcf6..29343e7 100644
--- a/riff/DumpArea.cpp
+++ b/riff/DumpArea.cpp
@@ -37,31 +37,30 @@ DumpArea::DumpArea(const char* path, uint64 start, uint64 length, const char* fi
int DumpArea::run(DUT* dut)
{
- logger_.log(Logger::PROGRESS, "Dumping area...");
- logger_.log(Logger::PROGRESS, "Dump path is %s", pchFilePath);
- int error = checkInput();
- if (error == -1) {
- return error;
- }
- error = Flash_DumpArea(dut->getLCDContext(), pchPath, uiStart, uiLength, pchFilePath, uiRedundantArea, iUseBulk);
- if (0 != error)
- {
- logger_.log(Logger::ERROR,"LCD ERROR: Dump area failed %d", error);
- return error;
- }
- // Need a new line braek after the progress bar
- logger_.logRaw("\n");
- logger_.log(Logger::INFO, "Dump area finished successfully");
- return error;
+ logger_.log(Logger::PROGRESS, "Dumping area...");
+ logger_.log(Logger::PROGRESS, "Dump path is %s", pchFilePath);
+ int error = checkInput();
+ if (error == -1) {
+ return error;
+ }
+ error = Flash_DumpArea(dut->getLCDContext(), pchPath, uiStart, uiLength, pchFilePath, uiRedundantArea, iUseBulk);
+ if (0 != error) {
+ logger_.log(Logger::ERR,"LCD ERROR: Dump area failed %d", error);
+ return error;
+ }
+ // Need a new line braek after the progress bar
+ logger_.logRaw("\n");
+ logger_.log(Logger::INFO, "Dump area finished successfully");
+ return error;
}
int DumpArea::checkInput()
{
- if (uiLength <= 0) {
- logger_.log(Logger::ERROR, "Length of the dump not specified. Use -l or --length option");
- return -1;
- }
- return 0;
+ if (uiLength <= 0) {
+ logger_.log(Logger::ERR, "Length of the dump not specified. Use -l or --length option");
+ return -1;
+ }
+ return 0;
}
const char * DumpArea::get_command_name()
diff --git a/riff/EraseArea.cpp b/riff/EraseArea.cpp
index 3de8ed0..0198c6b 100644
--- a/riff/EraseArea.cpp
+++ b/riff/EraseArea.cpp
@@ -29,12 +29,12 @@ EraseArea::EraseArea(const char* path, uint64 start, uint64 length):
int EraseArea::run(DUT* dut)
{
- logger_.log(Logger::PROGRESS, "Erasing area...");
+ logger_.log(Logger::PROGRESS, "Erasing area...");
int error = Flash_EraseArea(dut->getLCDContext(), pchPath, uiStart, uiLength);
if (0 != error)
{
- logger_.log(Logger::ERROR,"LCD ERROR: Erase area failed %d", error);
+ logger_.log(Logger::ERR,"LCD ERROR: Erase area failed %d", error);
return error;
}
diff --git a/riff/InitializeDut.cpp b/riff/InitializeDut.cpp
index e2feb18..9088c13 100644
--- a/riff/InitializeDut.cpp
+++ b/riff/InitializeDut.cpp
@@ -36,7 +36,7 @@ int InitializeDut::readIsswFile(char* buf)
isswImage = fopen(isswPath_, "rb");
if (isswImage == NULL) {
- logger_.log(Logger::ERROR, "InitializeDut.cpp (%d) %s() error while opening file %s", __LINE__, __FUNCTION__, isswPath_);
+ logger_.log(Logger::ERR, "InitializeDut.cpp (%d) %s() error while opening file %s", __LINE__, __FUNCTION__, isswPath_);
return -1;
}
@@ -54,7 +54,7 @@ int InitializeDut::readSecondIsswFile(char* buf)
xloaderImage = fopen(xloaderPath_, "rb");
if (xloaderImage == NULL) {
- logger_.log(Logger::ERROR, "InitializeDut.cpp (%d) %s() error while opening file %s", __LINE__, __FUNCTION__, xloaderPath_);
+ logger_.log(Logger::ERR, "InitializeDut.cpp (%d) %s() error while opening file %s", __LINE__, __FUNCTION__, xloaderPath_);
return -1;
}
@@ -70,7 +70,7 @@ int InitializeDut::readPwrMgtFile(char* buf)
pwrmgmtImage = fopen(pwrmgmtPath_, "rb");
if (pwrmgmtImage == NULL) {
- logger_.log(Logger::ERROR, "InitializeDut.cpp (%d) %s() error while opening file %s", __LINE__, __FUNCTION__, pwrmgmtPath_);
+ logger_.log(Logger::ERR, "InitializeDut.cpp (%d) %s() error while opening file %s", __LINE__, __FUNCTION__, pwrmgmtPath_);
return -1;
}
@@ -86,7 +86,7 @@ int InitializeDut::readMeminitFile(char* buf)
meminitImage = fopen(meminitPath_, "rb");
if (meminitImage == NULL) {
- logger_.log(Logger::ERROR, "InitializeDut.cpp (%d) %s() error while opening file %s", __LINE__, __FUNCTION__, meminitPath_);
+ logger_.log(Logger::ERR, "InitializeDut.cpp (%d) %s() error while opening file %s", __LINE__, __FUNCTION__, meminitPath_);
return -1;
}
@@ -102,7 +102,7 @@ int InitializeDut::readNormal(char* buf)
normalImage = fopen(normalPath_, "rb");
if (normalImage == NULL) {
- logger_.log(Logger::ERROR, "InitializeDut.cpp (%d) %s() error while opening file %s", __LINE__, __FUNCTION__, normalPath_);
+ logger_.log(Logger::ERR, "InitializeDut.cpp (%d) %s() error while opening file %s", __LINE__, __FUNCTION__, normalPath_);
return -1;
}
@@ -378,7 +378,7 @@ int InitializeDut::run(DUT* dut)
error = initializeHardware(commDevice);
if (0 != error)
{
- logger_.log(Logger::ERROR,"LCD ERROR: Error while initializing device %d", error);
+ logger_.log(Logger::ERR,"LCD ERROR: Error while initializing device %d", error);
return error;
}
@@ -389,7 +389,7 @@ int InitializeDut::run(DUT* dut)
error = CreateContext(&lcdContext, dut->getId());
if (0 != error)
{
- logger_.log(Logger::ERROR,"LCD ERROR: Error while creating LCD context %d", error);
+ logger_.log(Logger::ERR,"LCD ERROR: Error while creating LCD context %d", error);
return error;
}
@@ -397,7 +397,7 @@ int InitializeDut::run(DUT* dut)
error = ConfigureCommunicationDevice(lcdContext, (void*)comm_read_nowait, (void*)comm_write_nowait, (void*)comm_cancel);
if (0 != error)
{
- logger_.log(Logger::ERROR,"LCD ERROR: Error while configuring communication device %d", error);
+ logger_.log(Logger::ERR,"LCD ERROR: Error while configuring communication device %d", error);
return error;
}
@@ -405,7 +405,7 @@ int InitializeDut::run(DUT* dut)
error = SwitchProtocolFamily(lcdContext, R15_PROTOCOL_FAMILY);
if (0 != error)
{
- logger_.log(Logger::ERROR,"LCD ERROR: Error while setting protocol family %d", error);
+ logger_.log(Logger::ERR,"LCD ERROR: Error while setting protocol family %d", error);
return error;
}
@@ -413,7 +413,7 @@ int InitializeDut::run(DUT* dut)
error = StartContext(lcdContext, deviceObjectStorage);
if (0 != error)
{
- logger_.log(Logger::ERROR,"LCD ERROR: Error while starting LCD context %d", error);
+ logger_.log(Logger::ERR,"LCD ERROR: Error while starting LCD context %d", error);
return error;
}
@@ -422,7 +422,7 @@ int InitializeDut::run(DUT* dut)
error = SetProgressCallback(lcdContext, (void*)comm_progress);
if (0 != error)
{
- logger_.log(Logger::ERROR,"LCD ERROR: Error while setting Progress listener %d", error);
+ logger_.log(Logger::ERR,"LCD ERROR: Error while setting Progress listener %d", error);
return error;
}
@@ -431,7 +431,7 @@ int InitializeDut::run(DUT* dut)
error = System_LoaderStartupStatus(dut->getLCDContext(), version, &versionSize, protocol, &protocolSize);
if (0 != error)
{
- logger_.log(Logger::ERROR,"LCD ERROR: Failed to receive loader startup status %d", error);
+ logger_.log(Logger::ERR,"LCD ERROR: Failed to receive loader startup status %d", error);
return error;
}
diff --git a/riff/Logger.cpp b/riff/Logger.cpp
index a54e447..186451a 100644
--- a/riff/Logger.cpp
+++ b/riff/Logger.cpp
@@ -15,6 +15,7 @@
* @{
*/
+
#include "Logger.h"
#include <string>
#include <cstdio>
@@ -23,6 +24,14 @@
#include <cstddef>
using namespace std;
+#ifdef _WIN32
+#define flockfile _lock_file
+#define funlockfile _unlock_file
+#define popen _popen
+#define pclose _pclose
+#define localtime_r(t, lt) localtime_s(lt, t)
+#endif
+
bool Logger::verbose_;
Logger::Logger(const string& name):
@@ -42,7 +51,7 @@ void Logger::log(LogSeverity severity, const char* format, ...) const
tm lt;
localtime_r(&t, &lt);
- if (verbose_ || severity == Logger::PROGRESS || severity == Logger::ERROR) {
+ if (verbose_ || severity == Logger::PROGRESS || severity == Logger::ERR) {
flockfile(console_);
fprintf(console_, "%02d:%02d:%02d ", lt.tm_hour, lt.tm_min, lt.tm_sec);
diff --git a/riff/Logger.h b/riff/Logger.h
index c995abc..8734fb2 100644
--- a/riff/Logger.h
+++ b/riff/Logger.h
@@ -30,7 +30,7 @@ public:
enum LogSeverity {
PROGRESS,
- ERROR,
+ ERR,
WARNING,
INFO
};
@@ -58,7 +58,11 @@ public:
* @param[in] format - printf style format of the message.
* @param[in] ... - variable argument list.
*/
+#ifdef _WIN32
+ void log(LogSeverity severity, const char* format, ...) const;
+#else
void log(LogSeverity severity, const char* format, ...) const __attribute__((format(printf, 3, 0)));
+#endif
/**
* @brief Print hex dump of the buffer.
diff --git a/riff/ProcessRawImage.cpp b/riff/ProcessRawImage.cpp
index 77f9715..e95c5af 100644
--- a/riff/ProcessRawImage.cpp
+++ b/riff/ProcessRawImage.cpp
@@ -46,7 +46,7 @@ int ProcessRawImage::run(DUT* dut)
error = Flash_FlashRaw(dut->getLCDContext(), pchPath, uiStart, length, uiDevice, iUseBulk, iDeleteBuffers);
if (0 != error)
{
- logger_.log(Logger::ERROR,"LCD ERROR: Process raw image failed %d", error);
+ logger_.log(Logger::ERR,"LCD ERROR: Process raw image failed %d", error);
return error;
}
@@ -55,7 +55,7 @@ int ProcessRawImage::run(DUT* dut)
logger_.log(Logger::PROGRESS, "Flashing finished successfully");
} else {
error = -1;
- logger_.log(Logger::ERROR,"LCD ERROR: Flash image is empty or doesn't exist %d", error);
+ logger_.log(Logger::ERR,"LCD ERROR: Flash image is empty or doesn't exist %d", error);
return error;
}
@@ -64,12 +64,21 @@ int ProcessRawImage::run(DUT* dut)
uint64 ProcessRawImage::filesize(const char* filename)
{
+#ifdef _WIN32
+ struct _stat64 st;
+
+ if (_stat64(filename, &st) == 0)
+ {
+ return st.st_size;
+ }
+#else
struct stat64 st;
if (stat64(filename, &st) == 0)
{
return st.st_size;
}
+#endif
return 0;
}
diff --git a/riff/Shutdown.cpp b/riff/Shutdown.cpp
index 3dcd1a9..bfc2d33 100644
--- a/riff/Shutdown.cpp
+++ b/riff/Shutdown.cpp
@@ -31,7 +31,7 @@ int Shutdown::run(DUT* dut)
int error = System_Shutdown(dut->getLCDContext());
if (0 != error)
{
- logger_.log(Logger::ERROR,"LCD ERROR: Device shutdown failed %d", error);
+ logger_.log(Logger::ERR,"LCD ERROR: Device shutdown failed %d", error);
return error;
}
diff --git a/riff/main.cpp b/riff/main.cpp
index 803ebe7..ab7426f 100644
--- a/riff/main.cpp
+++ b/riff/main.cpp
@@ -30,7 +30,7 @@ volatile bool isDone = false;
const string info = \
"\n \
----------------------- riff - Raw Image File Flasher -------------------------\n \
-Version: 0.4.2\n \
+Version: 0.5.0\n \
"
"Flash a device. Try `riff --help' for more information. \n \
"
@@ -83,7 +83,11 @@ int main(int argc, char* argv[])
logger_->log(Logger::PROGRESS, "Listening on USB for device connection...");
while (!isDone) {
+#ifdef _WIN32
+ Sleep(1000);
+#else
sleep(1);
+#endif
}
usb_deinit_driver();
@@ -114,7 +118,7 @@ void UsbDeviceEventCallback(DeviceStatus_t status, DeviceEvent_t event, Device_t
}
break;
- case LIBUSB_DEVICE_DISCONNECTED: {
+ case LIBUSB_DEVICE_DISCONNECTED:
logger_->log(Logger::INFO, "Disconnect detected on USB@%u", comm_get_physical_address(device));
dut = DutManager::getDut(device);
@@ -125,18 +129,17 @@ void UsbDeviceEventCallback(DeviceStatus_t status, DeviceEvent_t event, Device_t
}
isDone = true;
- }
- break;
+ break;
default:
- logger_->log(Logger::ERROR, "Unknown USB event %d", event);
+ logger_->log(Logger::ERR, "Unknown USB event %d", event);
break;
}
} else if (COMM_DEVICE_LIBUSB_FAILED_TO_OPEN_PORT == status) {
- logger_->log(Logger::ERROR, "Cannot open USB device. Are you root?", status);
+ logger_->log(Logger::ERR, "Cannot open USB device. Are you root?", status);
isDone = true;
exitstatus = 1;
} else {
- logger_->log(Logger::ERROR, "USB device error %d", status);
+ logger_->log(Logger::ERR, "USB device error %d", status);
}
}
void handleCmdLineInput(int argc, char* argv[])
@@ -191,7 +194,11 @@ void handleCmdLineInput(int argc, char* argv[])
if (!configPathSet) {
FILE* userConfig;
+#ifdef _WIN32
+ char* home = getenv("USERPROFILE");
+#else
char* home = getenv("HOME");
+#endif
char homeConfigPath[50];
strcpy(homeConfigPath, home);
strcat(homeConfigPath, "/.riff/config");
@@ -203,25 +210,28 @@ void handleCmdLineInput(int argc, char* argv[])
strcpy(configFile, homeConfigPath);
fclose(userConfig);
}
- else
- {
- // It will check the default config in /usr/share folder otherwise
- userConfig = fopen(configFile, "r");
- if(userConfig == NULL)
- {
- cout << cmdHelpString << endl;
- _exit(0);
- }
+ else {
+ // It will check the default config in /usr/share folder otherwise
+ // or /<current directory>/riff/config
+ userConfig = fopen(configFile, "r");
+ if(userConfig == NULL) {
+ cout << cmdHelpString << endl;
+ _exit(0);
+ }
}
}
- if (*dumpPath == '\0') {
- //Sets default dump path if not provided
- char* home = getenv("HOME");
- strcpy(dumpPath, home);
- strcat(dumpPath, "/flashdump.bin");
- }
+ if (*dumpPath == '\0') {
+ //Sets default dump path if not provided
+#ifdef _WIN32
+ char* home = ".";
+#else
+ char* home = getenv("HOME");
+#endif
+ strcpy(dumpPath, home);
+ strcat(dumpPath, "/flashdump.bin");
+ }
SequenceFactory::setArguments(configFile, mode, flashimage, address, length, dumpPath);
}
diff --git a/riff/main.h b/riff/main.h
index 916e523..64077d1 100644
--- a/riff/main.h
+++ b/riff/main.h
@@ -29,9 +29,15 @@ enum ConnectionType {
};
+#ifdef _WIN32
+#endif
Logger* logger_;
Config* config_;
+#ifdef _WIN32
+char configFile[PATH_LENGTH] = "./riff/config";
+#else
char configFile[PATH_LENGTH] = RIFF_CONFIG_PREFIX "/share/riff/config";
+#endif
char flashimage[PATH_LENGTH] = "\0";
char address[PATH_LENGTH] = "0";
char length[PATH_LENGTH] = "0";
diff --git a/riff/riff.vcproj b/riff/riff.vcproj
new file mode 100644
index 0000000..9087e48
--- /dev/null
+++ b/riff/riff.vcproj
@@ -0,0 +1,293 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="riff"
+ ProjectGUID="{10D8941B-290A-4898-A4A5-83DA6A17FF1D}"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\output"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\os_wrappers;..\dependencies"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="CDAL.lib LCDriver_CNH1606432.lib"
+ AdditionalLibraryDirectories="..\dependencies"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="..\output"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\os_wrappers;..\dependencies"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="CDAL.lib LCDriver_CNH1606432.lib"
+ AdditionalLibraryDirectories="..\dependencies"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath=".\Config.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\os_wrappers\CriticalSection.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\DumpArea.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\DUT.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\DutManager.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\EraseArea.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\os_wrappers\Event.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\InitializeDut.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\Logger.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\main.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\ProcessRawImage.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\SequenceFactory.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\Shutdown.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\os_wrappers\Thread.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ <File
+ RelativePath=".\Command.h"
+ >
+ </File>
+ <File
+ RelativePath=".\Config.h"
+ >
+ </File>
+ <File
+ RelativePath=".\constants.h"
+ >
+ </File>
+ <File
+ RelativePath="..\os_wrappers\CriticalSection.h"
+ >
+ </File>
+ <File
+ RelativePath=".\DumpArea.h"
+ >
+ </File>
+ <File
+ RelativePath=".\DUT.h"
+ >
+ </File>
+ <File
+ RelativePath=".\DutManager.h"
+ >
+ </File>
+ <File
+ RelativePath=".\EraseArea.h"
+ >
+ </File>
+ <File
+ RelativePath="..\os_wrappers\Event.h"
+ >
+ </File>
+ <File
+ RelativePath=".\InitializeDut.h"
+ >
+ </File>
+ <File
+ RelativePath=".\Logger.h"
+ >
+ </File>
+ <File
+ RelativePath=".\main.h"
+ >
+ </File>
+ <File
+ RelativePath=".\ProcessRawImage.h"
+ >
+ </File>
+ <File
+ RelativePath=".\SequenceFactory.h"
+ >
+ </File>
+ <File
+ RelativePath=".\Shutdown.h"
+ >
+ </File>
+ <File
+ RelativePath="..\os_wrappers\Thread.h"
+ >
+ </File>
+ <File
+ RelativePath="..\os_wrappers\Utilities.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>