⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_ttx.c

📁 IBM source for pallas/vulcan/vesta
💻 C
📖 第 1 页 / 共 2 页
字号:
    return(rc);  }  if ((rc = pthread_create(&thread,(void *)&attr,     (void *)ttx_rw_task,(void *)NULL)) != 0) {    printf("Error starting Teletext Receive Task\n");    return(rc);  }  return(0);}/*----------------------------------------------------------------------------+| ttx_close+----------------------------------------------------------------------------*/static int ttx_close(){  int   rc;  /*--------------------------------------------------------------------------+  | Stop Teletext processing if active  +--------------------------------------------------------------------------*/  if (ttx_started) {     if ((rc = ttx_stop()) != 0) {        printf("ttx_stop() failed to stop Teletext driver\n");        return(rc);     }  }  /*--------------------------------------------------------------------------+  | Close all Devices  +--------------------------------------------------------------------------*/  if (fd_ttx0 != 0) {     if ((rc = close(fd_ttx0)) < 0) {        printf("Error closing Teletext driver (/dev/ttx0)\n");        return(rc);     }     fd_ttx0 = 0;  }  if (fd_xp0 != 0) {     if ((rc = close(fd_xp0)) < 0) {        printf ("Error closing Demux TTX Filter (/dev/demuxapi0/xp0)\n");        return(rc);     }     fd_xp0 = 0;  }  if (fd_pcr0 != 0) {     if ((rc = close(fd_pcr0)) < 0) {        printf ("Error closing Demux PCR Filter (/dev/demuxapi0/pcr0)\n");        return(rc);     }     fd_pcr0 = 0;  }  ttx_inited = 0;  return(0);}/*----------------------------------------------------------------------------+| ttx_open+----------------------------------------------------------------------------*/static int ttx_open(){  int  rc;  int  fd_vid;  /*--------------------------------------------------------------------------+  | Close any devices still open  +--------------------------------------------------------------------------*/  if ((fd_pcr0 != 0)  ||      (fd_xp0  != 0)  ||      (fd_ttx0 != 0)) {     ttx_close();  }  /*--------------------------------------------------------------------------+  | Open Demux 0 PCR Filter  +--------------------------------------------------------------------------*/  if ((fd_pcr0 = open("/dev/demuxapi0", O_RDONLY)) < 0) {     printf ("Error opening Demux PCR Filter (/dev/demuxapi0/pcr0)\n");     return(fd_pcr0);  }  /*--------------------------------------------------------------------------+  | Open Demux 0 Channel Filter  +--------------------------------------------------------------------------*/  if ((fd_xp0 = open("/dev/demuxapi0", O_RDONLY)) < 0) {     printf ("Error opening Demux TTX Filter (/dev/demuxapi0/xp0)\n");     return(fd_xp0);  }  /*--------------------------------------------------------------------------+  | Open Video Driver and Set Video Decoder to PAL  +--------------------------------------------------------------------------*/  if ((fd_vid = open("/dev/vdec_dev", O_RDWR)) < 0) {     printf("Unable to open video driver (/dev/vdec_dev)\n");     printf("Assuming video driver is already opened and set to PAL Mode\n");  } else {     if ((rc = ioctl(fd_vid,MPEG_VID_SET_DISPFMT,VID_DISPFMT_PAL)) < 0) {        printf("Error setting video display format to PAL\n");        return(rc);     }     if ((rc = close(fd_vid)) < 0) {        printf("Error closing video driver (/dev/vdec_dev)\n");        return(rc);     }  }  /*--------------------------------------------------------------------------+  | Open TTX Driver  +--------------------------------------------------------------------------*/  if ((fd_ttx0 = open("/dev/ttx0", O_RDWR)) < 0) {     printf ("Error opening Teletext Driver (/dev/ttx0)\n");     return(fd_ttx0);  }  ttx_inited = 1;  ttx_clr_stats();  return(0);}/*----------------------------------------------------------------------------+| ttx_help_menu+----------------------------------------------------------------------------*/static void ttx_help_menu(void){   int n;   printf("-Teletext Menu-------------------------");   printf("---------------------------------------\n\r");   for (n=0; mu_ttx_help[n]!=0; n++) {     if (n % 2)        printf("%-39s\n",mu_ttx_help[n]);     else        printf("%-39s|", mu_ttx_help[n]);   }   if (n%2) {      printf("\n");   }   printf("---------------------------------------");   printf("---------------------------------------\n\r");   return;}/*----------------------------------------------------------------------------+| ttx_test+----------------------------------------------------------------------------*/static int ttx_test(char *cmd){  char parm[80];  int  pcrpid, txtpid;  int  err;  /*--------------------------------------------------------------------------+  | t help  +--------------------------------------------------------------------------*/  if (strncmp(cmd, "h", 1)    ==0  ||      strncmp(cmd, "help", 4) ==0) {     ttx_help_menu();  }  /*--------------------------------------------------------------------------+  | t init  +--------------------------------------------------------------------------*/  else if (strncmp(cmd, "init", 4)==0) {     if ((err = ttx_open()) != 0) {        printf("ttx_open() failed.  rc=%d\n\r", err);     } else {        printf("Teletext Driver initialized sucessfully\n");     }  }  /*--------------------------------------------------------------------------+  | t term  +--------------------------------------------------------------------------*/  else if (strncmp(cmd, "term", 4)==0) {     if ((err = ttx_close()) != 0) {        printf("ttx_close() failed.  rc=%d\n\r", err);     } else {        printf("Teletext Driver terminated sucessfully\n");     }  }  /*--------------------------------------------------------------------------+  | t start  +--------------------------------------------------------------------------*/  else if (strncmp(cmd, "start", 5)==0) {     if (sscanf(&cmd[5], "%x %x", &pcrpid, &txtpid) != 2) {         printf("Incorrect number of arguments was specified\n\r");         printf("Usage: t start <pcrpid txtpid>  ie. t start 0x1ffe 0x240\n");     } else {         if ((err = ttx_start(pcrpid,txtpid)) != 0) {            printf("ttx_start() failed. rc=%d\n\r", err);         } else {            printf("Teletext Driver started, PCR PID=0x%04x, TTX PID=0x%04x\n",                   pcrpid,txtpid);         }     }  }  /*--------------------------------------------------------------------------+  | t stop  +--------------------------------------------------------------------------*/  else if (strncmp(cmd, "stop", 4)==0) {     if ((err = ttx_stop()) != 0) {        printf("ttx_stop() failed. rc=%d\n\r", err);     } else {        printf("Teletext Driver stopped\n");     }  }  /*--------------------------------------------------------------------------+  | t stat  +--------------------------------------------------------------------------*/  else if (strncmp(cmd, "stat", 4)==0) {     if (sscanf(&cmd[5], "%s", parm) != 1) {         printf("Incorrect number of arguments was specified\n\r");         printf("Usage: t stat <get | clear>  ie. t stat clear\n");     } else {        if (strcmp(parm, "clear") == 0) {           if ((err = ttx_clr_stats()) != 0) {              printf("ttx_clr_stats() failed. rc=%d\n\r", err);           } else {              printf("Teletext statistics cleared\n");           }        } else if (strcmp(parm, "get") == 0) {           if ((err = ttx_get_stats()) != 0) {              printf("ttx_get_stats() failed. rc=%d\n\r", err);           }        } else {           printf("Usage: t stat <get | clear>  ie. t stat clear\n");        }     }  }  /*--------------------------------------------------------------------------+  | t quit  +--------------------------------------------------------------------------*/  else if (strncmp(cmd, "q",    1) ==0  ||           strncmp(cmd, "quit", 4) ==0) {          ttx_loop = 0;  }  /*--------------------------------------------------------------------------+  | Unknown Command  +--------------------------------------------------------------------------*/  else {     printf("Unknown TTX Command\n\r");     return(-1);  }  return(0);}/*----------------------------------------------------------------------------+|  XX      XX    XX    XXXX  XX   XX|  XXX    XXX   XXXX    XX   XXX  XX|  XXXX  XXXX  XX  XX   XX   XXXX XX|  XX  XX  XX  XX  XX   XX   XX XXXX|  XX  XX  XX  XXXXXX   XX   XX  XXX|  XX      XX  XX  XX   XX   XX   XX|  XX      XX  XX  XX  XXXX  XX   XX+----------------------------------------------------------------------------*//*----------------------------------------------------------------------------+| main+----------------------------------------------------------------------------*/int main(){  char inp[40]; /*---------------------------------------------------------------------------+ | Process all Teletext commands +---------------------------------------------------------------------------*/  while(ttx_loop) {    printf("TTX Input Command (h=help):");    fflush(0);    memset(inp,' ',sizeof(inp));    read(0,inp,sizeof(inp));    printf("\n\r");    /*------------------------------------------------------------------------+    | Teletext Menu    +------------------------------------------------------------------------*/    if (inp[0]=='t') {       ttx_test(&inp[strspn(&inp[1], " ")]+ 1);    }  }  /*---------------------------------------------------------------------------+  | Close Teletext Device  +---------------------------------------------------------------------------*/  ttx_close();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -