UVCDeviceManager.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #include "UVCDeviceManager.h"
  2. #include "../DataManager/DataManager.h"
  3. #include "../DataManager/DataPackage.h"
  4. void UVCManager::init()
  5. {
  6. // get device list
  7. uvc_device_t **deviceList;
  8. uvc_get_device_list(ctx, &deviceList);
  9. // get device number
  10. deviceNum = 0;
  11. while (deviceList[deviceNum] != NULL)
  12. {
  13. deviceNum++;
  14. }
  15. std::cout << "Device Number: " << deviceNum << std::endl;
  16. // init the Uvc device by deviceNum
  17. for (int i = 0; i < deviceNum; i++)
  18. {
  19. UVCDevice *uvcDevice = new UVCDevice();
  20. uvcDevice->init(i, ctx, deviceList[i]);
  21. uvcDevice->setCallBack(cbSaveToLocal);
  22. uvcDeviceList.push_back(uvcDevice);
  23. // init the data manager
  24. DataManager::getInstance().addDataPipe<DataPackage>("uvc" + std::to_string(i));
  25. }
  26. m_GpioExplorer = std::make_shared<GPIOExplorer>("gpiochip0", 16);
  27. }
  28. int UVCManager::deliverFrameInCallBack(uvc_device_handle_t *devh)
  29. {
  30. int i = 0;
  31. std::list<UVCDevice *>::iterator it = uvcDeviceList.begin();
  32. for (; it != uvcDeviceList.end(); it++, i++)
  33. {
  34. if ((*it)->getDevh() == devh)
  35. {
  36. return i;
  37. }
  38. }
  39. return -1;
  40. }
  41. void UVCManager::startAllStreaming()
  42. {
  43. for (auto uvcDevice : uvcDeviceList)
  44. {
  45. uvcDevice->startStreaming();
  46. }
  47. }
  48. void UVCManager::stopAllStreaming()
  49. {
  50. for (auto uvcDevice : uvcDeviceList)
  51. {
  52. uvcDevice->stopStreaming();
  53. }
  54. }