[fluksod] improved message arg checking
This commit is contained in:
parent
fd51388300
commit
d870088415
|
@ -24,8 +24,8 @@ local nixio = require 'nixio'
|
||||||
local os, table, string =
|
local os, table, string =
|
||||||
os, table, string
|
os, table, string
|
||||||
|
|
||||||
local getfenv, setmetatable, tonumber =
|
local getfenv, setmetatable, tonumber, type =
|
||||||
getfenv, setmetatable, tonumber
|
getfenv, setmetatable, tonumber, type
|
||||||
|
|
||||||
module (...)
|
module (...)
|
||||||
local modenv = getfenv()
|
local modenv = getfenv()
|
||||||
|
@ -60,11 +60,13 @@ end
|
||||||
function parse(msg)
|
function parse(msg)
|
||||||
msg.parsed = {}
|
msg.parsed = {}
|
||||||
|
|
||||||
msg.parsed.cmd = msg.body:match('^%l%l')
|
if(msg.body) then
|
||||||
|
msg.parsed.cmd = msg.body:match('^%l%l') or ''
|
||||||
for arg in msg.body:gmatch('%d+') do
|
for arg in msg.body:gmatch('%d+') do
|
||||||
msg.parsed[#msg.parsed + 1] = tonumber(arg) -- returns nil when string does not contain a number
|
msg.parsed[#msg.parsed + 1] = tonumber(arg) -- returns nil when string does not contain a number
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function encode(msg)
|
function encode(msg)
|
||||||
local numtohex = nixio.bin.numtohex
|
local numtohex = nixio.bin.numtohex
|
||||||
|
@ -75,9 +77,15 @@ function encode(msg)
|
||||||
if argc ~= #msg.parsed then
|
if argc ~= #msg.parsed then
|
||||||
return false
|
return false
|
||||||
else
|
else
|
||||||
return true
|
for i = 1, #msg.parsed do
|
||||||
|
if type(msg.parsed[i]) ~= 'number' then
|
||||||
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
if msg.to == 'uart' then
|
if msg.to == 'uart' then
|
||||||
msg.encoded = nixio.bin.hexlify(msg.body or '')
|
msg.encoded = nixio.bin.hexlify(msg.body or '')
|
||||||
|
|
Loading…
Reference in New Issue