Merge branch 'master' of https://github.com/nodemcu/nodemcu-firmware into devfloat
This commit is contained in:
commit
cf4cd8f450
12
Makefile
12
Makefile
|
@ -30,7 +30,11 @@ ifeq ($(OS),Windows_NT)
|
||||||
OBJCOPY = xtensa-lx106-elf-objcopy
|
OBJCOPY = xtensa-lx106-elf-objcopy
|
||||||
endif
|
endif
|
||||||
FIRMWAREDIR = ..\\bin\\
|
FIRMWAREDIR = ..\\bin\\
|
||||||
ESPPORT = com1
|
ifndef COMPORT
|
||||||
|
ESPPORT = com1
|
||||||
|
else
|
||||||
|
ESPPORT = $(COMPORT)
|
||||||
|
endif
|
||||||
ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
|
ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
|
||||||
# ->AMD64
|
# ->AMD64
|
||||||
endif
|
endif
|
||||||
|
@ -40,7 +44,11 @@ ifeq ($(OS),Windows_NT)
|
||||||
else
|
else
|
||||||
# We are under other system, may be Linux. Assume using gcc.
|
# We are under other system, may be Linux. Assume using gcc.
|
||||||
# Can we use -fdata-sections?
|
# Can we use -fdata-sections?
|
||||||
ESPPORT = /dev/ttyUSB0
|
ifndef COMPORT
|
||||||
|
ESPPORT = /dev/ttyUSB0
|
||||||
|
else
|
||||||
|
ESPPORT = $(COMPORT)
|
||||||
|
endif
|
||||||
CCFLAGS += -Os -ffunction-sections -fno-jump-tables
|
CCFLAGS += -Os -ffunction-sections -fno-jump-tables
|
||||||
AR = xtensa-lx106-elf-ar
|
AR = xtensa-lx106-elf-ar
|
||||||
CC = xtensa-lx106-elf-gcc
|
CC = xtensa-lx106-elf-gcc
|
||||||
|
|
|
@ -53,6 +53,13 @@ static int node_chipid( lua_State* L )
|
||||||
lua_pushinteger(L, id);
|
lua_pushinteger(L, id);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
// Lua: readvdd33()
|
||||||
|
static int node_readvdd33( lua_State* L )
|
||||||
|
{
|
||||||
|
uint32_t vdd33 = readvdd33();
|
||||||
|
lua_pushinteger(L, vdd33);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
// Lua: flashid()
|
// Lua: flashid()
|
||||||
static int node_flashid( lua_State* L )
|
static int node_flashid( lua_State* L )
|
||||||
|
@ -287,6 +294,7 @@ const LUA_REG_TYPE node_map[] =
|
||||||
{ LSTRKEY( "led" ), LFUNCVAL( node_led ) },
|
{ LSTRKEY( "led" ), LFUNCVAL( node_led ) },
|
||||||
{ LSTRKEY( "input" ), LFUNCVAL( node_input ) },
|
{ LSTRKEY( "input" ), LFUNCVAL( node_input ) },
|
||||||
{ LSTRKEY( "output" ), LFUNCVAL( node_output ) },
|
{ LSTRKEY( "output" ), LFUNCVAL( node_output ) },
|
||||||
|
{ LSTRKEY( "readvdd33" ), LFUNCVAL( node_readvdd33) },
|
||||||
#if LUA_OPTIMIZE_MEMORY > 0
|
#if LUA_OPTIMIZE_MEMORY > 0
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -189,7 +189,7 @@ struct softap_config {
|
||||||
AUTH_MODE authmode; // Note: Don't support AUTH_WEP in softAP mode.
|
AUTH_MODE authmode; // Note: Don't support AUTH_WEP in softAP mode.
|
||||||
uint8 ssid_hidden; // Note: default 0
|
uint8 ssid_hidden; // Note: default 0
|
||||||
uint8 max_connection; // Note: default 4, max 4
|
uint8 max_connection; // Note: default 4, max 4
|
||||||
uint8 beacon_interval; // Note: support 100 ~ 60000 ms, default 100
|
uint16 beacon_interval; // Note: support 100 ~ 60000 ms, default 100
|
||||||
};
|
};
|
||||||
|
|
||||||
bool wifi_softap_get_config(struct softap_config *config);
|
bool wifi_softap_get_config(struct softap_config *config);
|
||||||
|
|
BIN
lib/libmain.a
BIN
lib/libmain.a
Binary file not shown.
|
@ -0,0 +1,84 @@
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
-- DHT11/22 query module
|
||||||
|
--
|
||||||
|
-- LICENCE: http://opensource.org/licenses/MIT
|
||||||
|
-- Vladimir Dronnikov <dronnikov@gmail.com>
|
||||||
|
--
|
||||||
|
-- Example:
|
||||||
|
-- print("DHT11", require("dht22").read(4))
|
||||||
|
-- print("DHT22", require("dht22").read(4, true))
|
||||||
|
-- NB: the very first read sometimes fails
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
local M
|
||||||
|
do
|
||||||
|
-- cache
|
||||||
|
local gpio = gpio
|
||||||
|
local val = gpio.read
|
||||||
|
local waitus = tmr.delay
|
||||||
|
--
|
||||||
|
local read = function(pin, dht22)
|
||||||
|
-- wait for pin value
|
||||||
|
local w = function(v)
|
||||||
|
local c = 255
|
||||||
|
while c > 0 and val(pin) ~= v do c = c - 1 end
|
||||||
|
return c
|
||||||
|
end
|
||||||
|
-- NB: we preallocate incoming data buffer
|
||||||
|
-- or precise timing in reader gets broken
|
||||||
|
local b = { 0, 0, 0, 0, 0 }
|
||||||
|
|
||||||
|
-- kick the device
|
||||||
|
gpio.mode(pin, gpio.INPUT, gpio.PULLUP)
|
||||||
|
gpio.write(pin, 1)
|
||||||
|
waitus(10)
|
||||||
|
gpio.mode(pin, gpio.OUTPUT)
|
||||||
|
gpio.write(pin, 0)
|
||||||
|
waitus(20000)
|
||||||
|
gpio.write(pin, 1)
|
||||||
|
gpio.mode(pin, gpio.INPUT, gpio.PULLUP)
|
||||||
|
-- wait for device presense
|
||||||
|
if w(0) == 0 or w(1) == 0 or w(0) == 0 then
|
||||||
|
return nil, 0
|
||||||
|
end
|
||||||
|
-- receive 5 octets of data, msb first
|
||||||
|
for i = 1, 5 do
|
||||||
|
local x = 0
|
||||||
|
for j = 1, 8 do
|
||||||
|
x = x + x
|
||||||
|
if w(1) == 0 then return nil, 1 end
|
||||||
|
-- 70us for 1, 27 us for 0
|
||||||
|
waitus(30)
|
||||||
|
if val(pin) == 1 then
|
||||||
|
x = x + 1
|
||||||
|
if w(0) == 0 then return nil, 2 end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
b[i] = x
|
||||||
|
end
|
||||||
|
-- check crc. NB: calculating in receiver loop breaks timings
|
||||||
|
local crc = 0
|
||||||
|
for i = 1, 4 do
|
||||||
|
crc = (crc + b[i]) % 256
|
||||||
|
end
|
||||||
|
if crc ~= b[5] then return nil, 3 end
|
||||||
|
-- convert
|
||||||
|
local t, h
|
||||||
|
-- DHT22: values in tenths of unit, temperature can be negative
|
||||||
|
if dht22 then
|
||||||
|
h = b[1] * 256 + b[2]
|
||||||
|
t = b[3] * 256 + b[4]
|
||||||
|
if t > 0x8000 then t = -(t - 0x8000) end
|
||||||
|
-- DHT11: no negative temperatures, only integers
|
||||||
|
-- NB: return in 0.1 Celsius
|
||||||
|
else
|
||||||
|
h = 10 * b[1]
|
||||||
|
t = 10 * b[3]
|
||||||
|
end
|
||||||
|
return t, h
|
||||||
|
end
|
||||||
|
-- expose interface
|
||||||
|
M = {
|
||||||
|
read = read,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
return M
|
|
@ -0,0 +1,65 @@
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
-- DS18B20 query module
|
||||||
|
--
|
||||||
|
-- LICENCE: http://opensource.org/licenses/MIT
|
||||||
|
-- Vladimir Dronnikov <dronnikov@gmail.com>
|
||||||
|
--
|
||||||
|
-- Example:
|
||||||
|
-- for k, v in pairs(require("ds18b20").read(4)) do print(k, v) end
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
local M
|
||||||
|
do
|
||||||
|
local format_addr = function(a)
|
||||||
|
return ("%02x-%02x%02x%02x%02x%02x%02x"):format(
|
||||||
|
a:byte(1),
|
||||||
|
a:byte(7), a:byte(6), a:byte(5),
|
||||||
|
a:byte(4), a:byte(3), a:byte(2)
|
||||||
|
)
|
||||||
|
end
|
||||||
|
local read = function(pin, delay)
|
||||||
|
local ow = require("ow")
|
||||||
|
-- get list of relevant devices
|
||||||
|
local d = { }
|
||||||
|
ow.setup(pin)
|
||||||
|
ow.reset_search(pin)
|
||||||
|
while true do
|
||||||
|
tmr.wdclr()
|
||||||
|
local a = ow.search(pin)
|
||||||
|
if not a then break end
|
||||||
|
if ow.crc8(a) == 0 and
|
||||||
|
(a:byte(1) == 0x10 or a:byte(1) == 0x28)
|
||||||
|
then
|
||||||
|
d[#d + 1] = a
|
||||||
|
end
|
||||||
|
end
|
||||||
|
-- conversion command for all
|
||||||
|
ow.reset(pin)
|
||||||
|
ow.skip(pin)
|
||||||
|
ow.write(pin, 0x44, 1)
|
||||||
|
-- wait a bit
|
||||||
|
tmr.delay(delay or 100000)
|
||||||
|
-- iterate over devices
|
||||||
|
local r = { }
|
||||||
|
for i = 1, #d do
|
||||||
|
tmr.wdclr()
|
||||||
|
-- read rom command
|
||||||
|
ow.reset(pin)
|
||||||
|
ow.select(pin, d[i])
|
||||||
|
ow.write(pin, 0xBE, 1)
|
||||||
|
-- read data
|
||||||
|
local x = ow.read_bytes(pin, 9)
|
||||||
|
if ow.crc8(x) == 0 then
|
||||||
|
local t = (x:byte(1) + x:byte(2) * 256) * 625
|
||||||
|
-- NB: temperature in Celcius * 10^4
|
||||||
|
r[format_addr(d[i])] = t
|
||||||
|
d[i] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return r
|
||||||
|
end
|
||||||
|
-- expose
|
||||||
|
M = {
|
||||||
|
read = read,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
return M
|
|
@ -6,9 +6,8 @@
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
require("http").createServer(80, function(req, res)
|
require("http").createServer(80, function(req, res)
|
||||||
-- analyse method and url
|
-- analyse method and url
|
||||||
print("+R", req.method, req.url)
|
print("+R", req.method, req.url, node.heap())
|
||||||
-- setup handler of headers, if any
|
-- setup handler of headers, if any
|
||||||
--[[
|
|
||||||
req.onheader = function(self, name, value)
|
req.onheader = function(self, name, value)
|
||||||
-- print("+H", name, value)
|
-- print("+H", name, value)
|
||||||
-- E.g. look for "content-type" header,
|
-- E.g. look for "content-type" header,
|
||||||
|
@ -34,8 +33,7 @@ require("http").createServer(80, function(req, res)
|
||||||
res:finish()
|
res:finish()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
]]
|
|
||||||
-- or just do something not waiting till body (if any) comes
|
-- or just do something not waiting till body (if any) comes
|
||||||
--res:finish("Hello, world!")
|
--res:finish("Hello, world!")
|
||||||
res:finish("Salut, monde!")
|
--res:finish("Salut, monde!")
|
||||||
end)
|
end)
|
||||||
|
|
|
@ -87,9 +87,7 @@ do
|
||||||
return res
|
return res
|
||||||
end
|
end
|
||||||
|
|
||||||
tmr.wdclr()
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
|
||||||
-- HTTP parser
|
-- HTTP parser
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
local http_handler = function(handler)
|
local http_handler = function(handler)
|
||||||
|
@ -190,8 +188,6 @@ do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
tmr.wdclr()
|
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
-- HTTP server
|
-- HTTP server
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue