Browse Source

Reduce memory requirements a bit and fix weird issue in node_info.lua
example

Philip Gladstone 8 years ago
parent
commit
8a195cb798
4 changed files with 55 additions and 11 deletions
  1. BIN
      http/Thumbs.db
  2. 4 2
      http/node_info.lua
  3. 29 0
      http/node_info.lua~
  4. 22 9
      httpserver.lua

BIN
http/Thumbs.db


+ 4 - 2
http/node_info.lua

@@ -4,14 +4,16 @@ local function sendHeader(connection)
 end
 
 local function sendAttr(connection, attr, val)
-   connection:send("<li><b>".. attr .. ":</b> " .. val .. "<br></li>\n")
+   if val then
+       connection:send("<li><b>".. attr .. ":</b> " .. val .. "<br></li>\n")
+   end
 end
 
 return function (connection, req, args)
    collectgarbage()
    sendHeader(connection)
    connection:send('<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>A Lua script sample</title></head><body><h1>Node info</h1><ul>')
-   majorVer, minorVer, devVer, chipid, flashid, flashsize, flashmode, flashspeed = node.info();
+   local majorVer, minorVer, devVer, chipid, flashid, flashsize, flashmode, flashspeed = node.info();
    sendAttr(connection, "NodeMCU version"       , majorVer.."."..minorVer.."."..devVer)
    sendAttr(connection, "chipid"                , chipid)
    sendAttr(connection, "flashid"               , flashid)

+ 29 - 0
http/node_info.lua~

@@ -0,0 +1,29 @@
+local function sendHeader(connection)
+   connection:send("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\nCache-Control: private, no-store\r\n\r\n")
+
+end
+
+local function sendAttr(connection, attr, val)
+   if val then
+       connection:send("<li><b>".. attr .. ":</b> " .. val .. "<br></li>\n")
+   end
+end
+
+return function (connection, req, args)
+   collectgarbage()
+   sendHeader(connection)
+   connection:send('<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>A Lua script sample</title></head><body><h1>Node info</h1><ul>')
+   local majorVer, minorVer, devVer, chipid, flashid, flashsize, flashmode, flashspeed = node.info();
+   --local x = (majorVer..".")..(minorVer..".")..devVer
+   sendAttr(connection, "NodeMCU version"       , majorVer.."."..minorVer.."."..devVer)
+   sendAttr(connection, "chipid"                , chipid)
+   sendAttr(connection, "flashid"               , flashid)
+   sendAttr(connection, "flashsize"             , flashsize)
+   sendAttr(connection, "flashmode"             , flashmode)
+   sendAttr(connection, "flashspeed"            , flashspeed)
+   sendAttr(connection, "node.heap()"           , node.heap())
+   sendAttr(connection, 'Memory in use (KB)'    , collectgarbage("count"))
+   sendAttr(connection, 'IP address'            , wifi.sta.getip())
+   sendAttr(connection, 'MAC address'           , wifi.sta.getmac())
+   connection:send('</ul></body></html>')
+end

+ 22 - 9
httpserver.lua

@@ -20,21 +20,34 @@ return function (port)
             local bufferedConnection = {}
             connectionThread = coroutine.create(function(fileServeFunction, connection, req, args)
                fileServeFunction(connection, req, args)
-               connection:flush()
+               if not connection:flush() then
+	         connection:close()
+                 connectionThread = nil
+ 	       end
             end)
             function bufferedConnection:flush() 
-              connection:send(table.concat(self.data, ""))
-              self.data = {}
-              self.size = 0    
+              if self.size > 0 then 
+		connection:send(table.concat(self.data, ""))
+                self.data = {}
+                self.size = 0    
+		return true
+	      end
+	      return false
             end
             function bufferedConnection:send(payload) 
               local l = payload:len()
-              if l + self.size > 1400 then
-                 self:flush()
-                 coroutine.yield()          
+              if l + self.size > 1000 then
+                 if self:flush() then
+                   coroutine.yield()          
+		 end
+              end
+	      if l > 800 then
+		connection:send(payload)
+		coroutine.yield()
+	      else
+                table.insert(self.data, payload)
+                self.size = self.size + l
               end
-              table.insert(self.data, payload)
-              self.size = self.size + l
             end
             bufferedConnection.size = 0
             bufferedConnection.data = {}