1.优化设备命令。

This commit is contained in:
MacRsh
2023-12-20 16:04:33 +08:00
parent 36d2737548
commit b1b1fb3602
10 changed files with 28 additions and 93 deletions

View File

@@ -104,7 +104,7 @@ static int mr_adc_ioctl(struct mr_dev *dev, int off, int cmd, void *args)
switch (cmd)
{
case MR_CTL_ADC_SET_CONFIG:
case MR_CTL_ADC_SET_CHANNEL_STATE:
{
if (args != MR_NULL)
{
@@ -114,18 +114,8 @@ static int mr_adc_ioctl(struct mr_dev *dev, int off, int cmd, void *args)
}
return MR_EINVAL;
}
case MR_CTL_ADC_SET_CHANNEL_STATE:
{
if (args != MR_NULL)
{
int state = *((int *)args);
return adc_channel_set_state(adc, off, state);
}
return MR_EINVAL;
}
case MR_CTL_ADC_GET_CONFIG:
case MR_CTL_ADC_GET_CHANNEL_STATE:
{
if (args != MR_NULL)
{
@@ -140,22 +130,6 @@ static int mr_adc_ioctl(struct mr_dev *dev, int off, int cmd, void *args)
return MR_EOK;
}
}
case MR_CTL_ADC_GET_CHANNEL_STATE:
{
if (args != MR_NULL)
{
int *state = (int *)args;
int ret = adc_channel_get_state(adc, off);
if (ret < 0)
{
return ret;
}
*state = ret;
return MR_EOK;
}
return MR_EINVAL;
}
default:
{

View File

@@ -104,7 +104,7 @@ static int mr_dac_ioctl(struct mr_dev *dev, int off, int cmd, void *args)
switch (cmd)
{
case MR_CTL_DAC_SET_CONFIG:
case MR_CTL_DAC_SET_CHANNEL_STATE:
{
if (args != MR_NULL)
{
@@ -114,32 +114,6 @@ static int mr_dac_ioctl(struct mr_dev *dev, int off, int cmd, void *args)
}
return MR_EINVAL;
}
case MR_CTL_DAC_SET_CHANNEL_STATE:
{
if (args != MR_NULL)
{
int state = *((int *)args);
return dac_channel_set_state(dac, off, state);
}
return MR_EINVAL;
}
case MR_CTL_DAC_GET_CONFIG:
{
if (args != MR_NULL)
{
struct mr_dac_config *config = (struct mr_dac_config *)args;
int ret = dac_channel_get_state(dac, off);
if (ret < 0)
{
return ret;
}
config->channel_state = ret;
return MR_EOK;
}
}
case MR_CTL_DAC_GET_CHANNEL_STATE:
{
if (args != MR_NULL)

View File

@@ -121,7 +121,7 @@ static int mr_pin_ioctl(struct mr_dev *dev, int off, int cmd, void *args)
switch (cmd)
{
case MR_CTL_PIN_SET_CONFIG:
case MR_CTL_PIN_SET_MODE:
{
if (args != MR_NULL)
{
@@ -131,16 +131,6 @@ static int mr_pin_ioctl(struct mr_dev *dev, int off, int cmd, void *args)
}
return MR_EINVAL;
}
case MR_CTL_PIN_SET_MODE:
{
if (args != MR_NULL)
{
int mode = *((int *)args);
return pin_set_mode(pin, off, mode);
}
return MR_EINVAL;
}
default:
{

View File

@@ -186,7 +186,7 @@ static int mr_serial_ioctl(struct mr_dev *dev, int off, int cmd, void *args)
}
case MR_CTL_SERIAL_GET_RD_DATASZ:
{
if (args!= MR_NULL)
if (args != MR_NULL)
{
size_t *datasz = (size_t *)args;
@@ -197,7 +197,7 @@ static int mr_serial_ioctl(struct mr_dev *dev, int off, int cmd, void *args)
}
case MR_CTL_SERIAL_GET_WR_DATASZ:
{
if (args!= MR_NULL)
if (args != MR_NULL)
{
size_t *datasz = (size_t *)args;

View File

@@ -183,7 +183,7 @@ static int mr_timer_ioctl(struct mr_dev *dev, int off, int cmd, void *args)
switch (cmd)
{
case MR_CTL_TIMER_SET_CONFIG:
case MR_CTL_TIMER_SET_MODE:
{
if (args != MR_NULL)
{
@@ -195,7 +195,7 @@ static int mr_timer_ioctl(struct mr_dev *dev, int off, int cmd, void *args)
return MR_EINVAL;
}
case MR_CTL_TIMER_GET_CONFIG:
case MR_CTL_TIMER_GET_MODE:
{
if (args != MR_NULL)
{

View File

@@ -48,9 +48,9 @@ int mr_dev_ioctl(int desc, int cmd, void *args);
| `<0` | 错误码 |
- `cmd`:命令码,支持以下命令:
- `MR_CTL_TIMER_SET_CONFIG`设置TIMER设备配置
- `MR_CTL_TIMER_SET_MODE`设置TIMER设备模式
- `MR_CTL_TIMER_SET_TIMEOUT_CALL`:设置超时回调函数。
- `MR_CTL_TIMER_GET_CONFIG`获取TIMER设备配置
- `MR_CTL_TIMER_GET_MODE`获取TIMER设备模式
- `MR_CTL_TIMER_GET_TIMEOUT_CALL`:获取超时回调函数。
### 设置/获取TIMER设备配置
@@ -60,13 +60,15 @@ TIMER设备配置
- `mode`:周期或单次模式。
```c
/* 设置默认配置 */
struct mr_timer_config config = MR_TIMER_CONFIG_DEFAULT;
/* 定义TIMER设备模式 */
#define TIMER_MODE MR_TIMER_MODE_ONESHOT
/* 设置TIMER设备配置 */
mr_dev_ioctl(ds, MR_CTL_TIMER_SET_CONFIG, &config);
/* 获取TIMER设备配置 */
mr_dev_ioctl(ds, MR_CTL_TIMER_GET_CONFIG, &config);
/* 设置TIMER设备模式 */
mr_dev_ioctl(ds, MR_CTL_TIMER_SET_MODE, mr_make_local(int, TIMER_MODE));
/* 获取TIMER设备模式 */
int mode;
mr_dev_ioctl(ds, MR_CTL_TIMER_GET_MODE, &mode);
```
注:如未手动配置,默认配置为:

View File

@@ -36,12 +36,10 @@ struct mr_adc_config
* @brief ADC control command.
*/
#define MR_CTL_ADC_SET_CHANNEL MR_CTL_SET_OFFSET /**< Set channel */
#define MR_CTL_ADC_SET_CONFIG MR_CTL_SET_CONFIG /**< Set configuration */
#define MR_CTL_ADC_SET_CHANNEL_STATE (0x01 << 8) /**< Set channel state */
#define MR_CTL_ADC_SET_CHANNEL_STATE MR_CTL_SET_CONFIG /**< Set channel state */
#define MR_CTL_ADC_GET_CHANNEL MR_CTL_GET_OFFSET /**< Get channel */
#define MR_CTL_ADC_GET_CONFIG MR_CTL_GET_CONFIG /**< Get configuration */
#define MR_CTL_ADC_GET_CHANNEL_STATE (-(0x01 << 8)) /**< Get channel state */
#define MR_CTL_ADC_GET_CHANNEL_STATE MR_CTL_GET_CONFIG /**< Get channel state */
/**
* @brief ADC data type.

View File

@@ -36,12 +36,10 @@ struct mr_dac_config
* @brief DAC control command.
*/
#define MR_CTL_DAC_SET_CHANNEL MR_CTL_SET_OFFSET /**< Set channel */
#define MR_CTL_DAC_SET_CONFIG MR_CTL_SET_CONFIG /**< Set configuration */
#define MR_CTL_DAC_SET_CHANNEL_STATE (0x01 << 8) /**< Set channel state */
#define MR_CTL_DAC_SET_CHANNEL_STATE MR_CTL_SET_CONFIG /**< Set channel state */
#define MR_CTL_DAC_GET_CHANNEL MR_CTL_GET_OFFSET /**< Get channel */
#define MR_CTL_DAC_GET_CONFIG MR_CTL_GET_CONFIG /**< Get configuration */
#define MR_CTL_DAC_GET_CHANNEL_STATE (-(0x01 << 8)) /**< Get channel state */
#define MR_CTL_DAC_GET_CHANNEL_STATE MR_CTL_GET_CONFIG /**< Get channel state */
/**
* @brief DAC data type.

View File

@@ -47,16 +47,15 @@ extern "C" {
*/
struct mr_pin_config
{
uint32_t mode: 1; /**< Mode */
uint32_t reserved: 31; /**< Reserved */
uint32_t mode: 4; /**< Mode */
uint32_t reserved: 28; /**< Reserved */
};
/**
* @brief PIN control command.
*/
#define MR_CTL_PIN_SET_NUMBER MR_CTL_SET_OFFSET /**< Set pin number */
#define MR_CTL_PIN_SET_CONFIG MR_CTL_SET_CONFIG /**< Set pin configuration */
#define MR_CTL_PIN_SET_MODE (0x01 << 8) /**< Set pin mode */
#define MR_CTL_PIN_SET_MODE MR_CTL_SET_CONFIG /**< Set pin mode */
#define MR_CTL_PIN_SET_EXTI_CALL MR_CTL_SET_RD_CALL /**< Set pin exti callback */
#define MR_CTL_PIN_GET_NUMBER MR_CTL_GET_OFFSET /**< Get pin number */

View File

@@ -43,16 +43,16 @@ struct mr_timer_config
/**
* @brief Timer control command.
*/
#define MR_CTL_TIMER_SET_CONFIG MR_CTL_SET_CONFIG /**< Set configuration */
#define MR_CTL_TIMER_SET_MODE MR_CTL_SET_CONFIG /**< Set timer mode */
#define MR_CTL_TIMER_SET_TIMEOUT_CALL MR_CTL_SET_RD_CALL /**< Set timeout callback */
#define MR_CTL_TIMER_GET_CONFIG MR_CTL_GET_CONFIG /**< Get configuration */
#define MR_CTL_TIMER_GET_MODE MR_CTL_GET_CONFIG /**< Get timer mode */
#define MR_CTL_TIMER_GET_TIMEOUT_CALL MR_CTL_GET_RD_CALL /**< Get timeout callback */
/**
* @brief Timer data type.
*/
typedef uint8_t mr_timer_data_t; /**< Timer read/write data type */
typedef uint32_t mr_timer_data_t; /**< Timer read/write data type */
/**
* @brief Timer ISR events.