5 #include "kernel_id.h"
\r
7 #include "ecrobot_interface.h"
\r
8 #include "usb_test.h"
\r
10 /* OSEK declarations */
\r
11 DeclareTask(Task_ts1);
\r
12 DeclareTask(Task_background);
\r
13 DeclareResource(USB_Rx);
\r
14 DeclareCounter(SysTimerCnt);
\r
16 #define MAX_NUM_OF_CHAR 16
\r
17 #define MAX_NUM_OF_LINE 8
\r
19 static int pos_x = 0;
\r
20 static int pos_y = 0;
\r
22 static void showInitScreen(void)
\r
28 display_goto_xy(0, 0);
\r
29 display_string("USB TEST");
\r
30 display_goto_xy(0, 1);
\r
31 display_string("Run usbhost.exe");
\r
35 static void display_usb_data(U8 *data, int len)
\r
39 /* set LCD postion in x, y */
\r
40 if (pos_x >= MAX_NUM_OF_CHAR)
\r
46 if (pos_y >= MAX_NUM_OF_LINE)
\r
52 if (pos_x == 0 && pos_y == 0)
\r
56 display_goto_xy(pos_x, pos_y);
\r
58 for (i = 0; i < len; i++)
\r
60 if (data[i] == '\n')
\r
68 display_string((char *)&data[i]);
\r
80 void ecrobot_device_initialize()
\r
82 ecrobot_init_usb(); /* init USB */
\r
85 void ecrobot_device_terminate()
\r
87 ecrobot_term_usb(); /* terminate USB */
\r
90 /* nxtOSEK hook to be invoked from an ISR in category 2 */
\r
91 void user_1ms_isr_type2(void)
\r
93 /* Increment System Timer Count to activate periodical Tasks */
\r
94 (void)SignalCounter(SysTimerCnt);
\r
97 /* 1msec periodical Task */
\r
100 GetResource(USB_Rx);
\r
101 ecrobot_process1ms_usb(); /* USB process handler (must be invoked every 1msec) */
\r
102 ReleaseResource(USB_Rx);
\r
107 /* background Task */
\r
108 TASK(Task_background)
\r
111 U8 data[MAX_USB_DATA_LEN]; /* first byte is preserved for disconnect request from host */
\r
117 memset(data, 0, MAX_USB_DATA_LEN); /* flush buffer */
\r
118 /* critical section */
\r
119 GetResource(USB_Rx);
\r
120 len = ecrobot_read_usb(data, 0, MAX_USB_DATA_LEN); /* read USB data */
\r
121 ReleaseResource(USB_Rx);
\r
125 if (data[0] == DISCONNECT_REQ)
\r
127 /* disconnect current connection */
\r
128 ecrobot_disconnect_usb();
\r
134 ecrobot_send_usb(data, 0, len); /* send back received USB data */
\r
135 display_usb_data(&data[1], len-1);
\r