local function onReceive(socket, data) local t = cjson.decode(data) if t.command == "ping" then socket:send(cjson.encode({data="pong"})) elseif t.command == "cs" then if t.argument then -- SPI select chip socket:send(cjson.encode()) else -- SPI deselect chip end elseif t.command == "write" then -- SPI write socket:send(cjson.encode({ data = spi.write(1, encoder.fromBase64(t.argument)) })) elseif t.command == "read" then -- SPI read socket:send(cjson.encode({ data = encoder.toBase64(spi.recv(1, t.argument or 1)) })) end end local function onConnect(socket) socket:on("receive", onReceive) end local server = net.createServer(net.TCP, 900) -- TCP socket, 15min timeout. server:listen(1337, onConnect)