diff options
| author | Bernard Xiong <[email protected]> | 2019-03-17 09:33:47 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2019-03-17 09:33:47 +0800 |
| commit | d778c9df25cbbd8e202a0133453e4c8b8e179eff (patch) | |
| tree | 6dd97c1487eacf0a6d858b7541866f865b9203de /components | |
| parent | 2d69172ad39a52e574a22b4374ee89848d832fe8 (diff) | |
| parent | 94e3f77f25249b52c6f72921a2d2564f68bcd6ff (diff) | |
Merge pull request #2455 from armink/lts-v3.1.x
Lts v3.1.x
Diffstat (limited to 'components')
44 files changed, 306 insertions, 210 deletions
diff --git a/components/cplusplus/crt_init.c b/components/cplusplus/crt_init.c index e67939feeb..3294b51a40 100755 --- a/components/cplusplus/crt_init.c +++ b/components/cplusplus/crt_init.c @@ -13,10 +13,10 @@ #include <rtthread.h> -#ifdef __CC_ARM +#if defined(__CC_ARM) || defined(__CLANG_ARM) extern void $Super$$__cpp_initialize__aeabi_(void); /* we need to change the cpp_initialize order */ -void $Sub$$__cpp_initialize__aeabi_(void) +RT_WEAK void $Sub$$__cpp_initialize__aeabi_(void) { /* empty */ } @@ -34,19 +34,9 @@ RT_WEAK void *__dso_handle = 0; #endif -RT_WEAK -int cplusplus_system_init(void) +RT_WEAK int cplusplus_system_init(void) { -#if defined(__GNUC__) && !defined(__CC_ARM) - typedef void (*pfunc) (); - extern pfunc __ctors_start__[]; - extern pfunc __ctors_end__[]; - pfunc *p; - - for (p = __ctors_start__; p < __ctors_end__; p++) - (*p)(); - -#elif defined(__CC_ARM) +#if defined(__CC_ARM) || defined(__CLANG_ARM) /* If there is no SHT$$INIT_ARRAY, calling * $Super$$__cpp_initialize__aeabi_() will cause fault. At least until Keil5.12 * the problem still exists. So we have to initialize the C++ runtime by ourself. @@ -63,9 +53,16 @@ int cplusplus_system_init(void) PROC *proc = (PROC*)((const char*)base + *base); (*proc)(); } +#elif defined(__GNUC__) + typedef void(*pfunc) (); + extern pfunc __ctors_start__[]; + extern pfunc __ctors_end__[]; + pfunc *p; + + for (p = __ctors_start__; p < __ctors_end__; p++) + (*p)(); #endif return 0; } INIT_COMPONENT_EXPORT(cplusplus_system_init); - diff --git a/components/dfs/include/dfs_private.h b/components/dfs/include/dfs_private.h index e20680d9df..bfc71b3b35 100644 --- a/components/dfs/include/dfs_private.h +++ b/components/dfs/include/dfs_private.h @@ -12,10 +12,8 @@ #include <dfs.h> -// #define DBG_ENABLE #define DBG_SECTION_NAME "DFS" -#define DBG_COLOR -#define DBG_LEVEL DBG_LOG +#define DBG_LEVEL DBG_INFO #include <rtdbg.h> #define NO_WORKING_DIR "system does not support working directory\n" diff --git a/components/dfs/src/dfs_file.c b/components/dfs/src/dfs_file.c index b924b00d3f..b4f115ffc2 100644 --- a/components/dfs/src/dfs_file.c +++ b/components/dfs/src/dfs_file.c @@ -111,7 +111,7 @@ int dfs_file_open(struct dfs_fd *fd, const char *path, int flags) fd->flags |= DFS_F_DIRECTORY; } - LOG_I("open successful"); + LOG_D("open successful"); return 0; } diff --git a/components/drivers/misc/adc.c b/components/drivers/misc/adc.c index 83e789a6e4..b2fd9ba430 100644 --- a/components/drivers/misc/adc.c +++ b/components/drivers/misc/adc.c @@ -15,10 +15,8 @@ #include <string.h> #include <stdlib.h> -#define DBG_ENABLE #define DBG_SECTION_NAME "adc" #define DBG_LEVEL DBG_INFO -#define DBG_COLOR #include <rtdbg.h> static rt_size_t _adc_read(rt_device_t dev, rt_off_t pos, void *buffer, rt_size_t size) diff --git a/components/drivers/sdio/block_dev.c b/components/drivers/sdio/block_dev.c index 23be319fc6..dcfbc0ca7b 100644 --- a/components/drivers/sdio/block_dev.c +++ b/components/drivers/sdio/block_dev.c @@ -13,14 +13,12 @@ #include <drivers/mmcsd_core.h> -#define DBG_ENABLE #define DBG_SECTION_NAME "SDIO" #ifdef RT_SDIO_DEBUG #define DBG_LEVEL DBG_LOG #else #define DBG_LEVEL DBG_INFO #endif /* RT_SDIO_DEBUG */ -#define DBG_COLOR #include <rtdbg.h> static rt_list_t blk_devices = RT_LIST_OBJECT_INIT(blk_devices); @@ -369,7 +367,7 @@ rt_int32_t rt_mmcsd_blk_probe(struct rt_mmcsd_card *card) return err; } - LOG_I("probe mmcsd block device!"); + LOG_D("probe mmcsd block device!"); /* get the first sector to read partition table */ sector = (rt_uint8_t *)rt_malloc(SECTOR_SIZE); diff --git a/components/drivers/sdio/mmc.c b/components/drivers/sdio/mmc.c index bbf0ff838c..5f9259ef52 100644 --- a/components/drivers/sdio/mmc.c +++ b/components/drivers/sdio/mmc.c @@ -11,14 +11,12 @@ #include <drivers/mmcsd_core.h> #include <drivers/mmc.h> -#define DBG_ENABLE #define DBG_SECTION_NAME "SDIO" #ifdef RT_SDIO_DEBUG #define DBG_LEVEL DBG_LOG #else #define DBG_LEVEL DBG_INFO #endif /* RT_SDIO_DEBUG */ -#define DBG_COLOR #include <rtdbg.h> static const rt_uint32_t tran_unit[] = diff --git a/components/drivers/sdio/mmcsd_core.c b/components/drivers/sdio/mmcsd_core.c index d1f5978374..1618585f69 100644 --- a/components/drivers/sdio/mmcsd_core.c +++ b/components/drivers/sdio/mmcsd_core.c @@ -14,14 +14,12 @@ #include <drivers/mmc.h> #include <drivers/sdio.h> -#define DBG_ENABLE #define DBG_SECTION_NAME "SDIO" #ifdef RT_SDIO_DEBUG #define DBG_LEVEL DBG_LOG #else #define DBG_LEVEL DBG_INFO #endif /* RT_SDIO_DEBUG */ -#define DBG_COLOR #include <rtdbg.h> #ifndef RT_MMCSD_STACK_SIZE diff --git a/components/drivers/sdio/sd.c b/components/drivers/sdio/sd.c index 69a4561fb0..f4e925507c 100644 --- a/components/drivers/sdio/sd.c +++ b/components/drivers/sdio/sd.c @@ -11,14 +11,12 @@ #include <drivers/mmcsd_core.h> #include <drivers/sd.h> -#define DBG_ENABLE #define DBG_SECTION_NAME "SDIO" #ifdef RT_SDIO_DEBUG #define DBG_LEVEL DBG_LOG #else #define DBG_LEVEL DBG_INFO #endif /* RT_SDIO_DEBUG */ -#define DBG_COLOR #include <rtdbg.h> static const rt_uint32_t tran_unit[] = diff --git a/components/drivers/sdio/sdio.c b/components/drivers/sdio/sdio.c index 6045c4ade8..b0516704fd 100644 --- a/components/drivers/sdio/sdio.c +++ b/components/drivers/sdio/sdio.c @@ -12,14 +12,12 @@ #include <drivers/sdio.h> #include <drivers/sd.h> -#define DBG_ENABLE #define DBG_SECTION_NAME "SDIO" #ifdef RT_SDIO_DEBUG #define DBG_LEVEL DBG_LOG #else #define DBG_LEVEL DBG_INFO #endif /* RT_SDIO_DEBUG */ -#define DBG_COLOR #include <rtdbg.h> #ifndef RT_SDIO_STACK_SIZE diff --git a/components/drivers/sensors/sensor.c b/components/drivers/sensors/sensor.c index 0c21f04b6f..ec1ad98fb6 100644 --- a/components/drivers/sensors/sensor.c +++ b/components/drivers/sensors/sensor.c @@ -10,10 +10,8 @@ #include "sensor.h" -#define DBG_ENABLE #define DBG_LEVEL DBG_INFO #define DBG_SECTION_NAME "sensor" -#define DBG_COLOR #include <rtdbg.h> #include <string.h> @@ -45,6 +43,11 @@ void rt_sensor_cb(rt_sensor_t sen) { return; } + + if (sen->irq_handle != RT_NULL) + { + sen->irq_handle(sen); + } /* The buffer is not empty. Read the data in the buffer first */ if (sen->data_len > 0) diff --git a/components/drivers/sensors/sensor.h b/components/drivers/sensors/sensor.h index fd437e4e09..94650ea886 100644 --- a/components/drivers/sensors/sensor.h +++ b/components/drivers/sensors/sensor.h @@ -68,6 +68,7 @@ extern "C" { #define RT_SENSOR_UNIT_HZ (9) /* Frequency unit: HZ */ #define RT_SENSOR_UNIT_ONE (10) /* Dimensionless quantity unit: 1 */ #define RT_SENSOR_UNIT_BPM (11) /* Heart rate unit: bpm */ +#define RT_SENSOR_UNIT_MM (12) /* Distance unit: mm */ /* Sensor communication interface types */ @@ -131,6 +132,8 @@ struct rt_sensor_config rt_int32_t range; /* sensor range of measurement */ }; +typedef struct rt_sensor_device *rt_sensor_t; + struct rt_sensor_device { struct rt_device parent; /* The standard device */ @@ -144,8 +147,9 @@ struct rt_sensor_device const struct rt_sensor_ops *ops; /* The sensor ops */ struct rt_sensor_module *module; /* The sensor module */ + + rt_err_t (*irq_handle)(rt_sensor_t sensor); /* Called when an interrupt is generated, registered by the driver */ }; -typedef struct rt_sensor_device *rt_sensor_t; struct rt_sensor_module { diff --git a/components/drivers/sensors/sensor_cmd.c b/components/drivers/sensors/sensor_cmd.c index b6dd471988..4658a42722 100644 --- a/components/drivers/sensors/sensor_cmd.c +++ b/components/drivers/sensors/sensor_cmd.c @@ -10,10 +10,8 @@ #include "sensor.h" -#define DBG_ENABLE #define DBG_LEVEL DBG_INFO #define DBG_SECTION_NAME "sensor.cmd" -#define DBG_COLOR #include <rtdbg.h> #include <stdlib.h> @@ -46,6 +44,9 @@ static void sensor_show_data(rt_size_t num, rt_sensor_t sensor, struct rt_sensor case RT_SENSOR_CLASS_STEP: LOG_I("num:%3d, step:%5d, timestamp:%5d", num, sensor_data->data.step, sensor_data->timestamp); break; + case RT_SENSOR_CLASS_PROXIMITY: + LOG_I("num:%3d, distance:%5d, timestamp:%5d", num, sensor_data->data.proximity, sensor_data->timestamp); + break; default: break; } @@ -98,6 +99,12 @@ static void sensor_fifo(int argc, char **argv) return; } sensor = (rt_sensor_t)dev; + + if (rt_device_open(dev, RT_DEVICE_FLAG_FIFO_RX) != RT_EOK) + { + LOG_E("open device failed!"); + return; + } if (sensor_rx_sem == RT_NULL) { @@ -119,11 +126,6 @@ static void sensor_fifo(int argc, char **argv) rt_device_set_rx_indicate(dev, rx_callback); - if (rt_device_open(dev, RT_DEVICE_FLAG_FIFO_RX) != RT_EOK) - { - LOG_E("open device failed!"); - return; - } rt_device_control(dev, RT_SENSOR_CTRL_SET_ODR, (void *)20); } #ifdef FINSH_USING_MSH diff --git a/components/drivers/serial/serial.c b/components/drivers/serial/serial.c index a03e4a719e..13bf54e721 100644 --- a/components/drivers/serial/serial.c +++ b/components/drivers/serial/serial.c @@ -28,10 +28,8 @@ #include <rtthread.h> #include <rtdevice.h> -// #define DEBUG_ENABLE -#define DEBUG_LEVEL DBG_LOG +#define DBG_LEVEL DBG_INFO #define DBG_SECTION_NAME "UART" -#define DEBUG_COLOR #include <rtdbg.h> #ifdef RT_USING_POSIX @@ -882,6 +880,7 @@ static int _get_baudrate(speed_t speed) static void _tc_flush(struct rt_serial_device *serial, int queue) { + rt_base_t level; int ch = -1; struct rt_serial_rx_fifo *rx_fifo = RT_NULL; struct rt_device *device = RT_NULL; @@ -901,10 +900,12 @@ static void _tc_flush(struct rt_serial_device *serial, int queue) if((device->open_flag & RT_DEVICE_FLAG_INT_RX) || (device->open_flag & RT_DEVICE_FLAG_DMA_RX)) { RT_ASSERT(RT_NULL != rx_fifo); + level = rt_hw_interrupt_disable(); rt_memset(rx_fifo->buffer, 0, serial->config.bufsz); rx_fifo->put_index = 0; rx_fifo->get_index = 0; rx_fifo->is_full = RT_FALSE; + rt_hw_interrupt_enable(level); } else { diff --git a/components/drivers/spi/spi_flash_sfud.c b/components/drivers/spi/spi_flash_sfud.c index 4f9b7abd57..7fa7de6ad5 100644 --- a/components/drivers/spi/spi_flash_sfud.c +++ b/components/drivers/spi/spi_flash_sfud.c @@ -46,7 +46,7 @@ static char log_buf[RT_CONSOLEBUF_SIZE]; void sfud_log_debug(const char *file, const long line, const char *format, ...); static rt_err_t rt_sfud_control(rt_device_t dev, int cmd, void *args) { - RT_ASSERT(dev != RT_NULL); + RT_ASSERT(dev); switch (cmd) { case RT_DEVICE_CTRL_BLK_GETGEOME: { @@ -93,6 +93,10 @@ static rt_err_t rt_sfud_control(rt_device_t dev, int cmd, void *args) { static rt_size_t rt_sfud_read(rt_device_t dev, rt_off_t pos, void* buffer, rt_size_t size) { struct spi_flash_device *rtt_dev = (struct spi_flash_device *) (dev->user_data); sfud_flash *sfud_dev = (sfud_flash *) (rtt_dev->user_data); + + RT_ASSERT(dev); + RT_ASSERT(rtt_dev); + RT_ASSERT(sfud_dev); /* change the block device's logic address to physical address */ rt_off_t phy_pos = pos * rtt_dev->geometry.bytes_per_sector; rt_size_t phy_size = size * rtt_dev->geometry.bytes_per_sector; @@ -107,6 +111,10 @@ static rt_size_t rt_sfud_read(rt_device_t dev, rt_off_t pos, void* buffer, rt_si static rt_size_t rt_sfud_write(rt_device_t dev, rt_off_t pos, const void* buffer, rt_size_t size) { struct spi_flash_device *rtt_dev = (struct spi_flash_device *) (dev->user_data); sfud_flash *sfud_dev = (sfud_flash *) (rtt_dev->user_data); + + RT_ASSERT(dev); + RT_ASSERT(rtt_dev); + RT_ASSERT(sfud_dev); /* change the block device's logic address to physical address */ rt_off_t phy_pos = pos * rtt_dev->geometry.bytes_per_sector; rt_size_t phy_size = size * rtt_dev->geometry.bytes_per_sector; @@ -126,6 +134,10 @@ static sfud_err spi_write_read(const sfud_spi *spi, const uint8_t *write_buf, si sfud_err result = SFUD_SUCCESS; sfud_flash *sfud_dev = (sfud_flash *) (spi->user_data); struct spi_flash_device *rtt_dev = (struct spi_flash_device *) (sfud_dev->user_data); + + RT_ASSERT(spi); + RT_ASSERT(sfud_dev); + RT_ASSERT(rtt_dev); #ifdef SFUD_USING_QSPI struct rt_qspi_device *qspi_dev = RT_NULL; #endif @@ -180,7 +192,12 @@ static sfud_err qspi_read(const struct __sfud_spi *spi, uint32_t addr, sfud_qspi sfud_flash *sfud_dev = (sfud_flash *) (spi->user_data); struct spi_flash_device *rtt_dev = (struct spi_flash_device *) (sfud_dev->user_data); struct rt_qspi_device *qspi_dev = (struct rt_qspi_device *) (rtt_dev->rt_spi_device); - + + RT_ASSERT(spi); + RT_ASSERT(sfud_dev); + RT_ASSERT(rtt_dev); + RT_ASSERT(qspi_dev); + /* set message struct */ message.instruction.content = qspi_read_cmd_format->instruction; message.instruction.qspi_lines = qspi_read_cmd_format->instruction_lines; @@ -201,11 +218,11 @@ static sfud_err qspi_read(const struct __sfud_spi *spi, uint32_t addr, sfud_qspi message.parent.cs_release = 1; message.parent.cs_take = 1; message.qspi_data_lines = qspi_read_cmd_format->data_lines; - + if (rt_qspi_transfer_message(qspi_dev, &message) != read_size) { result = SFUD_ERR_TIMEOUT; } - + return result; } #endif @@ -214,6 +231,10 @@ static void spi_lock(const sfud_spi *spi) { sfud_flash *sfud_dev = (sfud_flash *) (spi->user_data); struct spi_flash_device *rtt_dev = (struct spi_flash_device *) (sfud_dev->user_data); + RT_ASSERT(spi); + RT_ASSERT(sfud_dev); + RT_ASSERT(rtt_dev); + rt_mutex_take(&(rtt_dev->lock), RT_WAITING_FOREVER); } @@ -221,6 +242,10 @@ static void spi_unlock(const sfud_spi *spi) { sfud_flash *sfud_dev = (sfud_flash *) (spi->user_data); struct spi_flash_device *rtt_dev = (struct spi_flash_device *) (sfud_dev->user_data); + RT_ASSERT(spi); + RT_ASSERT(sfud_dev); + RT_ASSERT(rtt_dev); + rt_mutex_release(&(rtt_dev->lock)); } @@ -270,6 +295,8 @@ void sfud_log_info(const char *format, ...) { sfud_err sfud_spi_port_init(sfud_flash *flash) { sfud_err result = SFUD_SUCCESS; + RT_ASSERT(flash); + /* port SPI device interface */ flash->spi.wr = spi_write_read; #ifdef SFUD_USING_QSPI @@ -285,7 +312,7 @@ sfud_err sfud_spi_port_init(sfud_flash *flash) { flash->retry.delay = retry_delay_100us; /* 60 seconds timeout */ flash->retry.times = 60 * 10000; - + return result; } @@ -361,7 +388,7 @@ rt_spi_flash_device_t rt_sfud_flash_probe(const char *spi_flash_dev_name, const rt_qspi_configure(qspi_dev, &qspi_cfg); } else -#endif +#endif rt_spi_configure(rtt_dev->rt_spi_device, &cfg); } /* SFUD flash device initialize */ @@ -461,27 +488,46 @@ sfud_flash_t rt_sfud_flash_find(const char *spi_dev_name) rt_spi_flash_device_t rtt_dev = RT_NULL; struct rt_spi_device *rt_spi_device = RT_NULL; sfud_flash_t sfud_dev = RT_NULL; - + rt_spi_device = (struct rt_spi_device *) rt_device_find(spi_dev_name); - if (rt_spi_device == RT_NULL || rt_spi_device->parent.type != RT_Device_Class_SPIDevice) - { + if (rt_spi_device == RT_NULL || rt_spi_device->parent.type != RT_Device_Class_SPIDevice) { rt_kprintf("ERROR: SPI device %s not found!\n", spi_dev_name); - goto error; + goto __error; } - rtt_dev = (rt_spi_flash_device_t)(rt_spi_device->user_data); - if (rtt_dev && rtt_dev->user_data) - { - sfud_dev = (sfud_flash_t)(rtt_dev->user_data); + rtt_dev = (rt_spi_flash_device_t) (rt_spi_device->user_data); + if (rtt_dev && rtt_dev->user_data) { + sfud_dev = (sfud_flash_t) (rtt_dev->user_data); return sfud_dev; + } else { + rt_kprintf("ERROR: SFUD flash device not found!\n"); + goto __error; } - else - { + +__error: + return RT_NULL; +} + +sfud_flash_t rt_sfud_flash_find_by_dev_name(const char *flash_dev_name) +{ + rt_spi_flash_device_t rtt_dev = RT_NULL; + sfud_flash_t sfud_dev = RT_NULL; + + rtt_dev = (rt_spi_flash_device_t) rt_device_find(flash_dev_name); + if (rtt_dev == RT_NULL || rtt_dev->flash_device.type != RT_Device_Class_Block) { + rt_kprintf("ERROR: Flash device %s not found!\n", flash_dev_name); + goto __error; + } + + if (rtt_dev->user_data) { + sfud_dev = (sfud_flash_t) (rtt_dev->user_data); + return sfud_dev; + } else { rt_kprintf("ERROR: SFUD flash device not found!\n"); - goto error; + goto __error; } -error: +__error: return RT_NULL; } @@ -491,6 +537,8 @@ error: static void sf(uint8_t argc, char **argv) { +#define __is_print(ch) ((unsigned int)((ch) - ' ') < 127u - ' ') +#define HEXDUMP_WIDTH 16 #define CMD_PROBE_INDEX 0 #define CMD_READ_INDEX 1 #define CMD_WRITE_INDEX 2 @@ -501,7 +549,7 @@ static void sf(uint8_t argc, char **argv) { sfud_err result = SFUD_SUCCESS; static const sfud_flash *sfud_dev = NULL; static rt_spi_flash_device_t rtt_dev = NULL, rtt_dev_bak = NULL; - size_t i = 0; + size_t i = 0, j = 0; const char* sf_help_info[] = { [CMD_PROBE_INDEX] = "sf probe [spi_device] - probe and init SPI flash by given 'spi_device'", @@ -528,12 +576,12 @@ static void sf(uint8_t argc, char **argv) { } else { char *spi_dev_name = argv[2]; rtt_dev_bak = rtt_dev; - + /* delete the old SPI flash device */ if(rtt_dev_bak) { rt_sfud_flash_delete(rtt_dev_bak); } - + rtt_dev = rt_sfud_flash_probe("sf_cmd", spi_dev_name); if (!rtt_dev) { return; @@ -557,8 +605,8 @@ static void sf(uint8_t argc, char **argv) { rt_kprintf("Usage: %s.\n", sf_help_info[CMD_READ_INDEX]); return; } else { - addr = atol(argv[2]); - size = atol(argv[3]); + addr = strtol(argv[2], NULL, 0); + size = strtol(argv[3], NULL, 0); uint8_t *data = rt_malloc(size); if (data) { result = sfud_read(sfud_dev, addr, size, data); @@ -566,14 +614,24 @@ static void sf(uint8_t argc, char **argv) { rt_kprintf("Read the %s flash data success. Start from 0x%08X, size is %ld. The data is:\n", sfud_dev->name, addr, size); rt_kprintf("Offset (h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F\n"); - for (i = 0; i < size; i++) { - if (i % 16 == 0) { - rt_kprintf("[%08X] ", addr + i); + for (i = 0; i < size; i += HEXDUMP_WIDTH) + { + rt_kprintf("[%08X] ", addr + i); + /* dump hex */ + for (j = 0; j < HEXDUMP_WIDTH; j++) { + if (i + j < size) { + rt_kprintf("%02X ", data[i + j]); + } else { + rt_kprintf(" "); + } } - rt_kprintf("%02X ", data[i]); - if (((i + 1) % 16 == 0) || i == size - 1) { - rt_kprintf("\n"); + /* dump char for hex */ + for (j = 0; j < HEXDUMP_WIDTH; j++) { + if (i + j < size) { + rt_kprintf("%c", __is_print(data[i + j]) ? data[i + j] : '.'); + } } + rt_kprintf("\n"); } rt_kprintf("\n"); } @@ -587,12 +645,12 @@ static void sf(uint8_t argc, char **argv) { rt_kprintf("Usage: %s.\n", sf_help_info[CMD_WRITE_INDEX]); return; } else { - addr = atol(argv[2]); + addr = strtol(argv[2], NULL, 0); size = argc - 3; uint8_t *data = rt_malloc(size); if (data) { for (i = 0; i < size; i++) { - data[i] = atoi(argv[3 + i]); + data[i] = strtol(argv[3 + i], NULL, 0); } result = sfud_write(sfud_dev, addr, size, data); if (result == SFUD_SUCCESS) { @@ -614,8 +672,8 @@ static void sf(uint8_t argc, char **argv) { rt_kprintf("Usage: %s.\n", sf_help_info[CMD_ERASE_INDEX]); return; } else { - addr = atol(argv[2]); - size = atol(argv[3]); + addr = strtol(argv[2], NULL, 0); + size = strtol(argv[3], NULL, 0); result = sfud_erase(sfud_dev, addr, size); if (result == SFUD_SUCCESS) { rt_kprintf("Erase the %s flash data success. Start from 0x%08X, size is %ld.\n", sfud_dev->name, @@ -630,8 +688,8 @@ static void sf(uint8_t argc, char **argv) { rt_kprintf("The %s flash status register current value is 0x%02X.\n", sfud_dev->name, status); } } else if (argc == 4) { - bool is_volatile = atoi(argv[2]); - uint8_t status = atoi(argv[3]); + bool is_volatile = strtol(argv[2], NULL, 0); + uint8_t status = strtol(argv[3], NULL, 0); result = sfud_write_status(sfud_dev, is_volatile, status); if (result == SFUD_SUCCESS) { rt_kprintf("Write the %s flash status register to 0x%02X success.\n", sfud_dev->name, status); @@ -696,7 +754,7 @@ static void sf(uint8_t argc, char **argv) { rt_kprintf("Data check ERROR! Please check you flash by other command.\n"); result = SFUD_ERR_READ; } - + if (result != SFUD_SUCCESS) { break; } diff --git a/components/drivers/spi/spi_flash_sfud.h b/components/drivers/spi/spi_flash_sfud.h index af1ed58790..490f2feadb 100644 --- a/components/drivers/spi/spi_flash_sfud.h +++ b/components/drivers/spi/spi_flash_sfud.h @@ -36,7 +36,7 @@ rt_spi_flash_device_t rt_sfud_flash_probe(const char *spi_flash_dev_name, const rt_err_t rt_sfud_flash_delete(rt_spi_flash_device_t spi_flash_dev); /** - * Find sfud flash device + * Find sfud flash device by SPI device name * * @param spi_dev_name using SPI device name * @@ -44,4 +44,13 @@ rt_err_t rt_sfud_flash_delete(rt_spi_flash_device_t spi_flash_dev); */ sfud_flash_t rt_sfud_flash_find(const char *spi_dev_name); +/** + * Find sfud flash device by flash device name + * + * @param flash_dev_name using flash device name + * + * @return sfud flash device if success, otherwise return RT_NULL + */ +sfud_flash_t rt_sfud_flash_find_by_dev_name(const char *flash_dev_name); + #endif /* _SPI_FLASH_SFUD_H_ */ diff --git a/components/drivers/wlan/wlan_cfg.c b/components/drivers/wlan/wlan_cfg.c index 27da9bc24e..00e9dbc83e 100644 --- a/components/drivers/wlan/wlan_cfg.c +++ b/components/drivers/wlan/wlan_cfg.c @@ -11,14 +11,12 @@ #include <rtthread.h> #include <wlan_cfg.h> -#define DBG_ENABLE #ifdef RT_WLAN_CFG_DEBUG #define DBG_LEVEL DBG_LOG #else #define DBG_LEVEL DBG_INFO #endif #define DBG_SECTION_NAME "WLAN.cfg" -#define DBG_COLOR #include <rtdbg.h> #define WLAN_CFG_LOCK() (rt_mutex_take(&cfg_mutex, RT_WAITING_FOREVER)) diff --git a/components/drivers/wlan/wlan_dev.c b/components/drivers/wlan/wlan_dev.c index eac1d0f975..3f4adf35ad 100644 --- a/components/drivers/wlan/wlan_dev.c +++ b/components/drivers/wlan/wlan_dev.c @@ -13,14 +13,12 @@ #include <wlan_dev.h> #include <wlan_prot.h> -#define DBG_ENABLE #ifdef RT_WLAN_DEV_DEBUG #define DBG_LEVEL DBG_LOG #else #define DBG_LEVEL DBG_INFO #endif #define DBG_SECTION_NAME "WLAN.dev" -#define DBG_COLOR #include <rtdbg.h> #ifndef RT_DEVICE diff --git a/components/drivers/wlan/wlan_lwip.c b/components/drivers/wlan/wlan_lwip.c index 2f8bcefd0d..052c2afd2e 100644 --- a/components/drivers/wlan/wlan_lwip.c +++ b/components/drivers/wlan/wlan_lwip.c @@ -21,14 +21,12 @@ #include <dhcp_server.h> #endif -#define DBG_ENABLE #ifdef RT_WLAN_LWIP_DEBUG #define DBG_LEVEL DBG_LOG #else #define DBG_LEVEL DBG_INFO #endif #define DBG_SECTION_NAME "WLAN.lwip" -#define DBG_COLOR #include <rtdbg.h> #ifndef IPADDR_STRLEN_MAX diff --git a/components/drivers/wlan/wlan_mgnt.c b/components/drivers/wlan/wlan_mgnt.c index bdddac1fa2..ced5bfa1c2 100644 --- a/components/drivers/wlan/wlan_mgnt.c +++ b/components/drivers/wlan/wlan_mgnt.c @@ -16,14 +16,13 @@ #include <wlan_prot.h> #include <wlan_workqueue.h> -#define DBG_ENABLE + #ifdef RT_WLAN_MGNT_DEBUG #define DBG_LEVEL DBG_LOG #else #define DBG_LEVEL DBG_INFO #endif #define DBG_SECTION_NAME "WLAN.mgnt" -#define DBG_COLOR #include <rtdbg.h> #ifndef RT_WLAN_DEVICE @@ -1800,7 +1799,7 @@ rt_err_t rt_wlan_register_event_handler(rt_wlan_event_t event, rt_wlan_event_han } RT_WLAN_LOG_D("%s is run event:%d", __FUNCTION__, event); - MGNT_UNLOCK(); + MGNT_LOCK(); /* Registering Callbacks */ level = rt_hw_interrupt_disable(); event_tab[event].handler = handler; diff --git a/components/drivers/wlan/wlan_prot.c b/components/drivers/wlan/wlan_prot.c index ec5e419bc4..48adbc48f3 100644 --- a/components/drivers/wlan/wlan_prot.c +++ b/components/drivers/wlan/wlan_prot.c @@ -13,14 +13,12 @@ #include <wlan_dev.h> #include <wlan_prot.h> -#define DBG_ENABLE #ifdef RT_WLAN_PROT_DEBUG #define DBG_LEVEL DBG_LOG #else #define DBG_LEVEL DBG_INFO #endif #define DBG_SECTION_NAME "WLAN.prot" -#define DBG_COLOR #include <rtdbg.h> #if RT_WLAN_PROT_NAME_LEN < 4 diff --git a/components/drivers/wlan/wlan_workqueue.c b/components/drivers/wlan/wlan_workqueue.c index f65ac95d08..23823afae0 100644 --- a/components/drivers/wlan/wlan_workqueue.c +++ b/components/drivers/wlan/wlan_workqueue.c @@ -13,10 +13,8 @@ #include <wlan_workqueue.h> #include <ipc/workqueue.h> -#define DBG_ENABLE #define DBG_LEVEL DBG_INFO #define DBG_SECTION_NAME "WLAN.work" -#define DBG_COLOR #include <rtdbg.h> struct rt_wlan_work diff --git a/components/finsh/SConscript b/components/finsh/SConscript index 639cbebd4a..e1e2b3bbdb 100644 --- a/components/finsh/SConscript +++ b/components/finsh/SConscript @@ -28,19 +28,12 @@ msh_file.c ''') CPPPATH = [cwd] -if rtconfig.CROSS_TOOL == 'keil': - LINKFLAGS = ' --keep *.o(FSymTab)' - - if not GetDepend('FINSH_USING_MSH_ONLY'): - LINKFLAGS = LINKFLAGS + ' --keep *.o(VSymTab) ' -else: - LINKFLAGS = '' if GetDepend('FINSH_USING_MSH'): src = src + msh_src if not GetDepend('FINSH_USING_MSH_ONLY'): src = src + fsh_src -group = DefineGroup('finsh', src, depend = ['RT_USING_FINSH'], CPPPATH = CPPPATH, LINKFLAGS = LINKFLAGS) +group = DefineGroup('finsh', src, depend = ['RT_USING_FINSH'], CPPPATH = CPPPATH) Return('group') diff --git a/components/libc/compilers/armlibc/SConscript b/components/libc/compilers/armlibc/SConscript index 081efa7358..52f7a6d93a 100644 --- a/components/libc/compilers/armlibc/SConscript +++ b/components/libc/compilers/armlibc/SConscript @@ -14,7 +14,7 @@ if GetDepend('RT_USING_DFS') == False: if GetDepend('RT_USING_MODULE') == False: SrcRemove(src, ['libc_syms.c']) -if rtconfig.PLATFORM == 'armcc': +if rtconfig.PLATFORM == 'armcc' or rtconfig.PLATFORM == 'armclang': group = DefineGroup('libc', src, depend = ['RT_USING_LIBC'], CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES) diff --git a/components/libc/compilers/armlibc/stubs.c b/components/libc/compilers/armlibc/stubs.c index 555108f712..b6ffb37b0f 100644 --- a/components/libc/compilers/armlibc/stubs.c +++ b/components/libc/compilers/armlibc/stubs.c @@ -251,7 +251,7 @@ void _ttywrch(int ch) #endif } -void _sys_exit(int return_code) +RT_WEAK void _sys_exit(int return_code) { /* TODO: perhaps exit the thread which is invoking this function */ while (1); diff --git a/components/libc/libdl/dlelf.c b/components/libc/libdl/dlelf.c index 6d83424b80..4557ee3458 100644 --- a/components/libc/libdl/dlelf.c +++ b/components/libc/libdl/dlelf.c @@ -12,9 +12,7 @@ #include "dlelf.h" #define DBG_SECTION_NAME "DLMD" -#define DBG_ENABLE // enable debug macro #define DBG_LEVEL DBG_INFO -#define DBG_COLOR #include <rtdbg.h> // must after of DEBUG_ENABLE or some other options rt_err_t dlmodule_load_shared_object(struct rt_dlmodule* module, void *module_ptr) diff --git a/components/libc/libdl/dlmodule.c b/components/libc/libdl/dlmodule.c index 61ffbfc772..0029c01728 100644 --- a/components/libc/libdl/dlmodule.c +++ b/components/libc/libdl/dlmodule.c @@ -17,9 +17,7 @@ #include <dfs_posix.h> #define DBG_SECTION_NAME "DLMD" -#define DBG_ENABLE // enable debug macro #define DBG_LEVEL DBG_INFO -#define DBG_COLOR #include <rtdbg.h> // must after of DEBUG_ENABLE or some other options static struct rt_module_symtab *_rt_module_symtab_begin = RT_NULL; diff --git a/components/net/at/Kconfig b/components/net/at/Kconfig index a1f1b8199d..b1909f86bf 100644 --- a/components/net/at/Kconfig +++ b/components/net/at/Kconfig @@ -74,6 +74,10 @@ if RT_USING_AT config AT_PRINT_RAW_CMD bool "Enable print RAW format AT command communication data" default n + + config AT_CMD_MAX_LEN + int "The maximum lenght of AT Commonds buffer" + default 128 endif diff --git a/components/net/at/include/at_log.h b/components/net/at/include/at_log.h index 278763d30e..fe8766ba95 100644 --- a/components/net/at/include/at_log.h +++ b/components/net/at/include/at_log.h @@ -12,9 +12,6 @@ * NOTE: DO NOT include this file on the header file. */ -#define DBG_ENABLE -#define DBG_COLOR - #ifndef LOG_TAG #define DBG_SECTION_NAME "at" #else 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 45c09e6137..dc20ee97a1 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 @@ -500,7 +500,9 @@ u32_t sys_arch_mbox_fetch(sys_mbox_t *mbox, void **msg, u32_t timeout) ret = rt_mb_recv(*mbox, (rt_uint32_t *)msg, t); if(ret == -RT_ETIMEOUT) + { return SYS_ARCH_TIMEOUT; + } else { LWIP_ASSERT("rt_mb_recv returned with error!", ret == RT_EOK); @@ -531,7 +533,9 @@ u32_t sys_arch_mbox_tryfetch(sys_mbox_t *mbox, void **msg) ret = rt_mb_recv(*mbox, (rt_uint32_t *)msg, 0); if(ret == -RT_ETIMEOUT) + { return SYS_ARCH_TIMEOUT; + } else { if (ret == RT_EOK) 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 bdad32ec20..1c969e6e25 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 @@ -17,27 +17,35 @@ struct eth_device { - /* inherit from rt_device */ - struct rt_device parent; + /* inherit from rt_device */ + struct rt_device parent; - /* network interface for lwip */ - struct netif *netif; - struct rt_semaphore tx_ack; + /* network interface for lwip */ + struct netif *netif; + struct rt_semaphore tx_ack; - rt_uint16_t flags; - rt_uint8_t link_changed; - rt_uint8_t link_status; + rt_uint16_t flags; + rt_uint8_t link_changed; + rt_uint8_t link_status; - /* eth device interface */ - struct pbuf* (*eth_rx)(rt_device_t dev); - rt_err_t (*eth_tx)(rt_device_t dev, struct pbuf* p); + /* eth device interface */ + struct pbuf* (*eth_rx)(rt_device_t dev); + rt_err_t (*eth_tx)(rt_device_t dev, struct pbuf* p); }; -rt_err_t eth_device_ready(struct eth_device* dev); -rt_err_t eth_device_init(struct eth_device * dev, char *name); -rt_err_t eth_device_init_with_flag(struct eth_device *dev, char *name, rt_uint16_t flag); -rt_err_t eth_device_linkchange(struct eth_device* dev, rt_bool_t up); +#ifdef __cplusplus +extern "C" { +#endif + + rt_err_t eth_device_ready(struct eth_device* dev); + rt_err_t eth_device_init(struct eth_device * dev, const char *name); + rt_err_t eth_device_init_with_flag(struct eth_device *dev, const char *name, rt_uint16_t flag); + rt_err_t eth_device_linkchange(struct eth_device* dev, rt_bool_t up); -int eth_system_device_init(void); + int eth_system_device_init(void); + +#ifdef __cplusplus +} +#endif #endif /* __NETIF_ETHERNETIF_H__ */ diff --git a/components/net/lwip-1.4.1/src/netif/ethernetif.c b/components/net/lwip-1.4.1/src/netif/ethernetif.c index 943d95f9ed..506f15b44c 100644 --- a/components/net/lwip-1.4.1/src/netif/ethernetif.c +++ b/components/net/lwip-1.4.1/src/netif/ethernetif.c @@ -177,7 +177,7 @@ static err_t eth_netif_device_init(struct netif *netif) } /* Keep old drivers compatible in RT-Thread */ -rt_err_t eth_device_init_with_flag(struct eth_device *dev, char *name, rt_uint16_t flags) +rt_err_t eth_device_init_with_flag(struct eth_device *dev, const char *name, rt_uint16_t flags) { struct netif* netif; @@ -242,7 +242,7 @@ rt_err_t eth_device_init_with_flag(struct eth_device *dev, char *name, rt_uint16 return RT_EOK; } -rt_err_t eth_device_init(struct eth_device * dev, char *name) +rt_err_t eth_device_init(struct eth_device * dev, const char *name) { rt_uint16_t flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP; diff --git a/components/net/lwip-2.0.2/src/include/netif/ethernetif.h b/components/net/lwip-2.0.2/src/include/netif/ethernetif.h index bdad32ec20..1c969e6e25 100644 --- a/components/net/lwip-2.0.2/src/include/netif/ethernetif.h +++ b/components/net/lwip-2.0.2/src/include/netif/ethernetif.h @@ -17,27 +17,35 @@ struct eth_device { - /* inherit from rt_device */ - struct rt_device parent; + /* inherit from rt_device */ + struct rt_device parent; - /* network interface for lwip */ - struct netif *netif; - struct rt_semaphore tx_ack; + /* network interface for lwip */ + struct netif *netif; + struct rt_semaphore tx_ack; - rt_uint16_t flags; - rt_uint8_t link_changed; - rt_uint8_t link_status; + rt_uint16_t flags; + rt_uint8_t link_changed; + rt_uint8_t link_status; - /* eth device interface */ - struct pbuf* (*eth_rx)(rt_device_t dev); - rt_err_t (*eth_tx)(rt_device_t dev, struct pbuf* p); + /* eth device interface */ + struct pbuf* (*eth_rx)(rt_device_t dev); + rt_err_t (*eth_tx)(rt_device_t dev, struct pbuf* p); }; -rt_err_t eth_device_ready(struct eth_device* dev); -rt_err_t eth_device_init(struct eth_device * dev, char *name); -rt_err_t eth_device_init_with_flag(struct eth_device *dev, char *name, rt_uint16_t flag); -rt_err_t eth_device_linkchange(struct eth_device* dev, rt_bool_t up); +#ifdef __cplusplus +extern "C" { +#endif + + rt_err_t eth_device_ready(struct eth_device* dev); + rt_err_t eth_device_init(struct eth_device * dev, const char *name); + rt_err_t eth_device_init_with_flag(struct eth_device *dev, const char *name, rt_uint16_t flag); + rt_err_t eth_device_linkchange(struct eth_device* dev, rt_bool_t up); -int eth_system_device_init(void); + int eth_system_device_init(void); + +#ifdef __cplusplus +} +#endif #endif /* __NETIF_ETHERNETIF_H__ */ diff --git a/components/net/lwip-2.0.2/src/netif/ethernetif.c b/components/net/lwip-2.0.2/src/netif/ethernetif.c index 8b05e592d4..c22951186a 100644 --- a/components/net/lwip-2.0.2/src/netif/ethernetif.c +++ b/components/net/lwip-2.0.2/src/netif/ethernetif.c @@ -205,7 +205,7 @@ static err_t eth_netif_device_init(struct netif *netif) } /* Keep old drivers compatible in RT-Thread */ -rt_err_t eth_device_init_with_flag(struct eth_device *dev, char *name, rt_uint16_t flags) +rt_err_t eth_device_init_with_flag(struct eth_device *dev, const char *name, rt_uint16_t flags) { struct netif* netif; @@ -269,7 +269,7 @@ rt_err_t eth_device_init_with_flag(struct eth_device *dev, char *name, rt_uint16 return RT_EOK; } -rt_err_t eth_device_init(struct eth_device * dev, char *name) +rt_err_t eth_device_init(struct eth_device * dev, const char *name) { rt_uint16_t flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP; diff --git a/components/net/lwip-2.1.0/src/arch/sys_arch.c b/components/net/lwip-2.1.0/src/arch/sys_arch.c index ee96249bec..17ebdfbacf 100644 --- a/components/net/lwip-2.1.0/src/arch/sys_arch.c +++ b/components/net/lwip-2.1.0/src/arch/sys_arch.c @@ -49,6 +49,8 @@ #include "lwip/dhcp.h" #include "lwip/inet.h" +#include "netif/etharp.h" + #include <string.h> #include <stdio.h> @@ -75,6 +77,10 @@ static err_t netif_device_init(struct netif *netif) /* copy device flags to netif flags */ netif->flags = ethif->flags; + netif->mtu = ETHERNET_MTU; + + /* set output */ + netif->output = etharp_output; return ERR_OK; } diff --git a/components/net/lwip-2.1.0/src/include/netif/ethernetif.h b/components/net/lwip-2.1.0/src/include/netif/ethernetif.h index bdad32ec20..1c969e6e25 100644 --- a/components/net/lwip-2.1.0/src/include/netif/ethernetif.h +++ b/components/net/lwip-2.1.0/src/include/netif/ethernetif.h @@ -17,27 +17,35 @@ struct eth_device { - /* inherit from rt_device */ - struct rt_device parent; + /* inherit from rt_device */ + struct rt_device parent; - /* network interface for lwip */ - struct netif *netif; - struct rt_semaphore tx_ack; + /* network interface for lwip */ + struct netif *netif; + struct rt_semaphore tx_ack; - rt_uint16_t flags; - rt_uint8_t link_changed; - rt_uint8_t link_status; + rt_uint16_t flags; + rt_uint8_t link_changed; + rt_uint8_t link_status; - /* eth device interface */ - struct pbuf* (*eth_rx)(rt_device_t dev); - rt_err_t (*eth_tx)(rt_device_t dev, struct pbuf* p); + /* eth device interface */ + struct pbuf* (*eth_rx)(rt_device_t dev); + rt_err_t (*eth_tx)(rt_device_t dev, struct pbuf* p); }; -rt_err_t eth_device_ready(struct eth_device* dev); -rt_err_t eth_device_init(struct eth_device * dev, char *name); -rt_err_t eth_device_init_with_flag(struct eth_device *dev, char *name, rt_uint16_t flag); -rt_err_t eth_device_linkchange(struct eth_device* dev, rt_bool_t up); +#ifdef __cplusplus +extern "C" { +#endif + + rt_err_t eth_device_ready(struct eth_device* dev); + rt_err_t eth_device_init(struct eth_device * dev, const char *name); + rt_err_t eth_device_init_with_flag(struct eth_device *dev, const char *name, rt_uint16_t flag); + rt_err_t eth_device_linkchange(struct eth_device* dev, rt_bool_t up); -int eth_system_device_init(void); + int eth_system_device_init(void); + +#ifdef __cplusplus +} +#endif #endif /* __NETIF_ETHERNETIF_H__ */ diff --git a/components/net/lwip-2.1.0/src/netif/ethernetif.c b/components/net/lwip-2.1.0/src/netif/ethernetif.c index 910d7c3470..5a8e9d6149 100644 --- a/components/net/lwip-2.1.0/src/netif/ethernetif.c +++ b/components/net/lwip-2.1.0/src/netif/ethernetif.c @@ -156,6 +156,9 @@ static err_t eth_netif_device_init(struct netif *netif) /* copy device flags to netif flags */ netif->flags = (ethif->flags & 0xff); netif->mtu = ETHERNET_MTU; + + /* set output */ + netif->output = etharp_output; #if LWIP_IPV6 netif->output_ip6 = ethip6_output; @@ -207,7 +210,7 @@ static err_t eth_netif_device_init(struct netif *netif) } /* Keep old drivers compatible in RT-Thread */ -rt_err_t eth_device_init_with_flag(struct eth_device *dev, char *name, rt_uint16_t flags) +rt_err_t eth_device_init_with_flag(struct eth_device *dev, const char *name, rt_uint16_t flags) { struct netif* netif; @@ -239,6 +242,9 @@ rt_err_t eth_device_init_with_flag(struct eth_device *dev, char *name, rt_uint16 /* maximum transfer unit */ netif->mtu = ETHERNET_MTU; + /* set linkoutput */ + netif->linkoutput = ethernetif_linkoutput; + /* get hardware MAC address */ rt_device_control(&(dev->parent), NIOCTL_GADDR, netif->hwaddr); @@ -262,16 +268,12 @@ rt_err_t eth_device_init_with_flag(struct eth_device *dev, char *name, rt_uint16 IP4_ADDR(&netmask, 0, 0, 0, 0); #endif netifapi_netif_add(netif, &ipaddr, &netmask, &gw, dev, eth_netif_device_init, tcpip_input); - - /* set output */ - netif->output = etharp_output; - netif->linkoutput = ethernetif_linkoutput; } return RT_EOK; } -rt_err_t eth_device_init(struct eth_device * dev, char *name) +rt_err_t eth_device_init(struct eth_device * dev, const char *name) { rt_uint16_t flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP; diff --git a/components/net/sal_socket/socket/net_sockets.c b/components/net/sal_socket/socket/net_sockets.c index 232b87ba1e..12024c8173 100644 --- a/components/net/sal_socket/socket/net_sockets.c +++ b/components/net/sal_socket/socket/net_sockets.c @@ -78,29 +78,39 @@ RTM_EXPORT(bind); int shutdown(int s, int how) { - int socket; + int error = 0; + int socket = -1; struct dfs_fd *d; + socket = dfs_net_getsocket(s); + if (socket < 0) + { + rt_set_errno(-ENOTSOCK); + return -1; + } + d = fd_get(s); if (d == NULL) { rt_set_errno(-EBADF); - return -1; } - - socket = dfs_net_getsocket(s); + if (sal_shutdown(socket, how) == 0) { - /* socket has been closed, delete it from file system fd */ - fd_put(d); - fd_put(d); - - return 0; + error = 0; + } + else + { + rt_set_errno(-ENOTSOCK); + error = -1; } - return -1; + /* socket has been closed, delete it from file system fd */ + fd_put(d); + fd_put(d); + return error; } RTM_EXPORT(shutdown); @@ -228,7 +238,7 @@ int socket(int domain, int type, int protocol) rt_set_errno(-ENOMEM); - return -1; + return -1; } /* release the ref-count of fd */ @@ -240,25 +250,39 @@ RTM_EXPORT(socket); int closesocket(int s) { - int socket = dfs_net_getsocket(s); + int error = 0; + int socket = -1; struct dfs_fd *d; + socket = dfs_net_getsocket(s); + if (socket < 0) + { + rt_set_errno(-ENOTSOCK); + return -1; + } + d = fd_get(s); - if(!d) + if (d == RT_NULL) { + rt_set_errno(-EBADF); return -1; } if (sal_closesocket(socket) == 0) { - /* socket has been closed, delete it from file system fd */ - fd_put(d); - fd_put(d); - - return 0; + error = 0; + } + else + { + rt_set_errno(-ENOTSOCK); + error = -1; } - return -1; + /* socket has been closed, delete it from file system fd */ + fd_put(d); + fd_put(d); + + return error; } RTM_EXPORT(closesocket); diff --git a/components/net/sal_socket/src/sal_socket.c b/components/net/sal_socket/src/sal_socket.c index dba8e66254..771a56f061 100644 --- a/components/net/sal_socket/src/sal_socket.c +++ b/components/net/sal_socket/src/sal_socket.c @@ -19,10 +19,8 @@ #endif #include <sal.h> -#define DBG_ENABLE -#define DBG_SECTION_NAME "SAL_SOC" +#define DBG_SECTION_NAME "SAL_SKT" #define DBG_LEVEL DBG_INFO -#define DBG_COLOR #include <rtdbg.h> #define SOCKET_TABLE_STEP_LEN 4 diff --git a/components/utilities/Kconfig b/components/utilities/Kconfig index 1175006a58..504a56691d 100644 --- a/components/utilities/Kconfig +++ b/components/utilities/Kconfig @@ -222,12 +222,6 @@ config RT_USING_ULOG select ULOG_OUTPUT_TIME select ULOG_USING_FILTER default n - - config ULOG_SW_VERSION_NUM - hex - default 0x00101 - help - sfotware module version number endif config RT_USING_UTEST diff --git a/components/utilities/ulog/ulog.c b/components/utilities/ulog/ulog.c index b813678ecd..87d0932506 100644 --- a/components/utilities/ulog/ulog.c +++ b/components/utilities/ulog/ulog.c @@ -315,7 +315,10 @@ RT_WEAK rt_size_t ulog_formater(char *log_buf, rt_uint32_t level, const char *ta /* is not in interrupt context */ if (rt_interrupt_get_nest() == 0) { - log_len += ulog_strcpy(log_len, log_buf + log_len, rt_thread_self()->name); + rt_size_t name_len = rt_strnlen(rt_thread_self()->name, RT_NAME_MAX); + + rt_strncpy(log_buf + log_len, rt_thread_self()->name, name_len); + log_len += name_len; } else { diff --git a/components/utilities/ulog/ulog_def.h b/components/utilities/ulog/ulog_def.h index e7c033f71c..40b39de972 100644 --- a/components/utilities/ulog/ulog_def.h +++ b/components/utilities/ulog/ulog_def.h @@ -47,7 +47,7 @@ extern "C" { #define DBG_INFO LOG_LVL_INFO #define DBG_LOG LOG_LVL_DBG #define dbg_log(level, ...) \ - if ((level) <= DBG_LEVEL) \ + if ((level) <= LOG_LVL) \ { \ ulog_output(level, LOG_TAG, RT_FALSE, __VA_ARGS__);\ } diff --git a/components/utilities/utest/utest.c b/components/utilities/utest/utest.c index f7348b3be4..7bc2c93656 100644 --- a/components/utilities/utest/utest.c +++ b/components/utilities/utest/utest.c @@ -17,17 +17,13 @@ #undef DBG_SECTION_NAME #undef DBG_LEVEL -#undef DBG_COLOR -#undef DBG_ENABLE -#define DBG_ENABLE #define DBG_SECTION_NAME "utest" #ifdef UTEST_DEBUG #define DBG_LEVEL DBG_LOG #else #define DBG_LEVEL DBG_INFO #endif -#define DBG_COLOR #include <rtdbg.h> #if RT_CONSOLEBUF_SIZE < 256 diff --git a/components/utilities/utest/utest_log.h b/components/utilities/utest/utest_log.h index 9f38d3f9c8..c4bd25a80b 100644 --- a/components/utilities/utest/utest_log.h +++ b/components/utilities/utest/utest_log.h @@ -17,17 +17,13 @@ #undef DBG_SECTION_NAME #undef DBG_LEVEL -#undef DBG_COLOR -#undef DBG_ENABLE -#define DBG_ENABLE #define DBG_SECTION_NAME "testcase" #ifdef UTEST_DEBUG #define DBG_LEVEL DBG_LOG #else #define DBG_LEVEL DBG_INFO #endif -#define DBG_COLOR #include <rtdbg.h> #define UTEST_LOG_ALL (1u) diff --git a/components/utilities/ymodem/ymodem.c b/components/utilities/ymodem/ymodem.c index c98c7f6cb6..716c702328 100644 --- a/components/utilities/ymodem/ymodem.c +++ b/components/utilities/ymodem/ymodem.c @@ -125,6 +125,7 @@ static rt_err_t _rym_do_handshake( rt_size_t i; rt_uint16_t recv_crc, cal_crc; rt_size_t data_sz; + rt_tick_t tick; ctx->stage = RYM_STAGE_ESTABLISHING; /* send C every second, so the sender could know we are waiting for it. */ @@ -149,8 +150,17 @@ static rt_err_t _rym_do_handshake( return -RYM_ERR_TMO; } - i = _rym_read_data(ctx, data_sz-1); - if (i != (data_sz-1)) + /* receive all data */ + i = 0; + /* automatic exit after receiving specified length data, timeout: 100ms */ + tick = rt_tick_get(); + while (rt_tick_get() <= (tick + rt_tick_from_millisecond(100)) && i < (data_sz-1)) + { + i += _rym_read_data(ctx, data_sz - 1); + rt_thread_mdelay(5); + } + + if (i != (data_sz - 1)) return -RYM_ERR_DSZ; /* sanity check */ |
