summaryrefslogtreecommitdiff
path: root/spb/SpbTestTool/exe/command.cpp
diff options
context:
space:
mode:
authorWei Mao <[email protected]>2017-03-17 19:47:04 -0700
committerWei Mao <[email protected]>2017-03-17 19:47:04 -0700
commit1a3e0d580380e58bf336a242d2affc8a1e2d1ddf (patch)
treebf5d9c5b0b4cba1b81726b9f78c4d5ff5c636fea /spb/SpbTestTool/exe/command.cpp
parentda21c8784c83c5fd614f3030323e229d6a5fb10e (diff)
Fix cases
Diffstat (limited to 'spb/SpbTestTool/exe/command.cpp')
-rw-r--r--spb/SpbTestTool/exe/command.cpp660
1 files changed, 0 insertions, 660 deletions
diff --git a/spb/SpbTestTool/exe/command.cpp b/spb/SpbTestTool/exe/command.cpp
deleted file mode 100644
index fa559266..00000000
--- a/spb/SpbTestTool/exe/command.cpp
+++ /dev/null
@@ -1,660 +0,0 @@
-/*++
-
-Copyright (c) Microsoft Corporation. All rights reserved.
-
-Module Name:
-
- command.cpp
-
-Abstract:
-
- This module contains the class definitions for the various
- SpbTestTool commands.
-
-Environment:
-
- user-mode
-
-Revision History:
-
---*/
-
-#include "internal.h"
-
-long CCommand::s_Index = 1;
-
-VOID
-PrintCommands()
-{
- printf("\n");
- printf("Commands:\n");
- printf(" open open handle to SPB controller\n");
- printf(" close close handle to SPB controller\n");
- printf(" lock lock the bus for exclusive access\n");
- printf(" unlock unlock the bus\n");
- printf(" lockconn lock the shared connection for exclusive access -\n");
- printf(" this primitive is used to synchronize with op-region\n");
- printf(" accesses by firmware\n");
- printf(" unlockconn unlock the shared connection\n");
- printf(" write {} write byte array to peripheral\n");
- printf(" > write {01 02 03}\n");
- printf(" read <numBytes> read <numBytes> from peripheral\n");
- printf(" > read 5\n");
- printf(" writeread {} <numBytes> atomically write byte array to peripheral\n");
- printf(" and read <numBytes> back\n");
- printf(" > writeread {01 02 03} 5\n");
- printf(" fullduplex {} <numBytes> simultaneously write byte array to peripheral\n");
- printf(" and read <numBytes> back\n");
- printf(" > full duplex {01 02 03} 5\n");
- printf(" signal inform the SpbTestTool driver that the\n");
- printf(" interrupt has been handled\n");
- printf(" help print command list\n");
- printf("\n");
-}
-
-PCCommand
-CCommand::_ParseCommand(
- _In_ __drv_when(return != nullptr, __drv_aliasesMem) list<string> *Parameters
- )
-{
- string tag;
- string name;
-
- PCCommand command = nullptr;
-
- if (Parameters->front()[0] == L'@')
- {
- if (PopStringParameter(Parameters, &tag) == false)
- {
- printf("Error - could not pop tag\n");
- return nullptr;
- }
- }
-
- if (PopStringParameter(Parameters, &name) == false)
- {
- return nullptr;
- }
-
- if(_stricmp(name.c_str(), "open") == 0)
- {
- command = new COpenCommand(Parameters, tag);
- }
- else if(_stricmp(name.c_str(), "close") == 0)
- {
- command = new CCloseCommand(Parameters, tag);
- }
- else if(_stricmp(name.c_str(), "lock") == 0)
- {
- command = new CLockCommand(Parameters, tag);
- }
- else if(_stricmp(name.c_str(), "unlock") == 0)
- {
- command = new CUnlockCommand(Parameters, tag);
- }
- else if(_stricmp(name.c_str(), "lockconn") == 0)
- {
- command = new CLockConnectionCommand(Parameters, tag);
- }
- else if(_stricmp(name.c_str(), "unlockconn") == 0)
- {
- command = new CUnlockConnectionCommand(Parameters, tag);
- }
- else if(_stricmp(name.c_str(), "read") == 0)
- {
- command = new CReadCommand(Parameters, tag);
- }
- else if(_stricmp(name.c_str(), "write") == 0)
- {
- command = new CWriteCommand(Parameters, tag);
- }
- else if(_stricmp(name.c_str(), "writeread") == 0)
- {
- command = new CWriteReadCommand(Parameters, tag);
- }
- else if(_stricmp(name.c_str(), "fullduplex") == 0)
- {
- command = new CFullDuplexCommand(Parameters, tag);
- }
- else if(_stricmp(name.c_str(), "signal") == 0)
- {
- command = new CSignalInterruptCommand(Parameters, tag);
- }
- else if(_stricmp(name.c_str(), "help") == 0)
- {
- PrintCommands();
- return nullptr;
- }
- else
- {
- printf("unrecognized command %s\n", name.c_str());
- PrintCommands();
- return nullptr;
- }
-
- if (command->Parse() == false)
- {
- command->DetachParameter(); //avoid double deletion
- delete command;
- return nullptr;
- }
-
- return command;
-}
-
-bool
-COpenCommand::Execute(
- VOID
- )
-{
- //
- // Open peripheral target
- //
-
- ULONG bytesReturned;
-
- if (File == nullptr)
- {
- return false;
- }
-
- if ((DeviceIoControl(
- File,
- IOCTL_SPBTESTTOOL_OPEN,
- nullptr,
- 0,
- nullptr,
- 0,
- &bytesReturned,
- &Overlapped) == TRUE) ||
- (GetLastError() != ERROR_IO_PENDING))
- {
- FakeCompletion(GetLastError(), bytesReturned);
- }
-
- return true;
-}
-
-void
-COpenCommand::Complete(
- _In_ DWORD Status,
- _In_ DWORD /* Information */
- )
-{
- if (Status != NO_ERROR)
- {
- printf("Error %u\n", GetLastError());
- }
- else
- {
- printf("Peripheral target opened\n");
- }
-}
-
-bool
-CCloseCommand::Execute(
- VOID
- )
-{
- //
- // Close peripheral target
- //
-
- ULONG bytesReturned;
-
- if (File == nullptr)
- {
- return false;
- }
-
- if ((DeviceIoControl(
- File,
- IOCTL_SPBTESTTOOL_CLOSE,
- nullptr,
- 0,
- nullptr,
- 0,
- &bytesReturned,
- &Overlapped) == TRUE) ||
- (GetLastError() != ERROR_IO_PENDING))
- {
- FakeCompletion(GetLastError(), bytesReturned);
- }
-
- return true;
-}
-
-void
-CCloseCommand::Complete(
- _In_ DWORD Status,
- _In_ DWORD /* Information */
- )
-{
- if (Status != NO_ERROR)
- {
- printf("Error %u\n", GetLastError());
- }
- else
- {
- printf("Peripheral target closed\n");
- }
-}
-
-bool
-CLockCommand::Execute(
- VOID
- )
-{
- //
- // Lock controller for peripheral target
- //
-
- ULONG bytesReturned;
-
- if (File == nullptr)
- {
- return false;
- }
-
- if ((DeviceIoControl(
- File,
- IOCTL_SPBTESTTOOL_LOCK,
- nullptr,
- 0,
- nullptr,
- 0,
- &bytesReturned,
- &Overlapped) == TRUE) ||
- (GetLastError() != ERROR_IO_PENDING))
- {
- FakeCompletion(GetLastError(), bytesReturned);
- }
-
- return true;
-}
-
-void
-CLockCommand::Complete(
- _In_ DWORD Status,
- _In_ DWORD /* Information */
- )
-{
- if (Status != NO_ERROR)
- {
- printf("Error %u\n", GetLastError());
- }
- else
- {
- printf("Controller locked\n");
- }
-}
-
-bool
-CUnlockCommand::Execute(
- VOID
- )
-{
- //
- // Unlock controller
- //
-
- ULONG bytesReturned;
-
- if (File == nullptr)
- {
- return false;
- }
-
- if ((DeviceIoControl(
- File,
- IOCTL_SPBTESTTOOL_UNLOCK,
- nullptr,
- 0,
- nullptr,
- 0,
- &bytesReturned,
- &Overlapped) == TRUE) ||
- (GetLastError() != ERROR_IO_PENDING))
- {
- FakeCompletion(GetLastError(), bytesReturned);
- }
-
- return true;
-}
-
-void
-CUnlockCommand::Complete(
- _In_ DWORD Status,
- _In_ DWORD /* Information */
- )
-{
- if (Status != NO_ERROR)
- {
- printf("Error %u\n", GetLastError());
- }
- else
- {
- printf("Controller unlocked\n");
- }
-}
-
-bool
-CLockConnectionCommand::Execute(
- VOID
- )
-{
- //
- // Lock connection for peripheral target
- //
-
- ULONG bytesReturned;
-
- if (File == nullptr)
- {
- return false;
- }
-
- if ((DeviceIoControl(
- File,
- IOCTL_SPBTESTTOOL_LOCK_CONNECTION,
- nullptr,
- 0,
- nullptr,
- 0,
- &bytesReturned,
- &Overlapped) == TRUE) ||
- (GetLastError() != ERROR_IO_PENDING))
- {
- FakeCompletion(GetLastError(), bytesReturned);
- }
-
- return true;
-}
-
-void
-CLockConnectionCommand::Complete(
- _In_ DWORD Status,
- _In_ DWORD /* Information */
- )
-{
- if (Status != NO_ERROR)
- {
- printf("Error %u\n", GetLastError());
- }
- else
- {
- printf("Peripheral target locked\n");
- }
-}
-
-bool
-CUnlockConnectionCommand::Execute(
- VOID
- )
-{
- //
- // Unlock connection
- //
-
- ULONG bytesReturned;
-
- if (File == nullptr)
- {
- return false;
- }
-
- if ((DeviceIoControl(
- File,
- IOCTL_SPBTESTTOOL_UNLOCK_CONNECTION,
- nullptr,
- 0,
- nullptr,
- 0,
- &bytesReturned,
- &Overlapped) == TRUE) ||
- (GetLastError() != ERROR_IO_PENDING))
- {
- FakeCompletion(GetLastError(), bytesReturned);
- }
-
- return true;
-}
-
-void
-CUnlockConnectionCommand::Complete(
- _In_ DWORD Status,
- _In_ DWORD /* Information */
- )
-{
- if (Status != NO_ERROR)
- {
- printf("Error %u\n", GetLastError());
- }
- else
- {
- printf("Peripheral target unlocked\n");
- }
-}
-
-bool
-CReadCommand::Execute(
- VOID
- )
-{
- ULONG bytesRead;
-
- if (File == nullptr)
- {
- return false;
- }
-
- if ((ReadFile(File,
- Buffer,
- Length,
- &bytesRead,
- &Overlapped) == TRUE) ||
- (GetLastError() != ERROR_IO_PENDING))
- {
- FakeCompletion(GetLastError(), bytesRead);
- }
-
- return true;
-}
-
-void
-CReadCommand::Complete(
- _In_ DWORD Status,
- _In_ DWORD Information
- )
-{
- if (Status != NO_ERROR)
- {
- printf("Error %u\n", Status);
- }
- else
- {
- printf("%u bytes read\n", Information);
- PrintBytes(Information, Buffer);
- }
-}
-
-bool
-CWriteCommand::Execute(
- VOID
- )
-{
- ULONG bytesWritten;
-
- if (File == nullptr)
- {
- return false;
- }
-
- if ((WriteFile(File,
- Buffer,
- Length,
- &bytesWritten,
- &Overlapped) == TRUE) ||
- (GetLastError() != ERROR_IO_PENDING))
- {
- FakeCompletion(GetLastError(), bytesWritten);
- }
-
- return true;
-}
-
-
-void
-CWriteCommand::Complete(
- _In_ DWORD Status,
- _In_ DWORD Information
- )
-{
- if (Status != NO_ERROR)
- {
- printf("Error %u\n", Status);
- }
- else
- {
- printf("%u bytes written\n", Information);
- }
-}
-
-bool
-CWriteReadCommand::Execute(
- VOID
- )
-{
- ULONG bytesTransferred;
-
- if (File == nullptr)
- {
- return false;
- }
-
- if ((DeviceIoControl(File,
- IOCTL_SPBTESTTOOL_WRITEREAD,
- WriteBuffer,
- WriteLength,
- Buffer,
- ReadLength,
- &bytesTransferred,
- &Overlapped) == TRUE) ||
- (GetLastError() != ERROR_IO_PENDING))
- {
- FakeCompletion(GetLastError(), bytesTransferred);
- }
-
- return true;
-}
-
-void
-CWriteReadCommand::Complete(
- _In_ DWORD Status,
- _In_ DWORD Information
- )
-{
- if (Status != NO_ERROR)
- {
- printf("Error %u\n", GetLastError());
- }
- else
- {
- printf("%u bytes returned\n", Information);
- PrintBytes(Information, Buffer);
- }
-}
-
-bool
-CFullDuplexCommand::Execute(
- VOID
- )
-{
- ULONG bytesTransferred;
-
- if (File == nullptr)
- {
- return false;
- }
-
- if ((DeviceIoControl(File,
- IOCTL_SPBTESTTOOL_FULL_DUPLEX,
- WriteBuffer,
- WriteLength,
- Buffer,
- ReadLength,
- &bytesTransferred,
- &Overlapped) == TRUE) ||
- (GetLastError() != ERROR_IO_PENDING))
- {
- FakeCompletion(GetLastError(), bytesTransferred);
- }
-
- return true;
-}
-
-void
-CFullDuplexCommand::Complete(
- _In_ DWORD Status,
- _In_ DWORD Information
- )
-{
- if (Status != NO_ERROR)
- {
- printf("Error %u\n", GetLastError());
- }
- else
- {
- printf("%u bytes returned\n", Information);
- PrintBytes(Information, Buffer);
- }
-}
-
-bool
-CSignalInterruptCommand::Execute(
- VOID
- )
-{
- //
- // Signal interrupt
- //
-
- ULONG bytesReturned;
-
- if (File == nullptr)
- {
- return false;
- }
-
- if ((DeviceIoControl(
- File,
- IOCTL_SPBTESTTOOL_SIGNAL_INTERRUPT,
- nullptr,
- 0,
- nullptr,
- 0,
- &bytesReturned,
- &Overlapped) == TRUE) ||
- (GetLastError() != ERROR_IO_PENDING))
- {
- FakeCompletion(GetLastError(), bytesReturned);
- }
-
- return true;
-}
-
-void
-CSignalInterruptCommand::Complete(
- _In_ DWORD Status,
- _In_ DWORD /* Information */
- )
-{
- if (Status != NO_ERROR)
- {
- printf("Error %u\n", GetLastError());
- }
- else
- {
- printf("Interrupt signalled\n");
- }
-}