|
1 | | - |
2 | | -var spawn = require('child_process').spawn; |
| 1 | +var spawn = require('child_process').spawn |
3 | 2 |
|
4 | 3 | var amixer = function (args, cb) { |
5 | | - |
6 | | - var ret = ''; |
7 | | - var err = null; |
8 | | - var p = spawn('amixer', args); |
| 4 | + var ret = '' |
| 5 | + var err = null |
| 6 | + var p = spawn('amixer', args) |
9 | 7 |
|
10 | 8 | p.stdout.on('data', function (data) { |
11 | | - ret += data; |
12 | | - }); |
| 9 | + ret += data |
| 10 | + }) |
13 | 11 |
|
14 | 12 | p.stderr.on('data', function (data) { |
15 | | - err = new Error('Alsa Mixer Error: ' + data); |
16 | | - }); |
| 13 | + err = new Error('Alsa Mixer Error: ' + data) |
| 14 | + }) |
17 | 15 |
|
18 | 16 | p.on('close', function () { |
19 | | - cb(err, ret.trim()); |
20 | | - }); |
21 | | - |
22 | | -}; |
| 17 | + cb(err, ret.trim()) |
| 18 | + }) |
| 19 | +} |
23 | 20 |
|
24 | | -var reDefaultDevice = /Simple mixer control \'([a-z0-9 -]+)\',[0-9]+/i; |
25 | | -var defaultDeviceCache = null; |
26 | | -var defaultDevice = function(cb) { |
27 | | - if(defaultDeviceCache === null) { |
| 21 | +var reDefaultDevice = /Simple mixer control '([a-z0-9 -]+)',[0-9]+/i |
| 22 | +var defaultDeviceCache = null |
| 23 | +var defaultDevice = function (cb) { |
| 24 | + if (defaultDeviceCache === null) { |
28 | 25 | amixer([], function (err, data) { |
29 | | - if(err) { |
30 | | - cb(err); |
| 26 | + if (err) { |
| 27 | + cb(err) |
31 | 28 | } else { |
32 | | - var res = reDefaultDevice.exec(data); |
33 | | - if(res === null) { |
34 | | - cb(new Error('Alsa Mixer Error: failed to parse output')); |
| 29 | + var res = reDefaultDevice.exec(data) |
| 30 | + if (res === null) { |
| 31 | + cb(new Error('Alsa Mixer Error: failed to parse output')) |
35 | 32 | } else { |
36 | | - defaultDeviceCache = res[1]; |
37 | | - cb(null, defaultDeviceCache); |
| 33 | + defaultDeviceCache = res[1] |
| 34 | + cb(null, defaultDeviceCache) |
38 | 35 | } |
39 | 36 | } |
40 | | - }); |
| 37 | + }) |
41 | 38 | } else { |
42 | | - cb(null, defaultDeviceCache); |
| 39 | + cb(null, defaultDeviceCache) |
43 | 40 | } |
44 | | -}; |
| 41 | +} |
45 | 42 |
|
46 | | -var reInfo = /[a-z][a-z ]*\: Playback [0-9-]+ \[([0-9]+)\%\] (?:[[0-9\.-]+dB\] )?\[(on|off)\]/i; |
| 43 | +var reInfo = /[a-z][a-z ]*: Playback [0-9-]+ \[([0-9]+)%\] (?:[[0-9.-]+dB\] )?\[(on|off)\]/i |
47 | 44 | var getInfo = function (cb) { |
48 | 45 | defaultDevice(function (err, dev) { |
49 | | - if(err) { |
50 | | - cb(err); |
| 46 | + if (err) { |
| 47 | + cb(err) |
51 | 48 | } else { |
52 | 49 | amixer(['get', dev], function (err, data) { |
53 | | - if(err) { |
54 | | - cb(err); |
| 50 | + if (err) { |
| 51 | + cb(err) |
55 | 52 | } else { |
56 | | - var res = reInfo.exec(data); |
57 | | - if(res === null) { |
58 | | - cb(new Error('Alsa Mixer Error: failed to parse output')); |
| 53 | + var res = reInfo.exec(data) |
| 54 | + if (res === null) { |
| 55 | + cb(new Error('Alsa Mixer Error: failed to parse output')) |
59 | 56 | } else { |
60 | 57 | cb(null, { |
61 | 58 | volume: parseInt(res[1], 10), |
62 | | - muted: (res[2] == 'off') |
63 | | - }); |
| 59 | + muted: (res[2] === 'off') |
| 60 | + }) |
64 | 61 | } |
65 | 62 | } |
66 | | - }); |
| 63 | + }) |
67 | 64 | } |
68 | | - }); |
69 | | -}; |
| 65 | + }) |
| 66 | +} |
70 | 67 |
|
71 | 68 | module.exports.getVolume = function (cb) { |
72 | 69 | getInfo(function (err, obj) { |
73 | | - if(err) { |
74 | | - cb(err); |
| 70 | + if (err) { |
| 71 | + cb(err) |
75 | 72 | } else { |
76 | | - cb(null, obj.volume); |
| 73 | + cb(null, obj.volume) |
77 | 74 | } |
78 | | - }); |
79 | | -}; |
| 75 | + }) |
| 76 | +} |
80 | 77 |
|
81 | 78 | module.exports.setVolume = function (val, cb) { |
82 | 79 | defaultDevice(function (err, dev) { |
83 | | - if(err) { |
84 | | - cb(err); |
| 80 | + if (err) { |
| 81 | + cb(err) |
85 | 82 | } else { |
86 | 83 | amixer(['set', dev, val + '%'], function (err) { |
87 | | - cb(err); |
88 | | - }); |
| 84 | + cb(err) |
| 85 | + }) |
89 | 86 | } |
90 | | - }); |
91 | | -}; |
| 87 | + }) |
| 88 | +} |
92 | 89 |
|
93 | 90 | module.exports.getMuted = function (cb) { |
94 | 91 | getInfo(function (err, obj) { |
95 | | - if(err) { |
96 | | - cb(err); |
| 92 | + if (err) { |
| 93 | + cb(err) |
97 | 94 | } else { |
98 | | - cb(null, obj.muted); |
| 95 | + cb(null, obj.muted) |
99 | 96 | } |
100 | | - }); |
101 | | -}; |
| 97 | + }) |
| 98 | +} |
102 | 99 |
|
103 | 100 | module.exports.setMuted = function (val, cb) { |
104 | | - amixer(['set', 'PCM', (val?'mute':'unmute')], function (err) { |
105 | | - cb(err); |
106 | | - }); |
107 | | -}; |
| 101 | + amixer(['set', 'PCM', (val ? 'mute' : 'unmute')], function (err) { |
| 102 | + cb(err) |
| 103 | + }) |
| 104 | +} |
0 commit comments