|
|
@@ -1920,6 +1920,56 @@ static int set_modbus(cascade_handle_t *cas, ModbusInfo_t *info)
|
|
|
// }
|
|
|
return 0;
|
|
|
}
|
|
|
+#include <net/if.h>
|
|
|
+#include <ifaddrs.h>
|
|
|
+
|
|
|
+static int get_ipaddr(int family, char *iface, char *addr, char *netmask)
|
|
|
+{
|
|
|
+ struct ifaddrs *ifap, *ifa;
|
|
|
+
|
|
|
+ if (getifaddrs(&ifap) == -1) {
|
|
|
+ LOGE("___getifaddrs() error\n");
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (ifa = ifap; ifa != NULL; ifa = ifa->ifa_next) {
|
|
|
+ if (ifa->ifa_addr != NULL && ifa->ifa_addr->sa_family == family) {
|
|
|
+ if(family==AF_INET) {
|
|
|
+ struct sockaddr_in *sa,*msk;
|
|
|
+ sa = (struct sockaddr_in *) ifa->ifa_addr;
|
|
|
+ msk = (struct sockaddr_in *) ifa->ifa_netmask;
|
|
|
+
|
|
|
+ if(addr) {
|
|
|
+ inet_ntop(family, &sa->sin_addr, addr, INET6_ADDRSTRLEN);
|
|
|
+ printf("___addr: %s\n", addr);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(netmask) {
|
|
|
+ inet_ntop(family, &msk->sin_addr, netmask, INET6_ADDRSTRLEN);
|
|
|
+ //printf("___netmask: %s\n", netmask);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ struct sockaddr_in6 *sa,*msk;
|
|
|
+ sa = (struct sockaddr_in6 *) ifa->ifa_addr;
|
|
|
+ msk = (struct sockaddr_in6 *) ifa->ifa_netmask;
|
|
|
+
|
|
|
+ if(addr) {
|
|
|
+ inet_ntop(family, &sa->sin6_addr, addr, INET6_ADDRSTRLEN);
|
|
|
+ //printf("___addr6: %s\n", addr);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(netmask) {
|
|
|
+ inet_ntop(family, &msk->sin6_addr, netmask, INET6_ADDRSTRLEN);
|
|
|
+ //printf("___netmask6: %s\n", netmask);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ freeifaddrs(ifap);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
|
|
|
int cascade_init(void)
|
|
|
{
|
|
|
@@ -1953,7 +2003,10 @@ int cascade_init(void)
|
|
|
thread_start(THREAD_ID_SCAN, scan_thread, cas, 4*MB, 0);
|
|
|
GlobalDeviceManager* dm =get_dm();
|
|
|
NetworkInfo_t net = {0};
|
|
|
- sys_get_net(&net,IP_V4);
|
|
|
+ //sys_get_net(&net,IP_V4);
|
|
|
+ int family = AF_INET;
|
|
|
+ r = get_ipaddr(family, "eth0", net.ip_address, net.mask);
|
|
|
+
|
|
|
uint8_t addr = 0;
|
|
|
if(dm->_globalDevInfo._gmodbus_info.product_modbus_type == 0)
|
|
|
{
|