3 #include <system_def.h>
9 #include <usb/usb_loader.h>
10 #include <usb/usbdebug.h>
12 #include "appl_defs.h"
14 #ifdef CONFIG_LIB_U2U_V2
15 #define NUM_ENDPOINTS 2
16 #define USB_VENDOR_ID 0x1669
17 #define USB_PRODUCT_ID 0x1023
20 #include "usb/usb_defs.h"
22 usb_device_t usb_device;
23 usb_ep_t eps[NUM_ENDPOINTS];
25 #define MASK_EP1RX 0x01
26 #define MASK_EP1TX 0x02
28 extern int usb_common_loader(usb_device_t *udev);
30 #ifdef CONFIG_LIB_U2U_V2
35 const char ul_dcnv_idstr[] = ".mt u2u_v2int";
37 ul_dcnv_state_t ep1_dcnv_state;
38 unsigned char ep1_rx_buff[USB_MAX_PACKET];
39 unsigned char ep1_tx_buff[USB_MAX_PACKET];
41 int appl_usb_vendor(usb_device_t *udev)
44 ret = usb_u2u_vendor4dcnv(&ep1_dcnv_state, udev);
49 return usb_common_loader(udev);
52 int appl_usb_u2u_poll(void)
56 if (usb_device.ep_events & MASK_EP1RX)
60 size = usb_udev_read_endpoint(&eps[0], ep1_rx_buff, USB_MAX_PACKET);
61 ul_dcnv_send(&ep1_dcnv_state, ep1_rx_buff, size);
62 usb_device.ep_events &= ~MASK_EP1RX;
63 //timer_tx_off=5; //rozsviceni diod pri vysilani
64 //CLR_OUT_PIN(LED_PORT,LED1_BIT);
68 if (usb_device.ep_events & MASK_EP1TX)
70 ep1_dcnv_state.rx_wait4host = 0;
71 usb_device.ep_events &= ~MASK_EP1TX;
74 if (!ep1_dcnv_state.rx_wait4host)
77 int size = ul_dcnv_rec(&ep1_dcnv_state, ep1_tx_buff, USB_MAX_PACKET);
81 usb_udev_write_endpoint(&eps[1], ep1_tx_buff, size);
82 ep1_dcnv_state.rx_wait4host = 1;
86 if (ul_dcnv_rec_start(&ep1_dcnv_state, ep1_tx_buff, 8) == 8)
89 usb_udev_write_endpoint(&eps[1], ep1_tx_buff, 8);
90 //timer_rx_off=5; //rosviceni diody pri prijmu
91 //CLR_OUT_PIN(LED_PORT,LED2_BIT);
92 ep1_dcnv_state.rx_wait4host = 1;
101 #endif /*CONFIG_LIB_U2U_V2*/
103 int usb_app_fill_serial_number(uint32_t ul_sn)
105 char *p = usb_devdes_serial_number;
106 int len_max = sizeof(usb_devdes_serial_number);
109 while ((len_max -= 2) >= 2)
112 c = ((ul_sn >> (32 - 4)) & 0xf) + '0';
124 int usb_app_init(void)
126 memset(&usb_device, 0, sizeof(usb_device));
128 usb_device.devdes_table = &usb_devdes_table;
129 usb_device.init = usb_lpc_init;
130 usb_debug_set_level(DEBUG_LEVEL_NONE);
131 usb_device.cntep = NUM_ENDPOINTS;
134 #ifndef CONFIG_LIB_U2U_V2
135 usb_device.vendor_fnc = usb_common_loader;
136 #else /*CONFIG_LIB_U2U_V2*/
137 eps[0].max_packet_size = USB_MAX_PACKET;
138 eps[1].max_packet_size = USB_MAX_PACKET;
141 eps[0].event_mask = 0x04;
142 eps[1].event_mask = 0x08;
143 eps[0].udev = &usb_device;
144 eps[1].udev = &usb_device;
146 usb_device.vendor_fnc = appl_usb_vendor;
148 ul_dcnv_init_by_name(&ep1_dcnv_state, NULL, 1);
149 ep1_dcnv_state.idstr = ul_dcnv_idstr;
150 #endif /*CONFIG_LIB_U2U_V2*/
152 usb_init(&usb_device);
153 usb_connect(&usb_device);
157 int usb_app_poll(void)
159 int active = usb_loadder_active;
160 static char last_configuration = 0;
161 usb_loadder_active = 0;
163 usb_check_events(&usb_device);
164 usb_control_response(&usb_device);
166 if (usb_device.configuration != last_configuration)
168 last_configuration = usb_device.configuration;
171 #ifdef CONFIG_LIB_U2U_V2
173 if (ul_dcnv_is_open(&ep1_dcnv_state))
175 if (usb_device.configuration == 0)
176 ul_dcnv_close(&ep1_dcnv_state);
178 if (appl_usb_u2u_poll() > 0)
182 #endif /*CONFIG_LIB_U2U_V2*/
187 int usb_app_stop(void)
189 usb_disconnect(&usb_device);