revise lwip for control framework

This commit is contained in:
Forsworns
2022-02-24 17:52:19 +08:00
parent 287cd1bd89
commit 9fe5d550b5
13 changed files with 72 additions and 49 deletions
+10 -20
View File
@@ -123,41 +123,30 @@ static inline int SerialDevIntRead(struct SerialHardwareDevice *serial_dev, stru
NULL_PARAM_CHECK(serial_dev);
NULL_PARAM_CHECK(read_param);
int char_num = 0;
struct SerialHwDevDone *hwdev_done = serial_dev->hwdev_done;
struct SerialCfgParam *serial_cfg = (struct SerialCfgParam *)serial_dev->private_data;
uint8 *read_data = (uint8 *)read_param->buffer;
x_size_t read_length = read_param->size;
int start_pointer, end_pointer;
int i;
while (read_length)
{
uint8 get_char;
x_base lock;
start_pointer = serial_dev->serial_fifo.serial_rx->serial_recv_num;
end_pointer = serial_dev->serial_fifo.serial_rx->serial_send_num;
lock = CriticalAreaLock();
if (start_pointer == end_pointer) {
if (serial_dev->serial_fifo.serial_rx->serial_recv_num == serial_dev->serial_fifo.serial_rx->serial_send_num) {
if (RET_FALSE == serial_dev->serial_fifo.serial_rx->serial_rx_full) {
CriticalAreaUnLock(lock);
break;
}
}
/* Read all the chars from the serial_rx_buffer */
while (start_pointer != end_pointer)
{
read_data[char_num] = serial_dev->serial_fifo.serial_rx->serial_rx_buffer[start_pointer];
start_pointer += 1;
if (start_pointer >= serial_cfg->data_cfg.serial_buffer_size) {
start_pointer = 0;
}
char_num = char_num + 1;
get_char = serial_dev->serial_fifo.serial_rx->serial_rx_buffer[serial_dev->serial_fifo.serial_rx->serial_recv_num];
serial_dev->serial_fifo.serial_rx->serial_recv_num += 1;
if (serial_dev->serial_fifo.serial_rx->serial_recv_num >= serial_cfg->data_cfg.serial_buffer_size) {
serial_dev->serial_fifo.serial_rx->serial_recv_num = 0;
}
read_data[char_num]='\0';
if (RET_TRUE == serial_dev->serial_fifo.serial_rx->serial_rx_full) {
serial_dev->serial_fifo.serial_rx->serial_rx_full = RET_FALSE;
@@ -165,9 +154,10 @@ static inline int SerialDevIntRead(struct SerialHardwareDevice *serial_dev, stru
CriticalAreaUnLock(lock);
*read_data = get_char;
read_data++;
read_length--;
read_param->read_length += char_num;
serial_dev->serial_fifo.serial_rx->serial_recv_num = start_pointer;
read_param->read_length++;
}
return EOK;