优化:
1.枚举编码格式。
This commit is contained in:
@@ -105,7 +105,7 @@ mr_err_t mr_hw_adc_add(mr_adc_t adc, const char *name, struct mr_adc_ops *ops, v
|
||||
MR_ASSERT(ops != MR_NULL);
|
||||
|
||||
/* Add the adc-device to the container */
|
||||
ret = mr_device_add(&adc->device, name, Mr_Device_Type_Adc, MR_OPEN_RDONLY, &device_ops, data);
|
||||
ret = mr_device_add(&adc->device, name, MR_DEVICE_TYPE_ADC, MR_OPEN_RDONLY, &device_ops, data);
|
||||
if (ret != MR_ERR_OK)
|
||||
return ret;
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@ mr_err_t mr_hw_dac_add(mr_dac_t dac, const char *name, struct mr_dac_ops *ops, v
|
||||
MR_ASSERT(ops != MR_NULL);
|
||||
|
||||
/* Add the dac-device to the container */
|
||||
ret = mr_device_add(&dac->device, name, Mr_Device_Type_Dac, MR_OPEN_WRONLY, &device_ops, data);
|
||||
ret = mr_device_add(&dac->device, name, MR_DEVICE_TYPE_DAC, MR_OPEN_WRONLY, &device_ops, data);
|
||||
if (ret != MR_ERR_OK)
|
||||
return ret;
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ static mr_err_t mr_i2c_device_ioctl(mr_device_t device, int cmd, void *args)
|
||||
mr_device_t i2c_bus = mr_device_find((char *)args);
|
||||
if (i2c_bus == MR_NULL)
|
||||
return - MR_ERR_NOT_FOUND;
|
||||
if (i2c_bus->type != Mr_Device_Type_I2c_bus)
|
||||
if (i2c_bus->type != MR_DEVICE_TYPE_I2C_BUS)
|
||||
return - MR_ERR_INVALID;
|
||||
|
||||
/* Open the i2c-bus */
|
||||
@@ -261,7 +261,7 @@ mr_err_t mr_hw_i2c_bus_add(mr_i2c_bus_t i2c_bus, const char *name, struct mr_i2c
|
||||
MR_ASSERT(ops != MR_NULL);
|
||||
|
||||
/* Add the i2c-bus to the container */
|
||||
ret = mr_device_add(&i2c_bus->device, name, Mr_Device_Type_I2c_bus, MR_OPEN_RDWR, &device_ops, data);
|
||||
ret = mr_device_add(&i2c_bus->device, name, MR_DEVICE_TYPE_I2C_BUS, MR_OPEN_RDWR, &device_ops, data);
|
||||
if (ret != MR_ERR_OK)
|
||||
return ret;
|
||||
|
||||
@@ -300,7 +300,7 @@ mr_err_t mr_hw_i2c_device_add(mr_i2c_device_t i2c_device,
|
||||
MR_ASSERT(support_flag != MR_NULL);
|
||||
|
||||
/* Add the i2c-device to the container */
|
||||
ret = mr_device_add(&i2c_device->device, name, Mr_Device_Type_I2c, support_flag, &device_ops, MR_NULL);
|
||||
ret = mr_device_add(&i2c_device->device, name, MR_DEVICE_TYPE_I2C, support_flag, &device_ops, MR_NULL);
|
||||
if (ret != MR_ERR_OK)
|
||||
return ret;
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@ mr_err_t mr_hw_pin_add(mr_pin_t pin, const char *name, struct mr_pin_ops *ops, v
|
||||
MR_ASSERT(ops != MR_NULL);
|
||||
|
||||
/* Add the pin-device to the container */
|
||||
ret = mr_device_add(&pin->device, name, Mr_Device_Type_Pin, MR_OPEN_RDWR, &device_ops, data);
|
||||
ret = mr_device_add(&pin->device, name, MR_DEVICE_TYPE_PIN, MR_OPEN_RDWR, &device_ops, data);
|
||||
if (ret != MR_ERR_OK)
|
||||
return ret;
|
||||
|
||||
|
||||
@@ -188,7 +188,7 @@ mr_err_t mr_hw_serial_add(mr_serial_t serial, const char *name, struct mr_serial
|
||||
MR_ASSERT(ops != MR_NULL);
|
||||
|
||||
/* Add the serial-device to the container */
|
||||
ret = mr_device_add(&serial->device, name, Mr_Device_Type_Serial, MR_OPEN_RDWR, &device_ops, data);
|
||||
ret = mr_device_add(&serial->device, name, MR_DEVICE_TYPE_SERIAL, MR_OPEN_RDWR, &device_ops, data);
|
||||
if (ret != MR_ERR_OK)
|
||||
return ret;
|
||||
|
||||
|
||||
@@ -134,7 +134,7 @@ static mr_err_t mr_spi_device_ioctl(mr_device_t device, int cmd, void *args)
|
||||
mr_device_t spi_bus = mr_device_find((char *)args);
|
||||
if (spi_bus == MR_NULL)
|
||||
return - MR_ERR_NOT_FOUND;
|
||||
if (spi_bus->type != Mr_Device_Type_Spi_bus)
|
||||
if (spi_bus->type != MR_DEVICE_TYPE_SPI_BUS)
|
||||
return - MR_ERR_INVALID;
|
||||
|
||||
/* Open the spi-bus */
|
||||
@@ -234,7 +234,7 @@ mr_err_t mr_hw_spi_bus_add(mr_spi_bus_t spi_bus, const char *name, struct mr_spi
|
||||
MR_ASSERT(ops != MR_NULL);
|
||||
|
||||
/* Add the spi-bus to the container */
|
||||
ret = mr_device_add(&spi_bus->device, name, Mr_Device_Type_Spi_bus, MR_OPEN_RDWR, &device_ops, data);
|
||||
ret = mr_device_add(&spi_bus->device, name, MR_DEVICE_TYPE_SPI_BUS, MR_OPEN_RDWR, &device_ops, data);
|
||||
if (ret != MR_ERR_OK)
|
||||
return ret;
|
||||
|
||||
@@ -271,7 +271,7 @@ mr_err_t mr_hw_spi_device_add(mr_spi_device_t spi_device,
|
||||
MR_ASSERT(support_flag != MR_NULL);
|
||||
|
||||
/* Add the spi-device to the container */
|
||||
ret = mr_device_add(&spi_device->device, name, Mr_Device_Type_Spi, support_flag, &device_ops, MR_NULL);
|
||||
ret = mr_device_add(&spi_device->device, name, MR_DEVICE_TYPE_SPI, support_flag, &device_ops, MR_NULL);
|
||||
if (ret != MR_ERR_OK)
|
||||
return ret;
|
||||
|
||||
|
||||
@@ -231,7 +231,7 @@ mr_err_t mr_hw_timer_add(mr_timer_t timer,
|
||||
MR_ASSERT(information->max_cut != 0);
|
||||
|
||||
/* Add the timer-device to the container */
|
||||
ret = mr_device_add(&timer->device, name, Mr_Device_Type_Timer, MR_OPEN_RDWR, &device_ops, data);
|
||||
ret = mr_device_add(&timer->device, name, MR_DEVICE_TYPE_TIMER, MR_OPEN_RDWR, &device_ops, data);
|
||||
if (ret != MR_ERR_OK)
|
||||
return ret;
|
||||
|
||||
|
||||
@@ -113,8 +113,8 @@
|
||||
#define MR_HIGH 1 /**< High level */
|
||||
#define MR_DISABLE 0 /**< Disable */
|
||||
#define MR_ENABLE 1 /**< Enable */
|
||||
#define MR_UNLOCK 0 /**< Unlock */
|
||||
#define MR_LOCK 1 /**< Lock */
|
||||
#define MR_UNLOCK 0 /**< Unlock */
|
||||
#define MR_LOCK 1 /**< Lock */
|
||||
|
||||
typedef signed char mr_int8_t; /**< Type for 8bit integer */
|
||||
typedef signed short mr_int16_t; /**< Type for 16bit integer */
|
||||
@@ -182,10 +182,10 @@ typedef struct mr_fifo *mr_fifo_t; /**< Type fo
|
||||
*/
|
||||
enum mr_container_type
|
||||
{
|
||||
Mr_Container_Type_Misc, /**< Miscellaneous container */
|
||||
Mr_Container_Type_Device, /**< Device container */
|
||||
Mr_Container_Type_Manager, /**< Event container */
|
||||
_Mr_Container_Type_Mask, /**< Mask for getting container type */
|
||||
MR_CONTAINER_TYPE_MISC, /**< Miscellaneous container */
|
||||
MR_CONTAINER_TYPE_DEVICE, /**< Device container */
|
||||
MR_CONTAINER_TYPE_MANAGER, /**< Event container */
|
||||
MR_CONTAINER_TYPE_MASK, /**< Mask for getting container type */
|
||||
};
|
||||
|
||||
struct mr_container
|
||||
@@ -226,18 +226,18 @@ typedef struct mr_mutex *mr_mutex_t; /**< Type fo
|
||||
*/
|
||||
enum mr_device_type
|
||||
{
|
||||
Mr_Device_Type_None, /**< No device */
|
||||
Mr_Device_Type_Pin, /**< GPIO device */
|
||||
Mr_Device_Type_Spi_bus, /**< SPI-BUS device */
|
||||
Mr_Device_Type_Spi, /**< SPI device */
|
||||
Mr_Device_Type_I2c_bus, /**< I2C-BUS device */
|
||||
Mr_Device_Type_I2c, /**< I2C device */
|
||||
Mr_Device_Type_Serial, /**< UART device */
|
||||
Mr_Device_Type_Adc, /**< ADC device */
|
||||
Mr_Device_Type_Dac, /**< DAC device */
|
||||
Mr_Device_Type_Pwm, /**< PWM device */
|
||||
Mr_Device_Type_Timer, /**< TIMER device */
|
||||
Mr_Device_Type_Flash, /**< FLASH device */
|
||||
MR_DEVICE_TYPE_NONE, /**< No device */
|
||||
MR_DEVICE_TYPE_PIN, /**< GPIO device */
|
||||
MR_DEVICE_TYPE_SPI_BUS, /**< SPI-BUS device */
|
||||
MR_DEVICE_TYPE_SPI, /**< SPI device */
|
||||
MR_DEVICE_TYPE_I2C_BUS, /**< I2C-BUS device */
|
||||
MR_DEVICE_TYPE_I2C, /**< I2C device */
|
||||
MR_DEVICE_TYPE_SERIAL, /**< UART device */
|
||||
MR_DEVICE_TYPE_ADC, /**< ADC device */
|
||||
MR_DEVICE_TYPE_DAC, /**< DAC device */
|
||||
MR_DEVICE_TYPE_PWM, /**< PWM device */
|
||||
MR_DEVICE_TYPE_TIMER, /**< TIMER device */
|
||||
MR_DEVICE_TYPE_FLASH, /**< FLASH device */
|
||||
/* ... */
|
||||
};
|
||||
|
||||
@@ -272,20 +272,21 @@ struct mr_device
|
||||
*/
|
||||
enum mr_manager_type
|
||||
{
|
||||
Mr_Manager_Type_Event, /**< Event manager */
|
||||
Mr_Manager_Type_Fsm, /**< Finite state machine(FSM) manager */
|
||||
Mr_Manager_Type_At, /**< Attention manager */
|
||||
MR_MANAGER_TYPE_EVENT, /**< Event manager */
|
||||
MR_MANAGER_TYPE_FSM, /**< Finite state machine(FSM) manager */
|
||||
MR_MANAGER_TYPE_AT_PARSER, /**< Attention(AT) Parser manager */
|
||||
/* ... */
|
||||
};
|
||||
|
||||
enum mr_manager_at_state
|
||||
{
|
||||
Mr_Manager_At_State_None, /**< No state */
|
||||
Mr_Manager_At_State_Start, /**< Start state */
|
||||
Mr_Manager_At_State_Flag, /**< Flag state */
|
||||
Mr_Manager_At_State_Id, /**< Name state */
|
||||
Mr_Manager_At_State_Stop, /**< Stop state */
|
||||
Mr_Manager_At_State_Handle, /**< Handle state */
|
||||
MR_MANAGER_AT_STATE_NONE, /**< No state */
|
||||
MR_MANAGER_AT_STATE_START, /**< Start state */
|
||||
MR_MANAGER_AT_STATE_FLAG, /**< Flag state */
|
||||
MR_MANAGER_AT_STATE_ID, /**< Id state */
|
||||
MR_MANAGER_AT_STATE_ARGS, /**< Args state */
|
||||
MR_MANAGER_AT_STATE_STOP, /**< Stop state */
|
||||
MR_MANAGER_AT_STATE_HANDLE, /**< Handle state */
|
||||
};
|
||||
|
||||
struct mr_manager
|
||||
@@ -293,7 +294,6 @@ struct mr_manager
|
||||
struct mr_object object; /**< Manager object */
|
||||
|
||||
enum mr_manager_type type; /**< Manager type */
|
||||
mr_size_t ref_count; /**< Number of manager references */
|
||||
void *data; /**< Manager data */
|
||||
struct mr_fifo queue; /**< Agent queue */
|
||||
|
||||
@@ -311,7 +311,6 @@ typedef struct mr_manager *mr_manager_t; /**< Type fo
|
||||
struct mr_agent
|
||||
{
|
||||
struct mr_avl avl; /**< Avl-tree and agent id */
|
||||
mr_size_t ref_count; /**< Number of agent references */
|
||||
|
||||
mr_err_t (*cb)(mr_manager_t manager, void *args); /**< Agent occurrence baud function */
|
||||
void *args; /**< Callback function argument */
|
||||
|
||||
@@ -98,6 +98,8 @@ mr_err_t mr_manager_remove(mr_manager_t manager);
|
||||
mr_err_t mr_manager_notify(mr_manager_t manager, mr_uint32_t agent_id);
|
||||
void mr_manager_handler(mr_manager_t manager);
|
||||
void mr_manager_at_isr(mr_manager_t manager, char data);
|
||||
mr_size_t mr_manager_at_get_length(void *args);
|
||||
char *mr_manager_at_get_arg(void *args, mr_size_t number);
|
||||
|
||||
/**
|
||||
* Export agent functions
|
||||
|
||||
@@ -25,7 +25,7 @@ mr_device_t mr_device_find(const char *name)
|
||||
MR_ASSERT(name != MR_NULL);
|
||||
|
||||
/* Find the device object from the device container */
|
||||
return (mr_device_t)mr_object_find(name, Mr_Container_Type_Device);
|
||||
return (mr_device_t)mr_object_find(name, MR_CONTAINER_TYPE_DEVICE);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -54,7 +54,7 @@ mr_err_t mr_device_add(mr_device_t device,
|
||||
MR_ASSERT(name != MR_NULL);
|
||||
|
||||
/* Add the object to the container */
|
||||
ret = mr_object_add(&device->object, name, Mr_Container_Type_Device);
|
||||
ret = mr_object_add(&device->object, name, MR_CONTAINER_TYPE_DEVICE);
|
||||
if (ret != MR_ERR_OK)
|
||||
return ret;
|
||||
|
||||
|
||||
22
src/kernel.c
22
src/kernel.c
@@ -10,22 +10,22 @@
|
||||
|
||||
#include <mrlib.h>
|
||||
|
||||
static struct mr_container mr_kernel_container[_Mr_Container_Type_Mask] =
|
||||
static struct mr_container mr_kernel_container[MR_CONTAINER_TYPE_MASK] =
|
||||
{
|
||||
{
|
||||
.type = Mr_Container_Type_Misc,
|
||||
.list = {&mr_kernel_container[Mr_Container_Type_Misc].list,
|
||||
&mr_kernel_container[Mr_Container_Type_Misc].list}
|
||||
.type = MR_CONTAINER_TYPE_MISC,
|
||||
.list = {&mr_kernel_container[MR_CONTAINER_TYPE_MISC].list,
|
||||
&mr_kernel_container[MR_CONTAINER_TYPE_MISC].list}
|
||||
},
|
||||
{
|
||||
.type = Mr_Container_Type_Device,
|
||||
.list = {&mr_kernel_container[Mr_Container_Type_Device].list,
|
||||
&mr_kernel_container[Mr_Container_Type_Device].list}
|
||||
.type = MR_CONTAINER_TYPE_DEVICE,
|
||||
.list = {&mr_kernel_container[MR_CONTAINER_TYPE_DEVICE].list,
|
||||
&mr_kernel_container[MR_CONTAINER_TYPE_DEVICE].list}
|
||||
},
|
||||
{
|
||||
.type = Mr_Container_Type_Manager,
|
||||
.list = {&mr_kernel_container[Mr_Container_Type_Manager].list,
|
||||
&mr_kernel_container[Mr_Container_Type_Manager].list}
|
||||
.type = MR_CONTAINER_TYPE_MANAGER,
|
||||
.list = {&mr_kernel_container[MR_CONTAINER_TYPE_MANAGER].list,
|
||||
&mr_kernel_container[MR_CONTAINER_TYPE_MANAGER].list}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -38,7 +38,7 @@ static struct mr_container mr_kernel_container[_Mr_Container_Type_Mask] =
|
||||
*/
|
||||
mr_container_t mr_container_find(enum mr_container_type type)
|
||||
{
|
||||
MR_ASSERT(type < _Mr_Container_Type_Mask);
|
||||
MR_ASSERT(type < MR_CONTAINER_TYPE_MASK);
|
||||
|
||||
return &mr_kernel_container[type];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user