forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-06-05 cf4d12fd8322cbb350dd3bc5af8c748e8790ac64
Function/STORAGE/sizhu_history_record.c
@@ -2,7 +2,7 @@
#include "system_mem_para.h"
LOG_SIZHU_HISTORY_RUN_T      log_sizhu_history_run_g;
LOG_SIZHU_LOG_SAVE_T      ufg620_log_g;
@@ -17,31 +17,31 @@
//   /*´æ´¢¿Õ¼äÈç¹û¸øµÄ²»¹»5000£¬ÄÇô·µ»Ø´íÎóÖµ*/
//   
//   //
//   log_sizhu_history_run_g.per_period_log.log_count        = 0;
//   log_sizhu_history_run_g.per_hour_log.log_count        = 0;
//   log_sizhu_history_run_g.per_day_log.log_count        = 0;
//   log_sizhu_history_run_g.per_month_log.log_count        = 0;
//   log_sizhu_history_ctrl_g.per_interval_log.log_count        = 0;
//   log_sizhu_history_ctrl_g.per_hour_log.log_count        = 0;
//   log_sizhu_history_ctrl_g.per_day_log.log_count        = 0;
//   log_sizhu_history_ctrl_g.per_month_log.log_count        = 0;
//   
//   EEPROM_data_write_uint16(log_sizhu_history_run_g.per_period_log.log_count, (STRUCT_PER_PERIOD_OFFSET) );
//   EEPROM_data_write_uint16(log_sizhu_history_run_g.per_hour_log.log_count, (STRUCT_PER_HOUR_OFFSET) );
//   EEPROM_data_write_uint16(log_sizhu_history_run_g.per_day_log.log_count, (STRUCT_PER_DAY_OFFSET) );
//   EEPROM_data_write_uint16(log_sizhu_history_run_g.per_month_log.log_count, (STRUCT_PER_MONTH_OFFSET) );
//   EEPROM_data_write_uint16(log_sizhu_history_ctrl_g.per_interval_log.log_count, (STRUCT_PER_PERIOD_OFFSET) );
//   EEPROM_data_write_uint16(log_sizhu_history_ctrl_g.per_hour_log.log_count, (STRUCT_PER_HOUR_OFFSET) );
//   EEPROM_data_write_uint16(log_sizhu_history_ctrl_g.per_day_log.log_count, (STRUCT_PER_DAY_OFFSET) );
//   EEPROM_data_write_uint16(log_sizhu_history_ctrl_g.per_month_log.log_count, (STRUCT_PER_MONTH_OFFSET) );
//   
//   log_sizhu_history_run_g.per_period_log.log_addr_begin   = PER_PERIOD_LOG_OFFSET;
//   log_sizhu_history_run_g.per_hour_log.log_addr_begin      = PER_HOUR_LOG_OFFSET;
//   log_sizhu_history_run_g.per_day_log.log_addr_begin        = PER_DAY_LOG_OFFSET;
//   log_sizhu_history_run_g.per_month_log.log_addr_begin    = PER_MONTH_LOG_OFFSET;
//   log_sizhu_history_ctrl_g.per_interval_log.log_addr_begin   = PER_PERIOD_LOG_OFFSET;
//   log_sizhu_history_ctrl_g.per_hour_log.log_addr_begin      = PER_HOUR_LOG_OFFSET;
//   log_sizhu_history_ctrl_g.per_day_log.log_addr_begin        = PER_DAY_LOG_OFFSET;
//   log_sizhu_history_ctrl_g.per_month_log.log_addr_begin    = PER_MONTH_LOG_OFFSET;
//   log_sizhu_history_run_g.per_period_log.log_addr_save       = PER_PERIOD_LOG_OFFSET;
//   log_sizhu_history_run_g.per_hour_log.log_addr_save       = PER_HOUR_LOG_OFFSET;
//   log_sizhu_history_run_g.per_day_log.log_addr_save     = PER_DAY_LOG_OFFSET;
//   log_sizhu_history_run_g.per_month_log.log_addr_save     = PER_MONTH_LOG_OFFSET;
//   log_sizhu_history_ctrl_g.per_interval_log.log_addr_save       = PER_PERIOD_LOG_OFFSET;
//   log_sizhu_history_ctrl_g.per_hour_log.log_addr_save       = PER_HOUR_LOG_OFFSET;
//   log_sizhu_history_ctrl_g.per_day_log.log_addr_save     = PER_DAY_LOG_OFFSET;
//   log_sizhu_history_ctrl_g.per_month_log.log_addr_save     = PER_MONTH_LOG_OFFSET;
//   
//   EEPROM_data_write_uint32(log_sizhu_history_run_g.per_period_log.log_addr_save , (STRUCT_PERIOD_LOG_ADDR_SAVE_OFFSET) );
//   EEPROM_data_write_uint32(log_sizhu_history_run_g.per_hour_log.log_addr_save , (STRUCT_HOUR_LOG_ADDR_SAVE_OFFSET) );
//   EEPROM_data_write_uint32(log_sizhu_history_run_g.per_day_log.log_addr_save, (STRUCT_DAY_LOG_ADDR_SAVE_OFFSET) );
//   EEPROM_data_write_uint32(log_sizhu_history_run_g.per_month_log.log_addr_save, (STRUCT_MONTH_LOG_ADDR_SAVE_OFFSET) );
//   EEPROM_data_write_uint32(log_sizhu_history_ctrl_g.per_interval_log.log_addr_save , (STRUCT_PERIOD_LOG_ADDR_SAVE_OFFSET) );
//   EEPROM_data_write_uint32(log_sizhu_history_ctrl_g.per_hour_log.log_addr_save , (STRUCT_HOUR_LOG_ADDR_SAVE_OFFSET) );
//   EEPROM_data_write_uint32(log_sizhu_history_ctrl_g.per_day_log.log_addr_save, (STRUCT_DAY_LOG_ADDR_SAVE_OFFSET) );
//   EEPROM_data_write_uint32(log_sizhu_history_ctrl_g.per_month_log.log_addr_save, (STRUCT_MONTH_LOG_ADDR_SAVE_OFFSET) );
   
   return 1;   
}
@@ -65,44 +65,44 @@
 *****************************************/
uint8_t sizhu_historical_record_only_read_init(void)
{
//   log_sizhu_history_run_g.per_period_log.log_count       =  eeprom_data_read_uint16(STRUCT_PER_PERIOD_OFFSET);
//   log_sizhu_history_run_g.per_hour_log.log_count          =  eeprom_data_read_uint16(STRUCT_PER_HOUR_OFFSET);
//   log_sizhu_history_run_g.per_day_log.log_count          =  eeprom_data_read_uint16(STRUCT_PER_DAY_OFFSET);
//   log_sizhu_history_run_g.per_month_log.log_count       =  eeprom_data_read_uint16(STRUCT_PER_MONTH_OFFSET);
//   log_sizhu_history_ctrl_g.per_interval_log.log_count       =  eeprom_data_read_uint16(STRUCT_PER_PERIOD_OFFSET);
//   log_sizhu_history_ctrl_g.per_hour_log.log_count          =  eeprom_data_read_uint16(STRUCT_PER_HOUR_OFFSET);
//   log_sizhu_history_ctrl_g.per_day_log.log_count          =  eeprom_data_read_uint16(STRUCT_PER_DAY_OFFSET);
//   log_sizhu_history_ctrl_g.per_month_log.log_count       =  eeprom_data_read_uint16(STRUCT_PER_MONTH_OFFSET);
//   
//   log_sizhu_history_run_g.per_period_log.log_addr_begin   =  PER_PERIOD_LOG_OFFSET;
//   log_sizhu_history_run_g.per_hour_log.log_addr_begin      =  PER_HOUR_LOG_OFFSET;
//   log_sizhu_history_run_g.per_day_log.log_addr_begin       =  PER_DAY_LOG_OFFSET;
//   log_sizhu_history_run_g.per_month_log.log_addr_begin      =  PER_MONTH_LOG_OFFSET;
//   log_sizhu_history_ctrl_g.per_interval_log.log_addr_begin   =  PER_PERIOD_LOG_OFFSET;
//   log_sizhu_history_ctrl_g.per_hour_log.log_addr_begin      =  PER_HOUR_LOG_OFFSET;
//   log_sizhu_history_ctrl_g.per_day_log.log_addr_begin       =  PER_DAY_LOG_OFFSET;
//   log_sizhu_history_ctrl_g.per_month_log.log_addr_begin      =  PER_MONTH_LOG_OFFSET;
//   
//   log_sizhu_history_run_g.per_period_log.log_addr_save   =  eeprom_data_read_uint32(STRUCT_PERIOD_LOG_ADDR_SAVE_OFFSET);
//   log_sizhu_history_run_g.per_hour_log.log_addr_save       =  eeprom_data_read_uint32(STRUCT_HOUR_LOG_ADDR_SAVE_OFFSET);
//   log_sizhu_history_run_g.per_day_log.log_addr_save       =  eeprom_data_read_uint32(STRUCT_DAY_LOG_ADDR_SAVE_OFFSET);
//   log_sizhu_history_run_g.per_month_log.log_addr_save    =  eeprom_data_read_uint32(STRUCT_MONTH_LOG_ADDR_SAVE_OFFSET);
//   log_sizhu_history_ctrl_g.per_interval_log.log_addr_save   =  eeprom_data_read_uint32(STRUCT_PERIOD_LOG_ADDR_SAVE_OFFSET);
//   log_sizhu_history_ctrl_g.per_hour_log.log_addr_save       =  eeprom_data_read_uint32(STRUCT_HOUR_LOG_ADDR_SAVE_OFFSET);
//   log_sizhu_history_ctrl_g.per_day_log.log_addr_save       =  eeprom_data_read_uint32(STRUCT_DAY_LOG_ADDR_SAVE_OFFSET);
//   log_sizhu_history_ctrl_g.per_month_log.log_addr_save    =  eeprom_data_read_uint32(STRUCT_MONTH_LOG_ADDR_SAVE_OFFSET);
//   
//   
//   if((log_sizhu_history_run_g.per_period_log.log_addr_save > PER_PERIOD_LOG_OFFSET_END)||(log_sizhu_history_run_g.per_period_log.log_addr_save < PER_PERIOD_LOG_OFFSET))
//   if((log_sizhu_history_ctrl_g.per_interval_log.log_addr_save > PER_PERIOD_LOG_OFFSET_END)||(log_sizhu_history_ctrl_g.per_interval_log.log_addr_save < PER_PERIOD_LOG_OFFSET))
//   {
//      log_sizhu_run_g.per_period_log_count        = 0;   
//      log_sizhu_history_run_g.per_period_log.log_addr_save       = PER_PERIOD_LOG_OFFSET;
//      log_sizhu_history_ctrl_g.per_interval_log.log_addr_save       = PER_PERIOD_LOG_OFFSET;
//   }
//   
//   if((log_sizhu_history_run_g.per_hour_log.log_addr_save > PER_HOUR_LOG_OFFSET_END)||(log_sizhu_history_run_g.per_hour_log.log_addr_save < PER_HOUR_LOG_OFFSET))
//   if((log_sizhu_history_ctrl_g.per_hour_log.log_addr_save > PER_HOUR_LOG_OFFSET_END)||(log_sizhu_history_ctrl_g.per_hour_log.log_addr_save < PER_HOUR_LOG_OFFSET))
//   {
//      log_sizhu_history_run_g.per_hour_log.log_count                = 0;
//      log_sizhu_history_run_g.per_hour_log.log_addr_save          = PER_HOUR_LOG_OFFSET;
//      log_sizhu_history_ctrl_g.per_hour_log.log_count                = 0;
//      log_sizhu_history_ctrl_g.per_hour_log.log_addr_save          = PER_HOUR_LOG_OFFSET;
//   }
//   
//   if((log_sizhu_history_run_g.per_day_log.log_addr_save > PER_DAY_LOG_OFFSET_END)||(log_sizhu_history_run_g.per_day_log.log_addr_save < PER_DAY_LOG_OFFSET))
//   if((log_sizhu_history_ctrl_g.per_day_log.log_addr_save > PER_DAY_LOG_OFFSET_END)||(log_sizhu_history_ctrl_g.per_day_log.log_addr_save < PER_DAY_LOG_OFFSET))
//   {
//      log_sizhu_history_run_g.per_day_log.log_count                = 0;
//      log_sizhu_history_run_g.per_day_log.log_addr_save          = PER_DAY_LOG_OFFSET;
//      log_sizhu_history_ctrl_g.per_day_log.log_count                = 0;
//      log_sizhu_history_ctrl_g.per_day_log.log_addr_save          = PER_DAY_LOG_OFFSET;
//   }
//   
//   if((log_sizhu_history_run_g.per_month_log.log_addr_save > PER_MONTH_LOG_OFFSET_END)||(log_sizhu_history_run_g.per_month_log.log_addr_save < PER_MONTH_LOG_OFFSET))
//   if((log_sizhu_history_ctrl_g.per_month_log.log_addr_save > PER_MONTH_LOG_OFFSET_END)||(log_sizhu_history_ctrl_g.per_month_log.log_addr_save < PER_MONTH_LOG_OFFSET))
//   {
//      log_sizhu_history_run_g.per_month_log.log_count                = 0;
//      log_sizhu_history_run_g.per_month_log.log_addr_save          = PER_MONTH_LOG_OFFSET;
//      log_sizhu_history_ctrl_g.per_month_log.log_count                = 0;
//      log_sizhu_history_ctrl_g.per_month_log.log_addr_save          = PER_MONTH_LOG_OFFSET;
//   }
   
   
@@ -116,16 +116,16 @@
//uint16_t sizhu_historical_hour_log(void)
//{
//   return log_sizhu_history_run_g.per_hour_log.log_count;
//   return log_sizhu_history_ctrl_g.per_hour_log.log_count;
//}
//uint16_t sizhu_historical_day_log(void)
//{
//   return log_sizhu_history_run_g.per_day_log.log_count;
//   return log_sizhu_history_ctrl_g.per_day_log.log_count;
//}
//uint16_t sizhu_historical_month_log(void)
//{
//   return log_sizhu_history_run_g.per_month_log.log_count;
//   return log_sizhu_history_ctrl_g.per_month_log.log_count;
//}
@@ -138,16 +138,16 @@
//      *save_count   = log_sizhu_run_g.per_period_log_count;
//   }else if(logtype == LOG_SIZHU_HOUR_TYPE)
//   {
//      *read_addr    = log_sizhu_history_run_g.per_hour_log.log_addr_save;
//      *save_count   = log_sizhu_history_run_g.per_hour_log.log_count;
//      *read_addr    = log_sizhu_history_ctrl_g.per_hour_log.log_addr_save;
//      *save_count   = log_sizhu_history_ctrl_g.per_hour_log.log_count;
//   }else if(logtype == LOG_SIZHU_DAY_TYPE)
//   {
//      *read_addr    = log_sizhu_history_run_g.per_day_log.log_addr_save;
//      *save_count   = log_sizhu_history_run_g.per_day_log.log_count;
//      *read_addr    = log_sizhu_history_ctrl_g.per_day_log.log_addr_save;
//      *save_count   = log_sizhu_history_ctrl_g.per_day_log.log_count;
//   }else if(logtype == LOG_SIZHU_MONTH_TYPE)
//   {
//      *read_addr    = log_sizhu_history_run_g.per_month_log.log_addr_save;
//      *save_count   = log_sizhu_history_run_g.per_month_log.log_count;
//      *read_addr    = log_sizhu_history_ctrl_g.per_month_log.log_addr_save;
//      *save_count   = log_sizhu_history_ctrl_g.per_month_log.log_count;
//   }
   return 1;   
}
@@ -232,93 +232,93 @@
//   if(logtype == LOG_SIZHU_HOUR_TYPE)
//   {
//      
//      eeprom_multiple_data_write( (uint8_t *)log_run_ptr, log_sizhu_history_run_g.per_hour_log.log_addr_save, sizeof(LOG_SIZHU_LOG_SAVE_T) );
//      eeprom_multiple_data_write( (uint8_t *)log_run_ptr, log_sizhu_history_ctrl_g.per_hour_log.log_addr_save, sizeof(LOG_SIZHU_LOG_SAVE_T) );
//      
//      
//      if((log_sizhu_history_run_g.per_hour_log.log_addr_save >= PER_HOUR_LOG_OFFSET_END)||(log_sizhu_history_run_g.per_hour_log.log_addr_save < PER_HOUR_LOG_OFFSET))
//      if((log_sizhu_history_ctrl_g.per_hour_log.log_addr_save >= PER_HOUR_LOG_OFFSET_END)||(log_sizhu_history_ctrl_g.per_hour_log.log_addr_save < PER_HOUR_LOG_OFFSET))
//      {
//         log_sizhu_history_run_g.per_hour_log.log_addr_save = PER_HOUR_LOG_OFFSET;
//         log_sizhu_history_ctrl_g.per_hour_log.log_addr_save = PER_HOUR_LOG_OFFSET;
//         
//      }else
//      {
//         log_sizhu_history_run_g.per_hour_log.log_addr_save =  log_sizhu_history_run_g.per_hour_log.log_addr_save + sizeof(LOG_SIZHU_LOG_SAVE_T);
//         log_sizhu_history_ctrl_g.per_hour_log.log_addr_save =  log_sizhu_history_ctrl_g.per_hour_log.log_addr_save + sizeof(LOG_SIZHU_LOG_SAVE_T);
//      }
//      
//      if(log_sizhu_history_run_g.per_hour_log.log_count >= HOUR_LOG_NUM)
//      if(log_sizhu_history_ctrl_g.per_hour_log.log_count >= HOUR_LOG_NUM)
//      {
//         
//         log_sizhu_history_run_g.per_hour_log.log_count  = HOUR_LOG_NUM;
//         log_sizhu_history_ctrl_g.per_hour_log.log_count  = HOUR_LOG_NUM;
//         
//      }else
//      {
//         log_sizhu_history_run_g.per_hour_log.log_count  ++;
//         log_sizhu_history_ctrl_g.per_hour_log.log_count  ++;
//         
//      }
//      
//      EEPROM_data_write_uint16(log_sizhu_history_run_g.per_hour_log.log_count, ( STRUCT_PER_HOUR_OFFSET ) );
//      EEPROM_data_write_uint32(log_sizhu_history_run_g.per_hour_log.log_addr_save , ( STRUCT_HOUR_LOG_ADDR_SAVE_OFFSET ) );
//      EEPROM_data_write_uint16(log_sizhu_history_ctrl_g.per_hour_log.log_count, ( STRUCT_PER_HOUR_OFFSET ) );
//      EEPROM_data_write_uint32(log_sizhu_history_ctrl_g.per_hour_log.log_addr_save , ( STRUCT_HOUR_LOG_ADDR_SAVE_OFFSET ) );
//      
//      
//      
//      
//   }else if(logtype == LOG_SIZHU_DAY_TYPE)
//   {
//      eeprom_multiple_data_write( (uint8_t *)log_run_ptr, log_sizhu_history_run_g.per_day_log.log_addr_save, sizeof(LOG_SIZHU_LOG_SAVE_T) );
//      eeprom_multiple_data_write( (uint8_t *)log_run_ptr, log_sizhu_history_ctrl_g.per_day_log.log_addr_save, sizeof(LOG_SIZHU_LOG_SAVE_T) );
//      
//      
//      if((log_sizhu_history_run_g.per_day_log.log_addr_save >= PER_DAY_LOG_OFFSET_END)||(log_sizhu_history_run_g.per_day_log.log_addr_save < PER_DAY_LOG_OFFSET))
//      if((log_sizhu_history_ctrl_g.per_day_log.log_addr_save >= PER_DAY_LOG_OFFSET_END)||(log_sizhu_history_ctrl_g.per_day_log.log_addr_save < PER_DAY_LOG_OFFSET))
//      {
//         log_sizhu_history_run_g.per_day_log.log_addr_save = PER_DAY_LOG_OFFSET;
//         log_sizhu_history_ctrl_g.per_day_log.log_addr_save = PER_DAY_LOG_OFFSET;
//         
//      }else
//      {
//         log_sizhu_history_run_g.per_day_log.log_addr_save =  log_sizhu_history_run_g.per_day_log.log_addr_save + sizeof(LOG_SIZHU_LOG_SAVE_T);
//         log_sizhu_history_ctrl_g.per_day_log.log_addr_save =  log_sizhu_history_ctrl_g.per_day_log.log_addr_save + sizeof(LOG_SIZHU_LOG_SAVE_T);
//      }
//      
//      if(log_sizhu_history_run_g.per_day_log.log_count >= DAY_LOG_NUM)
//      if(log_sizhu_history_ctrl_g.per_day_log.log_count >= DAY_LOG_NUM)
//      {
//         
//         log_sizhu_history_run_g.per_day_log.log_count  = DAY_LOG_NUM;
//         log_sizhu_history_ctrl_g.per_day_log.log_count  = DAY_LOG_NUM;
//         
//      }else
//      {
//         log_sizhu_history_run_g.per_day_log.log_count  ++;
//         log_sizhu_history_ctrl_g.per_day_log.log_count  ++;
//         
//      }
//      
//         
//      EEPROM_data_write_uint16(log_sizhu_history_run_g.per_day_log.log_count, ( STRUCT_PER_DAY_OFFSET ) );
//      EEPROM_data_write_uint32(log_sizhu_history_run_g.per_day_log.log_addr_save , ( STRUCT_DAY_LOG_ADDR_SAVE_OFFSET ) );
//      EEPROM_data_write_uint16(log_sizhu_history_ctrl_g.per_day_log.log_count, ( STRUCT_PER_DAY_OFFSET ) );
//      EEPROM_data_write_uint32(log_sizhu_history_ctrl_g.per_day_log.log_addr_save , ( STRUCT_DAY_LOG_ADDR_SAVE_OFFSET ) );
//      
//      
//   }else if(logtype == LOG_SIZHU_MONTH_TYPE)
//   {
//      eeprom_multiple_data_write( (uint8_t *)log_run_ptr, log_sizhu_history_run_g.per_month_log.log_addr_save, sizeof(LOG_SIZHU_LOG_SAVE_T) );
//      eeprom_multiple_data_write( (uint8_t *)log_run_ptr, log_sizhu_history_ctrl_g.per_month_log.log_addr_save, sizeof(LOG_SIZHU_LOG_SAVE_T) );
//      
//      
//      if((log_sizhu_history_run_g.per_month_log.log_addr_save >= PER_MONTH_LOG_OFFSET_END)||(log_sizhu_history_run_g.per_month_log.log_addr_save < PER_MONTH_LOG_OFFSET))
//      if((log_sizhu_history_ctrl_g.per_month_log.log_addr_save >= PER_MONTH_LOG_OFFSET_END)||(log_sizhu_history_ctrl_g.per_month_log.log_addr_save < PER_MONTH_LOG_OFFSET))
//      {
//         log_sizhu_history_run_g.per_month_log.log_addr_save = PER_MONTH_LOG_OFFSET;
//         log_sizhu_history_ctrl_g.per_month_log.log_addr_save = PER_MONTH_LOG_OFFSET;
//         
//      }else
//      {
//         log_sizhu_history_run_g.per_month_log.log_addr_save =  log_sizhu_history_run_g.per_month_log.log_addr_save + sizeof(LOG_SIZHU_LOG_SAVE_T);
//         log_sizhu_history_ctrl_g.per_month_log.log_addr_save =  log_sizhu_history_ctrl_g.per_month_log.log_addr_save + sizeof(LOG_SIZHU_LOG_SAVE_T);
//      }
//      
//      if(log_sizhu_history_run_g.per_month_log.log_count >= MONTH_LOG_NUM)
//      if(log_sizhu_history_ctrl_g.per_month_log.log_count >= MONTH_LOG_NUM)
//      {
//         
//         log_sizhu_history_run_g.per_month_log.log_count  = MONTH_LOG_NUM;
//         log_sizhu_history_ctrl_g.per_month_log.log_count  = MONTH_LOG_NUM;
//         
//      }else
//      {
//         log_sizhu_history_run_g.per_month_log.log_count  ++;
//         log_sizhu_history_ctrl_g.per_month_log.log_count  ++;
//         
//      }
//      
//            
//      EEPROM_data_write_uint16(log_sizhu_history_run_g.per_month_log.log_count, ( STRUCT_PER_MONTH_OFFSET ) );
//      EEPROM_data_write_uint32(log_sizhu_history_run_g.per_month_log.log_addr_save , ( STRUCT_MONTH_LOG_ADDR_SAVE_OFFSET ) );
//      EEPROM_data_write_uint16(log_sizhu_history_ctrl_g.per_month_log.log_count, ( STRUCT_PER_MONTH_OFFSET ) );
//      EEPROM_data_write_uint32(log_sizhu_history_ctrl_g.per_month_log.log_addr_save , ( STRUCT_MONTH_LOG_ADDR_SAVE_OFFSET ) );
//      
//      
//