Advertisement
Guest User

Scan for Victron devices

a guest
Aug 14th, 2019
2,070
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.36 KB | None | 0 0
  1. //#include <nlohmann/json.hpp>
  2. #include <iostream>
  3. #include <libudev.h>
  4.  
  5. int main()
  6. {  
  7.    
  8.     udev *dev = nullptr;
  9.     udev_enumerate * udev_enum = nullptr;
  10.     udev_list_entry * list_entry = nullptr, *current_list_entry = nullptr;
  11.  
  12.     dev = udev_new();
  13.     udev_enum = udev_enumerate_new(dev);
  14.  
  15.     udev_enumerate_add_match_subsystem(udev_enum, "tty");
  16.     udev_enumerate_scan_devices(udev_enum);
  17.  
  18.     list_entry = udev_enumerate_get_list_entry(udev_enum);
  19.  
  20.     udev_list_entry_foreach(current_list_entry, list_entry)
  21.     {
  22.         std::string idVendor, idProduct;
  23.  
  24.         const char* name = udev_list_entry_get_name(current_list_entry);
  25.         udev_device* device = udev_device_new_from_syspath(dev, name);
  26.  
  27.         udev_device *parent = udev_device_get_parent_with_subsystem_devtype(device, "usb", "usb_device");
  28.         if (parent == nullptr)
  29.         {
  30.             udev_device_unref(device);
  31.             continue;
  32.         }
  33.  
  34.         idVendor = udev_device_get_sysattr_value(parent, "idVendor");
  35.         idProduct = udev_device_get_sysattr_value(parent, "idProduct");
  36.  
  37.         if (idVendor == "0403" && idProduct == "6015")
  38.         {
  39.             std::cout << udev_device_get_devnode(device) << std::endl;
  40.         }
  41.  
  42.         udev_device_unref(device);
  43.     }
  44.  
  45.     udev_enumerate_unref(udev_enum);
  46.     udev_unref(dev);
  47.  
  48.     return 0;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement