-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdisk.lua
More file actions
91 lines (77 loc) · 2.31 KB
/
disk.lua
File metadata and controls
91 lines (77 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
local expect = require "cc.expect"
local syscall = require "_syscall"
local function isDisk(name)
local info = syscall.devinfo(name)
return info and info.types.drive
end
local disk = {}
function disk.isPresent(name)
expect(1, name, "string")
return syscall.devlookup(name) ~= nil and
syscall.devinfo(name).types.drive and
syscall.devcall(name, "getState") ~= nil
end
function disk.getLabel(name)
expect(1, name, "string")
if not isDisk(name) then return nil end
local state = syscall.devcall(name, "getState")
return state and state.label
end
function disk.setLabel(name, label)
expect(1, name, "string")
expect(2, label, "string", "nil")
if not isDisk(name) then return end
syscall.devcall(name, "setLabel", label)
end
function disk.hasData(name)
expect(1, name, "string")
if not isDisk(name) then return false end
local state = syscall.devcall(name, "getState")
return state and not state.isAudio
end
function disk.getMountPath(name)
expect(1, name, "string")
local info = syscall.devinfo(name)
if not info or not info.types.drive then return nil end
local mounts = syscall.mountlist()
for _, v in ipairs(mounts) do
if v.type == "drivefs" and v.uuid == info.uuid then
return v.path
end
end
return nil
end
function disk.hasAudio(name)
expect(1, name, "string")
if not isDisk(name) then return false end
local state = syscall.devcall(name, "getState")
return state and state.audio ~= nil
end
function disk.getAudioTitle(name)
expect(1, name, "string")
if not isDisk(name) then return nil end
local state = syscall.devcall(name, "getState")
return state and state.audio
end
function disk.playAudio(name)
expect(1, name, "string")
if not isDisk(name) then return end
syscall.devcall(name, "play")
end
function disk.stopAudio(name)
expect(1, name, "string")
if not isDisk(name) then return end
syscall.devcall(name, "stop")
end
function disk.eject(name)
expect(1, name, "string")
if not isDisk(name) then return end
syscall.devcall(name, "eject")
end
function disk.getID(name)
expect(1, name, "string")
if not isDisk(name) then return nil end
local state = syscall.devcall(name, "getState")
return state and state.id
end
return disk