[FLUG] CDROM state ... spunto argomenti cena
- From: Thomas Paoloni <abpaolonicd@xxxxxxx>
- To: fanolug@xxxxxxxxxxxxx
- Date: Tue, 13 Aug 2002 17:43:46 +0200
Ciao,
alla cena si e' parlato di come fare per sapere se c'e' un CD inserito
nel CDROM ...
Eccolo qua.
Ciao, Thomas.
#include <stream.h>
#include <fcntl.h>
//#include <errno.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <linux/cdrom.h>
void main () {
char *type, *answer;
int drive = open ("/dev/cdrom",O_RDONLY | O_NONBLOCK);
int driveval, discval;
struct cdrom_generic_command gen_cmd;
if (drive != -1) {
discval = ioctl (drive, CDROM_DRIVE_STATUS, &gen_cmd);
switch (discval){
case CDS_NO_INFO :
answer = "Query non supported by
device";
break;
case CDS_NO_DISC :
answer = "No Disk";
break;
case CDS_TRAY_OPEN:
answer = "Tray Open";
break;
case CDS_DRIVE_NOT_READY:
answer = "Drive not Ready";
break;
case CDS_DISC_OK:
answer = "Disk Inside";
break;
default:
answer = "Unknown";
}
cout << "Drive status : "<< answer << "\n";
if (driveval == CDS_DISC_OK) {
discval = ioctl (drive, CDROM_DISC_STATUS, &gen_cmd);
switch (discval){
case CDS_NO_INFO :
type = "Query non supported by device";
break;
case CDS_AUDIO :
type = "audio";
break;
case CDS_DATA_1:
type = "data_1";
break;
case CDS_DATA_2:
type = "data_2";
break;
case CDS_XA_2_1:
type = "XA_2_1";
break;
case CDS_XA_2_2:
type = "XA_2_2";
break;
case CDS_MIXED:
type = "MIXED";
break;
default:
type = "Unknown";
}
cout << "Disc type : " << type << "\n";
}
close (drive);
} else cout << "Failed to open device\n";
}
Other related posts:
- » [FLUG] CDROM state ... spunto argomenti cena