|
| 1 | +var fs = require('fs'); |
| 2 | +var ioctl = require('../'); |
| 3 | +var ref = require('ref'); |
| 4 | +var ArrayType = require('ref-array'); |
| 5 | +var StructType = require('ref-struct'); |
| 6 | + |
| 7 | +var SND_HW = '/dev/snd/hwC0D0'; |
| 8 | +var HDA_IOCTL_PVERSION = 0x80dc4801; |
| 9 | + |
| 10 | +// struct snd_hwdep_info { |
| 11 | +// unsigned int device; /* WR: device number */ |
| 12 | +// int card; /* R: card number */ |
| 13 | +// unsigned char id[64]; /* ID (user selectable) */ |
| 14 | +// unsigned char name[80]; /* hwdep name */ |
| 15 | +// int iface; /* hwdep interface */ |
| 16 | +// unsigned char reserved[64]; /* reserved for future */ |
| 17 | +// }; |
| 18 | + |
| 19 | +// define the "snd_hwdep_info" struct type |
| 20 | +var snd_hwdep_info = StructType({ |
| 21 | + device : ref.types.uint32, |
| 22 | + card : ref.types.int32, |
| 23 | + id : ArrayType(ref.types.uchar, 64), |
| 24 | + name : ArrayType(ref.types.uchar, 80), |
| 25 | + iface : ref.types.int32, |
| 26 | + reserved : ArrayType(ref.types.uchar, 64) |
| 27 | +}); |
| 28 | + |
| 29 | +var info = new snd_hwdep_info(); |
| 30 | + |
| 31 | +fs.open(SND_HW, 'r', function(err, fd) { |
| 32 | + if (err) { |
| 33 | + throw err; |
| 34 | + } |
| 35 | + |
| 36 | + var ret = ioctl(fd, HDA_IOCTL_PVERSION, info.ref()); |
| 37 | + console.log('device: ' + info.device); |
| 38 | + console.log('card: ' + info.card); |
| 39 | + console.log('id: ' + info.id.buffer.toString()); |
| 40 | + console.log('name: ' + info.name.buffer.toString()); |
| 41 | + console.log('iface: ' + info.iface); |
| 42 | + console.log('reserved: ' + info.reserved.buffer.toString()); |
| 43 | + fs.close(fd); |
| 44 | +}); |
0 commit comments