Ethernet wrapper
Dependents: DodgeRadioEmulatorv30
Eth.cpp@1:e6c911335a8f, 2013-01-01 (annotated)
- Committer:
- rtgree01
- Date:
- Tue Jan 01 03:52:30 2013 +0000
- Revision:
- 1:e6c911335a8f
- Parent:
- 0:df5bd4645f1e
dunno?
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rtgree01 | 0:df5bd4645f1e | 1 | #include "Eth.h" |
rtgree01 | 0:df5bd4645f1e | 2 | |
rtgree01 | 0:df5bd4645f1e | 3 | Eth::Eth() |
rtgree01 | 0:df5bd4645f1e | 4 | { |
rtgree01 | 0:df5bd4645f1e | 5 | eth = new EthernetNetIf(IpAddr(10,10,10,2), IpAddr(255,255,255,0), IpAddr(10,10,10,1), IpAddr(10,10,10,1)); |
rtgree01 | 0:df5bd4645f1e | 6 | EthernetErr ethErr = eth->setup(); |
rtgree01 | 0:df5bd4645f1e | 7 | if(ethErr) |
rtgree01 | 0:df5bd4645f1e | 8 | { |
rtgree01 | 0:df5bd4645f1e | 9 | printf("Error %d in setup.\n", ethErr); |
rtgree01 | 0:df5bd4645f1e | 10 | return; |
rtgree01 | 0:df5bd4645f1e | 11 | } |
rtgree01 | 0:df5bd4645f1e | 12 | printf("Eth Setup OK\r\n"); |
rtgree01 | 0:df5bd4645f1e | 13 | |
rtgree01 | 0:df5bd4645f1e | 14 | // checkNetTicker.attach(this, &Eth::Operate, 0.02f); |
rtgree01 | 0:df5bd4645f1e | 15 | } |
rtgree01 | 0:df5bd4645f1e | 16 | |
rtgree01 | 0:df5bd4645f1e | 17 | void Eth::Operate(void) |
rtgree01 | 0:df5bd4645f1e | 18 | { |
rtgree01 | 0:df5bd4645f1e | 19 | Net::poll(); |
rtgree01 | 0:df5bd4645f1e | 20 | } |
rtgree01 | 0:df5bd4645f1e | 21 | |
rtgree01 | 0:df5bd4645f1e | 22 | UDPSock::UDPSock(Host *l, int buff, SocketReceiver *sr) |
rtgree01 | 0:df5bd4645f1e | 23 | { |
rtgree01 | 0:df5bd4645f1e | 24 | local = l; |
rtgree01 | 0:df5bd4645f1e | 25 | bufferSize = buff; |
rtgree01 | 0:df5bd4645f1e | 26 | receiver = sr; |
rtgree01 | 0:df5bd4645f1e | 27 | buffer = new char[bufferSize]; |
rtgree01 | 0:df5bd4645f1e | 28 | |
rtgree01 | 0:df5bd4645f1e | 29 | udp.setOnEvent(this, &UDPSock::onUDPSocketEvent); |
rtgree01 | 0:df5bd4645f1e | 30 | udp.bind(*local); |
rtgree01 | 0:df5bd4645f1e | 31 | } |
rtgree01 | 0:df5bd4645f1e | 32 | |
rtgree01 | 0:df5bd4645f1e | 33 | void UDPSock::SendTo(Host *remote, int size, char *data) |
rtgree01 | 0:df5bd4645f1e | 34 | { |
rtgree01 | 0:df5bd4645f1e | 35 | udp.sendto(data, size, remote); |
rtgree01 | 0:df5bd4645f1e | 36 | } |
rtgree01 | 0:df5bd4645f1e | 37 | |
rtgree01 | 0:df5bd4645f1e | 38 | void UDPSock::onUDPSocketEvent(UDPSocketEvent e) |
rtgree01 | 0:df5bd4645f1e | 39 | { |
rtgree01 | 0:df5bd4645f1e | 40 | switch(e) |
rtgree01 | 0:df5bd4645f1e | 41 | { |
rtgree01 | 0:df5bd4645f1e | 42 | case UDPSOCKET_READABLE: //The only event for now |
rtgree01 | 0:df5bd4645f1e | 43 | Host host; |
rtgree01 | 0:df5bd4645f1e | 44 | while( int len = udp.recvfrom( buffer, bufferSize, &host ) ) |
rtgree01 | 0:df5bd4645f1e | 45 | { |
rtgree01 | 0:df5bd4645f1e | 46 | if( len <= 0 ) |
rtgree01 | 0:df5bd4645f1e | 47 | break; |
rtgree01 | 0:df5bd4645f1e | 48 | |
rtgree01 | 0:df5bd4645f1e | 49 | receiver->ReceivedData(true, len, buffer); |
rtgree01 | 0:df5bd4645f1e | 50 | } |
rtgree01 | 0:df5bd4645f1e | 51 | break; |
rtgree01 | 0:df5bd4645f1e | 52 | } |
rtgree01 | 0:df5bd4645f1e | 53 | } |