1 #ifndef NM_USB_DEVICES_H_ 2 #define NM_USB_DEVICES_H_ 3 4 #include <nm_string.h> 5 #include <nm_vector.h> 6 7 typedef struct { 8 nm_str_t name; 9 nm_str_t vendor_id; 10 nm_str_t product_id; 11 uint8_t bus_num; 12 uint8_t dev_addr; 13 } nm_usb_dev_t; 14 15 #define NM_INIT_USB (nm_usb_dev_t) { NM_INIT_STR, NM_INIT_STR, NM_INIT_STR, 0, 0 } 16 17 typedef struct { 18 nm_str_t serial; 19 nm_usb_dev_t *dev; 20 } nm_usb_data_t; 21 22 #define NM_INIT_USB_DATA (nm_usb_data_t) { NM_INIT_STR, NULL } 23 24 void nm_usb_get_devs(nm_vect_t *v); 25 void nm_usb_vect_ins_cb(void *unit_p, const void *ctx); 26 void nm_usb_vect_free_cb(void *unit_p); 27 void nm_usb_data_vect_ins_cb(void *unit_p, const void *ctx); 28 void nm_usb_data_vect_free_cb(void *unit_p); 29 int nm_usb_get_serial(const nm_usb_dev_t *dev, nm_str_t *serial); 30 void nm_usb_data_free(nm_usb_data_t *dev); 31 nm_usb_name(const nm_usb_dev_t * p)32static inline nm_str_t *nm_usb_name(const nm_usb_dev_t *p) 33 { 34 return (nm_str_t *)&p->name; 35 } nm_usb_vendor_id(const nm_usb_dev_t * p)36static inline nm_str_t *nm_usb_vendor_id(const nm_usb_dev_t *p) 37 { 38 return (nm_str_t *)&p->vendor_id; 39 } nm_usb_product_id(const nm_usb_dev_t * p)40static inline nm_str_t *nm_usb_product_id(const nm_usb_dev_t *p) 41 { 42 return (nm_str_t *)&p->product_id; 43 } nm_usb_bus_num(const nm_usb_dev_t * p)44static inline uint8_t *nm_usb_bus_num(const nm_usb_dev_t *p) 45 { 46 return (uint8_t *)&p->bus_num; 47 } nm_usb_dev_addr(const nm_usb_dev_t * p)48static inline uint8_t *nm_usb_dev_addr(const nm_usb_dev_t *p) 49 { 50 return (uint8_t *)&p->dev_addr; 51 } 52 nm_usb_data_serial(const nm_usb_data_t * p)53static inline nm_str_t *nm_usb_data_serial(const nm_usb_data_t *p) 54 { 55 return (nm_str_t *)&p->serial; 56 } nm_usb_data_dev(const nm_usb_data_t * p)57static inline nm_usb_dev_t **nm_usb_data_dev(const nm_usb_data_t *p) 58 { 59 return (nm_usb_dev_t **)&p->dev; 60 } 61 62 #endif /* NM_USB_DEVICES_H_ */ 63 /* vim:set ts=4 sw=4: */ 64