Metropoli BBS
VIEWER: test.c MODE: TEXT (ASCII)
#include <stdio.h>
#include <stdlib.h>

#include "typedef.h"
#include "zyascii.h"
#include "zyl2.h"


void main(void)
{
    FILE *fp;
    int c;
    int nReadNum;
    int nResult;
    char szDTMF[5] = { 0,0,0,0,0};
    char szVFHeader[16] = { 'Z', 'y', 'X', 'E', 'L', 0x02, 0x00, 0x00,
			    0x0, 0x0, 0x0, 0x0, 0x0, 0x00, 0x00, 0x00};
    char szTempBuffer[512];
    char szEndVoice[3] = { DLE, ETX, 0};

    printf( "\r\nZyXEL Voice DEMO sample . \r\n");
    printf( "You must install FOSSIL driver before run this sample. \r\n");
    printf( "Use the another phone to call the modem. \r\n");

    nResult = ZyOpenCommPort( COM2, 19200L, 'N', 8, 1 );
    if ( nResult < IDR_SUCCESS ) {
	printf( "Failed to open the port.  Status = %d\n",
		nResult );
	exit( 1 );
    }
    printf( "open the port successful. Status = %d\n", nResult);



    if (!initZyModem(COM2, FC_HARDWARE))
       exit(1);

    printf( "Initialize modem successfully\r\n");


    printf( "Start to DEMO \r\n");
    printf( "Press the '1' phone key to record voice \n\r");
    printf( "Press the '2' phone key to listen voice \n\r");
    printf( "Press the '3' phone key to test DTMF generate \n\r");

    startVoicePlay(COM2, IDV_ADPCM2, IDV_LINE);
    for(;;)
    {

       ZyWriteFileWithDtmf(COM2, "greet1.dat", 1, szDTMF);
       nResult = (int) szDTMF[0];
       switch(nResult)
       {
	  case '1':
	       ZyWriteByteCommand(COM2, szEndVoice, ON);
	       printf("%s DTMF code had been detected\n\r",szDTMF);
	       ZyWriteCommand(COM2, "AT+VTS=[933,0,10]\0", ON);
	       ZyWriteCommand(COM2, "AT+VRX\0", ON);
	       if ((fp = fopen("test.dat", "w+b")) == NULL)
		  exit (1);
	       fwrite((NPSTR) szVFHeader, sizeof (char), 16, fp);   /* write header */
	       while (0 != (nReadNum = (int) ZyReadMemoryBlock(COM2,
							       szTempBuffer,
							       256)))
	       {
		  fwrite((NPSTR) szTempBuffer, sizeof(char), nReadNum, fp);
		  if (nReadNum < 256)
		     break;
	       }
    /*	       disconnectVoice(COM2); */
	       fclose(fp);
	       break;
	  case '2':
	       ZyWriteByteCommand(COM2, szEndVoice, ON);
	       printf("%s DTMF code had been detected\n\r",szDTMF);
	       ZyWriteCommand(COM2, "AT+VTS=[933,0,10]\0", ON);
	       ZyWriteCommand(COM2, "AT+VTX\0",ON);
	       ZyWriteFileWithDtmf(COM2, "greet.dat", 1, szDTMF);
	       ZyWriteByteCommand(COM2, szEndVoice, ON);

	       if (szDTMF[0] != 'c')
	       {
		  nResult = 0;
		  break;
	       }
	       else
	       {
		  nResult = szDTMF[0];
		/*disconnectVoice(COM2); */
		  break;
	       }
	  case '3':
	  case 's':
	  case 'b':
	  case 'q':
	  case 'c':
	       ZyWriteByteCommand(COM2, szEndVoice, ON);
	       printf("%s DTMF code had been detected\n\r",szDTMF);
	       ZyWriteCommand(COM2, "AT+VTS=[933,0,10]\0", ON);
	       break;
	  default:
	       nResult = 0;
	       break;
       }
       if (nResult != 0)
	  break;
       ZyWriteCommand(COM2, "AT+VTX\0",ON);
    }


    ZyWriteCommand (COM2, "AT+VBT=2", ON);
    printf("Generate DTMF DEMO, Press the 0-9 and * # on keyboard \n\r");
    printf("to generate the DTMF code \n\r");
    while ((c = getch()) != ESC)
    {

      switch(c)
      {
	  case 49:
	    ZyGenerateDtmf (COM2, '1');
	    printf("DTMF 1 is generating\n\r");
	    break;
	  case 50:
	    ZyGenerateDtmf (COM2, '2');
	    printf("DTMF 2 is generating\n\r");
	    break;
	  case 51:
	    ZyGenerateDtmf (COM2, '3');
	    printf("DTMF 3 is generating\n\r");
	    break;
	  case 52:
	    ZyGenerateDtmf (COM2, '4');
	    printf("DTMF 4 is generating\n\r");
	    break;
	  case 53:
	    ZyGenerateDtmf (COM2, '5');
	    printf("DTMF 5 is generating\n\r");
	    break;
	  case 54:
	    ZyGenerateDtmf (COM2, '6');
	    printf("DTMF 6 is generating\n\r");
	    break;
	  case 55:
	    ZyGenerateDtmf (COM2, '7');
	    printf("DTMF 7 is generating\n\r");
	    break;
	  case 56:
	    ZyGenerateDtmf (COM2, '8');
	    printf("DTMF 8 is generating\n\r");
	    break;
	  case 57:
	    ZyGenerateDtmf (COM2, '9');
	    printf("DTMF 9 is generating\n\r");
	    break;
	  case 48:
	    ZyGenerateDtmf (COM2, '0');
	    printf("DTMF 0 is generating\n\r");
	    break;
	  case 42:
	    ZyGenerateDtmf (COM2, '*');
	    printf("DTMF * is generating\n\r");
	    break;
	  case 35:
	    ZyGenerateDtmf (COM2, '#');
	    printf("DTMF # is generating\n\r");
	    break;
	  default:
	    printf("NONE DTMF generat\n\r");
	    break;
      }
    }

    c = ZyWriteVoiceFile(COM2, "test.dat", IDV_ADPCM2, IDV_SPEAKER);
    if (!c)
	printf("Play voice file successfully !\n\r");
    else
	printf("Play voice file error !\n\r");

    ZyResetModem(COM2);
    ZyCloseCommPort(COM2);

    exit(0);
}



[ RETURN TO DIRECTORY ]