6
0
mirror of https://github.com/JKornev/hidden synced 2024-06-16 12:08:05 +00:00
hidden/HiddenCLI/Connection.cpp

68 lines
1.3 KiB
C++
Raw Normal View History

2016-12-04 19:27:46 +00:00
#include "Connection.h"
2016-12-05 22:37:18 +00:00
using namespace std;
Connection::Connection(Arguments& args) :
m_context(nullptr)
{
wstring arg;
if (!args.Probe(arg))
return;
do
{
if (arg == L"/gate")
2016-12-05 22:37:18 +00:00
{
args.SwitchToNext();
if (!args.GetNext(m_deviceName))
2016-12-26 21:52:27 +00:00
throw WException(ERROR_INVALID_PARAMETER, L"Error, mismatched argument for command 'gate'");
if (m_deviceName.compare(0, 1, L"\\") != 0)
m_deviceName.insert(0, L"\\\\.\\");
2016-12-05 22:37:18 +00:00
}
else
{
break;
}
}
while (args.Probe(arg));
}
Connection::~Connection()
{
if (m_context)
Hid_Destroy(m_context);
}
void Connection::Open()
{
HidStatus status;
const wchar_t* deviceName = nullptr;
if (m_deviceName.size())
deviceName = m_deviceName.c_str();
2016-12-09 20:27:27 +00:00
status = Hid_Initialize(&m_context, deviceName);
if (!HID_STATUS_SUCCESSFUL(status))
throw WException(HID_STATUS_CODE(status), L"Error, can't connect to gate");
2016-12-05 22:37:18 +00:00
}
HidContext Connection::GetContext()
{
return m_context;
}
2016-12-25 20:56:18 +00:00
LibInitializator::LibInitializator()
{
HidStatus status = Hid_InitializeWithNoConnection();
if (!HID_STATUS_SUCCESSFUL(status))
throw WException(HID_STATUS_CODE(status), L"Error, init hidden lib");
}
LibInitializator::~LibInitializator()
{
// We don't need release lib resources because in case of the
// Hid_InitializeWithNoConnection() there aren't any dynamic data
}