123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #ifndef UVCDEVICE_MANAGER_H
- #define UVCDEVICE_MANAGER_H
- #include "../libuvc/libuvc.h"
- #include "../MppDecoder/MppDecoder.h"
- #include <stdio.h>
- #include <unistd.h>
- #include <sys/time.h>
- #include "UVCCallBack.h"
- #include <list>
- #include "UVCDevice.h"
- #include <iostream>
- #include <memory>
- #include "../gpio_explorer.hpp"
- #include "../DataManager/DataManager.h"
- class UVCManager
- {
- public:
- static UVCManager &getInstance()
- {
- static UVCManager instance;
- return instance;
- }
- void init(int nWaitingTime);
- void setDeviceNumber(int deviceNumber, int TotoalDeviceNumber)
- {
- int nNumber = int(uvcDeviceList.size());
- if (deviceNumber >= nNumber)
- {
- std::cerr << "Device number out of range" << std::endl;
- return;
- }
- std::list<UVCDevice *>::iterator it = uvcDeviceList.begin();
- std::advance(it, deviceNumber);
- std::cout << "Setting device number: " << TotoalDeviceNumber << std::endl;
- (*it)->setTotalIndex(TotoalDeviceNumber);
- }
- int getDeviceNumber(int deviceNumber)
- {
- int nNumber = int(uvcDeviceList.size());
- if (deviceNumber >= nNumber)
- {
- std::cerr << "Device number out of range" << std::endl;
- return -1;
- }
- std::list<UVCDevice *>::iterator it = uvcDeviceList.begin();
- std::advance(it, deviceNumber);
- return (*it)->getTotalIndex();
- }
- int deliverFrameInCallBack(uvc_device_handle_t *devh);
- void startAllStreaming();
- void stopAllStreaming();
- uvc_context_t *getContext()
- {
- return ctx;
- }
- private:
- UVCManager()
- {
- uvc_init(&ctx, NULL);
- }
- ~UVCManager()
- {
- uvc_exit(ctx);
- }
- UVCManager(const UVCManager &) = delete;
- UVCManager &operator=(const UVCManager &) = delete;
- uvc_context_t *ctx;
- // device list
- uvc_device_t **deviceList;
- // device number
- int deviceNum;
- // the UVC device list is been managed by UVCManager
- std::list<UVCDevice *> uvcDeviceList;
- //
- std::shared_ptr<GPIOExplorer> m_GpioExplorer;
- };
- #endif // UVCDEVICE_MANAGER_H
|