forked from xuos/xiuos
feat add sem obtain wait_time and modify e220 lora receive len operation
This commit is contained in:
parent
63d26584b7
commit
808f00ade1
|
@ -28,7 +28,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef AS_LORA_CLIENT_ROLE
|
#ifdef AS_LORA_CLIENT_ROLE
|
||||||
#define E220_ADDRESS 0xFFFF
|
#define E220_ADDRESS ADAPTER_LORA_NET_ROLE_ID
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define E220_UART_BAUD_RATE 9600
|
#define E220_UART_BAUD_RATE 9600
|
||||||
|
@ -289,6 +289,9 @@ static int E220Open(struct Adapter *adapter)
|
||||||
cfg.port_configure = PORT_CFG_INIT;
|
cfg.port_configure = PORT_CFG_INIT;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//serial receive timeout 100s
|
||||||
|
cfg.serial_timeout = 100000;
|
||||||
|
|
||||||
struct PrivIoctlCfg ioctl_cfg;
|
struct PrivIoctlCfg ioctl_cfg;
|
||||||
ioctl_cfg.ioctl_driver_type = SERIAL_TYPE;
|
ioctl_cfg.ioctl_driver_type = SERIAL_TYPE;
|
||||||
ioctl_cfg.args = &cfg;
|
ioctl_cfg.args = &cfg;
|
||||||
|
@ -387,13 +390,21 @@ static int E220Recv(struct Adapter *adapter, void *buf, size_t len)
|
||||||
uint8 *recv_buf = PrivMalloc(len);
|
uint8 *recv_buf = PrivMalloc(len);
|
||||||
|
|
||||||
recv_len = PrivRead(adapter->fd, recv_buf, len);
|
recv_len = PrivRead(adapter->fd, recv_buf, len);
|
||||||
|
if (recv_len) {
|
||||||
while (recv_len < len) {
|
while (recv_len < len) {
|
||||||
|
printf("recv_len %u len %u\n", recv_len, len);
|
||||||
recv_len_continue = PrivRead(adapter->fd, recv_buf + recv_len, len - recv_len);
|
recv_len_continue = PrivRead(adapter->fd, recv_buf + recv_len, len - recv_len);
|
||||||
|
if (recv_len_continue) {
|
||||||
|
printf("recv_len_continue %u\n", recv_len);
|
||||||
recv_len += recv_len_continue;
|
recv_len += recv_len_continue;
|
||||||
|
printf("recv_len done %u\n", recv_len);
|
||||||
|
} else {
|
||||||
|
recv_len = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
memcpy(buf, recv_buf, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(buf, recv_buf, recv_len);
|
|
||||||
|
|
||||||
PrivFree(recv_buf);
|
PrivFree(recv_buf);
|
||||||
|
|
||||||
|
@ -467,7 +478,7 @@ static void LoraOpen(void)
|
||||||
static void LoraRead(void *parameter)
|
static void LoraRead(void *parameter)
|
||||||
{
|
{
|
||||||
int RevLen;
|
int RevLen;
|
||||||
uint8 i, cnt = 0;
|
int i, cnt = 0;
|
||||||
|
|
||||||
uint8 buffer[256];
|
uint8 buffer[256];
|
||||||
|
|
||||||
|
@ -481,11 +492,11 @@ static void LoraRead(void *parameter)
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
KPrintf("ready to read lora data\n");
|
printf("ready to read lora data\n");
|
||||||
|
|
||||||
RevLen = E220Recv(adapter, buffer, 256);
|
RevLen = E220Recv(adapter, buffer, 256);
|
||||||
if (RevLen) {
|
if (RevLen) {
|
||||||
KPrintf("lora get data %u\n", RevLen);
|
printf("lora get data %u\n", RevLen);
|
||||||
for (i = 0; i < RevLen; i ++) {
|
for (i = 0; i < RevLen; i ++) {
|
||||||
printf("i %u data 0x%x\n", i, buffer[i]);
|
printf("i %u data 0x%x\n", i, buffer[i]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -127,6 +127,7 @@ struct SerialDataCfg
|
||||||
uint8_t serial_bit_order;
|
uint8_t serial_bit_order;
|
||||||
uint8_t serial_invert_mode;
|
uint8_t serial_invert_mode;
|
||||||
uint16_t serial_buffer_size;
|
uint16_t serial_buffer_size;
|
||||||
|
int32 serial_timeout;
|
||||||
|
|
||||||
uint8_t ext_uart_no;
|
uint8_t ext_uart_no;
|
||||||
enum ExtSerialPortConfigure port_configure;
|
enum ExtSerialPortConfigure port_configure;
|
||||||
|
|
|
@ -255,6 +255,10 @@ static void SerialCfgParamCheck(struct SerialCfgParam *serial_cfg_default, struc
|
||||||
if((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
if((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
||||||
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((data_cfg_default->serial_timeout != data_cfg_new->serial_timeout) && (data_cfg_new->serial_timeout)) {
|
||||||
|
data_cfg_default->serial_timeout = data_cfg_new->serial_timeout;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32 Stm32SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInfo *configure_info)
|
static uint32 Stm32SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInfo *configure_info)
|
||||||
|
@ -269,6 +273,12 @@ static uint32 Stm32SerialInit(struct SerialDriver *serial_drv, struct BusConfigu
|
||||||
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
// config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
USART_InitTypeDef USART_InitStructure;
|
USART_InitTypeDef USART_InitStructure;
|
||||||
|
|
||||||
USART_InitStructure.USART_BaudRate = serial_cfg->data_cfg.serial_baud_rate;
|
USART_InitStructure.USART_BaudRate = serial_cfg->data_cfg.serial_baud_rate;
|
||||||
|
@ -584,6 +594,7 @@ static const struct SerialDataCfg data_cfg_init =
|
||||||
.serial_bit_order = BIT_ORDER_LSB,
|
.serial_bit_order = BIT_ORDER_LSB,
|
||||||
.serial_invert_mode = NRZ_NORMAL,
|
.serial_invert_mode = NRZ_NORMAL,
|
||||||
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
||||||
|
.serial_timeout = WAITING_FOREVER,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*manage the serial device operations*/
|
/*manage the serial device operations*/
|
||||||
|
|
|
@ -101,6 +101,10 @@ static void SerialCfgParamCheck(struct SerialCfgParam *serial_cfg_default, struc
|
||||||
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
||||||
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((data_cfg_default->serial_timeout != data_cfg_new->serial_timeout) && (data_cfg_new->serial_timeout)) {
|
||||||
|
data_cfg_default->serial_timeout = data_cfg_new->serial_timeout;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* UARTHS ISR */
|
/* UARTHS ISR */
|
||||||
|
@ -144,6 +148,12 @@ static uint32 SerialHsInit(struct SerialDriver *serial_drv, struct BusConfigureI
|
||||||
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
// config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
uint32 freq_hs = SysctlClockGetFreq(SYSCTL_CLOCK_CPU);
|
uint32 freq_hs = SysctlClockGetFreq(SYSCTL_CLOCK_CPU);
|
||||||
uint16 div_hs = freq_hs / serial_cfg->data_cfg.serial_baud_rate - 1;
|
uint16 div_hs = freq_hs / serial_cfg->data_cfg.serial_baud_rate - 1;
|
||||||
|
|
||||||
|
@ -221,6 +231,12 @@ static uint32 SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInf
|
||||||
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
// config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
UartBitwidthPointer DataWidth = (UartBitwidthPointer)serial_cfg->data_cfg.serial_data_bits;
|
UartBitwidthPointer DataWidth = (UartBitwidthPointer)serial_cfg->data_cfg.serial_data_bits;
|
||||||
UartStopbitT stopbit = (UartStopbitT)(serial_cfg->data_cfg.serial_stop_bits - 1);
|
UartStopbitT stopbit = (UartStopbitT)(serial_cfg->data_cfg.serial_stop_bits - 1);
|
||||||
UartParityT parity = (UartParityT)(serial_cfg->data_cfg.serial_parity_mode - 1);
|
UartParityT parity = (UartParityT)(serial_cfg->data_cfg.serial_parity_mode - 1);
|
||||||
|
@ -390,6 +406,7 @@ static const struct SerialDataCfg data_cfg_init =
|
||||||
.serial_bit_order = BIT_ORDER_LSB,
|
.serial_bit_order = BIT_ORDER_LSB,
|
||||||
.serial_invert_mode = NRZ_NORMAL,
|
.serial_invert_mode = NRZ_NORMAL,
|
||||||
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
||||||
|
.serial_timeout = WAITING_FOREVER,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*manage the serial high speed device operations*/
|
/*manage the serial high speed device operations*/
|
||||||
|
|
|
@ -71,6 +71,10 @@ static void SerialCfgParamCheck(struct SerialCfgParam *serial_cfg_default, struc
|
||||||
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
||||||
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((data_cfg_default->serial_timeout != data_cfg_new->serial_timeout) && (data_cfg_new->serial_timeout)) {
|
||||||
|
data_cfg_default->serial_timeout = data_cfg_new->serial_timeout;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void UartHandler(struct SerialBus *serial_bus, struct SerialDriver *serial_drv)
|
static void UartHandler(struct SerialBus *serial_bus, struct SerialDriver *serial_drv)
|
||||||
|
@ -112,6 +116,12 @@ static uint32 SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInf
|
||||||
{
|
{
|
||||||
NULL_PARAM_CHECK(serial_drv);
|
NULL_PARAM_CHECK(serial_drv);
|
||||||
|
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
// config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
return EOK;
|
return EOK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,6 +183,7 @@ static const struct SerialDataCfg data_cfg_init =
|
||||||
.serial_bit_order = BIT_ORDER_LSB,
|
.serial_bit_order = BIT_ORDER_LSB,
|
||||||
.serial_invert_mode = NRZ_NORMAL,
|
.serial_invert_mode = NRZ_NORMAL,
|
||||||
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
||||||
|
.serial_timeout = WAITING_FOREVER,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*manage the serial device operations*/
|
/*manage the serial device operations*/
|
||||||
|
|
|
@ -73,6 +73,10 @@ static void SerialCfgParamCheck(struct SerialCfgParam *serial_cfg_default, struc
|
||||||
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
||||||
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((data_cfg_default->serial_timeout != data_cfg_new->serial_timeout) && (data_cfg_new->serial_timeout)) {
|
||||||
|
data_cfg_default->serial_timeout = data_cfg_new->serial_timeout;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void UartHandler(struct SerialBus *serial_bus, struct SerialDriver *serial_drv)
|
static void UartHandler(struct SerialBus *serial_bus, struct SerialDriver *serial_drv)
|
||||||
|
@ -113,6 +117,12 @@ static uint32 SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInf
|
||||||
{
|
{
|
||||||
NULL_PARAM_CHECK(serial_drv);
|
NULL_PARAM_CHECK(serial_drv);
|
||||||
|
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
// config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
return EOK;
|
return EOK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -195,6 +205,7 @@ static const struct SerialDataCfg data_cfg_init =
|
||||||
.serial_bit_order = BIT_ORDER_LSB,
|
.serial_bit_order = BIT_ORDER_LSB,
|
||||||
.serial_invert_mode = NRZ_NORMAL,
|
.serial_invert_mode = NRZ_NORMAL,
|
||||||
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
||||||
|
.serial_timeout = WAITING_FOREVER,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*manage the serial device operations*/
|
/*manage the serial device operations*/
|
||||||
|
|
|
@ -256,6 +256,10 @@ static void SerialCfgParamCheck(struct SerialCfgParam *serial_cfg_default, struc
|
||||||
if((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
if((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
||||||
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((data_cfg_default->serial_timeout != data_cfg_new->serial_timeout) && (data_cfg_new->serial_timeout)) {
|
||||||
|
data_cfg_default->serial_timeout = data_cfg_new->serial_timeout;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32 Stm32SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInfo *configure_info)
|
static uint32 Stm32SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInfo *configure_info)
|
||||||
|
@ -270,6 +274,12 @@ static uint32 Stm32SerialInit(struct SerialDriver *serial_drv, struct BusConfigu
|
||||||
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
// config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
USART_InitTypeDef USART_InitStructure;
|
USART_InitTypeDef USART_InitStructure;
|
||||||
|
|
||||||
USART_InitStructure.USART_BaudRate = serial_cfg->data_cfg.serial_baud_rate;
|
USART_InitStructure.USART_BaudRate = serial_cfg->data_cfg.serial_baud_rate;
|
||||||
|
@ -578,6 +588,7 @@ static const struct SerialDataCfg data_cfg_init =
|
||||||
.serial_bit_order = BIT_ORDER_LSB,
|
.serial_bit_order = BIT_ORDER_LSB,
|
||||||
.serial_invert_mode = NRZ_NORMAL,
|
.serial_invert_mode = NRZ_NORMAL,
|
||||||
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
||||||
|
.serial_timeout = WAITING_FOREVER,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*manage the serial device operations*/
|
/*manage the serial device operations*/
|
||||||
|
|
|
@ -58,6 +58,10 @@ static void SerialCfgParamCheck(struct SerialCfgParam *serial_cfg_default, struc
|
||||||
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
||||||
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((data_cfg_default->serial_timeout != data_cfg_new->serial_timeout) && (data_cfg_new->serial_timeout)) {
|
||||||
|
data_cfg_default->serial_timeout = data_cfg_new->serial_timeout;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void UartRxIsr(void *arg)
|
static void UartRxIsr(void *arg)
|
||||||
|
@ -79,6 +83,12 @@ static uint32 SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInf
|
||||||
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
// config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
struct gap8_udma_peripheral *uart_udma = (struct gap8_udma_peripheral *)serial_cfg->hw_cfg.private_data;
|
struct gap8_udma_peripheral *uart_udma = (struct gap8_udma_peripheral *)serial_cfg->hw_cfg.private_data;
|
||||||
uart_reg_t *uart_reg = (uart_reg_t *)uart_udma->regs;
|
uart_reg_t *uart_reg = (uart_reg_t *)uart_udma->regs;
|
||||||
uint32_t cfg_reg = 0;
|
uint32_t cfg_reg = 0;
|
||||||
|
@ -202,6 +212,7 @@ static const struct SerialDataCfg data_cfg_init =
|
||||||
.serial_bit_order = BIT_ORDER_LSB,
|
.serial_bit_order = BIT_ORDER_LSB,
|
||||||
.serial_invert_mode = NRZ_NORMAL,
|
.serial_invert_mode = NRZ_NORMAL,
|
||||||
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
||||||
|
.serial_timeout = WAITING_FOREVER,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct gap8_udma_peripheral gap8_udma =
|
static struct gap8_udma_peripheral gap8_udma =
|
||||||
|
|
|
@ -58,6 +58,10 @@ static void SerialCfgParamCheck(struct SerialCfgParam *serial_cfg_default, struc
|
||||||
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
||||||
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((data_cfg_default->serial_timeout != data_cfg_new->serial_timeout) && (data_cfg_new->serial_timeout)) {
|
||||||
|
data_cfg_default->serial_timeout = data_cfg_new->serial_timeout;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void UartIsr(struct SerialDriver *serial_drv, struct SerialHardwareDevice *serial_dev)
|
static void UartIsr(struct SerialDriver *serial_drv, struct SerialHardwareDevice *serial_dev)
|
||||||
|
@ -99,6 +103,16 @@ static uint32 SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInf
|
||||||
struct SerialCfgParam *serial_cfg = (struct SerialCfgParam *)serial_drv->private_data;
|
struct SerialCfgParam *serial_cfg = (struct SerialCfgParam *)serial_drv->private_data;
|
||||||
// struct UsartHwCfg *serial_hw_cfg = (struct UsartHwCfg *)serial_cfg->hw_cfg.private_data;
|
// struct UsartHwCfg *serial_hw_cfg = (struct UsartHwCfg *)serial_cfg->hw_cfg.private_data;
|
||||||
|
|
||||||
|
if (configure_info->private_data) {
|
||||||
|
struct SerialCfgParam *serial_cfg_new = (struct SerialCfgParam *)configure_info->private_data;
|
||||||
|
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
// config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
usart_deinit(serial_cfg->hw_cfg.serial_register_base);
|
usart_deinit(serial_cfg->hw_cfg.serial_register_base);
|
||||||
usart_baudrate_set(serial_cfg->hw_cfg.serial_register_base, serial_cfg->data_cfg.serial_baud_rate);
|
usart_baudrate_set(serial_cfg->hw_cfg.serial_register_base, serial_cfg->data_cfg.serial_baud_rate);
|
||||||
|
@ -235,6 +249,7 @@ static const struct SerialDataCfg data_cfg_init =
|
||||||
.serial_bit_order = BIT_ORDER_LSB,
|
.serial_bit_order = BIT_ORDER_LSB,
|
||||||
.serial_invert_mode = NRZ_NORMAL,
|
.serial_invert_mode = NRZ_NORMAL,
|
||||||
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
||||||
|
.serial_timeout = WAITING_FOREVER,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -59,6 +59,10 @@ static void SerialCfgParamCheck(struct SerialCfgParam *serial_cfg_default, struc
|
||||||
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
||||||
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((data_cfg_default->serial_timeout != data_cfg_new->serial_timeout) && (data_cfg_new->serial_timeout)) {
|
||||||
|
data_cfg_default->serial_timeout = data_cfg_new->serial_timeout;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void usart_handler(int vector, void *param)
|
static void usart_handler(int vector, void *param)
|
||||||
|
@ -79,6 +83,12 @@ static uint32 SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInf
|
||||||
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
// config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
GPIO_REG(GPIO_IOF_SEL) &= ~IOF0_UART0_MASK;
|
GPIO_REG(GPIO_IOF_SEL) &= ~IOF0_UART0_MASK;
|
||||||
GPIO_REG(GPIO_IOF_EN) |= IOF0_UART0_MASK;
|
GPIO_REG(GPIO_IOF_EN) |= IOF0_UART0_MASK;
|
||||||
|
|
||||||
|
@ -148,6 +158,7 @@ static const struct SerialDataCfg data_cfg_init =
|
||||||
.serial_bit_order = BIT_ORDER_LSB,
|
.serial_bit_order = BIT_ORDER_LSB,
|
||||||
.serial_invert_mode = NRZ_NORMAL,
|
.serial_invert_mode = NRZ_NORMAL,
|
||||||
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
||||||
|
.serial_timeout = WAITING_FOREVER,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*manage the serial device operations*/
|
/*manage the serial device operations*/
|
||||||
|
|
|
@ -59,6 +59,10 @@ static void SerialCfgParamCheck(struct SerialCfgParam *serial_cfg_default, struc
|
||||||
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
||||||
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((data_cfg_default->serial_timeout != data_cfg_new->serial_timeout) && (data_cfg_new->serial_timeout)) {
|
||||||
|
data_cfg_default->serial_timeout = data_cfg_new->serial_timeout;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void usart_handler(int vector, void *param)
|
static void usart_handler(int vector, void *param)
|
||||||
|
@ -79,6 +83,12 @@ static uint32 SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInf
|
||||||
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
// config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
GPIO_REG(GPIO_IOF_SEL) &= ~IOF0_UART0_MASK;
|
GPIO_REG(GPIO_IOF_SEL) &= ~IOF0_UART0_MASK;
|
||||||
GPIO_REG(GPIO_IOF_EN) |= IOF0_UART0_MASK;
|
GPIO_REG(GPIO_IOF_EN) |= IOF0_UART0_MASK;
|
||||||
|
|
||||||
|
@ -148,6 +158,7 @@ static const struct SerialDataCfg data_cfg_init =
|
||||||
.serial_bit_order = BIT_ORDER_LSB,
|
.serial_bit_order = BIT_ORDER_LSB,
|
||||||
.serial_invert_mode = NRZ_NORMAL,
|
.serial_invert_mode = NRZ_NORMAL,
|
||||||
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
||||||
|
.serial_timeout = WAITING_FOREVER,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*manage the serial device operations*/
|
/*manage the serial device operations*/
|
||||||
|
|
|
@ -103,6 +103,10 @@ static void SerialCfgParamCheck(struct SerialCfgParam *serial_cfg_default, struc
|
||||||
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
||||||
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((data_cfg_default->serial_timeout != data_cfg_new->serial_timeout) && (data_cfg_new->serial_timeout)) {
|
||||||
|
data_cfg_default->serial_timeout = data_cfg_new->serial_timeout;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* UARTHS ISR */
|
/* UARTHS ISR */
|
||||||
|
@ -146,6 +150,12 @@ static uint32 SerialHsInit(struct SerialDriver *serial_drv, struct BusConfigureI
|
||||||
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
// config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
//uint32 freq_hs = SysctlClockGetFreq(SYSCTL_CLOCK_CPU);
|
//uint32 freq_hs = SysctlClockGetFreq(SYSCTL_CLOCK_CPU);
|
||||||
uint32 freq_hs = 26000000;
|
uint32 freq_hs = 26000000;
|
||||||
uint16 div_hs = freq_hs / serial_cfg->data_cfg.serial_baud_rate - 1;
|
uint16 div_hs = freq_hs / serial_cfg->data_cfg.serial_baud_rate - 1;
|
||||||
|
@ -393,6 +403,7 @@ static const struct SerialDataCfg data_cfg_init =
|
||||||
.serial_bit_order = BIT_ORDER_LSB,
|
.serial_bit_order = BIT_ORDER_LSB,
|
||||||
.serial_invert_mode = NRZ_NORMAL,
|
.serial_invert_mode = NRZ_NORMAL,
|
||||||
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
||||||
|
.serial_timeout = WAITING_FOREVER,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*manage the serial high speed device operations*/
|
/*manage the serial high speed device operations*/
|
||||||
|
|
|
@ -103,6 +103,10 @@ static void SerialCfgParamCheck(struct SerialCfgParam *serial_cfg_default, struc
|
||||||
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
||||||
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((data_cfg_default->serial_timeout != data_cfg_new->serial_timeout) && (data_cfg_new->serial_timeout)) {
|
||||||
|
data_cfg_default->serial_timeout = data_cfg_new->serial_timeout;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* UARTHS ISR */
|
/* UARTHS ISR */
|
||||||
|
@ -146,6 +150,12 @@ static uint32 SerialHsInit(struct SerialDriver *serial_drv, struct BusConfigureI
|
||||||
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
// config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
uint32 freq_hs = SysctlClockGetFreq(SYSCTL_CLOCK_CPU);
|
uint32 freq_hs = SysctlClockGetFreq(SYSCTL_CLOCK_CPU);
|
||||||
uint16 div_hs = freq_hs / serial_cfg->data_cfg.serial_baud_rate - 1;
|
uint16 div_hs = freq_hs / serial_cfg->data_cfg.serial_baud_rate - 1;
|
||||||
|
|
||||||
|
@ -223,6 +233,12 @@ static uint32 SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInf
|
||||||
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
// config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
UartBitwidthPointer DataWidth = (UartBitwidthPointer)serial_cfg->data_cfg.serial_data_bits;
|
UartBitwidthPointer DataWidth = (UartBitwidthPointer)serial_cfg->data_cfg.serial_data_bits;
|
||||||
UartStopbitT stopbit = (UartStopbitT)(serial_cfg->data_cfg.serial_stop_bits - 1);
|
UartStopbitT stopbit = (UartStopbitT)(serial_cfg->data_cfg.serial_stop_bits - 1);
|
||||||
UartParityT parity = (UartParityT)(serial_cfg->data_cfg.serial_parity_mode - 1);
|
UartParityT parity = (UartParityT)(serial_cfg->data_cfg.serial_parity_mode - 1);
|
||||||
|
@ -392,6 +408,7 @@ static const struct SerialDataCfg data_cfg_init =
|
||||||
.serial_bit_order = BIT_ORDER_LSB,
|
.serial_bit_order = BIT_ORDER_LSB,
|
||||||
.serial_invert_mode = NRZ_NORMAL,
|
.serial_invert_mode = NRZ_NORMAL,
|
||||||
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
||||||
|
.serial_timeout = WAITING_FOREVER,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*manage the serial high speed device operations*/
|
/*manage the serial high speed device operations*/
|
||||||
|
|
|
@ -103,6 +103,10 @@ static void SerialCfgParamCheck(struct SerialCfgParam *serial_cfg_default, struc
|
||||||
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
||||||
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((data_cfg_default->serial_timeout != data_cfg_new->serial_timeout) && (data_cfg_new->serial_timeout)) {
|
||||||
|
data_cfg_default->serial_timeout = data_cfg_new->serial_timeout;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* UARTHS ISR */
|
/* UARTHS ISR */
|
||||||
|
@ -146,6 +150,12 @@ static uint32 SerialHsInit(struct SerialDriver *serial_drv, struct BusConfigureI
|
||||||
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
// config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
uint32 freq_hs = SysctlClockGetFreq(SYSCTL_CLOCK_CPU);
|
uint32 freq_hs = SysctlClockGetFreq(SYSCTL_CLOCK_CPU);
|
||||||
uint16 div_hs = freq_hs / serial_cfg->data_cfg.serial_baud_rate - 1;
|
uint16 div_hs = freq_hs / serial_cfg->data_cfg.serial_baud_rate - 1;
|
||||||
|
|
||||||
|
@ -223,6 +233,12 @@ static uint32 SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInf
|
||||||
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
// config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
UartBitwidthPointer DataWidth = (UartBitwidthPointer)serial_cfg->data_cfg.serial_data_bits;
|
UartBitwidthPointer DataWidth = (UartBitwidthPointer)serial_cfg->data_cfg.serial_data_bits;
|
||||||
UartStopbitT stopbit = (UartStopbitT)(serial_cfg->data_cfg.serial_stop_bits - 1);
|
UartStopbitT stopbit = (UartStopbitT)(serial_cfg->data_cfg.serial_stop_bits - 1);
|
||||||
UartParityT parity = (UartParityT)(serial_cfg->data_cfg.serial_parity_mode - 1);
|
UartParityT parity = (UartParityT)(serial_cfg->data_cfg.serial_parity_mode - 1);
|
||||||
|
@ -392,6 +408,7 @@ static const struct SerialDataCfg data_cfg_init =
|
||||||
.serial_bit_order = BIT_ORDER_LSB,
|
.serial_bit_order = BIT_ORDER_LSB,
|
||||||
.serial_invert_mode = NRZ_NORMAL,
|
.serial_invert_mode = NRZ_NORMAL,
|
||||||
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
||||||
|
.serial_timeout = WAITING_FOREVER,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*manage the serial high speed device operations*/
|
/*manage the serial high speed device operations*/
|
||||||
|
|
|
@ -66,6 +66,10 @@ static void SerialCfgParamCheck(struct SerialCfgParam *serial_cfg_default, struc
|
||||||
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
||||||
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((data_cfg_default->serial_timeout != data_cfg_new->serial_timeout) && (data_cfg_new->serial_timeout)) {
|
||||||
|
data_cfg_default->serial_timeout = data_cfg_new->serial_timeout;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void UartHandler(struct SerialBus *serial_bus, struct SerialDriver *serial_drv)
|
static void UartHandler(struct SerialBus *serial_bus, struct SerialDriver *serial_drv)
|
||||||
|
@ -116,6 +120,12 @@ static uint32 SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInf
|
||||||
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
// config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
switch (serial_cfg->data_cfg.serial_data_bits)
|
switch (serial_cfg->data_cfg.serial_data_bits)
|
||||||
{
|
{
|
||||||
case DATA_BITS_5:
|
case DATA_BITS_5:
|
||||||
|
@ -261,6 +271,7 @@ static const struct SerialDataCfg data_cfg_init =
|
||||||
.serial_bit_order = BIT_ORDER_LSB,
|
.serial_bit_order = BIT_ORDER_LSB,
|
||||||
.serial_invert_mode = NRZ_NORMAL,
|
.serial_invert_mode = NRZ_NORMAL,
|
||||||
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
||||||
|
.serial_timeout = WAITING_FOREVER,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*manage the serial device operations*/
|
/*manage the serial device operations*/
|
||||||
|
|
|
@ -97,6 +97,10 @@ static void SerialCfgParamCheck(struct SerialCfgParam *serial_cfg_default, struc
|
||||||
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
||||||
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((data_cfg_default->serial_timeout != data_cfg_new->serial_timeout) && (data_cfg_new->serial_timeout)) {
|
||||||
|
data_cfg_default->serial_timeout = data_cfg_new->serial_timeout;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void UartIsr(struct SerialBus *serial, struct SerialDriver *serial_drv, struct SerialHardwareDevice *serial_dev)
|
static void UartIsr(struct SerialBus *serial, struct SerialDriver *serial_drv, struct SerialHardwareDevice *serial_dev)
|
||||||
|
@ -142,6 +146,12 @@ static uint32 SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInf
|
||||||
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
// config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
lpuart_config_t config;
|
lpuart_config_t config;
|
||||||
LPUART_GetDefaultConfig(&config);
|
LPUART_GetDefaultConfig(&config);
|
||||||
config.baudRate_Bps = serial_cfg->data_cfg.serial_baud_rate;
|
config.baudRate_Bps = serial_cfg->data_cfg.serial_baud_rate;
|
||||||
|
@ -269,6 +279,7 @@ static const struct SerialDataCfg data_cfg_init =
|
||||||
.serial_bit_order = BIT_ORDER_LSB,
|
.serial_bit_order = BIT_ORDER_LSB,
|
||||||
.serial_invert_mode = NRZ_NORMAL,
|
.serial_invert_mode = NRZ_NORMAL,
|
||||||
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
||||||
|
.serial_timeout = WAITING_FOREVER,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*manage the serial device operations*/
|
/*manage the serial device operations*/
|
||||||
|
|
|
@ -57,6 +57,10 @@ static void SerialCfgParamCheck(struct SerialCfgParam *serial_cfg_default, struc
|
||||||
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
||||||
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((data_cfg_default->serial_timeout != data_cfg_new->serial_timeout) && (data_cfg_new->serial_timeout)) {
|
||||||
|
data_cfg_default->serial_timeout = data_cfg_new->serial_timeout;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void UartIsr(struct SerialDriver *serial_drv, struct SerialHardwareDevice *serial_dev)
|
static void UartIsr(struct SerialDriver *serial_drv, struct SerialHardwareDevice *serial_dev)
|
||||||
|
@ -86,6 +90,17 @@ static uint32 SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInf
|
||||||
NULL_PARAM_CHECK(serial_drv);
|
NULL_PARAM_CHECK(serial_drv);
|
||||||
struct SerialCfgParam *serial_cfg = (struct SerialCfgParam *)serial_drv->private_data;
|
struct SerialCfgParam *serial_cfg = (struct SerialCfgParam *)serial_drv->private_data;
|
||||||
|
|
||||||
|
if (configure_info->private_data) {
|
||||||
|
struct SerialCfgParam *serial_cfg_new = (struct SerialCfgParam *)configure_info->private_data;
|
||||||
|
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
// config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
LPUART_GetDefaultConfig(&config);
|
LPUART_GetDefaultConfig(&config);
|
||||||
config.baudRate_Bps = serial_cfg->data_cfg.serial_baud_rate;
|
config.baudRate_Bps = serial_cfg->data_cfg.serial_baud_rate;
|
||||||
|
|
||||||
|
@ -218,6 +233,7 @@ static const struct SerialDataCfg data_cfg_init =
|
||||||
.serial_bit_order = BIT_ORDER_LSB,
|
.serial_bit_order = BIT_ORDER_LSB,
|
||||||
.serial_invert_mode = NRZ_NORMAL,
|
.serial_invert_mode = NRZ_NORMAL,
|
||||||
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
||||||
|
.serial_timeout = WAITING_FOREVER,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -64,6 +64,10 @@ static void SerialCfgParamCheck(struct SerialCfgParam *serial_cfg_default, struc
|
||||||
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
||||||
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((data_cfg_default->serial_timeout != data_cfg_new->serial_timeout) && (data_cfg_new->serial_timeout)) {
|
||||||
|
data_cfg_default->serial_timeout = data_cfg_new->serial_timeout;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void UartHandler(struct SerialBus *serial_bus, struct SerialDriver *serial_drv)
|
static void UartHandler(struct SerialBus *serial_bus, struct SerialDriver *serial_drv)
|
||||||
|
@ -127,6 +131,12 @@ static uint32 SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInf
|
||||||
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
// config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
serial_hw_cfg->uart_handle.Instance = serial_hw_cfg->uart_device;
|
serial_hw_cfg->uart_handle.Instance = serial_hw_cfg->uart_device;
|
||||||
serial_hw_cfg->uart_handle.Init.BaudRate = serial_cfg->data_cfg.serial_baud_rate;
|
serial_hw_cfg->uart_handle.Init.BaudRate = serial_cfg->data_cfg.serial_baud_rate;
|
||||||
serial_hw_cfg->uart_handle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
|
serial_hw_cfg->uart_handle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
|
||||||
|
@ -273,6 +283,7 @@ static const struct SerialDataCfg data_cfg_init =
|
||||||
.serial_bit_order = BIT_ORDER_LSB,
|
.serial_bit_order = BIT_ORDER_LSB,
|
||||||
.serial_invert_mode = NRZ_NORMAL,
|
.serial_invert_mode = NRZ_NORMAL,
|
||||||
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
||||||
|
.serial_timeout = WAITING_FOREVER,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*manage the serial device operations*/
|
/*manage the serial device operations*/
|
||||||
|
|
|
@ -256,6 +256,10 @@ static void SerialCfgParamCheck(struct SerialCfgParam *serial_cfg_default, struc
|
||||||
if((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
if((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
||||||
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((data_cfg_default->serial_timeout != data_cfg_new->serial_timeout) && (data_cfg_new->serial_timeout)) {
|
||||||
|
data_cfg_default->serial_timeout = data_cfg_new->serial_timeout;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32 Stm32SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInfo *configure_info)
|
static uint32 Stm32SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInfo *configure_info)
|
||||||
|
@ -270,6 +274,12 @@ static uint32 Stm32SerialInit(struct SerialDriver *serial_drv, struct BusConfigu
|
||||||
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
// config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
USART_InitTypeDef USART_InitStructure;
|
USART_InitTypeDef USART_InitStructure;
|
||||||
|
|
||||||
USART_InitStructure.USART_BaudRate = serial_cfg->data_cfg.serial_baud_rate;
|
USART_InitStructure.USART_BaudRate = serial_cfg->data_cfg.serial_baud_rate;
|
||||||
|
@ -585,6 +595,7 @@ static const struct SerialDataCfg data_cfg_init =
|
||||||
.serial_bit_order = BIT_ORDER_LSB,
|
.serial_bit_order = BIT_ORDER_LSB,
|
||||||
.serial_invert_mode = NRZ_NORMAL,
|
.serial_invert_mode = NRZ_NORMAL,
|
||||||
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
||||||
|
.serial_timeout = WAITING_FOREVER,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*manage the serial device operations*/
|
/*manage the serial device operations*/
|
||||||
|
|
|
@ -204,6 +204,10 @@ static void SerialCfgParamCheck(struct SerialCfgParam *serial_cfg_default, struc
|
||||||
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
||||||
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((data_cfg_default->serial_timeout != data_cfg_new->serial_timeout) && (data_cfg_new->serial_timeout)) {
|
||||||
|
data_cfg_default->serial_timeout = data_cfg_new->serial_timeout;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32 Stm32SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInfo *configure_info)
|
static uint32 Stm32SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInfo *configure_info)
|
||||||
|
@ -218,6 +222,12 @@ static uint32 Stm32SerialInit(struct SerialDriver *serial_drv, struct BusConfigu
|
||||||
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
// config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
USART_InitTypeDef USART_InitStructure;
|
USART_InitTypeDef USART_InitStructure;
|
||||||
|
|
||||||
USART_InitStructure.USART_BaudRate = serial_cfg->data_cfg.serial_baud_rate;
|
USART_InitStructure.USART_BaudRate = serial_cfg->data_cfg.serial_baud_rate;
|
||||||
|
@ -390,6 +400,7 @@ static const struct SerialDataCfg data_cfg_init =
|
||||||
.serial_bit_order = BIT_ORDER_LSB,
|
.serial_bit_order = BIT_ORDER_LSB,
|
||||||
.serial_invert_mode = NRZ_NORMAL,
|
.serial_invert_mode = NRZ_NORMAL,
|
||||||
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
||||||
|
.serial_timeout = WAITING_FOREVER,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*manage the serial device operations*/
|
/*manage the serial device operations*/
|
||||||
|
|
|
@ -939,7 +939,12 @@ static uint32 Ch438DrvConfigure(void *drv, struct BusConfigureInfo *configure_in
|
||||||
x_err_t ret = EOK;
|
x_err_t ret = EOK;
|
||||||
|
|
||||||
struct SerialDriver *serial_drv = (struct SerialDriver *)drv;
|
struct SerialDriver *serial_drv = (struct SerialDriver *)drv;
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
struct SerialCfgParam *ext_serial_cfg = (struct SerialCfgParam *)configure_info->private_data;
|
struct SerialCfgParam *ext_serial_cfg = (struct SerialCfgParam *)configure_info->private_data;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
//config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = ext_serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
switch (configure_info->configure_cmd)
|
switch (configure_info->configure_cmd)
|
||||||
{
|
{
|
||||||
|
@ -1018,7 +1023,7 @@ static uint32 ImxrtCh438ReadData(void *dev, struct BusBlockReadParam *read_param
|
||||||
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
while (!interrupt_done) {
|
while (!interrupt_done) {
|
||||||
result = KSemaphoreObtain(ch438_sem, WAITING_FOREVER);
|
result = KSemaphoreObtain(ch438_sem, dev_param->serial_timeout);
|
||||||
if (EOK == result) {
|
if (EOK == result) {
|
||||||
gInterruptStatus = ReadCH438Data(REG_SSR_ADDR);
|
gInterruptStatus = ReadCH438Data(REG_SSR_ADDR);
|
||||||
if (!gInterruptStatus) {
|
if (!gInterruptStatus) {
|
||||||
|
@ -1062,6 +1067,10 @@ static uint32 ImxrtCh438ReadData(void *dev, struct BusBlockReadParam *read_param
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
//Wait serial sem timeout, break and return 0
|
||||||
|
rcv_num = 0;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return rcv_num;
|
return rcv_num;
|
||||||
|
|
|
@ -98,6 +98,10 @@ static void SerialCfgParamCheck(struct SerialCfgParam *serial_cfg_default, struc
|
||||||
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) {
|
||||||
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((data_cfg_default->serial_timeout != data_cfg_new->serial_timeout) && (data_cfg_new->serial_timeout)) {
|
||||||
|
data_cfg_default->serial_timeout = data_cfg_new->serial_timeout;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void UartIsr(struct SerialBus *serial, struct SerialDriver *serial_drv, struct SerialHardwareDevice *serial_dev)
|
static void UartIsr(struct SerialBus *serial, struct SerialDriver *serial_drv, struct SerialHardwareDevice *serial_dev)
|
||||||
|
@ -143,6 +147,12 @@ static uint32 SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInf
|
||||||
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
SerialCfgParamCheck(serial_cfg, serial_cfg_new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev;
|
||||||
|
struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
|
// config serial receive sem timeout
|
||||||
|
dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout;
|
||||||
|
|
||||||
lpuart_config_t config;
|
lpuart_config_t config;
|
||||||
LPUART_GetDefaultConfig(&config);
|
LPUART_GetDefaultConfig(&config);
|
||||||
config.baudRate_Bps = serial_cfg->data_cfg.serial_baud_rate;
|
config.baudRate_Bps = serial_cfg->data_cfg.serial_baud_rate;
|
||||||
|
@ -281,6 +291,7 @@ static const struct SerialDataCfg data_cfg_init =
|
||||||
.serial_bit_order = BIT_ORDER_LSB,
|
.serial_bit_order = BIT_ORDER_LSB,
|
||||||
.serial_invert_mode = NRZ_NORMAL,
|
.serial_invert_mode = NRZ_NORMAL,
|
||||||
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
.serial_buffer_size = SERIAL_RB_BUFSZ,
|
||||||
|
.serial_timeout = WAITING_FOREVER,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*manage the serial device operations*/
|
/*manage the serial device operations*/
|
||||||
|
|
|
@ -68,11 +68,12 @@ void InstallConsole(const char *bus_name, const char *drv_name, const char *dev_
|
||||||
BusDevClose(_console);
|
BusDevClose(_console);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console_bus->match(console_drv, console);
|
||||||
|
|
||||||
configure_info.configure_cmd = OPE_INT;
|
configure_info.configure_cmd = OPE_INT;
|
||||||
memset(&serial_cfg, 0, sizeof(struct SerialCfgParam));
|
memset(&serial_cfg, 0, sizeof(struct SerialCfgParam));
|
||||||
configure_info.private_data = &serial_cfg;
|
configure_info.private_data = &serial_cfg;
|
||||||
BusDrvConfigure(console_drv, &configure_info);
|
BusDrvConfigure(console_drv, &configure_info);
|
||||||
console_bus->match(console_drv, console);
|
|
||||||
|
|
||||||
serial_dev_param = (struct SerialDevParam *)console->private_data;
|
serial_dev_param = (struct SerialDevParam *)console->private_data;
|
||||||
serial_dev_param->serial_set_mode = 0;
|
serial_dev_param->serial_set_mode = 0;
|
||||||
|
|
|
@ -96,7 +96,12 @@ static x_err_t _MsgQueueSend(struct MsgQueue *mq,
|
||||||
|
|
||||||
tick_delta = 0;
|
tick_delta = 0;
|
||||||
task = GetKTaskDescriptor();
|
task = GetKTaskDescriptor();
|
||||||
|
|
||||||
|
if(WAITING_FOREVER == msec)
|
||||||
|
timeout = WAITING_FOREVER;
|
||||||
|
else
|
||||||
timeout = CalculteTickFromTimeMs(msec);
|
timeout = CalculteTickFromTimeMs(msec);
|
||||||
|
|
||||||
lock = CriticalAreaLock();
|
lock = CriticalAreaLock();
|
||||||
if (mq->num_msgs >= mq->max_msgs && timeout == 0) {
|
if (mq->num_msgs >= mq->max_msgs && timeout == 0) {
|
||||||
CriticalAreaUnLock(lock);
|
CriticalAreaUnLock(lock);
|
||||||
|
|
|
@ -95,7 +95,11 @@ static int32 _SemaphoreObtain(struct Semaphore *sem, int32 msec)
|
||||||
|
|
||||||
NULL_PARAM_CHECK(sem);
|
NULL_PARAM_CHECK(sem);
|
||||||
|
|
||||||
|
if(WAITING_FOREVER == msec)
|
||||||
|
wait_time = WAITING_FOREVER;
|
||||||
|
else
|
||||||
wait_time = CalculteTickFromTimeMs(msec);
|
wait_time = CalculteTickFromTimeMs(msec);
|
||||||
|
|
||||||
lock = CriticalAreaLock();
|
lock = CriticalAreaLock();
|
||||||
|
|
||||||
SYS_KDEBUG_LOG(KDBG_IPC, ("obtain semaphore: id %d, value %d, by task %s\n",
|
SYS_KDEBUG_LOG(KDBG_IPC, ("obtain semaphore: id %d, value %d, by task %s\n",
|
||||||
|
|
|
@ -44,6 +44,7 @@ struct SerialDataCfg
|
||||||
uint8 serial_bit_order;
|
uint8 serial_bit_order;
|
||||||
uint8 serial_invert_mode;
|
uint8 serial_invert_mode;
|
||||||
uint16 serial_buffer_size;
|
uint16 serial_buffer_size;
|
||||||
|
int32 serial_timeout;
|
||||||
|
|
||||||
uint8 ext_uart_no;
|
uint8 ext_uart_no;
|
||||||
enum ExtSerialPortConfigure port_configure;
|
enum ExtSerialPortConfigure port_configure;
|
||||||
|
|
|
@ -107,6 +107,8 @@ struct SerialDevParam
|
||||||
uint16 serial_work_mode;
|
uint16 serial_work_mode;
|
||||||
uint16 serial_set_mode;
|
uint16 serial_set_mode;
|
||||||
uint16 serial_stream_mode;
|
uint16 serial_stream_mode;
|
||||||
|
|
||||||
|
int32 serial_timeout;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct SerialHardwareDevice;
|
struct SerialHardwareDevice;
|
||||||
|
|
|
@ -630,7 +630,7 @@ static uint32 SerialDevRead(void *dev, struct BusBlockReadParam *read_param)
|
||||||
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)dev;
|
struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)dev;
|
||||||
struct SerialDevParam *serial_dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
struct SerialDevParam *serial_dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data;
|
||||||
|
|
||||||
if (EOK == KSemaphoreObtain(serial_dev->haldev.dev_sem, WAITING_FOREVER)) {
|
if (EOK == KSemaphoreObtain(serial_dev->haldev.dev_sem, serial_dev_param->serial_timeout)) {
|
||||||
if (serial_dev_param->serial_work_mode & SIGN_OPER_INT_RX) {
|
if (serial_dev_param->serial_work_mode & SIGN_OPER_INT_RX) {
|
||||||
ret = SerialDevIntRead(serial_dev, read_param);
|
ret = SerialDevIntRead(serial_dev, read_param);
|
||||||
if (EOK != ret) {
|
if (EOK != ret) {
|
||||||
|
@ -654,6 +654,8 @@ static uint32 SerialDevRead(void *dev, struct BusBlockReadParam *read_param)
|
||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
return ERROR;
|
||||||
}
|
}
|
||||||
return EOK;
|
return EOK;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue