playtone.c
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:1k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

C/C++

  1. #include <sys/types.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <strings.h>
  5. #include <sys/ioctl.h>
  6. #include <unistd.h>
  7. #include <fcntl.h>
  8. #include "ixjuser.h"
  9. int main(int argc, char *argv[])
  10. {
  11.   int ixj1, hook, m_hook, digit, state, cnt;
  12.   char pname1[80], pname2[80];
  13.   sprintf(pname1, "/dev/ixj%s", argv[1]);
  14.   ixj1 = open(pname1, O_RDWR);
  15.   if(ixj1 <= 0)
  16.   {
  17.     printf("Open failed %sn", pname1);
  18.     exit(0);
  19.   }  
  20.   hook = m_hook = ioctl(ixj1, IXJCTL_HOOKSTATE);
  21.   printf("hook state %dn", hook);
  22. //  if(!ioctl(ixj1, IXJCTL_RING))
  23. //    exit(0);
  24.   hook = ioctl(ixj1, IXJCTL_HOOKSTATE);
  25.   while(!hook)
  26.   {
  27.     hook = ioctl(ixj1, IXJCTL_HOOKSTATE);
  28.   }
  29.   printf("hook state %dn", hook);
  30.   ioctl(ixj1, IXJCTL_SET_TONE_ON_TIME, 0x0168);
  31.   ioctl(ixj1, IXJCTL_SET_TONE_OFF_TIME, 0x0168);
  32.   printf("Tone on period = %4.4xn", ioctl(ixj1, IXJCTL_GET_TONE_ON_TIME));
  33.   printf("Tone off period = %4.4xn", ioctl(ixj1, IXJCTL_GET_TONE_OFF_TIME));
  34.   fflush(stdout);
  35.   ioctl(ixj1, IXJCTL_AEC_STOP);
  36.   for(digit = 1;digit < 13;digit++)
  37.   {
  38.     ioctl(ixj1, IXJCTL_PLAY_TONE, digit);
  39.     state = ioctl(ixj1, IXJCTL_GET_TONE_STATE);
  40.     printf("state = %dt", state);
  41.     fflush(stdout);
  42.     cnt = 0;    
  43.     while(state)
  44.     {
  45.       cnt++;
  46.       usleep(40);
  47.       state = ioctl(ixj1, IXJCTL_GET_TONE_STATE);
  48.     }
  49.     printf("cnt = %dn", cnt);
  50.     fflush(stdout);
  51.   }
  52. //    ioctl(ixj1, IXJCTL_PLAY_TONE, digit);
  53.   getchar();
  54.   close(ixj1);
  55. }