From 85360e34705ed594b1e4dbe7bf18ec6cc66f0fbe Mon Sep 17 00:00:00 2001 From: MacRsh Date: Sun, 4 Feb 2024 17:50:09 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8Di2c=E5=BA=94=E7=AD=94?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E3=80=822.=E4=BF=AE=E5=A4=8Dmsh=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E8=8E=B7=E5=8F=96=E5=8F=82=E6=95=B0=E7=B4=A2=E5=BC=95?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- device/i2c.c | 21 ++++++++++----------- device/spi.c | 2 +- document/components/msh/msh.md | 4 ++-- document/components/msh/msh_EN.md | 4 ++-- include/device/mr_i2c.h | 4 ++-- 5 files changed, 17 insertions(+), 18 deletions(-) diff --git a/device/i2c.c b/device/i2c.c index 4ecba5c..c87f70a 100644 --- a/device/i2c.c +++ b/device/i2c.c @@ -44,7 +44,7 @@ static ssize_t mr_i2c_bus_write(struct mr_dev *dev, const void *buf, size_t coun static ssize_t mr_i2c_bus_isr(struct mr_dev *dev, int event, void *args) { struct mr_i2c_bus *i2c_bus = (struct mr_i2c_bus *)dev; - struct mr_i2c_bus_ops *ops = (struct mr_i2c_bus_ops *)i2c_bus->dev.drv->ops; + struct mr_i2c_bus_ops *ops = (struct mr_i2c_bus_ops *)dev->drv->ops; switch (event) { @@ -123,7 +123,8 @@ MR_INLINE int i2c_dev_take_bus(struct mr_i2c_dev *i2c_dev) if (i2c_dev->config.baud_rate != i2c_bus->config.baud_rate || i2c_dev->config.host_slave != i2c_bus->config.host_slave) { - int addr = (i2c_dev->config.host_slave == MR_I2C_SLAVE) ? i2c_dev->addr : 0x00; + int addr = (i2c_dev->config.host_slave == MR_I2C_HOST) ? 0x00 : i2c_dev->addr; + int ret = ops->configure(i2c_bus, &i2c_dev->config, addr, i2c_dev->addr_bits); if (ret < 0) { @@ -195,19 +196,18 @@ MR_INLINE ssize_t i2c_dev_read(struct mr_i2c_dev *i2c_dev, uint8_t *buf, size_t { struct mr_i2c_bus *i2c_bus = (struct mr_i2c_bus *)i2c_dev->dev.parent; struct mr_i2c_bus_ops *ops = (struct mr_i2c_bus_ops *)i2c_bus->dev.drv->ops; - uint8_t *rd_buf = (uint8_t *)buf; ssize_t rd_size; - for (rd_size = 0; rd_size < count; rd_size += sizeof(*rd_buf)) + for (rd_size = 0; rd_size < count; rd_size += sizeof(*buf)) { - int ack = ((count - rd_size) == sizeof(*rd_buf)); + int ack = ((count - rd_size) != sizeof(*buf)); - int ret = ops->read(i2c_bus, rd_buf, ack); + int ret = ops->read(i2c_bus, buf, ack); if (ret < 0) { return (rd_size == 0) ? ret : rd_size; } - rd_buf++; + buf++; } return rd_size; } @@ -216,17 +216,16 @@ MR_INLINE ssize_t i2c_dev_write(struct mr_i2c_dev *i2c_dev, const uint8_t *buf, { struct mr_i2c_bus *i2c_bus = (struct mr_i2c_bus *)i2c_dev->dev.parent; struct mr_i2c_bus_ops *ops = (struct mr_i2c_bus_ops *)i2c_bus->dev.drv->ops; - uint8_t *wr_buf = (uint8_t *)buf; ssize_t wr_size; - for (wr_size = 0; wr_size < count; wr_size += sizeof(*wr_buf)) + for (wr_size = 0; wr_size < count; wr_size += sizeof(*buf)) { - int ret = ops->write(i2c_bus, *wr_buf); + int ret = ops->write(i2c_bus, *buf); if (ret < 0) { return (wr_size == 0) ? ret : wr_size; } - wr_buf++; + buf++; } return wr_size; } diff --git a/device/spi.c b/device/spi.c index 90bd6fe..b6c332d 100644 --- a/device/spi.c +++ b/device/spi.c @@ -58,7 +58,7 @@ static ssize_t mr_spi_bus_write(struct mr_dev *dev, const void *buf, size_t coun static ssize_t mr_spi_bus_isr(struct mr_dev *dev, int event, void *args) { struct mr_spi_bus *spi_bus = (struct mr_spi_bus *)dev; - struct mr_spi_bus_ops *ops = (struct mr_spi_bus_ops *)spi_bus->dev.drv->ops; + struct mr_spi_bus_ops *ops = (struct mr_spi_bus_ops *)dev->drv->ops; switch (event) { diff --git a/document/components/msh/msh.md b/document/components/msh/msh.md index 0519f06..545f831 100644 --- a/document/components/msh/msh.md +++ b/document/components/msh/msh.md @@ -85,9 +85,9 @@ char *p = MR_MSH_GET_ARG(index); ## 使用示例: ```c -int hello_fn(int argc, void *argv) +void hello_fn(int argc, void *argv) { - for (size_t i = 0; i < argc; i++) + for (size_t i = 1; i <= argc; i++) { mr_msh_printf("hello %s\r\n", MR_MSH_GET_ARG(i)); } diff --git a/document/components/msh/msh_EN.md b/document/components/msh/msh_EN.md index d3a891d..a870047 100644 --- a/document/components/msh/msh_EN.md +++ b/document/components/msh/msh_EN.md @@ -87,9 +87,9 @@ char *p = MR_MSH_GET_ARG(index); ## Usage Example: ```c -int hello_fn(int argc, void *argv) +void hello_fn(int argc, void *argv) { - for (size_t i = 0; i < argc; i++) + for (size_t i = 1; i <= argc; i++) { mr_msh_printf("hello %s\r\n", MR_MSH_GET_ARG(i)); } diff --git a/include/device/mr_i2c.h b/include/device/mr_i2c.h index 5518588..8b078f2 100644 --- a/include/device/mr_i2c.h +++ b/include/device/mr_i2c.h @@ -121,8 +121,8 @@ struct mr_i2c_dev struct mr_i2c_config config; /**< Configuration */ struct mr_ringbuf rd_fifo; /**< Read FIFO */ size_t rd_bufsz; /**< Read buffer size */ - uint32_t addr: 16; /**< Address */ - uint32_t addr_bits: 16; /**< Address bits */ + int addr; /**< Address */ + int addr_bits; /**< Address bits */ }; int mr_i2c_bus_register(struct mr_i2c_bus *i2c_bus, const char *path, struct mr_drv *drv);