int main(int argc, char **argv) { serial_source src; if (argc != 3) { fprintf(stderr, "Usage: %s <device> <rate> - dump packets from a serial port\n", argv[0]); exit(2); } src = open_serial_source(argv[1], atoi(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; const unsigned char *packet = read_serial_packet(src, &len); if (!packet) exit(0); printf("counter: %d RSSI: %d\n",packet[5],((packet[7] & 0xff) << 8) | (packet[6] & 0xff)); free((void *)packet); } }
/* * At startup, set the L2 properties of the attached device, and read * back the EUI-64. We'll need that to form the link-local address. */ int setup_serial(char *device, char *rate, struct config *c) { uint8_t *ser_data; int ser_len = 0; config_reply_t *reply; /* open the serial source as blocking */ ser_src = open_serial_source(device, platform_baud_rate(rate), 0, stderr_msg); if (!ser_src) return -1; /* kill ourselves if anything hangs */ alarm(5); /* set the parameters */ configure_setparams(c, CONFIG_REBOOT); /* wait to hear back... */ ser_data = read_serial_packet(ser_src, &ser_len); if (!ser_data) return -1; free(ser_data); configure_setparams(c, CONFIG_SET_PARM); ser_data = read_serial_packet(ser_src, &ser_len); if (ser_data[0] != TOS_SERIAL_DEVCONF) return -1; reply = (config_reply_t *)&ser_data[1]; memcpy(c->eui64.data, reply->ext_addr, 8); free(ser_data); alarm(0); return 0; }
void open_serial(const char *dev, int baud) { char ldev[80]; strcpy(ldev, dev); src = open_serial_source(ldev, baud, 1, stderr_msg); if (!src) { fprintf(stderr, "Couldn't open serial port at %s:%d\n", dev, baud); exit(1); } }
int serial_connect_dev(const char *dev, unsigned rate) { src_dev = open_serial_source(dev, rate, 0, stderr_msg); if (!src_dev) { fprintf(stderr, "can't open device %s:%u\n", dev, rate); return -1; } src_type = SRC_DEVICE; return 0; }
// initialize the motes void init_motes() { src = open_serial_source(devicename, atoi(baud), 0, stderr_msg); if(reader_thread(NULL) == 1) { fprintf(stderr, "couldn't start reader on mote network\n"); exit(EXIT_FAILURE); } return; }
int main(int argc, char **argv) { serial_source src; if (argc != 3) { fprintf(stderr, "Usage: %s <device> <rate> - dump packets from a serial port\n", argv[0]); exit(2); } src = open_serial_source(argv[1], atoi(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; const unsigned char *packet = read_serial_packet(src, &len); if (!packet) exit(0); int rssi_val; int am_type; int orig_sender; float real_rssi; float vdc = 3.0f; int crc; rssi_val = ((packet[7] & 0xff) << 8) | (packet[6] & 0xff); am_type = packet[8]; orig_sender = ((packet[10] & 0xff) << 8) | (packet[9] & 0xff); crc = ((packet[12] & 0xff) << 8) | (packet[11] & 0xff); /* for mica 2, ALSO depends on the value of vdc; which for wall plugin * is 3 VDC; for 1.5V batts it's something else */ real_rssi = -50.0f * (vdc * (rssi_val/1024.0f)) - 45.5f; printf("original sender: %d; crc: %d; AM type: %d; RSSI: %f dBm\n", orig_sender, crc, am_type, real_rssi); fflush(stdout); //putchar('\n'); free((void *)packet); } }
int main(int argc, char **argv) { serial_source src; if (argc < 3) { fprintf(stderr, "Usage: %s <device> <rate> <bytes> - send a raw packet to 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); } send_packet(src, argv + 3, argc - 3); }
void open_serial(const char *dev, int baud) { char ldev[80]; #ifdef __CYGWIN__ int portnum; if (strncasecmp(dev, "COM", 3) == 0) { fprintf(stderr, "Warning: you're attempting to open a Windows rather that a Cygwin device. Retrying with "); portnum=atoi(dev+3); sprintf(ldev, "/dev/ttyS%d",portnum-1); fprintf(stderr,ldev); fprintf(stderr, "\n"); } else #endif strcpy(ldev, dev); src = open_serial_source(ldev, baud, 1, stderr_msg); if (!src) { fprintf(stderr, "Couldn't open serial port at %s:%d\n", dev, baud); exit(1); } }
int main(int argc, char **argv) { int i; uint8_t *packet; char *prog_name; int len; int c, bail; input_src_t input_src; struct termios newtio; tcflag_t baudflag; int cnt; uint8_t *buf; serial_src = NULL; sf_src = 0; input_src = INPUT_RAW; bail = 0; prog_name = basename(argv[0]); while ((c = getopt_long(argc, argv, "Dvr", longopts, NULL)) != EOF) { switch (c) { case 1: bail = 1; input_src = INPUT_SF; break; case 2: bail = 1; input_src = INPUT_SERIAL; break; case 'D': debug++; break; case 'v': verbose++; break; case 'r': raw++; input_src = INPUT_RAW; break; default: usage(prog_name); } if (bail) break; } argc -= optind; argv += optind; if (argc != 2) { usage(prog_name); exit(2); } if (verbose) { fprintf(stderr, VERSION); switch (input_src) { case INPUT_SERIAL: fprintf(stderr, "opening: serial@%s:%d\n", argv[0], platform_baud_rate(argv[1])); break; case INPUT_SF: fprintf(stderr, "opening: sf@%s:%d\n", argv[0], atoi(argv[1])); break; case INPUT_RAW: fprintf(stderr, "opening: raw@%s:%d\n", argv[0], platform_baud_rate(argv[1])); break; } } if (input_src == INPUT_RAW) { baudflag = parse_baudrate(platform_baud_rate(argv[1])); if (!baudflag) { fprintf(stderr, "couldn't figure out the baud rate\n"); exit(2); } raw_fd = open(argv[0], O_RDWR | O_NOCTTY); if (raw_fd < 0) { fprintf(stderr, "*** Couldn't open serial port at %s:%s\n", argv[0], argv[1]); perror("error: "); exit(2); } /* Serial port setting */ memset(&newtio, 0, sizeof(newtio)); newtio.c_cflag = CS8 | CLOCAL | CREAD; newtio.c_iflag = IGNPAR | IGNBRK; cfsetispeed(&newtio, baudflag); cfsetospeed(&newtio, baudflag); /* Raw output_file */ newtio.c_oflag = 0; if (tcflush(raw_fd, TCIFLUSH) >= 0 && tcsetattr(raw_fd, TCSANOW, &newtio) >= 0) { buf = malloc(256); while(1) { cnt = read(raw_fd, buf, 1); if (cnt == 0) continue; fprintf(stderr, "%02x ", buf[0]); } } else close(raw_fd); exit(0); } switch(input_src) { case INPUT_SERIAL: serial_src = open_serial_source(argv[0], platform_baud_rate(argv[1]), 0, stderr_msg); if (!serial_src) { fprintf(stderr, "*** Couldn't open serial port at %s:%s\n", argv[0], argv[1]); perror("error: "); exit(1); } break; case INPUT_SF: sf_src = open_sf_source(argv[0], atoi(argv[1])); if (sf_src < 0) { fprintf(stderr, "*** Couldn't open serial forwarder at %s:%s\n", argv[0], argv[1]); perror("error: "); exit(1); } break; default: fprintf(stderr, "shouldn't be here\n"); exit(1); } for(;;) { switch(input_src) { case INPUT_SERIAL: packet = read_serial_packet(serial_src, &len); break; case INPUT_SF: packet = read_sf_packet(sf_src, &len); break; default: fprintf(stderr, "shouldn't be here\n"); exit(1); } if (!packet) { if (verbose) fprintf(stderr, "*** end of stream, terminating\n"); exit(0); } for (i = 0; i < len; i++) fprintf(stderr, "%02x ", packet[i]); fprintf(stderr, "\n"); free((void *)packet); } }
int main(int argc, char **argv) { serial_source src; unsigned char * currentField; unsigned char i; if (argc != 4) { fprintf( stderr, "Usage: %s <device> <rate> <file>- 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); } // open file to store fd = open(argv[3], O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); dup2(fd, 1); // print the name of the vars for (i = 0 ; i < 4 ; i++) printf("%s ", fieldsPck[i]); for (; i < 12 ; i++) printf("%s ", fieldsChannel[i-4]); putchar('\n'); for (;;) { int len, i; const unsigned char *packet = read_serial_packet(src, &len); if (!packet) exit(0); currentField = offsetPck; printf("%u ", packet[*currentField]); //seq_num currentField++; printf("%u ", (packet[*currentField + 1] << 8) | packet[*currentField]); //pan currentField++; printf("%u ", (packet[*currentField + 1] << 8) | packet[*currentField]); //src currentField++; printf("%u ", (packet[*currentField + 1] << 8) | packet[*currentField]); //dst currentField++; currentField = offsetChannel; printf("%u ", (packet[len - *currentField] << 8) | packet[len - *currentField + 1]); //success currentField++; printf("%u ", (packet[len - *currentField] << 8) | packet[len - *currentField + 1]); //total currentField++; printf("%u ", (packet[len - *currentField] << 8) | packet[len - *currentField + 1]); //delay currentField++; printf("%u ", packet[len - *currentField]); //lqi currentField++; printf("%d ",packet[len - *currentField]); //rssi currentField++; //mhrLen printf("%u ", packet[*currentField]); //mhrLen currentField++; printf("%u ", packet[len - *currentField]); //channel currentField++; printf("%lu ", (packet[len - *currentField +3] << 24) | (packet[len - *currentField + 2] << 16) | (packet[len - *currentField +1] << 8) | packet[len - *currentField]); putchar('; \n'); // for (i = 0; i < len; i++) // printf("%02x ", packet[i]); // putchar('\n'); free((void *) packet); } }
int main(int argc, char **argv) { serial_source src; unsigned char * currentField; unsigned char i; if (argc != 3) { fprintf( stderr, "Usage: %s <device> <rate> - 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); } // print the name of the vars for (i = 0; i < 4; i++) printf("%s ", fieldsPck[i]); for (; i < 11; i++) printf("%s ", fieldsChannel[i - 4]); putchar('\n'); for (;;) { int len, i; const unsigned char *packet = read_serial_packet(src, &len); const unsigned char *pPck; if (!packet) exit(0); currentField = offsetPck; printf("%u ", packet[*currentField]); //seq_num currentField++; printf("%u ", (packet[*currentField + 1] << 8) | packet[*currentField]); //pan currentField++; printf("%u ", (packet[*currentField + 1] << 8) | packet[*currentField]); //src currentField++; printf("%u ", (packet[*currentField + 1] << 8) | packet[*currentField]); //dst currentField++; currentField = offsetChannel; printf( "%u ", (packet[headerLen + *currentField] << 8) | packet[headerLen + *currentField + 1]); //success currentField++; printf( "%u ", (packet[headerLen + *currentField] << 8) | packet[headerLen + *currentField + 1]); //total currentField++; printf( "%u ", (packet[headerLen + *currentField] << 8) | packet[headerLen + *currentField + 1]); //delay currentField++; printf("%u ", packet[headerLen + *currentField]); //lqi currentField++; printf("%d ", (int8_t) packet[headerLen + *currentField]); //rssi currentField++; printf("%u ", packet[headerLen + *currentField]); //channel currentField++; printf( "%lu ", (packet[headerLen + *currentField + 3] << 24) | (packet[headerLen + *currentField + 2] << 16) | (packet[headerLen + *currentField + 1] << 8) | packet[headerLen + *currentField]); putchar('; \n'); fflush(stdout); free((void *) packet); } }