MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ open_device()

bool MayaFlux::Core::HIDBackend::open_device ( uint32_t  device_id)
overridevirtual

Open a device for input.

Parameters
device_idDevice identifier from get_devices()
Returns
true if device was opened successfully

Implements MayaFlux::Core::IInputBackend.

Definition at line 222 of file HIDBackend.cpp.

223{
224 std::lock_guard lock(m_devices_mutex);
225
226 if (m_open_devices.find(device_id) != m_open_devices.end()) {
228 "HID device {} already open", device_id);
229 return true;
230 }
231
232 auto it = m_enumerated_devices.find(device_id);
233 if (it == m_enumerated_devices.end()) {
235 "HID device {} not found", device_id);
236 return false;
237 }
238
239 hid_device* handle = hid_open_path(it->second.path.c_str());
240 if (!handle) {
242 "Failed to open HID device {}: {}", device_id, it->second.name);
243 return false;
244 }
245
246 hid_set_nonblocking(handle, 1);
247
248 HIDDeviceState state;
249 state.handle = handle;
250 state.info = it->second;
251 state.read_buffer.resize(m_config.read_buffer_size);
252 state.active.store(true);
253
254 auto state_ptr = std::make_shared<HIDDeviceState>();
255 state_ptr->handle = handle;
256 state_ptr->info = it->second;
257 state_ptr->read_buffer.resize(m_config.read_buffer_size);
258 state_ptr->active.store(true);
259
260 m_open_devices.insert_or_assign(device_id, state_ptr);
261
263 "Opened HID device {}: {}", device_id, it->second.name);
264
265 return true;
266}
#define MF_INFO(comp, ctx,...)
#define MF_ERROR(comp, ctx,...)
#define MF_WARN(comp, ctx,...)
hid_device_ hid_device
Definition HIDBackend.hpp:5
std::unordered_map< uint32_t, HIDDeviceInfoExt > m_enumerated_devices
std::unordered_map< uint32_t, std::shared_ptr< HIDDeviceState > > m_open_devices
@ InputBackend
Input device backend (HID, MIDI, OSC)
@ Core
Core engine, backend, subsystems.
size_t read_buffer_size
Per-device read buffer size.

References MayaFlux::Core::HIDDeviceState::active, MayaFlux::Journal::Core, MayaFlux::Core::HIDDeviceState::handle, MayaFlux::Core::HIDDeviceState::info, MayaFlux::Journal::InputBackend, m_config, m_devices_mutex, m_enumerated_devices, m_open_devices, MF_ERROR, MF_INFO, MF_WARN, MayaFlux::Core::HIDDeviceState::read_buffer, and MayaFlux::Core::HIDBackend::Config::read_buffer_size.

Referenced by MayaFlux::Core::InputSubsystem::initialize_hid_backend().

+ Here is the caller graph for this function: