guohui лет назад: 2
Родитель
Сommit
b23cea77ea

+ 118 - 0
04-源码/03-核心板/smart_pdu/sys/sys.c

@@ -0,0 +1,118 @@
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <string.h>
+#include <pthread.h>
+#include "elog.h"
+#include "sys.h"
+
+typedef struct {
+	char *pbuf;
+    int  dlen;
+    int  blen;
+}node_t;
+static int node_free(node_t *nd)
+{
+    if(!nd) {
+        return -1;
+    }
+
+    free(nd->pbuf);
+    nd->pbuf = NULL;
+    nd->dlen = 0;
+    nd->blen = 0;
+}
+
+static int exe_cmd(char *cmd, node_t *nd);
+{
+    int r=0;
+	FILE *fp=NULL;
+    char *pbuf=NULL;
+    int onelen=1000,
+    int dlen=0,blen=onelen;
+
+    pbuf = malloc(onelen);
+    if(!pbuf) {
+        return -1;
+    }
+    
+    fp = popen(cmd, "r");
+    if (fp == NULL) {
+        return -1;
+    }
+
+	while(1) {
+        r = fread(pbuf+dlen, sizeof(char), onelen, fp);
+        if(r<=0) {
+            log_e("upgrade relloac %d failed\n", tlen+onelen);
+            break;
+        }
+        dlen += r;
+        if(dlen+onelen>blen) {
+            char* p = realloc(pbuf, dlen+onelen);
+            if(!p) {
+                log_e("upgrade relloac %d failed\n", dlen+onelen);
+                free(pbuf); pclose(fp);
+                return -1;
+            }
+            pbuf = p;
+            blen = dlen+onelen;
+        }
+	}
+    pclose(fp);
+    
+    nd->pbuf = pbuf;
+    nd->dlen = dlen;
+    nd->blen = blen;
+    
+	return 0;
+}
+////////////////////////////////////////////////////////////////////
+
+
+int sys_reboot(void)
+{
+    int r=0;
+    node_t nd;
+
+    r = exe_cmd("reboot", &nd);
+    if(r) {
+        log_e("sys_reboot failed!\n");
+        return -1;
+    }
+    free_node(&nd);
+
+    return r;
+}
+
+
+int sys_set_factory(void)
+{
+    int r=0;
+    node_t nd;
+
+    //stop_all_threads()
+
+    //set web to factory
+
+    //set app to factory
+    //r = exe_cmd("rm /root/pdu_dat.db", &nd);
+    if(r) {
+        log_e("sys_reboot failed!\n");
+        return -1;
+    }
+    free_node(&nd);
+
+    //start_all_threads()
+    
+    return r;
+}
+
+
+
+
+
+
+

+ 8 - 0
04-源码/03-核心板/smart_pdu/sys/sys.h

@@ -0,0 +1,8 @@
+#ifndef __SYS_H_
+#define __SYS_H_
+
+int sys_reboot(void);
+int sys_set_factory(void);
+
+
+#endif

+ 203 - 0
04-源码/03-核心板/smart_pdu/upgrade/upgrade.c

@@ -0,0 +1,203 @@
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <string.h>
+#include <pthread.h>
+#include "elog.h"
+
+typedef struct {
+	pthread_t thdId;
+	uint8_t   stat;
+	uint32_t  src;
+}upg_handle_t;
+typedef struct {
+	char *pbuf;
+    int  dlen;
+    int  blen;
+}node_t;
+
+#define TMP_FOLDER  "/tmp/gowone"
+#define WEB_FOLDER  "/root/web"
+#define APP_FOLDER  "/root/app"
+
+
+
+static upg_handle_t upgHandle;
+
+static int free_node(node_t *nd)
+{
+    if(!nd) {
+        return -1;
+    }
+
+    free(nd->pbuf);
+    nd->pbuf = NULL;
+    nd->dlen = 0;
+    nd->blen = 0;
+}
+
+static int exe_cmd(char *cmd, node_t *nd);
+{
+    int r=0;
+	FILE *fp=NULL;
+    char *pbuf=NULL;
+    int onelen=1000,
+    int dlen=0,blen=onelen;
+
+    pbuf = malloc(onelen);
+    if(!pbuf) {
+        return -1;
+    }
+    
+    fp = popen(cmd, "r");
+    if (fp == NULL) {
+        return -1;
+    }
+
+	while(1) {
+        r = fread(pbuf+dlen, sizeof(char), onelen, fp);
+        if(r<=0) {
+            log_e("upgrade relloac %d failed\n", tlen+onelen);
+            break;
+        }
+        dlen += r;
+        if(dlen+onelen>blen) {
+            char* p = realloc(pbuf, dlen+onelen);
+            if(!p) {
+                log_e("upgrade relloac %d failed\n", dlen+onelen);
+                free(pbuf); pclose(fp);
+                return -1;
+            }
+            pbuf = p;
+            blen = dlen+onelen;
+        }
+	}
+    pclose(fp);
+
+    nd->pbuf = pbuf;
+    nd->dlen = dlen;
+    nd->blen = blen;
+    
+	return 0;
+}
+
+
+static int upg_file_copy(void)
+{
+
+
+}
+
+static int upg_file_remove(void)
+{
+
+
+}
+
+
+static int upg_file_check(void)
+{
+    int r;
+    char *path;
+
+    switch(upgHandle.src) {
+        case UPGRADE_SRC_TCP:
+        {
+
+        }
+        break;
+
+        case UPGRADE_SRC_HTTP:
+        {
+
+        }
+        break;
+
+        case UPGRADE_SRC_MQTT:
+        {
+
+        }
+        break;
+
+        case UPGRADE_SRC_UDISK:
+        {
+
+        }
+        break;
+
+        case UPGRADE_SRC_RS485:
+        {
+
+        }
+        break;
+
+        default:
+        {
+
+        }
+        break;
+    }
+
+
+    //fopen
+
+}
+
+
+
+
+static void* upgrade_thread(void *arg)
+{
+	while(1) {
+        
+        
+	}
+
+	return 0;
+}
+
+
+
+/* @brief 升级初始化
+   该函数将启动升级线程
+*/
+int upgrade_init(void)
+{
+	pthread_attr_t attr;
+	//_globalDeviceManager
+
+	memset(&upgHandle, 0, sizeof(upgHandle));
+
+	upgHandle.src   = UPGRADE_SRC_NONE;
+    upgHandle.stat  = UPGRADE_STAT_NONE;
+    upgHandle.thdId = 0;
+	
+    pthread_create(&upgHandle.thdId, NULL,upgrade_thread, NULL);
+    return 0;
+}

+/* @brief 返回升级状态
+   该函数将启动升级线程
+*/
+int upgrade_stat(UPGRADE_STAT *st)
+{
+	if(!st) {
+		return -1;
+	}
+	*st = upgHandle.stat;
+	
+    return 0;
+}
+
+
+int upgrade_set_src(UPGRADE_SRC src)
+{
+    upgHandle.src |= (src<<1);
+
+    return 0;
+}
+
+
+
+

+ 74 - 0
04-源码/03-核心板/smart_pdu/upgrade/upgrade.h

@@ -0,0 +1,74 @@
+#ifndef __UPGRADE_H_
+#define __UPGRADE_H_
+
+typedef enum {
+	UPGRADE_STAT_NONE=0,
+	UPGRADE_STAT_GOING,
+	UPGRADE_STAT_FAILED,
+}UPGRADE_STAT;
+
+typedef enum {
+	UPGRADE_SRC_NONE=0,
+	UPGRADE_SRC_TCP,
+	UPGRADE_SRC_HTTP,
+	UPGRADE_SRC_MQTT,
+	UPGRADE_SRC_UDISK,
+	UPGRADE_SRC_RS485,
+}UPGRADE_SRC;
+
+typedef enum {
+	UPGRADE_PKG_PWR=0,
+	UPGRADE_PKG_WEB,
+	UPGRADE_PKG_APP,
+}UPGRADE_PKG;
+
+typedef enum {
+	UPGRADE_DEV_PWR=0,      //电源板
+	UPGRADE_DEV_HDR,        //表头
+}UPGRADE_DEV;
+
+typedef enum {
+	UPGRADE_STR_OLD=0,
+	UPGRADE_STR_FORCE,
+}UPGRADE_STR;  //升级策略
+
+typedef enum {
+	UPGRADE_NUM_SINGLE=0,
+	UPGRADE_NUM_ALL,
+}UPGRADE_NUM;
+
+typedef struct {
+    char str;
+    char addr;          //device modbus addr
+	char name[32];      //device serial number
+	
+}dev_addr_t;
+
+
+#pragma pack(1)
+typedef struct {
+    char data[32];
+}md5_t;
+
+
+typedef struct {
+
+
+}upgrade_pkt_t;
+
+
+typedef struct {
+    md5_t   md5;
+}upgrade_file_t;
+#pragma pack()
+
+
+
+
+
+int upgrade_init(void);
+int upgrade_stat(UPGRADE_STAT *st);
+int upgrade_set_src(UPGRADE_SRC src);
+
+
+#endif

+ 0 - 0
04-源码/03-核心板/tools/burn/readme.txt


+ 3 - 0
04-源码/03-核心板/tools/pack/pack.bat

@@ -0,0 +1,3 @@
+@ECHO OFF
+
+TAR 

+ 0 - 0
04-源码/03-核心板/tools/pack/readme.txt


BIN
04-源码/03-核心板/tools/ssh/pscp.exe


BIN
04-源码/03-核心板/tools/ssh/putty.exe


+ 13 - 0
04-源码/03-核心板/tools/ssh/script.sh

@@ -0,0 +1,13 @@
+tar -xzvf pduAll.tar.gz
+mv ./snmp /usr/local/snmpd/
+mv ./usr/lib/* /usr/lib/
+mv ./interfaces /etc/network/interfaces
+mv ./S90PDUStart /etc/init.d/S90PDUStart
+cd ~/web_temp/
+chmod +x runme.sh
+chmod +x pdu_dat.db
+cd /usr/local/snmpd/
+cp -r ./lib/* /usr/lib
+/root/web_temp/runme.sh
+cd var/agentx/
+chmod 777 master

+ 56 - 0
04-源码/03-核心板/tools/ssh/sendto.bat

@@ -0,0 +1,56 @@
+@ECHO OFF
+::https://documentation.help/PuTTY/using-cmdline.html
+
+SET TARGET=%1
+
+SET TOOLDIR=..\tools
+SET PSCP=%TOOLDIR%\pscp
+SET PUTTY=%TOOLDIR%\putty
+
+SET IP=192.168.1.132
+
+SET USR=root
+SET RATE=115200
+SET FBAT=script.sh
+SET PWD=22222
+
+SET PORT=
+
+::获取串口的端口号
+CALL :getPort PORT
+ECHO +++%PORT%+++
+
+::%PUTTY% -serial %PORT% -sercfg %RATE%,8,n,1,N
+
+::设置串口参数
+::MODE %PORT% BAUD=%RATE% PARITY=N DATA=8 STOP=1
+
+::修改表头网络参数并重启网络
+::ECHO ifconfig eth0 %IP% netmask 255.255.255.0
+::ECHO /etc/init.d/S40network restart
+
+::传递文件
+::%PSCP% %TARGET% root@%IP%:/%USR%
+::%PUTTY% -ssh -l %USR% -pw %PWD% -P 22 -m %FBAT% %IP%
+
+
+::重启网卡
+::sudo service networking restart
+
+::启动udhcpc后台服务
+::udhcpc -b -i eth0 -p /var/run/udhcpc.pid -R"
+
+
+:getPort
+SET "%~1="
+SETLOCAL ENABLEDELAYEDEXPANSION
+
+FOR /F "USEBACKQ TOKENS=2 DELIMS=(" %%i  IN (`wmic path win32_pnpentity get caption /format:table ^| findstr "CH340"`)  DO (SET P1= %%i)
+SET P1=%P1: =%
+SET P1=%P1:)=%
+
+( ENDLOCAL 
+	SET "%~1=%P1%"
+)
+GOTO :EOF
+