diff options
| author | Bernard Xiong <[email protected]> | 2014-07-19 06:46:39 +0800 |
|---|---|---|
| committer | Bernard Xiong <[email protected]> | 2014-07-19 06:46:39 +0800 |
| commit | 350b1080eafb565875f82bfe5da9173fa7f0f149 (patch) | |
| tree | a044f04e1d200c2421a74e840ab6da143c431b55 /components | |
| parent | 61712bbd13b7c820307f0570d49f1bc0fc6b857a (diff) | |
| parent | 50e7ae7e875c28cdc65baf9c0ec7893a59211a23 (diff) | |
Merge pull request #303 from BernardXiong/stable-v1.2.xv1.2.2
Merge 2.0.0 modification to prepare v1.2.2 release.
Diffstat (limited to 'components')
| -rw-r--r-- | components/external/libpng/pngconf.h | 2 | ||||
| -rw-r--r-- | components/external/tjpgd1a/SConscript | 2 | ||||
| -rw-r--r-- | components/external/tjpgd1a/tjpgd.c | 2 | ||||
| -rw-r--r-- | components/finsh/shell.c | 6 | ||||
| -rw-r--r-- | components/libc/armlibc/stubs.c | 13 | ||||
| -rw-r--r-- | components/net/lwip-1.4.1/src/arch/sys_arch.c | 2 | ||||
| -rw-r--r-- | components/net/lwip-1.4.1/src/include/netif/ethernetif.h | 4 | ||||
| -rw-r--r-- | components/net/lwip-1.4.1/src/lwipopts.h | 22 | ||||
| -rw-r--r-- | components/utilities/logtrace/log_trace.c | 21 | ||||
| -rw-r--r-- | components/utilities/logtrace/log_trace.h | 42 | ||||
| -rw-r--r-- | components/utilities/ymodem/ymodem.c | 25 |
11 files changed, 104 insertions, 37 deletions
diff --git a/components/external/libpng/pngconf.h b/components/external/libpng/pngconf.h index 047376302d..bb0a189f9d 100644 --- a/components/external/libpng/pngconf.h +++ b/components/external/libpng/pngconf.h @@ -23,6 +23,8 @@ #include <rtthread.h> #define PNG_MAX_MALLOC_64K #define PNG_NO_STDIO +#define PNG_NO_ERROR_NUMBERS +#define PNG_ABORT() do { rt_kprintf("libpng abort.\n"); } while (0) #ifndef RT_USING_NEWLIB #define PNG_NO_WRITE_SUPPORTED diff --git a/components/external/tjpgd1a/SConscript b/components/external/tjpgd1a/SConscript index d5db35385f..37448fcc3b 100644 --- a/components/external/tjpgd1a/SConscript +++ b/components/external/tjpgd1a/SConscript @@ -8,7 +8,7 @@ tjpgd.c CPPPATH = [RTT_ROOT + '/components/external/tjpgd1a'] -group = DefineGroup('tjpgd', src, depend = ['RTGUI_IMAGE_TJPGD'], CPPPATH = CPPPATH) +group = DefineGroup('RTGUI', src, depend = ['RT_USING_RTGUI', 'RTGUI_IMAGE_TJPGD'], CPPPATH = CPPPATH) Return('group') diff --git a/components/external/tjpgd1a/tjpgd.c b/components/external/tjpgd1a/tjpgd.c index 9c69989ced..4203336c51 100644 --- a/components/external/tjpgd1a/tjpgd.c +++ b/components/external/tjpgd1a/tjpgd.c @@ -525,7 +525,7 @@ JRESULT mcu_load ( } while (++i < 64); /* Next AC element */ if (JD_USE_SCALE && jd->scale == 3) - *bp = (*tmp / 256) + 128; /* If scale ratio is 1/8, IDCT can be ommited and only DC element is used */ + *bp = (BYTE)((*tmp / 256) + 128); /* If scale ratio is 1/8, IDCT can be ommited and only DC element is used */ else block_idct(tmp, bp); /* Apply IDCT and store the block to the MCU buffer */ diff --git a/components/finsh/shell.c b/components/finsh/shell.c index 393d68713c..ae099e7e7c 100644 --- a/components/finsh/shell.c +++ b/components/finsh/shell.c @@ -530,6 +530,12 @@ void finsh_thread_entry(void* parameter) ch = 0; shell->line_position ++; shell->line_curpos++; + if (shell->line_position >= 80) + { + /* clear command line */ + shell->line_position = 0; + shell->line_curpos = 0; + } } /* end of device read */ } } diff --git a/components/libc/armlibc/stubs.c b/components/libc/armlibc/stubs.c index 301f654182..d219b3430a 100644 --- a/components/libc/armlibc/stubs.c +++ b/components/libc/armlibc/stubs.c @@ -46,8 +46,10 @@ const char __stderr_name[] = "STDERR"; */ FILEHANDLE _sys_open(const char *name, int openmode) { +#ifdef RT_USING_DFS int fd; - +#endif + /* Register standard Input Output devices. */ if (strcmp(name, __stdin_name) == 0) return (STDIN); @@ -91,12 +93,13 @@ int _sys_close(FILEHANDLE fh) */ int _sys_read(FILEHANDLE fh, unsigned char *buf, unsigned len, int mode) { +#ifdef RT_USING_DFS int size; - +#endif + if (fh == STDIN) { /* TODO */ - return 0; } @@ -125,8 +128,10 @@ int _sys_read(FILEHANDLE fh, unsigned char *buf, unsigned len, int mode) */ int _sys_write(FILEHANDLE fh, const unsigned char *buf, unsigned len, int mode) { +#ifdef RT_USING_DFS int size; - +#endif + if ((fh == STDOUT) || (fh == STDERR)) { #ifndef RT_USING_CONSOLE diff --git a/components/net/lwip-1.4.1/src/arch/sys_arch.c b/components/net/lwip-1.4.1/src/arch/sys_arch.c index ee1d952410..356dc101cf 100644 --- a/components/net/lwip-1.4.1/src/arch/sys_arch.c +++ b/components/net/lwip-1.4.1/src/arch/sys_arch.c @@ -108,7 +108,7 @@ static void tcpip_init_done_callback(void *arg) netif_set_up(ethif->netif); } -#ifdef LWIP_NETIF_LINK_CALLBACK +#if LWIP_NETIF_LINK_CALLBACK netif_set_link_up(ethif->netif); #endif diff --git a/components/net/lwip-1.4.1/src/include/netif/ethernetif.h b/components/net/lwip-1.4.1/src/include/netif/ethernetif.h index 53dacf2270..2019df7017 100644 --- a/components/net/lwip-1.4.1/src/include/netif/ethernetif.h +++ b/components/net/lwip-1.4.1/src/include/netif/ethernetif.h @@ -5,7 +5,11 @@ #include <rtthread.h> #define NIOCTL_GADDR 0x01 +#ifndef RT_LWIP_ETH_MTU #define ETHERNET_MTU 1500 +#else +#define ETHERNET_MTU RT_LWIP_ETH_MTU +#endif struct eth_device { diff --git a/components/net/lwip-1.4.1/src/lwipopts.h b/components/net/lwip-1.4.1/src/lwipopts.h index 10cb7893a7..bff172e280 100644 --- a/components/net/lwip-1.4.1/src/lwipopts.h +++ b/components/net/lwip-1.4.1/src/lwipopts.h @@ -38,8 +38,9 @@ #define LWIP_PLATFORM_BYTESWAP 0 #define BYTE_ORDER LITTLE_ENDIAN -/* Enable SO_RCVTIMEO processing. */ +/* Enable SO_RCVTIMEO/LWIP_SO_SNDTIMEO processing. */ #define LWIP_SO_RCVTIMEO 1 +#define LWIP_SO_SNDTIMEO 1 /* #define RT_LWIP_DEBUG */ @@ -117,6 +118,8 @@ /* the number of simultaneously queued TCP */ #ifdef RT_LWIP_TCP_SEG_NUM +#define MEMP_NUM_TCP_SEG RT_LWIP_TCP_SEG_NUM +#else #define MEMP_NUM_TCP_SEG TCP_SND_QUEUELEN #endif @@ -135,12 +138,12 @@ /* ---------- Pbuf options ---------- */ /* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */ #ifdef RT_LWIP_PBUF_NUM -#define PBUF_POOL_SIZE RT_LWIP_PBUF_NUM +#define PBUF_POOL_SIZE RT_LWIP_PBUF_NUM #endif /* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */ #ifdef RT_LWIP_PBUF_POOL_BUFSIZE -#define PBUF_POOL_BUFSIZE RT_LWIP_PBUF_POOL_BUFSIZE +#define PBUF_POOL_BUFSIZE RT_LWIP_PBUF_POOL_BUFSIZE #endif /* PBUF_LINK_HLEN: the number of bytes that should be allocated for a @@ -176,7 +179,7 @@ /* TCP sender buffer space (bytes). */ #ifdef RT_LWIP_TCP_SND_BUF -#define TCP_SND_BUF RT_LWIP_TCP_SND_BUF +#define TCP_SND_BUF RT_LWIP_TCP_SND_BUF #else #define TCP_SND_BUF (TCP_MSS * 2) #endif @@ -230,10 +233,15 @@ /* IP reassembly and segmentation.These are orthogonal even * if they both deal with IP fragments */ -#define IP_REASSEMBLY 0 +#ifdef RT_LWIP_REASSEMBLY_FRAG +#define IP_REASSEMBLY 1 +#define IP_FRAG 1 #define IP_REASS_MAX_PBUFS 10 #define MEMP_NUM_REASSDATA 10 +#else +#define IP_REASSEMBLY 0 #define IP_FRAG 0 +#endif /* ---------- ICMP options ---------- */ #define ICMP_TTL 255 @@ -307,7 +315,7 @@ * in this file. */ #ifdef RT_LWIP_PPPOE -#define PPPOE_SUPPORT 1 +#define PPPOE_SUPPORT 1 #else #define PPPOE_SUPPORT 0 #endif @@ -315,7 +323,7 @@ #ifdef RT_LWIP_PPPOS #define PPPOS_SUPPORT 1 #else -#define PPPOS_SUPPORT 0 +#define PPPOS_SUPPORT 0 #endif #define PAP_SUPPORT 1 /* Set > 0 for PAP. */ diff --git a/components/utilities/logtrace/log_trace.c b/components/utilities/logtrace/log_trace.c index 1d0a42725e..d060465907 100644 --- a/components/utilities/logtrace/log_trace.c +++ b/components/utilities/logtrace/log_trace.c @@ -42,7 +42,7 @@ static rt_device_t _traceout_device = RT_NULL; /* define a default lg session. The name is empty. */ static struct log_trace_session _def_session = {{"\0"}, LOG_TRACE_LEVEL_INFO}; -static struct log_trace_session *_the_sessions[LOG_TRACE_MAX_SESSION] = {&_def_session}; +static const struct log_trace_session *_the_sessions[LOG_TRACE_MAX_SESSION] = {&_def_session}; /* there is a default session at least */ static rt_uint16_t _the_sess_nr = 1; @@ -83,11 +83,11 @@ rt_inline int _idname_len(log_trace_idnum_t id) */ static struct log_trace_session* _lg_lookup_session(log_trace_idnum_t num) { - static struct log_trace_session *_cache = &_def_session; + static const struct log_trace_session *_cache = &_def_session; rt_uint16_t first, last; if (_cache->id.num == num) - return _cache; + return (struct log_trace_session *)_cache; first = 0; last = _the_sess_nr; @@ -104,7 +104,7 @@ static struct log_trace_session* _lg_lookup_session(log_trace_idnum_t num) * process and we wrote the old one to _cache. But it doesn't harm * a lot because it will be flushed in the next time. */ _cache = _the_sessions[i]; - return _the_sessions[i]; + return (struct log_trace_session *)_the_sessions[i]; } else if (_the_sessions[i]->id.num > num) { @@ -119,7 +119,7 @@ static struct log_trace_session* _lg_lookup_session(log_trace_idnum_t num) return RT_NULL; } -rt_err_t log_trace_register_session(struct log_trace_session *session) +rt_err_t log_trace_register_session(const struct log_trace_session *session) { unsigned int lvl, i; @@ -255,8 +255,9 @@ static rt_size_t _lg_parse_session( return 0; } -static void _lg_fmtout( - struct log_trace_session *session, const char *fmt, va_list argptr) +void __logtrace_vfmtout(const struct log_trace_session *session, + const char *fmt, + va_list argptr) { /* 1 for ']' */ static char _trace_buf[1+LOG_TRACE_BUFSZ]; @@ -303,12 +304,12 @@ void log_trace(const char *fmt, ...) return; va_start(args, fmt); - _lg_fmtout(session, fmt, args); + __logtrace_vfmtout(session, fmt, args); va_end(args); } FINSH_FUNCTION_EXPORT(log_trace, log trace); -void log_session(struct log_trace_session *session, const char *fmt, ...) +void log_session(const struct log_trace_session *session, const char *fmt, ...) { va_list args; int level; @@ -321,7 +322,7 @@ void log_session(struct log_trace_session *session, const char *fmt, ...) return; va_start(args, fmt); - _lg_fmtout(session, fmt, args); + __logtrace_vfmtout(session, fmt, args); va_end(args); } diff --git a/components/utilities/logtrace/log_trace.h b/components/utilities/logtrace/log_trace.h index 77e1f08b6c..1e8cc4abae 100644 --- a/components/utilities/logtrace/log_trace.h +++ b/components/utilities/logtrace/log_trace.h @@ -1,7 +1,7 @@ /* * File : log_trace.h * This file is part of RT-Thread RTOS - * COPYRIGHT (C) 2013, RT-Thread Development Team + * COPYRIGHT (C) 2013-2014, RT-Thread Development Team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -95,7 +95,7 @@ void log_trace_init(void); * * @return RT_EOK on success. -RT_EFULL if there is no space for registration. */ -rt_err_t log_trace_register_session(struct log_trace_session *session); +rt_err_t log_trace_register_session(const struct log_trace_session *session); /** find a session with name * @@ -130,7 +130,43 @@ void log_trace(const char *fmt, ...); * "[systick][name]log messages". The name is the name of the session. It is * faster than bare log_trace. */ -void log_session(struct log_trace_session *session, const char *fmt, ...); +void log_session(const struct log_trace_session *session, const char *fmt, ...); + +extern void __logtrace_vfmtout(const struct log_trace_session *session, + const char *fmt, + va_list argptr); + +rt_inline void __logtrace_fmtout(const struct log_trace_session *session, + const char *fmt, ...) +{ + va_list args; + + va_start(args, fmt); + __logtrace_vfmtout(session, fmt, args); + va_end(args); +} + +/** + * log with numeric level + * + * The prototype of this function is: + * + * void log_session_lvl(struct log_trace_session *session, + * int lvl, + * const char *fmt, ...); + * + * If the @session is const and @level is greater than @session->lvl, the whole + * function will be optimized out. This is suitable for performance critical + * places where in most cases, the log is turned off by level. + */ +#define log_session_lvl(session, level, fmt, ...) \ + do { \ + if ((level) > (session)->lvl) \ + { \ + break; \ + } \ + __logtrace_fmtout(session, fmt, ##__VA_ARGS__); \ + } while (0) /* here comes the global part. All sessions share the some output backend. */ diff --git a/components/utilities/ymodem/ymodem.c b/components/utilities/ymodem/ymodem.c index fdd1950cc0..f5ebeab832 100644 --- a/components/utilities/ymodem/ymodem.c +++ b/components/utilities/ymodem/ymodem.c @@ -70,18 +70,23 @@ static enum rym_code _rym_read_code( struct rym_ctx *ctx, rt_tick_t timeout) { - /* consume the available sem and read the data in buffer if possible */ - while (rt_sem_trytake(&ctx->sem) == RT_EOK) - ; + /* Fast path */ if (rt_device_read(ctx->dev, 0, ctx->buf, 1) == 1) return *ctx->buf; - /* no data yet, wait for one */ - if (rt_sem_take(&ctx->sem, timeout) != RT_EOK) - return RYM_CODE_NONE; - /* read one */ - if (rt_device_read(ctx->dev, 0, ctx->buf, 1) == 1) - return *ctx->buf; - return RYM_CODE_NONE; + + /* Slow path */ + do { + rt_size_t rsz; + + /* No data yet, wait for one */ + if (rt_sem_take(&ctx->sem, timeout) != RT_EOK) + return RYM_CODE_NONE; + + /* Try to read one */ + rsz = rt_device_read(ctx->dev, 0, ctx->buf, 1); + if (rsz == 1) + return *ctx->buf; + } while (1); } /* the caller should at least alloc _RYM_STX_PKG_SZ buffer */ |
