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)32 static 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)36 static 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)40 static 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)44 static 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)48 static 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)53 static 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)57 static 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