建议所有硬件的功能,资源共享和锁的操作全封装进USB_DEVICE_CLASS()。但是,同时建议创建USB_DEVICE_USER_CLASS()提供接口给所有用户用,把所有controller需要用到的USB device API全封装进这个类里。
从全局看,你的一个controller就是一个USB 的设备用户,所以如果另外给controller创建对象的话,每个Controller class除了实现各自的逻辑,还必须得到一个USB_DEVICE_USER_CLASS()的instance用来具体操作这个对应的USB device。
这样,USB_DEVICE_CLASS() 知道USB_DEVICE_USER_CLASS(),但不用知道具体的Controller class。但是,USB_DEVICE_USER_CLASS()的instance的alloc/dealloc的操作一般需要由USB_DEVICE_CLASS()来实现。
从全局看,你的一个controller就是一个USB 的设备用户,所以如果另外给controller创建对象的话,每个Controller class除了实现各自的逻辑,还必须得到一个USB_DEVICE_USER_CLASS()的instance用来具体操作这个对应的USB device。
这样,USB_DEVICE_CLASS() 知道USB_DEVICE_USER_CLASS(),但不用知道具体的Controller class。但是,USB_DEVICE_USER_CLASS()的instance的alloc/dealloc的操作一般需要由USB_DEVICE_CLASS()来实现。