Explorar el Código

Merge branch 'master' of http://jiecheng2024.tpddns.cn:3000/liyuezong/SmartPDCode

guohui hace 1 año
padre
commit
e8671cacbd
Se han modificado 7 ficheros con 106 adiciones y 29 borrados
  1. 55 18
      f407/applications/cascade.c
  2. 1 1
      pro/CMakeLists.txt
  3. 11 2
      pro/config/cfg.h
  4. 31 5
      pro/src/app.c
  5. 1 1
      pro/src/cascade_slave.c
  6. 1 0
      pro/src/common.c
  7. 6 2
      pub

+ 55 - 18
f407/applications/cascade.c

@@ -68,6 +68,17 @@ static int mb_write_read(cascade_handle_t *cas, int addr, data_t *wd, data_t *rd
 static int master_query(cascade_handle_t *cas);
 void slave_func(uint16_t reg,void *r_w_data,uint32_t lenth);
 
+static void memswap(uint8_t *buf, int len)
+{
+    int i;
+    uint8_t tmp;
+
+    for(i=0; i<len; i+=2) {
+        tmp = buf[i];
+        buf[i] = buf[i+1];
+        buf[i+1] = tmp;
+    }
+}
 
 
 
@@ -293,12 +304,20 @@ static int slave_get_info(cascade_handle_t *cas)
 	slave_info_t *info=&cas->info;
 	power_data_t power = power_data_get();
 	info->channels = power.chs;
+	info->channels = power.chs-1 > 0 ? power.chs-1 :  power.chs;
 	//info->channels=0;
 	//memcpy(info->ch,board->pbrd[],)
 	//copy mem to info
 	if(info->channels  > SLAVE_CH_MAX)
 			info->channels = SLAVE_CH_MAX;
-	memcpy(info->ch,&power.pch[0],sizeof(power.pch[0]) * info->channels);
+	paras_data_t* p_data = paras_get();
+	if(p_data->prod.type == PDU_AC_I1O1 || p_data->prod.type == PDU_DC_I1O1){
+		for(int i=0; i < info->channels;i++)
+		{
+			info->ch[i].power[0] = power.pch[i+1].power[0];
+			//memcpy(&info->ch[i],&power.pch[i].power[0],sizeof(power.pch[i].power[0]));
+		}
+	}
 	
 }
 
@@ -339,14 +358,35 @@ static void* off_on_thread(void *arg)
 
 static int sendlen=0;
 
-
+void *my_memcpy_byte(void *dst, const void *src, int n)
+{
+    if (dst == NULL || src == NULL || n <= 0)
+         return NULL;
+  
+      char * pdst = (char *)dst;
+      char * psrc = (char *)src;
+  
+      if (pdst > psrc && pdst < psrc + n)
+     {
+         pdst = pdst + n - 1;
+         psrc = psrc + n - 1;
+         while (n--)
+             *pdst-- = *psrc--;
+     }
+     else
+     {
+         while (n--)
+             *pdst++ = *psrc++;
+     }
+     return dst;
+}
 
 void slave_func(uint16_t reg,void *r_w_data,uint32_t lenth)
 {
 	cmd_data_t *cmd=NULL;
 	mb_handle_t *handle = (mb_handle_t *)(slave_info.mb);
 	pthread_t id = 0;
-	LOGD("____XXXXXXXXXX____ reg = %d\n",reg);
+	LOGD("____XXXXXXXXXX____ reg = %d lenth=%d\n",reg,lenth);
 	switch (reg)
 	{
 		case CASCADE_REG_SCAN:
@@ -359,7 +399,7 @@ void slave_func(uint16_t reg,void *r_w_data,uint32_t lenth)
       if(cmd->cmd>=CASCADE_CMD_GET_INFO) {
 					slave_info.cmd = *cmd;
       }
-			LOGD("____XXXXXXX__WRITE_XXXXXXXXXXXXXX____cmd->cmd=%d,lenth=%d\n",cmd->cmd,lenth);
+			//LOGD("____XXXXXXX__WRITE_XXXXXXXXXXXXXX____cmd->cmd=%d,lenth=%d\n",cmd->cmd,lenth);
 			if(lenth > 10)
 			{
 				for(int i = 0; i < 10;i++)
@@ -413,19 +453,27 @@ void slave_func(uint16_t reg,void *r_w_data,uint32_t lenth)
 		case CASCADE_REG_READ:
 		{
 			cmd = &slave_info.cmd;
-			LOGD("____XXXXXXX__READ_XXXXXXXXXXXXXX____cmd->cmd=%d\n",cmd->cmd);
+			
 			switch(cmd->cmd)
 			{
 				case CASCADE_CMD_GET_INFO:
 				{
+					LOGD("____XXXXXXX__READ_XXXXXXXXXXXXXX____cmd->cmd=%d readlen=%d sendlen= %d sizeof(slave_info_t)=%d\n",cmd->cmd,lenth,sendlen,sizeof(slave_info_t));
 					slave_get_info(&slave_info);
-					memcpy(r_w_data,&slave_info.info+sendlen,lenth*2);
+					LOGD("1\n");
+					my_memcpy_byte(r_w_data,(void*)&slave_info.info+sendlen,lenth*2);
+					//memcpy(r_w_data,&slave_info.info+sendlen,lenth*2);
+					LOGD("2\n");
+					memswap(r_w_data,lenth*2);
+					LOGD("3\n");
+					
 				}
 					break;
 				case CASCADE_CMD_QUERY_CH:
 				{
 					slave_get_info(&slave_info);
-					memcpy(r_w_data,&slave_info.info+sendlen,lenth*2);
+					my_memcpy_byte(r_w_data,(void*)&slave_info.info+sendlen,lenth*2);
+					memswap(r_w_data,lenth*2);
 				}
 					break;
 				case CASCADE_CMD_BREAKER_QUERY:
@@ -453,17 +501,6 @@ void slave_func(uint16_t reg,void *r_w_data,uint32_t lenth)
 #define REGS(x)    (((x)+(x)%2)/2)
 
 
-static void memswap(uint8_t *buf, int len)
-{
-    int i;
-    uint8_t tmp;
-
-    for(i=0; i<len; i+=2) {
-        tmp = buf[i];
-        buf[i] = buf[i+1];
-        buf[i+1] = tmp;
-    }
-}
 
 static int _mb_write(cascade_handle_t *cas, int addr, data_t *d)
 {

+ 1 - 1
pro/CMakeLists.txt

@@ -1,6 +1,6 @@
 cmake_minimum_required (VERSION 2.8)
 
-set(CHIP t113i)
+#set(CHIP t113i)
 #set(CHIP t113s)
 
 

+ 11 - 2
pro/config/cfg.h

@@ -13,7 +13,7 @@
 //#define PRJ_USASL_AC_I3_O3
 //#define PRJ_ITK_AC_I1_O1
 //#define PRJ_ITK_AC_I3_O1
-#define PRJ_STSC_I3_O3
+//#define PRJ_STSC_I3_O3
 //#define PRJ_STSC_I3_O1_OLED
 //#define PRJ_LITECH_AC_I1_O1
 //#define PRJ_LITECH_AC_I3_O1
@@ -28,7 +28,7 @@
 //#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 USE_MAIL
@@ -263,6 +263,15 @@
     #define CHANNEL_DELAY                       8
     #define PROD_POWER_TYPE                     5
     //#define NOT_USE_CONTROL
+#elif (defined PRJ_IP_AC_I1_O1)
+    #define LANGUAGE                            0
+    #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
 #else
     #error define a PRJ_XXXX please!
 #endif

+ 31 - 5
pro/src/app.c

@@ -1111,11 +1111,11 @@ static void* power_thread(void* arg)
                     uint32_t p_data = 0;
                     for(int i = 0; i < 3;i++)
                     {
-                        c_data +=  (_globalDeviceManager->triphasic_mmap->i_total.pw_i_total[i].i_total_consumption / 100);
-                        p_data +=  (_globalDeviceManager->triphasic_mmap->i_total.pw_i_total[i].i_total_power / 100);                      
+                        c_data +=  (_globalDeviceManager->triphasic_mmap->i_total.pw_i_total[i].i_total_consumption);
+                        p_data +=  (_globalDeviceManager->triphasic_mmap->i_total.pw_i_total[i].i_total_power);                      
                     }
-                    __globalDeviceManage.north_user.total_elec_energy = c_data;
-                    __globalDeviceManage.north_user.total_power = p_data;
+                    __globalDeviceManage.north_user.total_elec_energy = c_data / 100;
+                    __globalDeviceManage.north_user.total_power = p_data / 10;
                     __globalDeviceManage.north_user.frequency = _globalDeviceManager->_globalPowerManger._PowerInfo.freq * 100;         
 #endif
             }
@@ -1191,11 +1191,16 @@ static void* power_thread(void* arg)
             bool nTotalAup = _globalDeviceManager->_globalPowerManger._PowerWarninginfo.w_current;
             bool nTotalPower = _globalDeviceManager->_globalPowerManger._PowerWarninginfo.w_power;
             bool nTotalConsumption = _globalDeviceManager->_globalPowerManger._PowerWarninginfo.w_consumption;
-
+#ifdef NORTH_USER_SPECILS
+                uint8_t total_wanning = 0;
+#endif
             if (_globalTotalPowerInfo._power_info.voltage >= _globalDeviceManager->_globalPowerManger.global_over_manager.product_vol_upper_threshold &&
                 abs(_globalDeviceManager->_globalPowerManger.global_over_manager.product_vol_upper_threshold) >= 0.05)
             {
                 _globalDeviceManager->_globalPowerManger._PowerWarninginfo.w_voltage_up = true;
+#ifdef NORTH_USER_SPECILS
+                total_wanning ++;
+#endif
             }
             else
                 _globalDeviceManager->_globalPowerManger._PowerWarninginfo.w_voltage_up = false;
@@ -1204,6 +1209,9 @@ static void* power_thread(void* arg)
                 abs(_globalDeviceManager->_globalPowerManger.global_over_manager.product_vol_lower_threshold) >= 0.05)
             {
                 _globalDeviceManager->_globalPowerManger._PowerWarninginfo.w_voltage_down = true;
+#ifdef NORTH_USER_SPECILS
+                total_wanning ++;
+#endif
             }
             else
                 _globalDeviceManager->_globalPowerManger._PowerWarninginfo.w_voltage_down = false;
@@ -1212,6 +1220,9 @@ static void* power_thread(void* arg)
                 abs(_globalDeviceManager->_globalPowerManger.global_over_manager.product_cur_upper_threshold) >= 0.05)
             {
                 _globalDeviceManager->_globalPowerManger._PowerWarninginfo.w_current = true;
+#ifdef NORTH_USER_SPECILS
+                total_wanning ++;
+#endif
             }
             else
                 _globalDeviceManager->_globalPowerManger._PowerWarninginfo.w_current = false;
@@ -1220,6 +1231,9 @@ static void* power_thread(void* arg)
                 abs(_globalDeviceManager->_globalPowerManger.global_over_manager.product_pwr_upper_threshold) >= 0.05)
             {
                 _globalDeviceManager->_globalPowerManger._PowerWarninginfo.w_power = true;
+#ifdef NORTH_USER_SPECILS
+                total_wanning ++;
+#endif
             }
             else
                 _globalDeviceManager->_globalPowerManger._PowerWarninginfo.w_power = false;
@@ -1228,9 +1242,21 @@ static void* power_thread(void* arg)
                 abs(_globalDeviceManager->_globalPowerManger.global_over_manager.product_pwrcon_upper_threshold) >= 0.05)
             {
                 _globalDeviceManager->_globalPowerManger._PowerWarninginfo.w_consumption = true;
+#ifdef NORTH_USER_SPECILS
+                total_wanning ++;
+#endif
             }
             else
                 _globalDeviceManager->_globalPowerManger._PowerWarninginfo.w_consumption = false;
+#ifdef NORTH_USER_SPECILS
+            if (__globalDeviceManage.triphasic_mmap)
+            {
+                if(total_wanning)
+                    __globalDeviceManage.north_user.total_wanning = 1;
+                else
+                    __globalDeviceManage.north_user.total_wanning = 0;
+            }
+#endif
 
             // 报警信息及动作
             if (_globalDeviceManager->_globalPowerManger._PowerWarninginfo.w_voltage_up && !nTotalVup)

+ 1 - 1
pro/src/cascade_slave.c

@@ -458,7 +458,7 @@ void cascade_slave_write(uint32_t addr, uint16_t val)
             case SPAECIL_USER_SET_1 ... SPAECIL_USER_SET_64:
             {
                 int step = addr - SPAECIL_USER_SET_1;
-                uint16_t * offset_addr = (uint16_t*)(north_specil[SPAECIL_USER_STATUS].addr + step);
+                uint16_t * offset_addr = (uint16_t*)(north_specil[N_SPAECIL_STA].addr + step);
                 uint16_t buff[16] = {0};
                 if(*offset_addr != val)
                 {

+ 1 - 0
pro/src/common.c

@@ -405,6 +405,7 @@ int get_tzone(void)
     tm_utc = gmtime(&t2);
     t2=mktime(tm_utc);
     tz = (t1 - t2)/3600;
+    log_d("tz = %d  t1=%d   t2=%d\n",tz,t1,t2);
 #else
     time_t now = time(NULL);
     struct *tm local = *localtime(&now);

+ 6 - 2
pub

@@ -14,14 +14,14 @@
 #PRJS="PRJ_RELEASE_AC_I1_O1"
 #PRJS="PRJ_RELEASE_AC_I3_O1"
 #PRJS="PRJ_RELEASE_AC_I3_O3"
-PRJS="PRJ_STSC_I3_O3"
+#PRJS="PRJ_STSC_I3_O3"
 #PRJS="PRJ_STSC_I3_O1_OLED"
 #PRJS="PRJ_SG_I3_O3"
 #PRJS="PRJ_TEST"
 #PRJS="PRJ_TEST_AC_I1_O1"
 #PRJS="PRJ_TEST_AC_I3_O1"
 #PRJS="PRJ_INST2302_DC_OLED"
-PRJS="PRJ_INST2106_AC_I1_O1_OLED"
+#PRJS="PRJ_INST2106_AC_I1_O1_OLED"
 
 #PRJS="PRJ_USASL_AC_I3_O1 PRJ_USASL_AC_I3_O3"
 #PRJS="PRJ_XIAN_AC_I1_O1_P4 PRJ_XIAN_AC_I1_O1_P8"
@@ -32,6 +32,7 @@ PRJS="PRJ_INST2106_AC_I1_O1_OLED"
 #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"
 fulldir=$(realpath $0)
 curdir=$(dirname $fulldir)
 
@@ -161,6 +162,9 @@ function do_copy()
     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
+    elif [ "$1" = "PRJ_IP_AC_I1_O1" ];then  
+        name=ip_ac_in1_out1_release
+        cp -f $custdir/logo/logo_neuter.png $appdir/image/logo.png
     else
         echo error! $RPJ not define!!!
         exit 1