/***********************************************\
*						*
*	   CDx Audio Access Sample Code		*
*						*
*  Prints out UPC numbers on disc (optional)	*
*						*
*  This version uses the cdx.device		*
\***********************************************/

#include <exec/types.h>
#include <exec/io.h>
#include <CDx.h>

int   GetSubQ(struct SubQ *);

extern   struct   IOStdReq       *Req;

struct SubQ subq;


main(argc,argv)
int   argc;
char **argv;
{
   int   result,i,x;
   char  scratch[21];

   if (OpenCDx())
      Cleanup("Couldn't open cdx.device");

   result = GetSubQ(&subq);
   switch (result) {
      case (0):
      case (CDERR_Stopped):
         if (subq.UPCcode[0] == 0xFF)		/* No UPC code? */
            printf("Disc does not support encoded UPC\n");
         else {
            for (i=0,x=0;i<10;i++) {
               scratch[x++] = '0'+(subq.UPCcode[i]>>4);
               scratch[x++] = '0'+(subq.UPCcode[i]&0xF);
            }
            scratch[x] = 0;
            printf("UPC code: %ls\n",scratch);
         }
         break;         
      case (CDERR_NoDisc):
         printf("No disc is in the drive\n");
         break;
      case (CDERR_Failed):
         printf("Subq failed\n");
         break;
      default:
         printf("Error %ld\n",result);
         break;
   }

   Cleanup(0);
}


int GetSubQ(subq)
struct SubQ *subq;
{
   Req->io_Command = CD_CURRENTLOCMSF;
   Req->io_Data = (APTR)subq;
   DoIO((struct IORequest *)Req);

   return((int)Req->io_Error);
}
