MCPcopy Create free account
hub / github.com/OpenZWave/open-zwave / Open

Method Open

cpp/src/platform/winRT/SerialControllerImpl.cpp:76–169  ·  view source on GitHub ↗

----------------------------------------------------------------------------- Open the serial port -----------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

74// Open the serial port
75//-----------------------------------------------------------------------------
76bool SerialControllerImpl::Open()
77{
78 Log::Write(LogLevel_Info, "Trying to open serial port %s", m_owner->m_serialControllerName.c_str());
79
80 try
81 {
82 auto selector = SerialDevice::GetDeviceSelector();
83
84 return create_task(DeviceInformation::FindAllAsync(selector))
85 .then([this](DeviceInformationCollection ^ devices) -> IAsyncOperation<SerialDevice ^> ^
86 {
87 wstring ourId(m_owner->m_serialControllerName.begin(), m_owner->m_serialControllerName.end());
88 for (auto iterator = devices->First(); iterator->HasCurrent; iterator->MoveNext())
89 {
90 wstring currentId = iterator->Current->Id->Data();
91 if (currentId.find(ourId) != wstring::npos)
92 {
93 return SerialDevice::FromIdAsync(iterator->Current->Id);
94 }
95 }
96 return create_async([]() -> SerialDevice ^ { return nullptr; });
97
98 }).then([this](SerialDevice ^ device) -> bool
99 {
100 if (device == nullptr)
101 {
102 return false;
103 }
104 m_serialDevice = device;
105
106 m_serialDevice->BaudRate = m_owner->m_baud;
107 m_serialDevice->DataBits = 8;
108 switch (m_owner->m_stopBits)
109 {
110 case SerialController::StopBits::StopBits_One:
111 {
112 m_serialDevice->StopBits = SerialStopBitCount::One;
113 break;
114 }
115 case SerialController::StopBits::StopBits_OneAndAHalf:
116 {
117 m_serialDevice->StopBits = SerialStopBitCount::OnePointFive;
118 break;
119 }
120 case SerialController::StopBits::StopBits_Two:
121 {
122 m_serialDevice->StopBits = SerialStopBitCount::Two;
123 break;
124 }
125 }
126
127 switch (m_owner->m_parity)
128 {
129 case SerialController::Parity::Parity_Even:
130 {
131 m_serialDevice->Parity = SerialParity::Even;
132 break;
133 }

Callers

nothing calls this directly

Calls 7

WriteFunction · 0.85
FirstMethod · 0.80
findMethod · 0.80
c_strMethod · 0.45
getMethod · 0.45
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected