Selaa lähdekoodia

modbus_TCP_connect

zhouw 2 viikkoa sitten
vanhempi
commit
f6176f956f
4 muutettua tiedostoa jossa 95 lisäystä ja 16 poistoa
  1. 6 2
      src/config.c
  2. 1 5
      src/logger.c
  3. 74 3
      src/main.c
  4. 14 6
      src/modbus_TCP_HW.c

+ 6 - 2
src/config.c

@@ -75,6 +75,11 @@ static char* itoa_c(int value, char *buff, int radix)
     return buff;
 }
 
+void print_stationID()
+{
+    printi("tcu_id =%d\n",tcu_config.tcu_id);
+}
+
 static void tcu_config_load(cJSON *root, tcu_config_t* config)
 {
     cJSON *modbus_hw  = cJSON_GetObjectItem(root,"modbus_hw");
@@ -82,8 +87,7 @@ static void tcu_config_load(cJSON *root, tcu_config_t* config)
     if (config->tcu_id == -1)
     {
         config->tcu_id = get_TCUID();
-    }
-    printi("tcu_id =%d\n",config->tcu_id);
+    } 
     config->enable_modbus_hw = atoi(cJSON_GetObjectItem(root, "enable_modbus_hw")->valuestring);
     config->enable_hmi = atoi(cJSON_GetObjectItem(root, "enable_hmi")->valuestring);
     config->enable_ocpp = atoi(cJSON_GetObjectItem(root, "enable_ocpp")->valuestring);

+ 1 - 5
src/logger.c

@@ -170,7 +170,7 @@ static void clog_flast(clog_t* dev, time_t lutc, char* log_filename)
             snprintf(tfilename, 511, "%s/%s", dev->log_pathname, pfilename);
             remove(tfilename);
         }
-        // show_flist(dev);
+       // show_flist(dev);
     }
 }
 
@@ -360,10 +360,6 @@ void clog_init(const char* log_filename, int max_filesize, int max_filenumb)
     clog_t *dev = (clog_t*)&clogger;
     if (dev)
     {
-
-
-
-
         char* tmp0 = strdup(log_filename);
         char* tmp1 = strdup(log_filename);
         memset(dev, 0, sizeof(clog_t));

+ 74 - 3
src/main.c

@@ -10,7 +10,7 @@
 #include "stm32f103.h"
 #include "tc_tcu.h"
 #include "tcXHHW.h"
-
+#include <ifaddrs.h>
 // static int tcu_quit = 0;
 
 // void sigint_handler(int sig)
@@ -65,6 +65,73 @@ char* formatAppVersion(void)
     return app_version;
 }
 
+char version[10] ="1.1.7";
+void  printVersion(char* arg)
+{
+    int len;
+    static uint8_t comfire = 0;
+    char src_path[32] = {0};
+    if(comfire == 1)
+    {
+        printi("SW:%s\n",version);
+        return ;
+    }
+    len = readlink(arg, src_path, sizeof(src_path) - 1);
+    comfire = 1;
+    if (len == -1) {
+        printi("this is sr_path %s:%s\n", arg,version);
+        return ;
+    }
+    src_path[len] = '\0';
+    printi("SW:%s:%s\n", src_path,version);
+}
+
+int get_interface_ip(const char *ifname) {
+    struct ifaddrs *ifap, *ifa;
+    struct sockaddr_in *sa;
+    int found = 0;
+    char ip_buf[32];
+
+    if (ifname == NULL) {
+        return -1;
+    }
+
+    // 1. ???????????
+    if (getifaddrs(&ifap) == -1) {
+        return -1;
+    }
+
+    // 2. ???????????? IPv4 ??
+    for (ifa = ifap; ifa != NULL; ifa = ifa->ifa_next) {
+        // ?????
+        // - ?????
+        // - ???? IPv4?AF_INET?
+        // - ?????
+        if (strcmp(ifa->ifa_name, ifname) == 0 &&
+            ifa->ifa_addr != NULL &&
+            ifa->ifa_addr->sa_family == AF_INET) {
+
+            // ?? IPv4 ??
+            sa = (struct sockaddr_in *)ifa->ifa_addr;
+            inet_ntop(AF_INET, &(sa->sin_addr), ip_buf, 32);
+            printi("ip:%s\n",ip_buf);
+            found = 1;
+            break;  
+        }
+    }
+
+    freeifaddrs(ifap);
+
+    if (!found) {
+        printe("no ip\n");
+        return -1;
+    }
+
+    return 0;
+}
+
+
+
 extern void rs232_test(int loop);
 
 int main(int argc, char* argv[])
@@ -76,11 +143,15 @@ int main(int argc, char* argv[])
     clog_init("/home/root/log/tcu", CLOG_BUFF_SIZE*60*24, 30);
     tcu_BSP_init();
 	tcu_config_init(config_filename);
-    printd("\n\r\tSW:%s\n", formatAppVersion());
-
+   // printd("\n\r\tSW:%s\n", formatAppVersion());
+   
     clog_bind_serverip(tcu_config.xhlog_ip, tcu_config.xhlog_port);
 
+    extern void print_stationID();
+    print_stationID();
+    printVersion(argv[0]);
     
+    get_interface_ip("eth0");
 
     set_GUNLED_on(0, 0);
     set_GUNLED_on(1, 0);

+ 14 - 6
src/modbus_TCP_HW.c

@@ -367,12 +367,14 @@ int modbus_TCP_connect(modbus_TCP_t* dev)
             dev->ssl = NULL;
             ret = dev->fd;
         }
-        // if (dev->fd > 0)
-        // {
+         if (dev->fd > 0)
+         {
         //     int flags = fcntl(dev->fd , F_GETFL);
         //     flags |= O_NONBLOCK;
         //     fcntl(dev->fd , F_SETFL, flags);
-        // }
+            extern int get_interface_ip(const char *ifname) ;
+            get_interface_ip("eth0");
+         }
         pthread_mutex_unlock(&dev->mutex);
     }
     return ret;
@@ -396,12 +398,18 @@ int modbus_TCP_connect1(modbus_TCP_t* dev)
             dev->ssl = NULL;
             ret = dev->fd;
         }
-        // if (dev->fd > 0)
-        // {
+        if (dev->fd > 0)
+        {
         //     int flags = fcntl(dev->fd , F_GETFL);
         //     flags |= O_NONBLOCK;
         //     fcntl(dev->fd , F_SETFL, flags);
-        // }
+            extern int get_interface_ip(const char *ifname) ;
+            extern void print_stationID();
+            extern void  printVersion(char* arg);
+            print_stationID();
+            printVersion(NULL);
+            get_interface_ip("eth0");
+        }
         pthread_mutex_unlock(&dev->mutex);
     }
     return ret;