lowlevel.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #ifndef _BFG_LOWLEVEL_H
  2. #define _BFG_LOWLEVEL_H
  3. #include <stdbool.h>
  4. struct lowlevel_device_info;
  5. typedef bool (*lowl_found_devinfo_func_t)(struct lowlevel_device_info *);
  6. struct lowlevel_driver {
  7. struct lowlevel_device_info *(*devinfo_scan)();
  8. void (*devinfo_free)(struct lowlevel_device_info *);
  9. };
  10. struct lowlevel_device_info {
  11. char *manufacturer;
  12. char *product;
  13. char *serial;
  14. char *path;
  15. struct lowlevel_driver *lowl;
  16. void *lowl_data;
  17. struct lowlevel_device_info *next;
  18. };
  19. extern void lowlevel_scan();
  20. extern int _lowlevel_detect(lowl_found_devinfo_func_t, const char *serial, const char **product_needles);
  21. #define lowlevel_detect(func, ...) _lowlevel_detect(func, NULL, (const char *[]){__VA_ARGS__, NULL})
  22. #define lowlevel_detect_serial(func, serial) _lowlevel_detect(func, serial, (const char *[]){NULL})
  23. extern void lowlevel_scan_free();
  24. extern void lowlevel_devinfo_free(struct lowlevel_device_info *);
  25. #ifdef USE_X6500
  26. extern struct lowlevel_driver lowl_ft232r;
  27. #endif
  28. #ifdef USE_NANOFURY
  29. extern struct lowlevel_driver lowl_mcp2210;
  30. #endif
  31. #endif