first adaption of 'usbport' by Benedikt Sauter
[ppcskel.git] / usb / drivers / mon / mon.c
1 /*
2  * Copyright (c) 2006, Benedikt Sauter <sauter@ixbat.de>
3  * All rights reserved.
4  *
5  * Short descripton of file:
6  *
7  *
8  * Redistribution and use in source and binary forms, with or without 
9  * modification, are permitted provided that the following conditions 
10  * are met:
11  *
12  *   * Redistributions of source code must retain the above copyright 
13  *     notice, this list of conditions and the following disclaimer.
14  *   * Redistributions in binary form must reproduce the above 
15  *     copyright notice, this list of conditions and the following 
16  *     disclaimer in the documentation and/or other materials provided 
17  *     with the distribution.
18  *   * Neither the name of the FH Augsburg nor the names of its 
19  *     contributors may be used to endorse or promote products derived 
20  *     from this software without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
23  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
24  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
25  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
26  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
27  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
28  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
29  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
30  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
31  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
32  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33  */
34 #if USBMON
35
36 #include <string.h>
37
38 #include "mon.h"
39 #include <core/core.h>
40 #include <uart.h>
41
42 void usb_mon_stdout(void *output)
43 {
44   core.stdout = output;
45   usbmon_index=0;
46   usbmon_loop=0;
47 }
48
49 void usb_mon_stdin(unsigned char input)
50 {
51   char send[3]={input,0,0};
52   usbmon_buffer[usbmon_index++]=input;
53   // if enter is pressed
54   if(input==0xD){
55     usbmon_buffer[--usbmon_index]=0;
56     usb_mon_command();
57     usbmon_index=0;
58   } else {
59     core.stdout(send);
60   }
61  
62   if((usbmon_loop==0 && input==0xD)){ 
63     send[0]='\n';
64     send[1]='\r';
65     core.stdout(send);
66     core.stdout("usbmon> ");
67   } 
68
69   if((usbmon_loop==1 && input==0xD)){
70     usbmon_loop=0;
71   }
72 }
73
74 void usb_mon_command()
75 {
76   if(strcmp("list",(char*)usbmon_buffer)==0){
77     core.stdout("\r\nDevice list:\r\n");
78   } else if (strcmp("mon",(char*)usbmon_buffer)==0) {
79     core.stdout("\r\n0:02:Bo 00 93 04");
80     core.stdout("\r\n0:02:Bo 00 93 04");
81     usbmon_loop=1;
82   } else if (strcmp("help",(char*)usbmon_buffer)==0) {
83     usb_mon_usage();
84   } else if (strcmp(".",(char*)usbmon_buffer)==0) {
85     usbmon_loop=0;
86   }
87   else {
88     if(usbmon_index>0)
89       core.stdout("\r\nunkown command (type help)");
90   }
91
92 }
93
94 void usb_mon_usage()
95 {
96   core.stdout("\r\nUsage:\r\n");
97   core.stdout("\tlist\t Print device list\r\n");
98   core.stdout("\tmon\t View online traffic\r\n");
99 }
100
101
102
103 #endif