Lines Matching +full:0 +full:- +full:dev
2 * COPYRIGHT (C) 2018, Real-Thread Information Technology Ltd
4 * SPDX-License-Identifier: Apache-2.0
8 * 2013-11-04 Grissiom add comment
19 rt_device_t dev = ctx; in _rx_indicate() local
21 if (dev->rx_indicate) in _rx_indicate()
22 dev->rx_indicate(dev, 0); in _rx_indicate()
27 rt_device_t dev = ctx; in _tx_complete() local
29 if (dev->tx_complete) in _tx_complete()
30 dev->tx_complete(dev, 0); in _tx_complete()
33 static rt_err_t _open(rt_device_t dev, rt_uint16_t oflag) in _open() argument
36 struct rt_vbus_dev *vdev = dev->user_data; in _open()
38 if (vdev->chnr) in _open()
42 chnr = rt_vbus_request_chn(&vdev->req, RT_WAITING_FOREVER); in _open()
43 if (chnr < 0) in _open()
46 vdev->chnr = chnr; in _open()
47 rt_vbus_register_listener(chnr, RT_VBUS_EVENT_ID_RX, _rx_indicate, dev); in _open()
48 rt_vbus_register_listener(chnr, RT_VBUS_EVENT_ID_TX, _tx_complete, dev); in _open()
53 static rt_err_t _close(rt_device_t dev) in _close() argument
55 struct rt_vbus_dev *vdev = dev->user_data; in _close()
57 RT_ASSERT(vdev->chnr != 0); in _close()
59 rt_vbus_close_chn(vdev->chnr); in _close()
60 vdev->chnr = 0; in _close()
65 static rt_size_t _read(rt_device_t dev, rt_off_t pos, void *buffer, rt_size_t size) in _read() argument
67 rt_size_t outsz = 0; in _read()
68 struct rt_vbus_dev *vdev = dev->user_data; in _read()
70 RT_ASSERT(vdev->chnr != 0); in _read()
72 if (vdev->act == RT_NULL) in _read()
74 vdev->act = rt_vbus_data_pop(vdev->chnr); in _read()
75 vdev->pos = 0; in _read()
82 while (vdev->act) in _read()
86 if (size - outsz > vdev->act->size - vdev->pos) in _read()
87 cpysz = vdev->act->size - vdev->pos; in _read()
89 cpysz = size - outsz; in _read()
91 rt_memcpy((char*)buffer + outsz, ((char*)(vdev->act+1)) + vdev->pos, cpysz); in _read()
92 vdev->pos += cpysz; in _read()
100 RT_ASSERT(0); in _read()
103 rt_free(vdev->act); in _read()
104 vdev->act = rt_vbus_data_pop(vdev->chnr); in _read()
105 vdev->pos = 0; in _read()
111 if (rt_interrupt_get_nest() == 0) in _read()
113 err = rt_vbus_listen_on(vdev->chnr, RT_WAITING_FOREVER); in _read()
117 err = rt_vbus_listen_on(vdev->chnr, 0); in _read()
124 vdev->act = rt_vbus_data_pop(vdev->chnr); in _read()
125 vdev->pos = 0; in _read()
129 static rt_size_t _write(rt_device_t dev, rt_off_t pos, const void *buffer, rt_size_t size) in _write() argument
132 struct rt_vbus_dev *vdev = dev->user_data; in _write()
134 RT_ASSERT(vdev->chnr != 0); in _write()
136 if (rt_interrupt_get_nest() == 0) in _write()
139 err = rt_vbus_post(vdev->chnr, vdev->req.prio, in _write()
145 err = rt_vbus_post(vdev->chnr, vdev->req.prio, in _write()
146 buffer, size, 0); in _write()
152 return 0; in _write()
158 rt_err_t _control(rt_device_t dev, int cmd, void *args) in _control() argument
160 RT_ASSERT(dev); in _control()
164 struct rt_vbus_dev *vdev = dev->user_data; in _control()
167 RT_ASSERT(vdev->chnr != 0); in _control()
169 return -RT_ERROR; in _control()
171 rt_vbus_register_listener(vdev->chnr, liscfg->event, in _control()
172 liscfg->listener, liscfg->ctx); in _control()
178 struct rt_vbus_dev *vdev = dev->user_data; in _control()
181 RT_ASSERT(vdev->chnr != 0); in _control()
184 return -RT_ERROR; in _control()
187 if (cfg->low > cfg->high) in _control()
188 return -RT_ERROR; in _control()
190 rt_vbus_set_recv_wm(vdev->chnr, cfg->low, cfg->high); in _control()
195 struct rt_vbus_dev *vdev = dev->user_data; in _control()
198 RT_ASSERT(vdev->chnr != 0); in _control()
201 return -RT_ERROR; in _control()
204 if (cfg->low > cfg->high) in _control()
205 return -RT_ERROR; in _control()
207 rt_vbus_set_post_wm(vdev->chnr, cfg->low, cfg->high); in _control()
216 return -RT_ENOSYS; in _control()
219 rt_uint8_t rt_vbus_get_chnnr(rt_device_t dev) in rt_vbus_get_chnnr() argument
223 RT_ASSERT(dev); in rt_vbus_get_chnnr()
225 vdev = dev->user_data; in rt_vbus_get_chnnr()
227 return vdev->chnr; in rt_vbus_get_chnnr()
230 void rt_vbus_chnx_register_disconn(rt_device_t dev, in rt_vbus_chnx_register_disconn() argument
234 struct rt_vbus_dev *vdev = dev->user_data; in rt_vbus_chnx_register_disconn()
236 RT_ASSERT(vdev->chnr != 0); in rt_vbus_chnx_register_disconn()
239 rt_vbus_register_listener(vdev->chnr, RT_VBUS_EVENT_ID_DISCONN, in rt_vbus_chnx_register_disconn()
243 #define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0]))
253 for (i = 0, p = rt_vbus_chn_devx; in rt_vbus_chnx_init()
254 i < ARRAY_SIZE(_devx) && p->req.name; in rt_vbus_chnx_init()
264 rt_device_register(&_devx[i], p->req.name, RT_DEVICE_FLAG_RDWR); in rt_vbus_chnx_init()