Reply - Raw
Replies:
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)