From 971c4b569b84d74de2799d8c4f22e07173b05907 Mon Sep 17 00:00:00 2001 From: funshine Date: Thu, 8 Jan 2015 16:03:21 +0800 Subject: [PATCH] fix net.socket:send(), fix file.read() when 0xFF reached --- README.md | 13 ++++++------- app/.settings/language.settings.xml | 2 +- app/include/user_config.h | 2 +- app/lwip/app/espconn.c | 3 ++- app/lwip/app/espconn_tcp.c | 2 +- app/modules/file.c | 10 +++++----- app/spiffs/spiffs.c | 6 ++++-- .../nodemcu_20150107.bin} | Bin pre_build/0.9.5/nodemcu_latest.bin | Bin 373368 -> 373372 bytes pre_build/latest/nodemcu_latest.bin | Bin 373368 -> 373372 bytes 10 files changed, 20 insertions(+), 18 deletions(-) rename pre_build/{latest/nodemcu_512k_latest.bin => 0.9.5/nodemcu_20150107.bin} (100%) diff --git a/README.md b/README.md index 716d3581..27cab97e 100644 --- a/README.md +++ b/README.md @@ -26,19 +26,18 @@ Tencent QQ group QQ群: 309957875
- add coap module # Change log +2015-01-08
+fix net.socket:send() issue when multi sends are called.
+*NOTE*: if data length is bigger than 1460, send next packet AFTER "sent" callback is called.
+fix file.read() api, take 0xFF as a regular byte, not EOF.
+pre_build/latest/nodemcu_512k_latest.bin is removed. use pre_build/latest/nodemcu_latest.bin instead. + 2015-01-07
retrive more ram back.
add api file.format() to rebuild file system.
rename "NodeMcu" to "NodeMCU" in firmware.
add some check for file system op. -2015-01-06
-update sdk to 0.9.5.
-pre_build bin now compiled by gcc toolchain.
-memory/heap usage optimized.
-add support for multiple platform and toolchain include eclipse.
-combine firmware for 512K, 1M, 2M, 4M flash to one. flash size auto-detected. - [more change log](https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en#change_log)
[更多变更日志](https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_cn#change_log) diff --git a/app/.settings/language.settings.xml b/app/.settings/language.settings.xml index 1e3a8ec5..d4c4a342 100644 --- a/app/.settings/language.settings.xml +++ b/app/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/app/include/user_config.h b/app/include/user_config.h index 8e784520..fa71de0a 100644 --- a/app/include/user_config.h +++ b/app/include/user_config.h @@ -7,7 +7,7 @@ #define NODE_VERSION_INTERNAL 0U #define NODE_VERSION "NodeMCU 0.9.5" -#define BUILD_DATE "build 20150107" +#define BUILD_DATE "build 20150108" // #define FLASH_512K // #define FLASH_1M diff --git a/app/lwip/app/espconn.c b/app/lwip/app/espconn.c index 15dcc2dd..bd81e4d6 100644 --- a/app/lwip/app/espconn.c +++ b/app/lwip/app/espconn.c @@ -272,7 +272,8 @@ espconn_sent(struct espconn *espconn, uint8 *psent, uint16 length) value = espconn_find_connection(espconn, &pnode); switch (espconn ->type) { case ESPCONN_TCP: - if (value && (pnode->pcommon.write_len == pnode->pcommon.write_total)){ + // if (value && (pnode->pcommon.write_len == pnode->pcommon.write_total)){ + if (value && (pnode->pcommon.cntr == 0)){ espconn_tcp_sent(pnode, psent, length); }else return ESPCONN_ARG; diff --git a/app/lwip/app/espconn_tcp.c b/app/lwip/app/espconn_tcp.c index df92929a..9cc7129d 100644 --- a/app/lwip/app/espconn_tcp.c +++ b/app/lwip/app/espconn_tcp.c @@ -188,7 +188,7 @@ espconn_tcp_sent(void *arg, uint8 *psent, uint16 length) data_to_send = true; ptcp_sent->pcommon.ptrbuf = psent + len; ptcp_sent->pcommon.cntr = length - len; - ptcp_sent->pcommon.write_len = len; + ptcp_sent->pcommon.write_len += len; espconn_printf("espconn_tcp_sent sending %d bytes, remain %d\n", len, ptcp_sent->pcommon.cntr); } diff --git a/app/modules/file.c b/app/modules/file.c index fa7628d3..f6548890 100644 --- a/app/modules/file.c +++ b/app/modules/file.c @@ -159,23 +159,23 @@ static int file_g_read( lua_State* L, int n, int16_t end_char ) n = LUAL_BUFFERSIZE; if(end_char < 0 || end_char >255) end_char = EOF; - signed char ec = (signed char)end_char; - + int ec = (int)end_char; + luaL_Buffer b; if((FS_OPEN_OK - 1)==file_fd) return luaL_error(L, "open a file first"); luaL_buffinit(L, &b); char *p = luaL_prepbuffer(&b); - signed char c = EOF; + int c = EOF; int i = 0; do{ - c = (signed char)fs_getc(file_fd); + c = fs_getc(file_fd); if(c==EOF){ break; } - p[i++] = c; + p[i++] = (char)(0xFF & c); }while((c!=EOF) && (c!=ec) && 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 delta 14639 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 diff --git a/pre_build/latest/nodemcu_latest.bin b/pre_build/latest/nodemcu_latest.bin index 04f4dc31002206cc6fada46c2a1014f93a21456a..f72815c2bc61e31e907d9e81e5276457e46eadbf 100644 GIT binary patch delta 14639 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 delta 14639 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