📄 test-x400p-sdt2.c
字号:
{ int ret; struct strbuf ctrl; char cbuf[BUFSIZE]; union LMI_primitives *p = (union LMI_primitives *) cbuf; ctrl.maxlen = BUFSIZE; ctrl.len = sizeof(p->info_req); ctrl.buf = cbuf; p->lmi_primitive = LMI_INFO_REQ; printf("\nAttempting info request\n"); if ((ret = putmsg(fd, &ctrl, NULL, RS_HIPRI)) < 0) { printf("error = %d\n", errno); perror("test"); exit(2); } else printf("Putmsg succeeded!\n"); do_lmi_get_msg(fd);}voidattach_req(int fd, uint16_t ppa){ int ret; struct strbuf ctrl; char cbuf[BUFSIZE]; union LMI_primitives *p = (union LMI_primitives *) cbuf; ctrl.maxlen = BUFSIZE; ctrl.len = sizeof(p->attach_req) + sizeof(ppa); ctrl.buf = cbuf; p->attach_req.lmi_primitive = LMI_ATTACH_REQ; bcopy(&ppa, p->attach_req.lmi_ppa, sizeof(ppa)); printf("\nAttempting attach request\n"); if ((ret = putmsg(fd, &ctrl, NULL, RS_HIPRI)) < 0) { printf("error = %d\n", errno); perror("test"); exit(2); } else printf("Putmsg succeeded!\n"); do_lmi_get_msg(fd);}voiddetach_req(int fd){ int ret; struct strbuf ctrl; char cbuf[BUFSIZE]; union LMI_primitives *p = (union LMI_primitives *) cbuf; ctrl.maxlen = BUFSIZE; ctrl.len = sizeof(p->detach_req); ctrl.buf = cbuf; p->lmi_primitive = LMI_DETACH_REQ; printf("\nAttempting detach request\n"); if ((ret = putmsg(fd, &ctrl, NULL, RS_HIPRI)) < 0) { printf("error = %d\n", errno); perror("test"); exit(2); } else printf("Putmsg succeeded!\n"); do_lmi_get_msg(fd);}voidenable_req(int fd){ int ret; struct strbuf ctrl; char cbuf[BUFSIZE]; union LMI_primitives *p = (union LMI_primitives *) cbuf; ctrl.maxlen = BUFSIZE; ctrl.len = sizeof(p->enable_req); ctrl.buf = cbuf; p->lmi_primitive = LMI_ENABLE_REQ; printf("\nAttempting enable request\n"); if ((ret = putmsg(fd, &ctrl, NULL, RS_HIPRI)) < 0) { printf("error = %d\n", errno); perror("test"); exit(2); } else printf("Putmsg succeeded!\n"); do_lmi_get_msg(fd);}voiddisable_req(int fd){ int ret; struct strbuf ctrl; char cbuf[BUFSIZE]; union LMI_primitives *p = (union LMI_primitives *) cbuf; ctrl.maxlen = BUFSIZE; ctrl.len = sizeof(p->disable_req); ctrl.buf = cbuf; p->lmi_primitive = LMI_DISABLE_REQ; printf("\nAttempting disable request\n"); if ((ret = putmsg(fd, &ctrl, NULL, RS_HIPRI)) < 0) { printf("error = %d\n", errno); perror("test"); exit(2); } else printf("Putmsg succeeded!\n"); do_lmi_get_msg(fd);}voidsdl_connect(int fd, ulong flag){ int ret; struct strbuf ctrl; char cbuf[BUFSIZE]; union SDL_primitives *p = (union SDL_primitives *) cbuf; ctrl.maxlen = BUFSIZE; ctrl.len = sizeof(p->connect_req); ctrl.buf = cbuf; p->sdl_primitive = SDL_CONNECT_REQ; p->connect_req.sdl_flags = flag; printf("\nAttempting CONNECT request\n"); if ((ret = putmsg(fd, &ctrl, NULL, RS_HIPRI)) < 0) { printf("error = %d\n", errno); perror("test"); exit(2); } else printf("Putmsg succeeded!\n"); // do_lmi_get_msg(fd);}voidsdl_disconnect(int fd){ int ret; struct strbuf ctrl; char cbuf[BUFSIZE]; union SDL_primitives *p = (union SDL_primitives *) cbuf; ctrl.maxlen = BUFSIZE; ctrl.len = sizeof(p->disconnect_req); ctrl.buf = cbuf; p->sdl_primitive = SDL_DISCONNECT_REQ; p->disconnect_req.sdl_flags = SDL_RX_DIRECTION | SDL_TX_DIRECTION; printf("\nAttempting DISCONNECT request\n"); if ((ret = putmsg(fd, &ctrl, NULL, RS_HIPRI)) < 0) { printf("error = %d\n", errno); perror("test"); exit(2); } else printf("Putmsg succeeded!\n"); // do_lmi_get_msg(fd);}voidsdl_write(int fd){ const size_t len = 64; const uint8_t buf[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 }; int i, ret; i = 0; printf("\nAttempting write\n"); for (;;) { ret = write(fd, buf, len); if (ret < 0) { if (errno == EINTR || errno == ERESTART) { if (i++ < 100) continue; } if (errno == EAGAIN) { return; } printf("error = %d\n", errno); perror("test"); exit(2); } else { int i; printf("Write succeeded, wrote %d bytes!\n", ret); printf("Message[%ld]: ", (long) len); for (i = 0; i < len; i++) { printf("%02X ", buf[i]); } printf("\n"); } }}voidsdl_read(int fd){ uint8_t buf[4096]; int i, ret; i = 0; // printf("\nAttempting read\n"); for (;;) { ret = read(fd, buf, 4096); if (ret < 0) { if (errno == EINTR || errno == ERESTART) { if (i++ < 100) continue; } if (errno == EAGAIN) { return; } if (errno == EBADMSG) { do_lmi_get_msg(fd); continue; } printf("error = %d\n", errno); perror("test"); exit(2); } // else printf("Read succeeded, read %d bytes!\n", ret); if (ret == 0) return; if (ret > 0) { int i; uint8_t *c = buf; printf("Message[%d]: ", ret); for (i = 0; i < ret; i++, c++) { printf("%02X ", *c); } printf("\n"); } }}voidsdt_daedt_start(int fd){ int ret; struct strbuf ctrl; char cbuf[BUFSIZE]; union SDT_primitives *p = (union SDT_primitives *) cbuf; ctrl.maxlen = BUFSIZE; ctrl.len = sizeof(p->daedt_start_req); ctrl.buf = cbuf; p->sdt_primitive = SDT_DAEDT_START_REQ; printf("\nAttempting DAEDT start request\n"); if ((ret = putmsg(fd, &ctrl, NULL, RS_HIPRI)) < 0) { printf("error = %d\n", errno); perror("test"); exit(2); } else printf("Putmsg succeeded!\n"); // do_lmi_get_msg(fd);}voidsdt_daedr_start(int fd){ int ret; struct strbuf ctrl; char cbuf[BUFSIZE]; union SDT_primitives *p = (union SDT_primitives *) cbuf; ctrl.maxlen = BUFSIZE; ctrl.len = sizeof(p->daedr_start_req); ctrl.buf = cbuf; p->sdt_primitive = SDT_DAEDR_START_REQ; printf("\nAttempting DAEDR start request\n"); if ((ret = putmsg(fd, &ctrl, NULL, RS_HIPRI)) < 0) { printf("error = %d\n", errno); perror("test"); exit(2); } else printf("Putmsg succeeded!\n"); // do_lmi_get_msg(fd);}voidsdt_write(int fd){#if 0 const size_t len = 13; const char buf[] = "Hello World!";#else#if 0 const size_t len = 46; const char buf[] = "THE QUICK BROWN FOX JUMPED OVER THE LAZY DOGS";#else#if 0 const size_t len = 46; const uint8_t buf[] = { 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff, 0xff, 0xfe, 0xfc, 0xfa, 0xf8, 0xf0, 0xe0, 0xc0, 0xa0, 0x80, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff, 0xff, 0xfe, 0xfc, 0xfa, 0xf8, 0xf0, 0xe0, 0xc0, 0xa0, 0x80, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f };#else#if 0 const size_t len = 80; const uint8_t buf[] = { 0x7f, 0x7f, 0x3f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d };#else uint len = 4; unsigned char buf[] = { 0xff, 0xff, 0x85, 0x00 };#endif#endif#endif#endif int i, ret; i = 0; for (;;) { // printf("\nAttempting write\n"); ret = write(fd, buf, len); if (ret < 0) { if (errno == EINTR || errno == ERESTART) { if (++i < 100) continue; } if (errno == EAGAIN) { return; } printf("error = %d\n", errno); perror("test"); exit(2); }#if 0 else printf("Write succeeded, wrote %d bytes!\n", ret); if (ret > 0) { int j; printf("Message[%d]: ", len); for (j = 0; j < len; j++) { printf("%02x ", buf[j]); } printf("\n"); }#endif }}voidsdt_read(int fd){ uint8_t buf[256]; int i, ret; i = 0; printf("\nAttempting read\n"); for (;;) { ret = read(fd, buf, 256); if (ret < 0) { if (errno == EAGAIN) { if (i++ < 100) continue; } if (errno == EBADMSG) { do_lmi_get_msg(fd); continue; } printf("error = %d\n", errno); perror("test"); break; } else printf("Read succeeded, read %d bytes!\n", ret); if (ret > 0) { int i; uint8_t *c = buf; printf("Message[%d]: ", ret); for (i = 0; i < ret; i++, c++) { printf("%02X ", *c); } printf("\n"); } }}intsdt_ioctl(int fd, int cmd, void *arg, int len){ struct strioctl ctl = { cmd, 0, len, arg }; int ret; ret = ioctl(fd, I_STR, &ctl); if (ret < 0) { printf("return = %d\n", ret); printf("error = %d\n", errno); perror("sdt_ioctl"); exit(2); } return ctl.ic_len;}voiddo_ioctl(int fd, int cmd, int arg){ int ret; ret = ioctl(fd, cmd, arg); if (ret < 0) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -