RealtimeCompLab2
Dependencies: mbed
Fork of PPP-Blinky by
Diff: main.cpp
- Revision:
- 42:4de44be70bfd
- Parent:
- 41:e58a5a09f411
- Child:
- 43:aa57db08995d
--- a/main.cpp Mon Jan 09 08:13:40 2017 +0000 +++ b/main.cpp Tue Jan 10 18:19:58 2017 +0000 @@ -32,10 +32,10 @@ #ifndef SERIAL_PORT_MONITOR_NO Serial xx(PC_10, PC_11); // See debug messages on this port. Not necessary to work, but VERY interesting output! -#define debug(x) xx.printf x +#define debug(x...) xx.printf (x) #else // no debug monitoring -#define debug(x) {} +#define debug(x...) {} #endif Serial pc(USBTX, USBRX); // The serial port on your mbed hardware. Your PC thinks this is a dial-up modem. @@ -179,7 +179,7 @@ void determinePacketType(); // declaration only determinePacketType(); } else if (v0) { - debug(("PPP FCS(crc) Error CRC=%x Length = %d\n",ppp.pkt.crc,ppp.pkt.len)); + debug("PPP FCS(crc) Error CRC=%x Length = %d\n",ppp.pkt.crc,ppp.pkt.len); } } @@ -188,8 +188,8 @@ // In WireShark, use "Import Hex File". Options are: Offset=None, Protocol=PPP. void dumpFrame() { - for(int i=0; i<ppp.pkt.len; i++) debug(("%02x ", ppp.pkt.buf[i])); - debug((" C=%02x %02x L=%d\n", ppp.pkt.crc&0xff, (ppp.pkt.crc>>8)&0xff, ppp.pkt.len)); + for(int i=0; i<ppp.pkt.len; i++) debug("%02x ", ppp.pkt.buf[i]); + debug(" C=%02x %02x L=%d\n", ppp.pkt.crc&0xff, (ppp.pkt.crc>>8)&0xff, ppp.pkt.len); } void hdlcPut(int ch) // do hdlc handling of special (flag) characters @@ -279,16 +279,16 @@ char * dstIP = udpPkt+16; // udp dst addr #define UDP_HEADER_SIZE 8 int udpLength = ((udpLen[0]<<8) | udpLen[1]) - UDP_HEADER_SIZE; // size of the actual udp data - if(v1) debug(("UDP %d.%d.%d.%d:%d ", srcIP[0],srcIP[1],srcIP[2],srcIP[3],srcPort)); - if(v1) debug(("%d.%d.%d.%d:%d ", dstIP[1],dstIP[1],dstIP[1],dstIP[1],dstPort)); - debug(("Len %d ", udpLength)); + if(v1) debug("UDP %d.%d.%d.%d:%d ", srcIP[0],srcIP[1],srcIP[2],srcIP[3],srcPort); + if(v1) debug("%d.%d.%d.%d:%d ", dstIP[1],dstIP[1],dstIP[1],dstIP[1],dstPort); + debug("Len %d ", udpLength); int printSize = udpLength; if (printSize > 20) printSize = 20; // print only first 20 characters if (v0) { for (int i=0; i<printSize; i++) { char ch = udpInf[i]; if (ch>31 && ch<127) { - debug(("%c", ch)); + debug("%c", ch); } else { debug(("_")); } @@ -356,8 +356,8 @@ char * dstAdr = ipPkt+16; int icmpIdent = (icmpType[4]<<8)|icmpType[5]; int icmpSequence = (icmpType[6]<<8)|icmpType[7]; - debug(("ICMP PING %d.%d.%d.d %d.%d.%d.%d ", srcAdr[0],srcAdr[1],srcAdr[2],srcAdr[3],dstAdr[0],dstAdr[1],dstAdr[2],dstAdr[3])); - debug(("Ident %04x Sequence %04d ",icmpIdent,icmpSequence)); + debug("ICMP PING %d.%d.%d.d %d.%d.%d.%d ", srcAdr[0],srcAdr[1],srcAdr[2],srcAdr[3],dstAdr[0],dstAdr[1],dstAdr[2],dstAdr[3]); + debug("Ident %04x Sequence %04d ",icmpIdent,icmpSequence); char src[4]; char dst[4]; memcpy(src, srcAdr,4); @@ -384,7 +384,7 @@ for (int i=0; i<printSize; i++) { char ch = icmpData[i]; if (ch>31 && ch<127) { - debug(("%c",ch)); + debug("%c",ch); } else { debug(("_")); } @@ -395,7 +395,7 @@ } else { if (v0) { - debug(("ICMP type=%d \n", icmpType[0])); + debug("ICMP type=%d \n", icmpType[0]); } } } @@ -403,7 +403,7 @@ void IGMPpacket() // internet group management protocol { if (v0) { - debug(("IGMP type=%d \n", ppp.pkt.buf[28])); + debug("IGMP type=%d \n", ppp.pkt.buf[28]); } } @@ -437,8 +437,8 @@ snprintf(srcIP,16, "%d.%d.%d.%d", srcAdr[0],srcAdr[1],srcAdr[2],srcAdr[3]); char dstIP [16]; snprintf(dstIP,16, "%d.%d.%d.%d", dstAdr[0],dstAdr[1],dstAdr[2],dstAdr[3]); - if (v0) debug(("IP %s %s v%d h%d d%d e%d L%d ",srcIP,dstIP,versionIP,headerSizeIP,dscpIP,ecnIP,packetLength)); - if (v0) debug(("i%04x f%d t%d p%d C%04x\n",identIP,flagsIP,ttlIP,protocolIP,checksumIP)); + if (v0) debug("IP %s %s v%d h%d d%d e%d L%d ",srcIP,dstIP,versionIP,headerSizeIP,dscpIP,ecnIP,packetLength); + if (v0) debug("i%04x f%d t%d p%d C%04x\n",identIP,flagsIP,ttlIP,protocolIP,checksumIP); } void dumpHeaderTCP() @@ -465,7 +465,7 @@ if (flags & (1<<8)) flagInfo[8]='N'; flagInfo[9]=0; // null terminate string if (v0) { - debug(("Flags %s Seq %u Ack %u", flagInfo, seq, ack)); + debug("Flags %s Seq %u Ack %u", flagInfo, seq, ack); } } @@ -552,7 +552,7 @@ int contentLength = dataLen-nHeader; // this is how to calculate Content-Length, but using curl -v is easier contentLength = contentLength+0; // get around unreferenced variable warning if (v0) { - debug(("HTTP GET dataLen %d*32=%d Header %d Content-Length %d Total %d Margin %d\n",dataLen/32,dataLen,nHeader,contentLength,n,dataLen-n)); + debug("HTTP GET dataLen %d*32=%d Header %d Content-Length %d Total %d Margin %d\n",dataLen/32,dataLen,nHeader,contentLength,n,dataLen-n); } } else if ( strncmp(dataStart, "GET /", 4) == 0) { // all other HTTP GET requests get 404 Not Found response dataLen = 5*32; // block size for File not found webpage @@ -567,7 +567,7 @@ int contentLength = dataLen-nHeader; // this is how to calculate Content-Length, but using curl -v is easier contentLength = contentLength+0; // get around unreferenced variable warning if (v0) { - debug(("HTTP GET dataLen %d*32=%d Header %d Content-Length %d Total %d Margin %d\n",dataLen/32,dataLen,nHeader,contentLength,n,dataLen-n)); + debug("HTTP GET dataLen %d*32=%d Header %d Content-Length %d Total %d Margin %d\n",dataLen/32,dataLen,nHeader,contentLength,n,dataLen-n); } } else { dataLen=0; // we did not find a valid HTTP request, so just ACK with zero data @@ -653,10 +653,10 @@ int headerSizeTCP = ((ppp.pkt.buf[4+ipHeaderLen+12]>>4)&0xf)*4;; // length of tcp header int dataLen = ipPktLen - ipHeaderLen - headerSizeTCP; // data is what's left after the two headers if (v1) { - debug(("TCP %d ipHeader %d tcpHeader %d Data %d\n", ipPktLen, ipHeaderLen, headerSizeTCP, dataLen)); // 1 for more verbose + debug("TCP %d ipHeader %d tcpHeader %d Data %d\n", ipPktLen, ipHeaderLen, headerSizeTCP, dataLen); // 1 for more verbose } if (dataLen > 0) { - debug(("%s\n",ppp.pkt.buf+4+ipHeaderLen+headerSizeTCP)); // show the data + debug("%s\n",ppp.pkt.buf+4+ipHeaderLen+headerSizeTCP); // show the data } } @@ -691,10 +691,10 @@ char dstIP [16]; snprintf(dstIP,16, "%d.%d.%d.%d", dstAdr[0],dstAdr[1],dstAdr[2],dstAdr[3]); if (v0) { - debug(("IP %s %s v%d h%d d%d e%d L%d ",srcIP,dstIP,versionIP,headerSizeIP,dscpIP,ecnIP,packetLength)); + debug("IP %s %s v%d h%d d%d e%d L%d ",srcIP,dstIP,versionIP,headerSizeIP,dscpIP,ecnIP,packetLength); } if (v0) { - debug(("i%04x f%d t%d p%d C%04x\n",identIP,flagsIP,ttlIP,protocolIP,checksumIP)); + debug("i%04x f%d t%d p%d C%04x\n",identIP,flagsIP,ttlIP,protocolIP,checksumIP); } dumpHeaderTCP(); dumpDataTCP(); @@ -784,7 +784,7 @@ void discardedFrame() { if (v0) { - debug(("Dropping frame %02x %02x %02x %02x\n", ppp.pkt.buf[0],ppp.pkt.buf[1],ppp.pkt.buf[2],ppp.pkt.buf[3])); + debug("Dropping frame %02x %02x %02x %02x\n", ppp.pkt.buf[0],ppp.pkt.buf[1],ppp.pkt.buf[2],ppp.pkt.buf[3]); } }