diff options
| author | SummerGift <[email protected]> | 2019-05-16 09:33:14 +0800 |
|---|---|---|
| committer | SummerGift <[email protected]> | 2019-05-16 09:33:14 +0800 |
| commit | a900eaa0535a0c287ef26aab03c3ad965714f724 (patch) | |
| tree | 617a020718babb8993905e5b33dccd2007c20101 /components | |
| parent | e809ced6079df626d40b1a9a6b8e5a286fa5b908 (diff) | |
| parent | 361754e0375b3ef61438ff2d0ec96e330b5a4147 (diff) | |
Merge remote-tracking branch 'remotes/origin/master' into master_rt-thread
Diffstat (limited to 'components')
| -rw-r--r-- | components/net/freemodbus/port/portserial.c | 29 | ||||
| -rw-r--r-- | components/net/freemodbus/port/portserial_m.c | 31 | ||||
| -rw-r--r-- | components/net/sal_socket/impl/af_inet_lwip.c | 15 |
3 files changed, 43 insertions, 32 deletions
diff --git a/components/net/freemodbus/port/portserial.c b/components/net/freemodbus/port/portserial.c index 7c546a1691..cbd846d7ff 100644 --- a/components/net/freemodbus/port/portserial.c +++ b/components/net/freemodbus/port/portserial.c @@ -52,6 +52,8 @@ static void serial_soft_trans_irq(void* parameter); BOOL xMBPortSerialInit(UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits, eMBParity eParity) { + rt_device_t dev = RT_NULL; + char uart_name[20]; /** * set 485 mode receive and transmit control IO * @note MODBUS_SLAVE_RT_CONTROL_PIN_INDEX need be defined by user @@ -60,22 +62,19 @@ BOOL xMBPortSerialInit(UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits, rt_pin_mode(MODBUS_SLAVE_RT_CONTROL_PIN_INDEX, PIN_MODE_OUTPUT); #endif /* set serial name */ - if (ucPORT == 1) { -#if defined(RT_USING_UART1) || defined(RT_USING_REMAP_UART1) - extern struct rt_serial_device serial1; - serial = &serial1; -#endif - } else if (ucPORT == 2) { -#if defined(RT_USING_UART2) - extern struct rt_serial_device serial2; - serial = &serial2; -#endif - } else if (ucPORT == 3) { -#if defined(RT_USING_UART3) - extern struct rt_serial_device serial3; - serial = &serial3; -#endif + rt_snprintf(uart_name,sizeof(uart_name), "uart%d", ucPORT); + + dev = rt_device_find(uart_name); + if(dev == RT_NULL) + { + /* can not find uart */ + return FALSE; } + else + { + serial = (struct rt_serial_device*)dev; + } + /* set serial configure parameter */ serial->config.baud_rate = ulBaudRate; serial->config.stop_bits = STOP_BITS_1; diff --git a/components/net/freemodbus/port/portserial_m.c b/components/net/freemodbus/port/portserial_m.c index f68794a617..47a70dd905 100644 --- a/components/net/freemodbus/port/portserial_m.c +++ b/components/net/freemodbus/port/portserial_m.c @@ -53,6 +53,9 @@ static void serial_soft_trans_irq(void* parameter); BOOL xMBMasterPortSerialInit(UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits, eMBParity eParity) { + rt_device_t dev = RT_NULL; + char uart_name[20]; + /** * set 485 mode receive and transmit control IO * @note MODBUS_MASTER_RT_CONTROL_PIN_INDEX need be defined by user @@ -60,24 +63,20 @@ BOOL xMBMasterPortSerialInit(UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits, #if defined(RT_MODBUS_MASTER_USE_CONTROL_PIN) rt_pin_mode(MODBUS_MASTER_RT_CONTROL_PIN_INDEX, PIN_MODE_OUTPUT); #endif - /* set serial name */ - if (ucPORT == 1) { -#if defined(RT_USING_UART1) || defined(RT_USING_REMAP_UART1) - extern struct rt_serial_device serial1; - serial = &serial1; -#endif - } else if (ucPORT == 2) { -#if defined(RT_USING_UART2) - extern struct rt_serial_device serial2; - serial = &serial2; -#endif - } else if (ucPORT == 3) { -#if defined(RT_USING_UART3) - extern struct rt_serial_device serial3; - serial = &serial3; -#endif + rt_snprintf(uart_name,sizeof(uart_name), "uart%d", ucPORT); + + dev = rt_device_find(uart_name); + if(dev == RT_NULL) + { + /* can not find uart */ + return FALSE; + } + else + { + serial = (struct rt_serial_device*)dev; } + /* set serial configure parameter */ serial->config.baud_rate = ulBaudRate; serial->config.stop_bits = STOP_BITS_1; diff --git a/components/net/sal_socket/impl/af_inet_lwip.c b/components/net/sal_socket/impl/af_inet_lwip.c index cb271a55e0..95e7633635 100644 --- a/components/net/sal_socket/impl/af_inet_lwip.c +++ b/components/net/sal_socket/impl/af_inet_lwip.c @@ -217,6 +217,19 @@ static int inet_getsockname(int socket, struct sockaddr *name, socklen_t *namele return lwip_getsockname(socket, name, namelen); } +int inet_ioctlsocket(int socket, long cmd, void *arg) +{ + switch (cmd) + { + case F_GETFL: + case F_SETFL: + return lwip_fcntl(socket, cmd, (int) arg); + + default: + return lwip_ioctl(socket, cmd, arg); + } +} + #ifdef SAL_USING_POSIX static int inet_poll(struct dfs_fd *file, struct rt_pollreq *req) { @@ -278,7 +291,7 @@ static const struct sal_socket_ops lwip_socket_ops = lwip_shutdown, lwip_getpeername, inet_getsockname, - lwip_ioctl, + inet_ioctlsocket, #ifdef SAL_USING_POSIX inet_poll, #endif |
