Merge branch 'master' of https://github.com/nodemcu/nodemcu-firmware into devfloat

This commit is contained in:
HuangRui 2015-01-26 20:00:30 +08:00
commit cf4cd8f450
10 changed files with 431 additions and 272 deletions

View File

@ -30,7 +30,11 @@ ifeq ($(OS),Windows_NT)
OBJCOPY = xtensa-lx106-elf-objcopy OBJCOPY = xtensa-lx106-elf-objcopy
endif endif
FIRMWAREDIR = ..\\bin\\ FIRMWAREDIR = ..\\bin\\
ifndef COMPORT
ESPPORT = com1 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?
ifndef COMPORT
ESPPORT = /dev/ttyUSB0 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

View File

@ -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

View File

@ -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);

Binary file not shown.

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -87,8 +87,6 @@ do
return res return res
end end
tmr.wdclr()
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
-- HTTP parser -- HTTP parser
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
@ -190,8 +188,6 @@ do
end end
end end
tmr.wdclr()
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
-- HTTP server -- HTTP server
------------------------------------------------------------------------------ ------------------------------------------------------------------------------

Binary file not shown.

Binary file not shown.