Przeglądaj źródła

增加南方电网项目配置
增加杰哥rgb相关代码

guohui 1 rok temu
rodzic
commit
d5b6c5f544
7 zmienionych plików z 836 dodań i 312 usunięć
  1. 6 4
      control/PDU-AC-COMBINE_UPGRADE/App/Key/Key.c
  2. 19 2
      pro/config/cfg.h
  3. 716 294
      pro/src/Cellular.c
  4. 10 1
      pro/src/Cellular.h
  5. 62 0
      pro/src/app.c
  6. 2 0
      pro/src/common.h
  7. 21 11
      pub

+ 6 - 4
control/PDU-AC-COMBINE_UPGRADE/App/Key/Key.c

@@ -247,14 +247,16 @@ uint8_t get_detection(void)
 	#else
 		{
 			#if (RelaySlaveChaNum == 6 || ((RelaySlaveChaNum == 8) && SUPPORT_2_DETECTION))
-				  key_detection_2 = gpio_input_bit_get(DERECTION_GPIO,DERECTION_IO_2);
-				  if(key_detection_2 == 0)
+					uint8_t val1 = 0;
+				  val1 = gpio_input_bit_get(DERECTION_GPIO,DERECTION_IO_2);
+				  if(val1 == 0)
 				  {
 					  value |= (1 << 1);
 				  }
 			#endif
-					key_detection_1 = gpio_input_bit_get(DERECTION_GPIO,DERECTION_IO_1);
-			    if(key_detection_1 == 0)
+					uint8_t val2 = 0;
+					val2 = gpio_input_bit_get(DERECTION_GPIO,DERECTION_IO_1);
+			    if(val2 == 0)
 				  {
 					  value |= (1 << 0);
 				  }

+ 19 - 2
pro/config/cfg.h

@@ -23,13 +23,16 @@
 //#define PRJ_SG_I3_O3
 //#define PRJ_TEST
 //#define PRJ_TEST_AC_I1_O1
+#define PRJ_ESOUTH_DC_I1_O4_RGB5
 //#define PRJ_TEST_AC_I3_O1
 //#define PRJ_IP_AC_I3_O3
 //#define PRJ_INST2302_DC_OLED
 //#define PRJ_INST2106_AC_I1_O1_OLED
+
+
 //#define PRJ_IP_AC_I3_O1
-#define PRJ_IP_AC_I1_O1
-//#define USE_BOARD_UPGRADE
+//#define PRJ_IP_AC_I1_O1
+
 
 #define USE_MAIL
 #define MAIL_SEND_BUILTIN
@@ -44,6 +47,7 @@
 
 //#define USE_CELL
 //#define USE_WIFI
+//#define USE_BOARD_UPGRADE
 
 
 #if (defined PRJ_XIAN_AC_I1_O1_P4) || (defined PRJ_XIAN_AC_I1_O1_P8)  //GOM037
@@ -256,6 +260,19 @@
     #define USE_UI
     #define ROTATE                              180
     #define FLIP_TIME                           3
+    
+#elif defined PRJ_ESOUTH_DC_I1_O4_RGB5
+    #define LANGUAGE                            0           //chinese
+    #define SMPLE_TIME                          30          //ms
+    #define SAVE_TIME                           60000       //ms
+    #define CASCADE_CNT                         0
+
+    #define PHASE_GROUP                         8
+    #define CHANNEL_DELAY                       8
+
+    #define PROD_POWER_TYPE                     0
+
+    #define FLIP_TIME                           3
 #elif (defined PRJ_IP_AC_I3_O1)
     #define LANGUAGE                            0
     #define SMPLE_TIME                          30          //ms

Plik diff jest za duży
+ 716 - 294
pro/src/Cellular.c


+ 10 - 1
pro/src/Cellular.h

@@ -13,7 +13,15 @@ enum {
 };
 
 typedef struct {
-    int flag;
+    int  dbm;
+    int  ber;
+
+    char apn[32];
+    char cnum[32];
+    char imsi[32];
+    char imei[32];
+    char isp[32];
+    
 }cellular_info_t;
 
 
@@ -21,6 +29,7 @@ typedef int (*cell_fn_t)(int cell, void *data, int len);
 
 int cellular_init(void);
 int cellular_deinit(void);
+int cellular_reset(void);
 
 int cellular_get_info(cellular_info_t *info);
 int cellular_set_cb(int cell, cell_fn_t fn);

+ 62 - 0
pro/src/app.c

@@ -1960,6 +1960,10 @@ static void* sensor_thread(void* arg)
 #endif
     pthread_exit(NULL);
 }
+
+/// @brief QT通讯内存共享线程(小屏幕)
+/// @param arg 
+/// @return 
 static void* shm_thread(void *arg)
 {
     int fd = 0;
@@ -2127,6 +2131,45 @@ static void* shm_thread(void *arg)
 	pthread_exit(NULL);
 }
 
+/// @brief QT通讯内存共享线程(5寸屏)
+/// @param arg 
+/// @return 
+static int shm_New_CtrlBoard(void *arg)
+{
+    GlobalPowerManger* _globalPowerMangerTemp = NULL ;
+    GlobalDeviceManager *_globalDeviceManager = (GlobalDeviceManager *)&__globalDeviceManage;
+
+    // 尝试清理旧对象(忽略错误)
+    shm_unlink(SHM_NAME_5_inch_screen); // 如果不存在会返回 -1,但无需处理
+    // 创建新的共享内存对象
+    int shm_fd = shm_open(SHM_NAME_5_inch_screen, O_CREAT | O_RDWR, 0666);
+
+    if (shm_fd == -1) {
+        perror("shm_open");
+        return 1;
+    }
+
+    /* 设置共享内存对象的大小 */
+    if (ftruncate(shm_fd, sizeof(GlobalPowerCtrlBoard)*(_globalDeviceManager->brdMax+1)) == -1) {
+        perror("ftruncate");
+        return 2;
+    }
+    //new
+    int *pPID = mmap(NULL, sizeof(int), PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, 0);
+    int *pBrodSize = mmap(NULL, sizeof(int), PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, sizeof(int));
+    _globalDeviceManager->pCtrlBoard = (GlobalPowerCtrlBoard *)mmap(NULL, sizeof(GlobalPowerCtrlBoard)*(_globalDeviceManager->brdMax+1), PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, sizeof(int)*2);
+    
+    if (_globalDeviceManager->pCtrlBoard==NULL) {
+        perror("mmap");
+        return 3;
+    }
+    *pPID=getpid();
+    *pBrodSize=_globalDeviceManager->brdMax+1;
+    return 0;
+}
+
+
+
 //#define USE_NTPD
 static void* ntp_thread(void *arg)
 {
@@ -2364,11 +2407,30 @@ int app_init(void)
     //使用的通道
     _globalDeviceManager->useSlaveCount = 0 ;
     _globalDeviceManager->brdMax = _globalDeviceManager->_globalDevInfo.ptotal.brdMax;
+#ifdef USE_SHM_5_inch_screen
+    int shm_Error=shm_New_CtrlBoard(_globalDeviceManager);
+    switch (shm_Error)
+    {
+    case 0:
+        log_i("shm_New_CtrlBoard success\n");
+        break;
+    case 1:
+        log_e("shm_open error\n");
+        break;
+    case 2:
+        log_e("ftruncate error\n");
+        break;
+    case 3:
+        log_e("mmap error\n");
+        break;
+    }
+#else
     _globalDeviceManager->pCtrlBoard = malloc(sizeof(GlobalPowerCtrlBoard)*(_globalDeviceManager->brdMax+1));
     if(!_globalDeviceManager->pCtrlBoard) {
         log_e("pCtrlBoard malloc failed, brdMax: %d\n", _globalDeviceManager->brdMax);
         return -1 ;
     }
+#endif
     g_switch_init(_globalDeviceManager->brdMax);
     
     //链接数据库获取配置信息

+ 2 - 0
pro/src/common.h

@@ -89,6 +89,8 @@
 #define QRCODE_FILE         "qrcode.png"
 #define CERT_FILE           "ca.cert"
 
+#define SHM_NAME_5_inch_screen "/smartPDU_shm_5_inch_screen"
+#define USE_SHM_5_inch_screen
 
 #define AC_SINGLE_S_CUR_CHN_NUM 8
 #define AC_SINGLE_B_CUR_CHN_NUM 4

+ 21 - 11
pub

@@ -17,6 +17,7 @@
 #PRJS="PRJ_STSC_I3_O3"
 #PRJS="PRJ_STSC_I3_O1_OLED"
 #PRJS="PRJ_SG_I3_O3"
+PRJS="PRJ_ESOUTH_DC_I1_O4_RGB5"
 #PRJS="PRJ_TEST"
 #PRJS="PRJ_TEST_AC_I1_O1"
 #PRJS="PRJ_TEST_AC_I3_O1"
@@ -32,9 +33,12 @@
 #PRJS="PRJ_LITECH_AC_I1_O1 PRJ_LITECH_AC_I3_O1 PRJ_XIAN_AC_I1_O1_P4 PRJ_XIAN_AC_I1_O1_P8"
 #PRJS="PRJ_IP_AC_I3_O3"
 #PRJS="PRJ_IP_AC_I3_O1"
-PRJS="PRJ_IP_AC_I1_O1"
+#PRJS="PRJ_IP_AC_I1_O1"
+
+
 fulldir=$(realpath $0)
 curdir=$(dirname $fulldir)
+ip_flag=0
 
 custdir=$curdir/cust_data
 name=null
@@ -45,6 +49,7 @@ appdir=$rootdir/root/run/app
 function prj_enable()
 {
     fcfg=$curdir/pro/config/cfg.h
+    fmak=$curdir/pro/CMakefile.txt
 
     #clear space
     sed -i 's|^[[:space:]]\(#define PRJ_*\)|\1|g' $fcfg
@@ -58,27 +63,32 @@ function prj_enable()
 function prj_unmask()
 {
     prj=$1
-
 }
 
 function do_copy()
 {
     echo do_copy ...
     
-    if [[ "$1" == "PRJ_IP_"* ]];then
+    if [[ "$1" == "PRJ_IP_"* ]]; then
+        ip_flag=1
+    fi
+
+    if [ $ip_flag -eq 1 ]; then
         rootdir=$curdir/output/t113s/pack_dir
         appdir=$rootdir/mnt/UDISK/app
     fi
+
     mkdir -p $appdir/image
     mkdir -p $appdir/cert
 
     cp -f $custdir/cert/server.*         $appdir/cert/
     cp -f $custdir/changes.txt           $appdir/
     cp -f $custdir/db/pdu_dat.db         $appdir/
-    if [[ "$1" == "PRJ_IP_"* ]];then
-        cp -f $custdir/qt/IP/Qt_Test            $appdir/
+
+    if [ $ip_flag -eq 1 ]; then
+        cp -f $custdir/qt/IP/Qt_Test     $appdir/
     else
-        cp -f $custdir/qt/Qt_Test            $appdir/
+        cp -f $custdir/qt/Qt_Test        $appdir/
     fi
     if [ "$1" = "PRJ_XIAN_AC_I1_O1_P4" ]; then
         name=ac_in1_out1_p4_xian
@@ -159,6 +169,10 @@ function do_copy()
         name=ac_in3_out1_stsc_oled
         cp -f $custdir/logo/logo_neuter.png $appdir/image/logo.png
         rm -f $appdir/Qt_Test
+    elif [ "$1" = "PRJ_ESOUTH_DC_I1_O4_RGB5" ];then
+        name=dc_in1_out4_esouth_rgb5
+        cp -f $custdir/logo/logo_neuter.png $appdir/image/logo.png
+        cp -f $custdir/qt/Qt_Test_rgb_ts        $appdir/Qt_Test
     elif [ "$1" = "PRJ_IP_AC_I3_O1" ];then  
         name=ip_ac_in3_out1_release
         cp -f $custdir/logo/logo_neuter.png $appdir/image/logo.png
@@ -171,11 +185,7 @@ function do_copy()
     fi
 
     rm -rf  $appdir/../web
-#    if [ "$1" = "PRJ_IP_*" ]; then
-#        cp -rf $custdir/web/unique  $appdir/../web
-#    else
-        cp -rf $custdir/web/unique  $appdir/../web
-#    fi
+    cp -rf $custdir/web/unique  $appdir/../web
 
     prj_enable $1
 }