Dependencies:   EthernetNetIf mbed

Committer:
skclabo
Date:
Sun Oct 31 08:50:00 2010 +0000
Revision:
0:465452a86a66

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
skclabo 0:465452a86a66 1 /*
skclabo 0:465452a86a66 2 ***********************************************************
skclabo 0:465452a86a66 3 * DSMI Server sample by RJB@skclabo
skclabo 0:465452a86a66 4 *
skclabo 0:465452a86a66 5 * Device : mbed NXP LPC1768 with StarBoard Orange
skclabo 0:465452a86a66 6 * Date : 2010/10/25
skclabo 0:465452a86a66 7 * Version : 0.3 alfa
skclabo 0:465452a86a66 8 *
skclabo 0:465452a86a66 9 ***********************************************************
skclabo 0:465452a86a66 10 */
skclabo 0:465452a86a66 11
skclabo 0:465452a86a66 12 #include "mbed.h"
skclabo 0:465452a86a66 13 #include "TextLCD.h"
skclabo 0:465452a86a66 14 #include "EthernetNetIf.h"
skclabo 0:465452a86a66 15 #include "UDPSocket.h"
skclabo 0:465452a86a66 16
skclabo 0:465452a86a66 17 TextLCD lcd(p24, p26, p27, p28, p29, p30); // rs, e, d0-d3
skclabo 0:465452a86a66 18
skclabo 0:465452a86a66 19 EthernetNetIf eth;
skclabo 0:465452a86a66 20 UDPSocket udp;
skclabo 0:465452a86a66 21
skclabo 0:465452a86a66 22 DigitalOut ledA(LED1);
skclabo 0:465452a86a66 23
skclabo 0:465452a86a66 24 Serial SerialMidiDevice(p9, p10); // tx, rx
skclabo 0:465452a86a66 25
skclabo 0:465452a86a66 26 unsigned char RxByte;
skclabo 0:465452a86a66 27
skclabo 0:465452a86a66 28 void onUDPSocketEvent(UDPSocketEvent e)
skclabo 0:465452a86a66 29 {
skclabo 0:465452a86a66 30 switch(e)
skclabo 0:465452a86a66 31 {
skclabo 0:465452a86a66 32 case UDPSOCKET_READABLE: //The only event for now
skclabo 0:465452a86a66 33 char buf[64] = {0};
skclabo 0:465452a86a66 34 Host host;
skclabo 0:465452a86a66 35 while( int len = udp.recvfrom( buf, 63, &host ) )
skclabo 0:465452a86a66 36 {
skclabo 0:465452a86a66 37 if( len <= 0 )
skclabo 0:465452a86a66 38 break;
skclabo 0:465452a86a66 39
skclabo 0:465452a86a66 40 ledA = 1;
skclabo 0:465452a86a66 41 for( int i=0; i<len; i++)
skclabo 0:465452a86a66 42 {
skclabo 0:465452a86a66 43 RxByte = buf[i];
skclabo 0:465452a86a66 44 SerialMidiDevice.putc(RxByte); /* MIDI_0,1,2... */
skclabo 0:465452a86a66 45 // MidiStreamParser(); /* optional */
skclabo 0:465452a86a66 46 }
skclabo 0:465452a86a66 47
skclabo 0:465452a86a66 48 printf("From %d.%d.%d.%d: len %02d: %02X.%02X.%02X\n",
skclabo 0:465452a86a66 49 host.getIp()[0], host.getIp()[1], host.getIp()[2], host.getIp()[3],
skclabo 0:465452a86a66 50 len, buf[0], buf[1], buf[2]);
skclabo 0:465452a86a66 51 ledA = 0;
skclabo 0:465452a86a66 52 }
skclabo 0:465452a86a66 53 break;
skclabo 0:465452a86a66 54 }
skclabo 0:465452a86a66 55 }
skclabo 0:465452a86a66 56
skclabo 0:465452a86a66 57 int main() {
skclabo 0:465452a86a66 58
skclabo 0:465452a86a66 59 lcd.cls();
skclabo 0:465452a86a66 60 lcd.locate( 0, 0 );
skclabo 0:465452a86a66 61 lcd.printf("mbed DSMI Server");
skclabo 0:465452a86a66 62
skclabo 0:465452a86a66 63 lcd.locate( 0, 1 );
skclabo 0:465452a86a66 64 lcd.printf("StarBoard Orange");
skclabo 0:465452a86a66 65 wait(2.0);
skclabo 0:465452a86a66 66
skclabo 0:465452a86a66 67 lcd.locate( 0, 1 );
skclabo 0:465452a86a66 68 lcd.printf("Setting up... ");
skclabo 0:465452a86a66 69 printf("Setting up...\n");
skclabo 0:465452a86a66 70
skclabo 0:465452a86a66 71 SerialMidiDevice.baud(31250);
skclabo 0:465452a86a66 72
skclabo 0:465452a86a66 73 EthernetErr ethErr = eth.setup();
skclabo 0:465452a86a66 74 if(ethErr)
skclabo 0:465452a86a66 75 {
skclabo 0:465452a86a66 76 lcd.locate( 0, 1 );
skclabo 0:465452a86a66 77 lcd.printf("Error in setup.\n");
skclabo 0:465452a86a66 78 printf("Error %d in setup.\n", ethErr);
skclabo 0:465452a86a66 79 return -1;
skclabo 0:465452a86a66 80 }
skclabo 0:465452a86a66 81 printf("Setup OK\n");
skclabo 0:465452a86a66 82
skclabo 0:465452a86a66 83 printf("IP address %d.%d.%d.%d\n", eth.getIp()[0], eth.getIp()[1], eth.getIp()[2], eth.getIp()[3]);
skclabo 0:465452a86a66 84 Host broadcast(IpAddr(eth.getIp()[0], eth.getIp()[1], eth.getIp()[2], 255), 9000, NULL);
skclabo 0:465452a86a66 85 udp.setOnEvent(&onUDPSocketEvent);
skclabo 0:465452a86a66 86 udp.bind(broadcast);
skclabo 0:465452a86a66 87
skclabo 0:465452a86a66 88 lcd.locate( 0, 1 );
skclabo 0:465452a86a66 89 lcd.printf("%03d.%03d.%03d.%03d", eth.getIp()[0], eth.getIp()[1], eth.getIp()[2], eth.getIp()[3]);
skclabo 0:465452a86a66 90 wait(2.0);
skclabo 0:465452a86a66 91 lcd.locate( 0, 1 );
skclabo 0:465452a86a66 92 lcd.printf("Ready!! ");
skclabo 0:465452a86a66 93
skclabo 0:465452a86a66 94 while(true)
skclabo 0:465452a86a66 95 {
skclabo 0:465452a86a66 96 Net::poll();
skclabo 0:465452a86a66 97 }
skclabo 0:465452a86a66 98 }