diff options
author | Srimanta Panda <srimanta.panda@stericsson.com> | 2011-10-13 10:17:16 +0200 |
---|---|---|
committer | Srimanta Panda <srimanta.panda@stericsson.com> | 2011-10-13 10:27:32 +0200 |
commit | 7b1ae2029ad33a38e1e718a33e2879325b389332 (patch) | |
tree | a86e4cb793dff0147649c5731b46981ac701fed5 /riff | |
parent | fac26f795cf96ec624a3a334ba9b78ea2d86811d (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.cpp | 3 | ||||
-rw-r--r-- | riff/DUT.cpp | 4 | ||||
-rw-r--r-- | riff/DumpArea.cpp | 41 | ||||
-rw-r--r-- | riff/EraseArea.cpp | 4 | ||||
-rw-r--r-- | riff/InitializeDut.cpp | 24 | ||||
-rw-r--r-- | riff/Logger.cpp | 11 | ||||
-rw-r--r-- | riff/Logger.h | 6 | ||||
-rw-r--r-- | riff/ProcessRawImage.cpp | 13 | ||||
-rw-r--r-- | riff/Shutdown.cpp | 2 | ||||
-rw-r--r-- | riff/main.cpp | 54 | ||||
-rw-r--r-- | riff/main.h | 6 | ||||
-rw-r--r-- | riff/riff.vcproj | 293 |
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, <); - 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>
|