From: scipio Date: Tue, 10 Jun 2008 16:50:22 +0000 (+0000) Subject: Fixed Makefile to automatically compile serial listen for 15.4, X-Git-Tag: release_tinyos_2_1_0_0~325 X-Git-Url: https://oss.titaniummirror.com/gitweb/?p=tinyos-2.x.git;a=commitdiff_plain;h=4b103ee828fe921effeb58a885986d19b8754e1f Fixed Makefile to automatically compile serial listen for 15.4, made serial list print zero-padded hex. --- diff --git a/apps/BaseStation15.4/Makefile b/apps/BaseStation15.4/Makefile index 3c052e79..c58ce521 100644 --- a/apps/BaseStation15.4/Makefile +++ b/apps/BaseStation15.4/Makefile @@ -2,5 +2,13 @@ COMPONENT=BaseStationC CFLAGS += -DCC2420_NO_ACKNOWLEDGEMENTS CFLAGS += -DCC2420_NO_ADDRESS_RECOGNITION -include $(MAKERULES) +BUILD_EXTRA_DEPS += seriallisten15-4 +CLEAN_EXTRA = seriallisten15-4.o seriallisten15-4 + +seriallisten15-4: seriallisten15-4.o + gcc -o $@ $< $(TOSDIR)/../support/sdk/c/sf/libmote.a +seriallisten15-4.o: seriallisten15-4.c + gcc -c -o $@ -I$(TOSDIR)/../support/sdk/c/sf -I$(TOSDIR)/lib/serial -I$(TOSDIR)/types $< + +include $(MAKERULES) diff --git a/apps/BaseStation15.4/listen14_5.c b/apps/BaseStation15.4/listen14_5.c deleted file mode 100644 index 7ed64f6f..00000000 --- a/apps/BaseStation15.4/listen14_5.c +++ /dev/null @@ -1,180 +0,0 @@ -#include -#include - -#include "serialsource.h" - -static char *msgs[] = { - "unknown_packet_type", - "ack_timeout" , - "sync" , - "too_long" , - "too_short" , - "bad_sync" , - "bad_crc" , - "closed" , - "no_memory" , - "unix_error" -}; - -void stderr_msg(serial_source_msg problem) -{ - fprintf(stderr, "Note: %s\n", msgs[problem]); -} - -enum { - TOS_SERIAL_802_15_4_ID = 2, -}; - -int main(int argc, char **argv) -{ - serial_source src; - - if (argc != 3) - { - fprintf(stderr, "Usage: %s - dump packets from a serial port\n", argv[0]); - exit(2); - } - src = open_serial_source(argv[1], platform_baud_rate(argv[2]), 0, stderr_msg); - if (!src) - { - fprintf(stderr, "Couldn't open serial port at %s:%s\n", - argv[1], argv[2]); - exit(1); - } - for (;;) - { - int len, i, plen; - short fcf; - const unsigned char *packet = read_serial_packet(src, &len); - int intraPan = 0; - - if (!packet) - exit(0); - else if (packet[0] != TOS_SERIAL_802_15_4_ID) { - printf("bad packet (serial type is %02x, not %02x)\n", packet[0], TOS_SERIAL_802_15_4_ID); - } - - plen = packet[1]; - printf("Received packet of length %i: \n", plen); - if (plen != len) { - printf("Packet format error: read packet length (%hhx) is different than expected from frame (%hhx).\n", plen, len); - } - - i = 2; - // Read in FCF and i+=2 - fcf = packet[i+1] << 8 | packet[i]; - i += 2; - - - { - if ((fcf & 0x7) == 0x01) { - printf(" Frame type: data\n"); - } - else if ((fcf & 0x7) == 0x02) { - printf(" Frame type: acknowledgement\n"); - } - else { - printf(" Frame type: other\n"); - } - - printf(" Security: %s\n", (fcf & (1 << 3)) ? "enabled":"disabled"); - printf(" Frame pending: %s\n", (fcf & (1 << 4)) ? "yes":"no"); - printf(" Ack request: %s\n", (fcf & (1 << 5)) ? "yes":"no"); - printf(" Intra-PAN: %s\n", (fcf & (1 << 6)) ? "yes":"no"); - intraPan = (fcf & (1 << 6)); - } - - - { - char seqno = packet[i++]; - printf(" Sequence number: %hhx\n", seqno); - } - - { - char addrLen = (fcf >> 10) & 0x3; - short saddr = 0; - long long laddr = 0; - - // 16- and 64-bit destinations have a PAN ID - if (addrLen == 2 || addrLen == 3) { - short destPan = packet[i++] << 8 | packet[i++]; - printf(" Destination PAN: %hx\n", destPan); - } - - switch (addrLen) { - case 0: - printf(" Destination address: none\n"); - break; - case 1: - printf(" Destination address: invalid? (0x01)\n"); - break; - case 2: - saddr = (packet[i++] << 8 | packet[i++]); - printf(" Destination address: %hx\n", saddr); - break; - case 3: { - int j; - for (j = 0; j < 8; j++) { - laddr = laddr << 8; - laddr |= packet[i++]; - } - printf(" Destination address: %llx\n", laddr); - break; - } - default: - printf(" Destination address: parse serror\n"); - } - } - - - { - char addrLen = (fcf >> 14) & 0x3; - short saddr = 0; - long long laddr = 0; - - if (!intraPan) { // Intra-PAN packet - short srcPan = packet[i++] << 8 | packet[i++]; - printf(" Source PAN: %hx\n", srcPan); - } - - switch (addrLen) { - case 0: - printf(" Source address: none\n"); - break; - case 1: - printf(" Source address: invalid? (0x01)\n"); - break; - case 2: - saddr = (packet[i++] << 8 | packet[i++]); - printf(" Source address: %hx\n", saddr); - break; - case 3: { - int j; - for (j = 0; j < 8; j++) { - laddr = laddr << 8; - laddr |= packet[i++]; - } - printf(" Source address: %llx\n", laddr); - break; - } - default: - printf(" Source address: parse serror\n"); - } - } - - printf(" AM type: %hhx\n", packet[i++]); - - if (i >= plen) { - printf("Packet format error: read packet is shorter than expected.\n"); - } - else { - printf(" Payload: "); - for (; i < plen; i++) { - printf("%hhx ", packet[i]); - } - printf("\n\n"); - putchar('\n'); - } - free((void *)packet); - } -} diff --git a/apps/BaseStation15.4/seriallisten15-4.c b/apps/BaseStation15.4/seriallisten15-4.c new file mode 100644 index 00000000..b9c334d2 --- /dev/null +++ b/apps/BaseStation15.4/seriallisten15-4.c @@ -0,0 +1,183 @@ +#include +#include + +#include "serialsource.h" + +static char *msgs[] = { + "unknown_packet_type", + "ack_timeout" , + "sync" , + "too_long" , + "too_short" , + "bad_sync" , + "bad_crc" , + "closed" , + "no_memory" , + "unix_error" +}; + +void stderr_msg(serial_source_msg problem) +{ + fprintf(stderr, "Note: %s\n", msgs[problem]); +} + +enum { + TOS_SERIAL_802_15_4_ID = 2, +}; + +int main(int argc, char **argv) +{ + serial_source src; + + if (argc != 3) + { + fprintf(stderr, "Usage: %s - dump packets from a serial port\n", argv[0]); + exit(2); + } + src = open_serial_source(argv[1], platform_baud_rate(argv[2]), 0, stderr_msg); + if (!src) + { + fprintf(stderr, "Couldn't open serial port at %s:%s\n", + argv[1], argv[2]); + exit(1); + } + for (;;) + { + int len, i, plen; + short fcf; + const unsigned char *packet = read_serial_packet(src, &len); + int intraPan = 0; + + if (!packet) + exit(0); + else if (packet[0] != TOS_SERIAL_802_15_4_ID) { + printf("bad packet (serial type is %02x, not %02x)\n", packet[0], TOS_SERIAL_802_15_4_ID); + } + + plen = packet[1]; + printf("Received packet of length %i: \n", plen); + if (plen != len) { + printf("Packet format error: read packet length (%hhx) is different than expected from frame (%hhx).\n", plen, len); + } + + i = 2; + // Read in FCF and i+=2 + fcf = packet[i+1] << 8 | packet[i]; + i += 2; + + + { + if ((fcf & 0x7) == 0x01) { + printf(" Frame type: data\n"); + } + else if ((fcf & 0x7) == 0x02) { + printf(" Frame type: acknowledgement\n"); + } + else { + printf(" Frame type: other\n"); + } + + printf(" Security: %s\n", (fcf & (1 << 3)) ? "enabled":"disabled"); + printf(" Frame pending: %s\n", (fcf & (1 << 4)) ? "yes":"no"); + printf(" Ack request: %s\n", (fcf & (1 << 5)) ? "yes":"no"); + printf(" Intra-PAN: %s\n", (fcf & (1 << 6)) ? "yes":"no"); + intraPan = (fcf & (1 << 6)); + } + + + { + char seqno = packet[i++]; + printf(" Sequence number: 0x%hhx\n", seqno); + } + + { + char addrLen = (fcf >> 10) & 0x3; + short saddr = 0; + long long laddr = 0; + + // 16- and 64-bit destinations have a PAN ID + if (addrLen == 2 || addrLen == 3) { + short destPan = packet[i++] << 8 | packet[i++]; + printf(" Destination PAN: 0x%02hx\n", destPan); + } + + switch (addrLen) { + case 0: + printf(" Destination address: none\n"); + break; + case 1: + printf(" Destination address: invalid? (0x01)\n"); + break; + case 2: + saddr = (packet[i] << 8 | packet[i+1]); + i += 2; + printf(" Destination address: 0x%04hx\n", saddr); + break; + case 3: { + int j; + for (j = 0; j < 8; j++) { + laddr = laddr << 8; + laddr |= packet[i++]; + } + printf(" Destination address: 0x%016llx\n", laddr); + break; + } + default: + printf(" Destination address: parse serror\n"); + } + } + + + { + char addrLen = (fcf >> 14) & 0x3; + short saddr = 0; + long long laddr = 0; + + if (!intraPan) { // Intra-PAN packet + short srcPan = packet[i] << 8 | packet[i+1]; + i += 2; + printf(" Source PAN: 0x%02hx\n", srcPan); + } + + switch (addrLen) { + case 0: + printf(" Source address: none\n"); + break; + case 1: + printf(" Source address: invalid? (0x01)\n"); + break; + case 2: + saddr = (packet[i] << 8 | packet[i + 1]); + i += 2; + printf(" Source address: 0x%04hx\n", saddr); + break; + case 3: { + int j; + for (j = 0; j < 8; j++) { + laddr = laddr << 8; + laddr |= packet[i++]; + } + printf(" Source address: 0x%016llx\n", laddr); + break; + } + default: + printf(" Source address: parse serror\n"); + } + } + + printf(" AM type: 0x%02hhx\n", packet[i++]); + + if (i >= plen) { + printf("Packet format error: read packet is shorter than expected.\n"); + } + else { + printf(" Payload: "); + for (; i < plen; i++) { + printf("0x%02hhx ", packet[i]); + } + printf("\n\n"); + putchar('\n'); + } + free((void *)packet); + } +}