Johny Mattsson
1a613effeb
Imported RTC access from a DiUS internal project.
...
Added Lua access module named "rtcmem" for read/write of RTC user module.
2015-07-10 15:10:15 +10:00
Johny Mattsson
6ad2666182
Declare wifi.ap.getconfig() in the right map.
2015-07-10 14:01:38 +10:00
vowstar
67d785ffec
Restore default data and init data before system restore.
2015-07-04 04:27:59 +08:00
vowstar
b6e431ebed
Merge branch 'dev' of https://github.com/nodemcu/nodemcu-firmware into dev
2015-07-04 03:55:02 +08:00
vowstar
89aaf475d0
Add node.restore().
...
If NodeMCU can't connect Wi-Fi, please use it.
After reboot, all will be OK.
RESTORE ITEMS:
wifi_station_set_auto_connect, wifi_set_phy_mode, wifi_softap_set_config, wifi_station_set_config, wifi_set_opmode.
2015-07-04 03:54:22 +08:00
Vowstar
f5938dfe17
Will made some modules default off.
...
Need discussion. And turn off some modules by default.
May our community should build more version?
2015-07-04 02:51:41 +08:00
Vowstar
5279dc9dfc
Merge pull request #525 from kbeckmann/ws2801_disable_default
...
Disabled WS2801 module
2015-07-04 02:48:44 +08:00
vowstar
2224f24dad
Merge branch 'dev096' of https://github.com/nodemcu/nodemcu-firmware into dev
2015-07-04 02:31:15 +08:00
vowstar
638bf7b023
Merge branch 'dev' of https://github.com/nodemcu/nodemcu-firmware into dev
2015-07-04 02:28:31 +08:00
vowstar
fb0e4722b8
Fix and support Wi-Fi smart link (esp-touch and air-kiss).
...
Espressif open-source android and iOs APP,
See also https://github.com/espressifapp
Note: Must use ESP-TOUCH-V021 in espressif app history.
2015-07-04 02:27:51 +08:00
Konrad Beckmann
485e5a3140
Disabled WS2801 module
2015-07-03 12:35:47 +02:00
Konrad Beckmann
3d3c2431b3
Added WS2801 support
2015-07-02 00:50:26 +02:00
Vowstar
125d2173d6
Merge pull request #519 from md5crypt/tmr_module
...
rewrote the timer module from scratch
2015-06-30 15:50:08 +08:00
Luna
2691383696
added tmr.interval
2015-06-29 23:15:30 +02:00
Luna
c1d2eb413b
rewrote the timer module from scratch
2015-06-29 21:19:24 +02:00
Vowstar
aa710d1f53
Merge pull request #513 from NodeUSB/dev096
...
update 433MHz transmission comment, add static ICACHE_FLASH_ATTR flag
2015-06-28 14:55:07 +08:00
Mike Wen
66ca7f6aca
update 433MHz transmission comment, add static ICACHE_FLASH_ATTR flag
2015-06-27 18:14:24 -04:00
Mike Wen
cf72a3203d
update 433MHz transmission doc, add static ICACHE_FLASH_ATTR flag
2015-06-27 14:42:39 -04:00
vowstar
dce0d2c2a8
Release build 20150627.
...
fixed ap/station-ap cannot connect to the device.
added wifi.ap.getconfig().
fixed net.dns.getdnsserver().
added new base64 lua example.
added node.bootreason() to inspect boot cause.
optimization of u8g.
2015-06-27 15:21:48 +08:00
vowstar
663158e4ab
added wifi.ap.getconfig() by @md5crypt https://github.com/nodemcu/nodemcu-firmware/pull/500/files#diff-81824fe90d00138d98b6e9f0d7d8c7dcL1458 .
2015-06-27 12:30:36 +08:00
vowstar
a32df17579
Fixed net.dns.getdnsserver() by @md5crypt.
2015-06-27 12:26:24 +08:00
Vowstar
2ab4de9c09
Merge pull request #512 from jmattsson/boot-reason
...
Expose boot reason in Lua
2015-06-27 11:25:35 +08:00
Johny Mattsson
7bd10e8a17
Added node.bootreason() to inspect boot cause.
2015-06-27 12:34:03 +10:00
Johny Mattsson
b5c6a5b1c6
Stop dhcpserver from writing to const data.
2015-06-27 12:12:21 +10:00
Vowstar
d507060ecf
Merge pull request #509 from devsaurus/dev-irom0
...
Unify memory section usage for u8g
2015-06-27 00:04:46 +08:00
vowstar
dda121e5e0
Release 0.9.6-dev_20150625
2015-06-26 18:32:46 +08:00
devsaurus
277c6d0116
move u8g progmem constants to new .rodata sections
...
this simplifies the overall memory handling based on the irom support by @jmattsson
2015-06-25 00:38:11 +02:00
Luna
5ca807d7a1
fixed net.dns.getdnsserver() and added wifi.ap.getconfig()
2015-06-24 22:38:37 +02:00
Johny Mattsson
b0f9788a6d
Move constants to ROM. Frees up 16k+ of RAM.
...
Accessing 8bit and 16bit constants from ROM rather than RAM comes with a
performance cost, as these loads go through the load/store exception
vector. Any performance critical constants can be forced back into RAM
as RAM_CONST_ATTR.
The entry point has changed from call_user_start() to user_start_trampoline()
in order for the exception handler to be installed early enough.
2015-06-23 15:41:14 +10:00
Johny Mattsson
0c924e56c6
Support for loading sub-32 wide data from irom.
2015-06-23 15:41:14 +10:00
MarsTechHAN
04c03b00ae
@jorgempy We change the API of DNS callback format back
...
Make the net api universe Callback Format -> function(conn,ip)
2015-06-20 19:10:01 +08:00
vowstar
75c3cf29c2
Disable interrupts while communicating with DHTxx.
2015-06-20 02:08:20 +08:00
Vowstar
90ca92ca6e
Revert "Merge dev to dev096"
2015-06-20 01:50:29 +08:00
vowstar
3430e5f826
Add __attribute__((optimize("O2"))) to ws2812 module.
2015-06-20 01:40:45 +08:00
vowstar
cda7992c1a
Fix DHTLIB bug of DHT22, DHT21, DHT33, DHT44.
2015-06-20 00:26:59 +08:00
vowstar
c56659e84d
Using __attribute__((alias("dht_read"))) reduce code size.
2015-06-19 01:05:19 +08:00
vowstar
87341547d7
Update DHTlib, supported DHT11 or DHTxx automatic detection.
...
Using @MarsTechHAN 's method.
New usage:
status, temp, humi, tempdec, humidec = dht.read( id )
print( dht.read( id ) )
= dht.read( id )
2015-06-18 20:53:52 +08:00
vowstar
98a2c9fdb6
Align all TAB=8 in app/Makefile, make sure it fit for github display.
2015-06-18 17:36:27 +08:00
vowstar
af56aea1e8
Update dhtlib api, support both integer and float version.
2015-06-18 17:19:55 +08:00
vowstar
899935e60b
Add DHT Lua Module for interfacing with the DHTxx sensors (xx = 11-21-22-33-44).
2015-06-18 16:31:40 +08:00
vowstar
515a7bf1ab
Add dhtlib for DHT11/21/22/33/44, port from Arduino.
2015-06-17 16:30:12 +08:00
Orgmar
b0a4e4d3e9
Changed BUILD_DATE.
2015-06-17 00:16:57 +08:00
Mike Wen
d955c8815b
add 433MHz transmission
2015-06-11 18:07:16 -04:00
Mike Wen
7df0a45b07
add 433MHz transmission
2015-06-11 18:05:27 -04:00
Mike Wen
a8622795a7
add 433MHz transmission
2015-06-11 18:05:18 -04:00
Vowstar
8044014f96
Merge pull request #471 from nodemcu/dev
...
Merge dev into dev096
2015-06-08 14:04:28 +08:00
cal
9dc71cfec0
Trying to fix
...
Problem with multiple MQTT subscriptions #459
https://github.com/nodemcu/nodemcu-firmware/issues/459
Fix possible wrong buffer pointer increment.
2015-06-07 12:45:55 +02:00
Vowstar
ef4e6fa95f
Merge pull request #467 from DiUS/newcrypto
...
Crypto module improvements
2015-06-05 13:01:38 +08:00
Johny Mattsson
7867fd083c
Move crypto things to irom0.text segment.
...
This releases 1168 bytes back to the heap.
2015-06-05 13:03:08 +10:00
Johny Mattsson
223a936779
Switched crypto module to use ROM SHA1/MD5.
...
Also disabled MD2 support by default (see MD2_ENABLE in user_config.h).
2015-06-05 12:12:24 +10:00
cal
fdcb982351
Trying to fix
...
Problem with multiple MQTT subscriptions #459
https://github.com/nodemcu/nodemcu-firmware/issues/459
Fix possible wrong buffer pointer increment.
2015-06-04 11:46:20 +02:00
HuangRui
3cd5a6a1ed
Merge branch 'master' of https://github.com/bruceme/nodemcu-firmware into dev
...
Conflicts:
app/modules/net.c
2015-06-04 15:04:12 +08:00
Johny Mattsson
d855584bae
Fixed off-by-one error from refactoring.
2015-06-03 17:20:55 +10:00
Johny Mattsson
06724fbb17
Renamed SHA2 support option to SHA2_ENABLE per request.
2015-06-03 11:20:16 +10:00
Johny Mattsson
2d1e69151e
Extended Lua crypto module with hash & hmac.
2015-06-02 18:17:30 +10:00
Johny Mattsson
32dd9b7b7a
Crypto library with unified interface.
...
Uses both existing MD2/MD5/SHA1 and the Gifford SHA256-512, unless WITHOUT_SHA2
is defined.
2015-06-02 18:15:18 +10:00
Johny Mattsson
68ef22ace5
Imported Aaron Gifford's SHA{256,384,512} implementation.
2015-06-02 17:02:14 +10:00
dnc40085
353209fb4e
Change comments for wifi.sta.getap
2015-05-31 22:45:43 -07:00
dnc40085
a5fe3d0146
Added option to wifi.sta.getap to allow changing output format between
...
new style and old style
2015-05-31 21:43:03 -07:00
Vowstar
d8a8746b9e
Merge pull request #447 from creationix/dev
...
Add crypto module.
2015-05-29 15:05:37 +08:00
dnc40085
01d90f1cb0
revert app/spifs folder to commmit 8f925e6
2015-05-28 23:54:07 -07:00
dnc40085
1f798dabf7
Revert "Update spiffs to latest."
2015-05-28 17:38:08 -07:00
=
2128c42f02
Add headers for discovered rom functions
2015-05-28 15:10:12 -05:00
=
59df376a3a
Rename base64Encode to toBase64 and hexEncode to toHex
2015-05-28 09:00:13 -05:00
=
c8145434c3
Add crypto.hexEncode and crypto.mask
2015-05-28 07:47:09 -05:00
=
ca78b9ea2c
Add crypto module initially containing sha1 and base64_encode.
2015-05-28 07:46:57 -05:00
makefu
c29edf7a22
app/modules/ws2812.c: re-add ws2812.write()
...
Add the original ws2812.write() function which does not scramble the
buffer while preserving the 'new' ws2812.writergb.
With this everybody should be happy again
2015-05-26 23:12:38 +02:00
Vowstar
f7a6183853
Merge pull request #437 from dnc40085/dev096_adc.vdd33_fix
...
Added fix to adc.readvdd33() to prevent crashing in station mode
2015-05-24 07:23:16 +08:00
Vowstar
2d0689142c
Merge pull request #438 from dnc40085/dev096_wifi.getchannel
...
added wifi.getchannel
2015-05-24 07:23:07 +08:00
dnc40085
6477f5f389
added wifi.getchannel
2015-05-22 19:42:21 -07:00
dnc40085
dd00e31027
Added fix to adc.readvdd33() to prevent crashing in station mode while
...
connected
2015-05-22 18:01:05 -07:00
HuangRui
5261fb1948
Update spiffs to latest.
2015-05-21 15:18:35 +08:00
HuangRui
c66cced7f4
Merge branch 'dev096' of https://github.com/nodemcu/nodemcu-firmware
2015-05-21 10:59:30 +08:00
HuangRui
8887085ef8
Revert file.format method.
2015-05-21 10:58:58 +08:00
HuangRui
c82cc3f7c5
Testing use all modules.
2015-05-21 10:42:28 +08:00
HuangRui
a1e67c5cf0
Try to use latest spiffs but not success.
2015-05-21 10:39:02 +08:00
dnc40085
7244d51b38
Fixed bug in wifi_scan_done
2015-05-20 02:21:46 -07:00
HuangRui
fc8fa2cc91
Fixed readvdd33 bug.
2015-05-19 20:11:15 +08:00
HuangRui
0f3ade36d8
Merge branch 'dev' of https://github.com/nodemcu/nodemcu-firmware
...
Conflicts:
app/modules/net.c
2015-05-19 20:06:03 +08:00
dnc40085
546bca00c1
changed wifi_setip() to allow setting SoftAP gateway to 0.0.0.0
2015-05-17 19:29:26 -07:00
Jorge Mesquita
70580dc4ae
added net.dns.setdnsserver('ip',[index]), net.dns.getdnsserver([index]), net.dns.resolve('domain.com', function cb('ip' or nil if fail) )
...
modified: app/modules/net.c
2015-05-16 20:53:31 -04:00
Vowstar
61f65fb02a
Merge pull request #420 from devsaurus/dev
...
Add missing functions for u8g
2015-05-16 20:26:50 +08:00
devsaurus
5b588b7bd3
implement getStrWidth() and setFontLineSpacingFactor()
2015-05-15 21:32:28 +02:00
devsaurus
de56cb084e
sort member functions
2015-05-15 21:13:59 +02:00
HuangRui
71469dd70f
Merge branch 'dev' of https://github.com/nodemcu/nodemcu-firmware
...
Conflicts:
app/include/user_version.h
app/modules/node.c
app/modules/wifi.c
2015-05-15 08:13:46 +08:00
Vowstar
43d06459a6
Merge pull request #409 from dnc40085/dev096-wifi_scan_done
...
Change format of table that is output by wifi_scan_done function
2015-05-15 07:54:48 +08:00
Vowstar
60e1e8ba7d
Merge pull request #408 from dnc40085/dev096-wifi.ap.config
...
Additions and changes to wifi module
2015-05-15 07:54:42 +08:00
Vowstar
55cff23f64
Merge pull request #405 from dnc40085/dev096-wifi.setmac_fix
...
Fix for inability to use standard formatted MAC address with wifi.setmac()
2015-05-15 07:54:34 +08:00
Vowstar
d30fea9bd0
Merge pull request #413 from dnc40085/dev096-tmr.alarm_memory_leak_fix
...
Fix for issue #382
2015-05-15 07:49:49 +08:00
Vowstar
a5d96f4719
Merge pull request #404 from dnc40085/dev096-wifi.sta.getconfig
...
Add function wifi.sta.getconfig() and more parameters to wifi.sta.config()
2015-05-15 07:45:56 +08:00
robertfoss
4c2ad0f545
Add -Os flag to release and debug builds
...
To fit the build on boards with 512K of flash, build using -Os flag.
2015-05-14 11:27:43 -04:00
dnc40085
894fcc4799
minor change
2015-05-14 04:59:55 -07:00
dnc40085
4f097cf063
Fixed memory leak in tmr.alarm()
2015-05-14 04:40:57 -07:00
dnc40085
cf32376467
Minor change to wifi.sta.getap()
2015-05-11 21:02:46 -07:00
dnc40085
e9081a81a5
Remove conflict
2015-05-11 20:03:02 -07:00
dnc40085
3941977550
Removed commented lines from previous commit
2015-05-11 18:45:27 -07:00
dnc40085
78cb215bb2
Changed output format of table that is output by wifi_scan_done
2015-05-11 18:26:16 -07:00
dnc40085
f31671044d
Fixed error in wifi_station_listap
2015-05-11 17:59:51 -07:00
dnc40085
aca2b7724b
Added description to wifi_station_listap
2015-05-11 05:38:23 -07:00
dnc40085
cf54f85549
Added ability to set scan configuration to wifi.sta.getap
2015-05-11 05:12:34 -07:00
dnc40085
5b375cfe50
Copied changes from dev branch, commit f13c5c6
from Wayne Bartnick
...
wifi.sta.config (wifi_station_config):
- range checking password length (8~64)
wifi.ap.config (wifi_ap_config):
- range checking ssid length (1~32)
- range checking pwd length (8~64)
- new params:
- auth: wifi.OPEN, wifi.WPA_PSK, wifi.WPA2_PSK, wifi.WPA_WPA2_PSK
- default WITH pwd: wifi.WPA_WPA2_PSK
- default WITHOUT pwd: wifi.OPEN
- channel: 1~13 (default: 6)
- hidden: 0/1 (default: 0)
- max: 1~4 (default: 4)
- beacon: 100~60000ms (default: 100)
wifi.ap.getclient (wifi_ap_listclient):
- returns table(mac,ip) of all connected clients
wifi.ap.dhcp:
- new submodule
- config (wifi_ap_dhcp_config), returns start/end ips
- params:
- start (e.g., "192.168.1.100")
- end ip calculated from wifi.ap.config.max
- start (wifi_ap_dhcp_start), returns boolean
- stop (wifi_ap_dhcp_stop), returns boolean
2015-05-11 05:06:48 -07:00
dnc40085
c6c8bd84a0
minor change to wifi.sta.config()
2015-05-11 00:05:28 -07:00
dnc40085
7533a6afba
Fix for inability to use standard formatted MAC address with
...
wifi.setmac() also changed wifi.getmac() to use macro
2015-05-09 04:29:18 -07:00
dnc40085
f9e0e0cc61
Added examples to description of wifi.sta.config()
2015-05-09 04:17:35 -07:00
dnc40085
e667b2029d
Added function wifi.sta.getconfig()
...
Added more parameters to wifi.sta.config()
2015-05-09 01:50:35 -07:00
trilader
bc7b9f86c4
Allow connecting to unsecured WiFi networks
2015-05-07 15:12:57 +02:00
dnc40085
700ba55d26
Fix for memory leak in function wifi.sta.getap()
2015-05-07 05:02:59 -07:00
Vowstar
749e71d9cb
Fixed strange SPI flash API error. Added word_of_aligned_array.
2015-05-05 23:59:30 +08:00
vowstar
32e9ac204a
Fix PWM init bug, set all initial duty to 0.
2015-05-01 18:35:30 +08:00
Vowstar
1923280572
Merge pull request #365 from nodemcu/master
...
Add ICMP ping to net module
2015-05-01 14:57:50 +08:00
dnc40085
f4a9de4886
Added comments for setphymode and getphymode functions in wifi module
...
Added constants PHYMODE_B, PHYMODE_G, PHYMODE_N to wifi module
2015-04-29 00:06:06 -07:00
dnc40085
900c43d520
Add setphymode and getphymode to wifi module
2015-04-26 20:03:44 -07:00
Kevin Uhlir
f68d41608e
Add multicastJoin and multicastLeave to net module
...
net.multicastJoin(if_ip, multicast_ip)
net.multicastLeave(if_ip, multicast_ip)
if_ip is a string containing the interface ip to join/leave the
multicast group. multicast_ip is the multicast ip of the group to
join/leave. if_ip can be "" or "any" to affect all interfaces.
2015-04-15 03:41:13 -05:00
zeroday
81d9f8893a
fix #353
2015-04-12 23:34:11 +08:00
Kirill
f19e24c7ac
Update tmr.c
...
According to NodeMCU team recommendations.
2015-04-10 14:56:17 +05:00
Vowstar
e61ad9d7ba
Merge pull request #339 from wladurner/issue_321
...
fixes issue #321 "ws2812.writergb scrambles buffer" reported by makefu.
2015-04-06 21:26:04 +08:00
zeroday
68607e3d2e
Merge pull request #334 from model101/buf1kdev
...
LUAL_BUFFERSIZE back to 1K and warning notice added
2015-04-06 00:01:12 +08:00
zeroday
a333d6a9b9
Merge pull request #333 from wbartnick/dev
...
wifi submodule enhancements, thanks to @wbartnick
2015-04-05 23:09:33 +08:00
cal
06193090e6
LUAL_BUFFERSIZE back to 1K and warning notice added
2015-04-05 16:14:52 +02:00
Wolfram Ladurner
ff85cf4371
fixes issue #321 "ws2812.writergb scrambles buffer" reported by makefu.
...
Don't modify Lua-internal lstring - use a copy instead.
2015-04-05 15:49:32 +02:00
Wayne Bartnick
f13c5c61e6
wifi.sta.config (wifi_station_config):
...
- range checking password length (8~64)
wifi.ap.config (wifi_ap_config):
- range checking ssid length (1~32)
- range checking pwd length (8~64)
- new params:
- auth: wifi.OPEN, wifi.WPA_PSK, wifi.WPA2_PSK, wifi.WPA_WPA2_PSK
- default WITH pwd: wifi.WPA_WPA2_PSK
- default WITHOUT pwd: wifi.OPEN
- channel: 1~13 (default: 6)
- hidden: 0/1 (default: 0)
- max: 1~4 (default: 4)
- beacon: 100~60000ms (default: 100)
wifi.ap.getclient (wifi_ap_listclient):
- returns table(mac,ip) of all connected clients
wifi.ap.dhcp:
- new submodule
- config (wifi_ap_dhcp_config), returns start/end ips
- params:
- start (e.g., "192.168.1.100")
- end ip calculated from wifi.ap.config.max
- start (wifi_ap_dhcp_start), returns boolean
- stop (wifi_ap_dhcp_stop), returns boolean
2015-04-05 09:21:16 -04:00
funshine
bcbde08bf7
fix mqtt keepalive ping, add a example for mqtt in lua_examples.
2015-04-05 02:22:51 +08:00
funshine
8558641190
add gpio.serout() api to help serialize bit out
2015-04-03 16:05:14 +08:00
funshine
1c2ee75a00
fix mqtt, do a format when wrong flash size is detected
2015-04-03 00:51:02 +08:00
funshine
32e062f523
polish mqtt module
2015-03-31 23:38:28 +08:00
funshine
dcb6e53af7
add auto-reconnect option to mqtt:connect api
2015-03-31 00:36:44 +08:00
funshine
09750b5653
add queue to mqtt module
2015-03-30 00:24:09 +08:00
HuangRui
3dd1ac3739
Move node.readvdd33 to adc.readvdd33, fix #162 .
2015-03-27 00:52:55 +08:00
funshine
e1f8b604a0
fix init_data detect flash api
2015-03-24 23:21:40 +08:00
funshine
52ca40b8ea
add init.lua examples
2015-03-22 21:09:37 +08:00
funshine
d5731dd9bd
merge from dev
2015-03-20 20:15:38 +08:00
funshine
4332b21ef3
minor fix
2015-03-20 19:42:10 +08:00
Vowstar
1562215905
Merge pull request #301 from devsaurus/dev
...
Use correct function for stop in U8G_COM_MSG_WRITE_BYTE
2015-03-19 12:17:11 +08:00
devsaurus
2d254bd47c
use correct function for stop in U8G_COM_MSG_WRITE_BYTE
2015-03-18 22:33:16 +01:00
funshine
3d14530b80
fix cjson.encode() when in integer version
2015-03-18 19:37:47 +08:00
funshine
3aead6d230
try to fix cjson.encode in integer only version
2015-03-18 17:01:01 +08:00
funshine
a70709268b
merge cjson and dev to master, make a stable release
2015-03-18 14:22:17 +08:00
zeroday
a01bda03dd
Merge pull request #294 from nodemcu/json
...
Json branch merged to master
2015-03-18 13:11:11 +08:00
devsaurus
09b650be41
disable untested pcd8544 driver for the moment
2015-03-17 20:52:47 +01:00
devsaurus
87598c5dfe
Merge remote-tracking branch 'upstream/dev' into dev
2015-03-17 20:35:39 +01:00
funshine
808a359eb8
quick fix when wide charactor issue
2015-03-17 22:42:22 +08:00
Markus Gritsch
b648e9a8db
Added node.setcpufreq(mhz) function.
...
This function allows setting the CPU frequency to node.CPU80MHZ or
node.CPU160MHZ.
2015-03-17 10:23:45 +01:00
funshine
45e7f270cc
Merge branch 'dev' into json
2015-03-17 00:13:15 +08:00
funshine
4d3c1a930f
code clean up for cjson
2015-03-17 00:12:25 +08:00
funshine
54004a4beb
fix cjson bugs and reduce mem usage
2015-03-16 23:59:57 +08:00
funshine
c0d690ce7e
under development
2015-03-16 17:11:48 +08:00
funshine
d425dd7127
under develop
2015-03-16 17:09:43 +08:00
funshine
83f53c23c1
json port from cjson. not work yet, add cjson folder
2015-03-16 09:19:06 +08:00
funshine
c9912f1d82
json port from cjson. not work yet, delete folder
2015-03-16 09:17:21 +08:00
funshine
9c0c960e84
json port from cjson. not work yet
2015-03-16 09:00:33 +08:00