1.设备写入位置pos限制为正数。
This commit is contained in:
@@ -88,6 +88,11 @@ static mr_ssize_t mr_adc_read(mr_device_t device, mr_off_t pos, void *buffer, mr
|
||||
mr_uint32_t *read_buffer = (mr_uint32_t *)buffer;
|
||||
mr_size_t read_size = 0;
|
||||
|
||||
if (pos < 0)
|
||||
{
|
||||
return -MR_ERR_INVALID;
|
||||
}
|
||||
|
||||
while ((read_size += sizeof(*read_buffer)) <= size)
|
||||
{
|
||||
*read_buffer = adc->ops->read(adc, pos);
|
||||
|
||||
@@ -88,6 +88,11 @@ static mr_ssize_t mr_dac_write(mr_device_t device, mr_off_t pos, const void *buf
|
||||
mr_uint32_t *write_buffer = (mr_uint32_t *)buffer;
|
||||
mr_size_t write_size = 0;
|
||||
|
||||
if (pos < 0)
|
||||
{
|
||||
return -MR_ERR_INVALID;
|
||||
}
|
||||
|
||||
while ((write_size += sizeof(*write_buffer)) <= size)
|
||||
{
|
||||
dac->ops->write(dac, pos, *write_buffer);
|
||||
|
||||
@@ -232,7 +232,7 @@ static mr_ssize_t mr_i2c_device_read(mr_device_t device, mr_off_t pos, void *buf
|
||||
if (i2c_device->config.host_slave == MR_I2C_HOST)
|
||||
{
|
||||
/* Send position */
|
||||
if (pos != 0)
|
||||
if (pos >= 0)
|
||||
{
|
||||
mr_size_t bits = 0;
|
||||
|
||||
@@ -288,7 +288,7 @@ static mr_ssize_t mr_i2c_device_write(mr_device_t device, mr_off_t pos, const vo
|
||||
mr_i2c_device_send_address(i2c_device, MR_I2C_WR);
|
||||
|
||||
/* Send position */
|
||||
if (pos != 0)
|
||||
if (pos >= 0)
|
||||
{
|
||||
mr_size_t bits = 0;
|
||||
|
||||
|
||||
@@ -60,6 +60,11 @@ static mr_ssize_t mr_pin_read(mr_device_t device, mr_off_t pos, void *buffer, mr
|
||||
mr_level_t *read_buffer = (mr_level_t *)buffer;
|
||||
mr_size_t read_size = 0;
|
||||
|
||||
if (pos < 0)
|
||||
{
|
||||
return -MR_ERR_INVALID;
|
||||
}
|
||||
|
||||
while ((read_size += sizeof(*read_buffer)) <= size)
|
||||
{
|
||||
*read_buffer = pin->ops->read(pin, pos);
|
||||
@@ -75,6 +80,11 @@ static mr_ssize_t mr_pin_write(mr_device_t device, mr_off_t pos, const void *buf
|
||||
mr_level_t *write_buffer = (mr_level_t *)buffer;
|
||||
mr_size_t write_size = 0;
|
||||
|
||||
if (pos < 0)
|
||||
{
|
||||
return -MR_ERR_INVALID;
|
||||
}
|
||||
|
||||
while ((write_size += sizeof(*write_buffer)) <= size)
|
||||
{
|
||||
pin->ops->write(pin, pos, *write_buffer);
|
||||
|
||||
@@ -96,6 +96,11 @@ static mr_err_t mr_pwm_read(mr_device_t device, mr_off_t pos, void *buffer, mr_s
|
||||
mr_uint32_t *read_buffer = (mr_uint32_t *)buffer;
|
||||
mr_size_t read_size = 0;
|
||||
|
||||
if (pos < 0)
|
||||
{
|
||||
return -MR_ERR_INVALID;
|
||||
}
|
||||
|
||||
while ((read_size += sizeof(*read_buffer)) <= size)
|
||||
{
|
||||
*read_buffer = pwm->ops->read(pwm, pos);
|
||||
@@ -111,6 +116,11 @@ static mr_err_t mr_pwm_write(mr_device_t device, mr_off_t pos, const void *buffe
|
||||
mr_uint32_t *write_buffer = (mr_uint32_t *)buffer;
|
||||
mr_size_t write_size = 0;
|
||||
|
||||
if (pos < 0)
|
||||
{
|
||||
return -MR_ERR_INVALID;
|
||||
}
|
||||
|
||||
while ((write_size += sizeof(*write_buffer)) <= size)
|
||||
{
|
||||
pwm->ops->write(pwm, pos, *write_buffer);
|
||||
|
||||
@@ -445,7 +445,7 @@ static mr_ssize_t mr_spi_device_read(mr_device_t device, mr_off_t pos, void *buf
|
||||
mr_spi_device_cs_set_state(spi_device, MR_ENABLE);
|
||||
|
||||
/* Send position */
|
||||
if (pos != 0)
|
||||
if (pos >= 0)
|
||||
{
|
||||
mr_spi_bus_transfer(spi_device->bus, &pos, MR_NULL, (spi_device->config.pos_bits >> 3), MR_SPI_WR);
|
||||
}
|
||||
@@ -494,7 +494,7 @@ static mr_ssize_t mr_spi_device_write(mr_device_t device, mr_off_t pos, const vo
|
||||
mr_spi_device_cs_set_state(spi_device, MR_ENABLE);
|
||||
|
||||
/* Send position */
|
||||
if (pos != 0)
|
||||
if (pos >= 0)
|
||||
{
|
||||
mr_spi_bus_transfer(spi_device->bus, &pos, MR_NULL, (spi_device->config.pos_bits >> 3), MR_SPI_WR);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user