[dac] add get resolution method

This commit is contained in:
Meco Man
2022-04-23 23:03:59 +08:00
committed by guo
parent 778be73cac
commit 175ca2ee09
4 changed files with 29 additions and 8 deletions
+13 -7
View File
@@ -40,21 +40,27 @@ static rt_size_t _dac_write(rt_device_t dev, rt_off_t pos, const void *buffer, r
static rt_err_t _dac_control(rt_device_t dev, int cmd, void *args)
{
rt_err_t result = RT_EOK;
rt_err_t result = -RT_EINVAL;
rt_dac_device_t dac = (struct rt_dac_device *)dev;
if (dac->ops->enabled == RT_NULL)
{
return -RT_ENOSYS;
}
if (cmd == RT_DAC_CMD_ENABLE)
if (cmd == RT_DAC_CMD_ENABLE && dac->ops->enabled)
{
result = dac->ops->enabled(dac, (rt_uint32_t)args);
}
else if (cmd == RT_DAC_CMD_DISABLE)
else if (cmd == RT_DAC_CMD_DISABLE && dac->ops->enabled)
{
result = dac->ops->disabled(dac, (rt_uint32_t)args);
}
else if (cmd == RT_DAC_CMD_GET_RESOLUTION && dac->ops->get_resolution)
{
rt_uint8_t resolution = dac->ops->get_resolution(dac);
if(resolution != 0)
{
*((rt_uint8_t*)args) = resolution;
LOG_D("resolution: %d bits", resolution);
result = RT_EOK;
}
}
return result;
}