📄 test-sdlacb.c
字号:
printf("Putmsg succeeded!\n"); do_lmi_get_msg(fd);}void detach_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);}void enable_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);}void disable_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);}int sdl_open(void) { int fd; printf("\nAttempting to open ss7-sdl-acb0\n"); if ( (fd = open("/dev/ss7-sdl-acb0",O_NONBLOCK|O_RDWR)) < 0 ) { printf("error = %d\n", errno); perror("test"); exit(2); } else printf("Open succeeded!\n"); return(fd);}void sdl_close(int fd) { int ret; printf("\nAttempting to close ss7-sdl-acb0\n"); if ( (ret = close(fd)) < 0 ) { printf("error = %d\n", errno); perror("test"); exit(2); } else printf("Close succeeded!\n");}void sdl_write(int fd) { const char buf[] = "Hello World!"; int i; int ret; for ( i=0; i<10; i++ ) { printf("\nAttempting write\n"); ret = write(fd, buf, 13); if ( ret < 0 ) { printf("error = %d\n", errno); perror("test"); exit(2); } else printf("Write succeeded, wrote %d bytes!\n", ret); }}void sdl_daedt_start(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->daedt_start_req); ctrl.buf = cbuf; p->sdl_primitive = SDL_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);}void sdl_daedr_start(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->daedr_start_req); ctrl.buf = cbuf; p->sdl_primitive = SDL_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);}void sdl_read(int fd) { char 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; } printf("error = %d\n", errno); perror("test"); break; } else printf("Read succeeded, read %d bytes!\n", ret); if ( ret > 0 ) { int i; char *c = (char *)buf; printf("Message[%d]: ", ret); for ( i=0; i<ret; i++, c++ ) printf("%c", *c); printf("\n"); } }}int sdl_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("sdl_ioctl"); exit(2); } return ctl.ic_len;}void do_ioctls(int fd) { unsigned char buf[256]; sdl_config_t *c = (sdl_config_t *)buf; sdl_statem_t *s = (sdl_statem_t *)buf; printf("\nAttempting ioctls\n"); sdl_ioctl(fd, SDL_IOCGCONFIG, buf, sizeof(sdl_config_t)); printf("Config:\n"); printf(" N = %lu\n", c->N); printf(" m = %lu\n", c->m); sdl_ioctl(fd, SDL_IOCGSTATEM, buf, sizeof(sdl_statem_t)); printf("State:\n"); printf(" daedt_state = %lu\n", s->daedt_state); printf(" daedr_state = %lu\n", s->daedr_state); printf(" octet_counting_mode = %lu\n", s->octet_counting_mode); printf("Setting interface mode...\n"); *((unsigned long *)buf) = DEV_MODE_TEST; sdl_ioctl(fd,DEV_IOCSIFMODE, buf, sizeof(unsigned long)); printf("Setting interface clock...\n"); *((unsigned long *)buf) = DEV_CLOCK_INT; sdl_ioctl(fd,DEV_IOCSIFCLOCK, buf, sizeof(unsigned long)); printf("Iface:\n"); sdl_ioctl(fd, DEV_IOCGIFFLAGS, buf, sizeof(unsigned long)); printf(" ifflags = %lu\n", *((unsigned long *)buf)); sdl_ioctl(fd, DEV_IOCGIFTYPE, buf, sizeof(unsigned long)); printf(" iftype = %lu\n", *((unsigned long *)buf)); sdl_ioctl(fd, DEV_IOCGGRPTYPE, buf, sizeof(unsigned long)); printf(" ifgtype = %lu\n", *((unsigned long *)buf)); sdl_ioctl(fd, DEV_IOCGIFMODE, buf, sizeof(unsigned long)); printf(" ifmode = %lu\n", *((unsigned long *)buf)); sdl_ioctl(fd, DEV_IOCGIFRATE, buf, sizeof(unsigned long)); printf(" ifrate = %lu\n", *((unsigned long *)buf)); sdl_ioctl(fd, DEV_IOCGIFCLOCK, buf, sizeof(unsigned long)); printf(" ifclock = %lu\n", *((unsigned long *)buf)); sdl_ioctl(fd, DEV_IOCGIFCODING, buf, sizeof(unsigned long)); printf(" ifcoding = %lu\n", *((unsigned long *)buf)); sdl_ioctl(fd, DEV_IOCGIFLEADS, buf, sizeof(unsigned long)); printf(" ifleads = %lu\n", *((unsigned long *)buf));}int main () { int fd1; printf("Simple test program for ss7-sdl-acb driver.\n"); fd1 = sdl_open(); ioctl(fd1, I_SRDOPT, RMSGD); info_req(fd1); attach_req(fd1); do_ioctls(fd1); enable_req(fd1); sdl_daedt_start(fd1); sdl_daedr_start(fd1);#if 0 sdl_write(fd1); sdl_read(fd1);#endif disable_req(fd1); detach_req(fd1); sdl_close(fd1); printf("Done.\n"); return(0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -