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) switch (cmd)
{ {
case MR_CTL_ADC_SET_CONFIG: case MR_CTL_ADC_SET_CHANNEL_STATE:
{ {
if (args != MR_NULL) 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; 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); case MR_CTL_ADC_GET_CHANNEL_STATE:
}
return MR_EINVAL;
}
case MR_CTL_ADC_GET_CONFIG:
{ {
if (args != MR_NULL) 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; 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: default:
{ {

View File

@@ -104,7 +104,7 @@ static int mr_dac_ioctl(struct mr_dev *dev, int off, int cmd, void *args)
switch (cmd) switch (cmd)
{ {
case MR_CTL_DAC_SET_CONFIG: case MR_CTL_DAC_SET_CHANNEL_STATE:
{ {
if (args != MR_NULL) 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; 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: case MR_CTL_DAC_GET_CHANNEL_STATE:
{ {
if (args != MR_NULL) 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) switch (cmd)
{ {
case MR_CTL_PIN_SET_CONFIG: case MR_CTL_PIN_SET_MODE:
{ {
if (args != MR_NULL) 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; 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: 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: case MR_CTL_SERIAL_GET_RD_DATASZ:
{ {
if (args!= MR_NULL) if (args != MR_NULL)
{ {
size_t *datasz = (size_t *)args; 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: case MR_CTL_SERIAL_GET_WR_DATASZ:
{ {
if (args!= MR_NULL) if (args != MR_NULL)
{ {
size_t *datasz = (size_t *)args; 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) switch (cmd)
{ {
case MR_CTL_TIMER_SET_CONFIG: case MR_CTL_TIMER_SET_MODE:
{ {
if (args != MR_NULL) 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; return MR_EINVAL;
} }
case MR_CTL_TIMER_GET_CONFIG: case MR_CTL_TIMER_GET_MODE:
{ {
if (args != MR_NULL) if (args != MR_NULL)
{ {

View File

@@ -48,9 +48,9 @@ int mr_dev_ioctl(int desc, int cmd, void *args);
| `<0` | 错误码 | | `<0` | 错误码 |
- `cmd`:命令码,支持以下命令: - `cmd`:命令码,支持以下命令:
- `MR_CTL_TIMER_SET_CONFIG`设置TIMER设备配置 - `MR_CTL_TIMER_SET_MODE`设置TIMER设备模式
- `MR_CTL_TIMER_SET_TIMEOUT_CALL`:设置超时回调函数。 - `MR_CTL_TIMER_SET_TIMEOUT_CALL`:设置超时回调函数。
- `MR_CTL_TIMER_GET_CONFIG`获取TIMER设备配置 - `MR_CTL_TIMER_GET_MODE`获取TIMER设备模式
- `MR_CTL_TIMER_GET_TIMEOUT_CALL`:获取超时回调函数。 - `MR_CTL_TIMER_GET_TIMEOUT_CALL`:获取超时回调函数。
### 设置/获取TIMER设备配置 ### 设置/获取TIMER设备配置
@@ -60,13 +60,15 @@ TIMER设备配置
- `mode`:周期或单次模式。 - `mode`:周期或单次模式。
```c ```c
/* 设置默认配置 */ /* 定义TIMER设备模式 */
struct mr_timer_config config = MR_TIMER_CONFIG_DEFAULT; #define TIMER_MODE MR_TIMER_MODE_ONESHOT
/* 设置TIMER设备配置 */ /* 设置TIMER设备模式 */
mr_dev_ioctl(ds, MR_CTL_TIMER_SET_CONFIG, &config); mr_dev_ioctl(ds, MR_CTL_TIMER_SET_MODE, mr_make_local(int, TIMER_MODE));
/* 获取TIMER设备配置 */
mr_dev_ioctl(ds, MR_CTL_TIMER_GET_CONFIG, &config); /* 获取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. * @brief ADC control command.
*/ */
#define MR_CTL_ADC_SET_CHANNEL MR_CTL_SET_OFFSET /**< Set channel */ #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 MR_CTL_SET_CONFIG /**< Set channel state */
#define MR_CTL_ADC_SET_CHANNEL_STATE (0x01 << 8) /**< Set channel state */
#define MR_CTL_ADC_GET_CHANNEL MR_CTL_GET_OFFSET /**< Get channel */ #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 MR_CTL_GET_CONFIG /**< Get channel state */
#define MR_CTL_ADC_GET_CHANNEL_STATE (-(0x01 << 8)) /**< Get channel state */
/** /**
* @brief ADC data type. * @brief ADC data type.

View File

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

View File

@@ -47,16 +47,15 @@ extern "C" {
*/ */
struct mr_pin_config struct mr_pin_config
{ {
uint32_t mode: 1; /**< Mode */ uint32_t mode: 4; /**< Mode */
uint32_t reserved: 31; /**< Reserved */ uint32_t reserved: 28; /**< Reserved */
}; };
/** /**
* @brief PIN control command. * @brief PIN control command.
*/ */
#define MR_CTL_PIN_SET_NUMBER MR_CTL_SET_OFFSET /**< Set pin number */ #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 MR_CTL_SET_CONFIG /**< Set pin mode */
#define MR_CTL_PIN_SET_MODE (0x01 << 8) /**< Set pin mode */
#define MR_CTL_PIN_SET_EXTI_CALL MR_CTL_SET_RD_CALL /**< Set pin exti callback */ #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 */ #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. * @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_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 */ #define MR_CTL_TIMER_GET_TIMEOUT_CALL MR_CTL_GET_RD_CALL /**< Get timeout callback */
/** /**
* @brief Timer data type. * @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. * @brief Timer ISR events.