#include "UVCDeviceManager.h" #include "../DataManager/DataManager.h" #include "../DataManager/DataPackage.h" void UVCManager::init() { // get device list uvc_device_t **deviceList; uvc_get_device_list(ctx, &deviceList); // get device number deviceNum = 0; while (deviceList[deviceNum] != NULL) { deviceNum++; } std::cout << "Device Number: " << deviceNum << std::endl; // init the Uvc device by deviceNum for (int i = 0; i < deviceNum; i++) { UVCDevice *uvcDevice = new UVCDevice(); uvcDevice->init(i, ctx, deviceList[i]); uvcDevice->setCallBack(cbSaveToLocal); uvcDeviceList.push_back(uvcDevice); // init the data manager DataManager::getInstance().addDataPipe("uvc" + std::to_string(i)); } m_GpioExplorer = std::make_shared("gpiochip0", 16); } int UVCManager::deliverFrameInCallBack(uvc_device_handle_t *devh) { int i = 0; std::list::iterator it = uvcDeviceList.begin(); for (; it != uvcDeviceList.end(); it++, i++) { if ((*it)->getDevh() == devh) { return i; } } return -1; } void UVCManager::startAllStreaming() { for (auto uvcDevice : uvcDeviceList) { uvcDevice->startStreaming(); } } void UVCManager::stopAllStreaming() { for (auto uvcDevice : uvcDeviceList) { uvcDevice->stopStreaming(); } }