移植bot4cj
This commit is contained in:
1 parent
7803843155
commit
78ad3e6d57
76 files changed
+14468
No files matched your search
@@ -0,0 +1,163 @@
|
||||
-- SPI 硬件
|
||||
|
||||
--
|
||||
SPI_SUCCESS = 0
|
||||
SPI_FAILED = 1
|
||||
|
||||
-- 全局文件句柄
|
||||
fd = 0
|
||||
|
||||
-- 这个函数是辅助用的,它能够打印一张表出来
|
||||
function print_table(t, indent)
|
||||
indent = indent or 0
|
||||
for k, v in pairs(t) do
|
||||
if type(v) == 'table' then
|
||||
print(string.rep(' ', indent) .. k .. ":")
|
||||
print_table(v, indent + 2)
|
||||
else
|
||||
print(string.rep(' ', indent) .. k .. ": " .. tostring(v))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
function build(data)
|
||||
|
||||
-- 检查该参数是否是一张表
|
||||
if type(data) ~= "table" then
|
||||
return {
|
||||
result = "ERR",
|
||||
message = "Invalid Arguments: table"
|
||||
}
|
||||
end
|
||||
|
||||
print("-------- SPI.Lua builder func get a table --------")
|
||||
print_table(data)
|
||||
print("--------------------------------------------------")
|
||||
local path = data.path
|
||||
|
||||
-- 检查文件句柄参数是否存在
|
||||
if path == nil then
|
||||
return {
|
||||
result = "ERR",
|
||||
message = "Invalid Arguments: path"
|
||||
}
|
||||
end
|
||||
|
||||
-- 模式
|
||||
local spi_mode = data.spi_mode
|
||||
if spi_mode == nil then
|
||||
return {
|
||||
result = "ERR",
|
||||
message = "Invalid Arguments: spi_mode"
|
||||
}
|
||||
end
|
||||
print(spi_mode)
|
||||
spi_mode = tonumber(spi_mode)
|
||||
|
||||
-- 比特
|
||||
local bits = data.bits
|
||||
if bits == nil then
|
||||
return {
|
||||
result = "ERR",
|
||||
message = "Invalid Arguments: bits"
|
||||
}
|
||||
end
|
||||
bits = tonumber(bits)
|
||||
|
||||
|
||||
-- 速率
|
||||
local speed = data.speed
|
||||
if speed == nil then
|
||||
return {
|
||||
result = "ERR",
|
||||
message = "Invalid Arguments: speed"
|
||||
}
|
||||
end
|
||||
speed = tonumber(speed)
|
||||
|
||||
--
|
||||
local delay = data.delay
|
||||
if delay == nil then
|
||||
return {
|
||||
result = "ERR",
|
||||
message = "Invalid Arguments: delay"
|
||||
}
|
||||
end
|
||||
delay = tonumber(delay)
|
||||
|
||||
-- 开始执行
|
||||
fd = spi_open(path)
|
||||
if fd <= 0 then
|
||||
return {
|
||||
result = "ERR",
|
||||
message = "Failed to open SPI file"
|
||||
}
|
||||
end
|
||||
|
||||
local res = spi_setup(fd, spi_mode, bits, speed, delay)
|
||||
if res ~= 0 then
|
||||
return {
|
||||
result = "ERR",
|
||||
message = "Failed to setup SPI device"
|
||||
}
|
||||
end
|
||||
|
||||
return {
|
||||
result = "OK",
|
||||
fd = fd
|
||||
}
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
function destroy(data)
|
||||
|
||||
-- 检查该参数是否是一张表
|
||||
if type(data) ~= "table" then
|
||||
return {
|
||||
result = "ERR",
|
||||
message = "Invalid Arguments: table"
|
||||
}
|
||||
end
|
||||
|
||||
print("-------- SPI.Lua ender func get a table --------")
|
||||
print_table(data)
|
||||
print(string.format("now fd: %i", fd))
|
||||
print("------------------------------------------------")
|
||||
|
||||
spi_close(fd)
|
||||
fd = -1
|
||||
|
||||
return {
|
||||
result = "OK"
|
||||
}
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function call(data)
|
||||
|
||||
-- 检查该参数是否是一张表
|
||||
if type(data) ~= "table" then
|
||||
return {
|
||||
result = "ERR",
|
||||
message = "Invalid Arguments: table"
|
||||
}
|
||||
end
|
||||
|
||||
print("-------- SPI.Lua caller func get a table --------")
|
||||
print_table(data)
|
||||
print("-------------------------------------------------")
|
||||
|
||||
return {
|
||||
fd = fd
|
||||
}
|
||||
|
||||
end
|
||||
Reference in new issue
Block a user