forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-05-30 a1810b89e66f184c62a0588ae7d57c91d0c376e8
Function/LCD/lcd_cfg_api.c
@@ -17,77 +17,39 @@
#include "lcd_io_api.h"
#include "system_general_para.h"
#include "extern_rtc.h"
#include "wireless_remote_comm.h"
#include "linked_list.h"
/*µçÁ¿ÏÔʾ*/
void Lcd_Battery(float alka_vcc,float lith_vcc)
void Lcd_Battery(PWR_VOL_T pwr_para_in)
{
//   __IO static uint8_t cal_cnt = 0;
//   LCD_DISPLAY_SEG(_LCD_BATTERY_SHELL_23A); //×ÜÊÇÏÔʾµç³Ø¿Ç
//   if(sys_display_para_g.sys_and_display_mode != CALIB_MODE)
//   {
//      if((calendar_g.Second & 4) == 0) //¼ÆÁ¿³ÖÐø6Ã룬ͨѶ³ÖÐø4Ã룬һ´ÎÑ­»·
//      {
//         LCD_DISPLAY_SEG(_LCD_METER_23A);  //¡°¼ÆÁ¿¡±×Ö·û
//         if(lith_bat_real_per_g > 0)
//            LCD_DISPLAY_SEG(_LCD_BATTERY_1_23A);
//         if(lith_bat_real_per_g > 20)
//            LCD_DISPLAY_SEG(_LCD_BATTERY_2_23A);
//         if(lith_bat_real_per_g > 40)
//            LCD_DISPLAY_SEG(_LCD_BATTERY_3_23A);
//         if(lith_bat_real_per_g > 70)
//            LCD_DISPLAY_SEG(_LCD_BATTERY_4_23A);
//      }
//      else
//      {
//         LCD_DISPLAY_SEG(_LCD_SIGNAL_COMMUNICATION_23A); //¡°Í¨Ñ¶¡±×Ö·û
//         if(alka_vcc >= 4.5f)
//            LCD_DISPLAY_SEG(_LCD_BATTERY_1_23A);
//         if(alka_vcc >= 4.85f)
//            LCD_DISPLAY_SEG(_LCD_BATTERY_2_23A);
//         if(alka_vcc >= 5.25f)
//            LCD_DISPLAY_SEG(_LCD_BATTERY_3_23A);
//         if(alka_vcc >= 5.65f)
//            LCD_DISPLAY_SEG(_LCD_BATTERY_4_23A);
//      }
//   }else//¼ì¶¨Ä£Ê½ÏÂʵʱʱ¼ä²»¸üУ¬ËùÒÔÒª»»ÖÖ·½Ê½
//   {
//      cal_cnt++;
//      if(cal_cnt <= 24)
//      {
//         LCD_DISPLAY_SEG(_LCD_METER_23A);  //¡°¼ÆÁ¿¡±×Ö·û
////         if(lith_vcc >= 2.9f)
////            LCD_DISPLAY_SEG(_LCD_BATTERY_1_23A);
////         if(lith_vcc >= 3.2f)
////            LCD_DISPLAY_SEG(_LCD_BATTERY_2_23A);
////         if(lith_vcc >= 3.3f)
////            LCD_DISPLAY_SEG(_LCD_BATTERY_3_23A);
////         if(lith_vcc >= 3.4f)
////            LCD_DISPLAY_SEG(_LCD_BATTERY_4_23A);
//         if(lith_bat_real_per_g > 0)
//            LCD_DISPLAY_SEG(_LCD_BATTERY_1_23A);
//         if(lith_bat_real_per_g > 20)
//            LCD_DISPLAY_SEG(_LCD_BATTERY_2_23A);
//         if(lith_bat_real_per_g > 40)
//            LCD_DISPLAY_SEG(_LCD_BATTERY_3_23A);
//         if(lith_bat_real_per_g > 70)
//            LCD_DISPLAY_SEG(_LCD_BATTERY_4_23A);
//      }else
//      {
//         if(cal_cnt > 40)
//            cal_cnt = 0;
//         LCD_DISPLAY_SEG(_LCD_SIGNAL_COMMUNICATION_23A); //¡°Í¨Ñ¶¡±×Ö·û
//         if(alka_vcc >= 4.5f)
//            LCD_DISPLAY_SEG(_LCD_BATTERY_1_23A);
//         if(alka_vcc >= 4.85f)
//            LCD_DISPLAY_SEG(_LCD_BATTERY_2_23A);
//         if(alka_vcc >= 5.25f)
//            LCD_DISPLAY_SEG(_LCD_BATTERY_3_23A);
//         if(alka_vcc >= 5.65f)
//            LCD_DISPLAY_SEG(_LCD_BATTERY_4_23A);
//      }
//   }
   LCD_DISPLAY_SEG(_LCD_BATTERY_SHELL_23A); //×ÜÊÇÏÔʾµç³Ø¿Ç
   if((sys_clockBCD_g.sec & 0x04 ) == 0){
      //ÏÔʾ﮵ç
      LCD_DISPLAY_SEG(_LCD_METER_23A);  //¡°¼ÆÁ¿¡±×Ö·û
      if(pwr_para_in.lith_synthesize_per > BAT_PERSENT_LEVEL_0)
         LCD_DISPLAY_SEG(_LCD_BATTERY_1_23A);
      if(pwr_para_in.lith_synthesize_per > BAT_PERSENT_LEVEL_1)
         LCD_DISPLAY_SEG(_LCD_BATTERY_2_23A);
      if(pwr_para_in.lith_synthesize_per > BAT_PERSENT_LEVEL_2)
         LCD_DISPLAY_SEG(_LCD_BATTERY_3_23A);
      if(pwr_para_in.lith_synthesize_per > BAT_PERSENT_LEVEL_3)
         LCD_DISPLAY_SEG(_LCD_BATTERY_4_23A);
   }else{
      //ÏÔʾ¼îµç
      LCD_DISPLAY_SEG(_LCD_SIGNAL_COMMUNICATION_23A); //¡°Í¨Ñ¶¡±×Ö·û
      if(pwr_para_in.alka_vcc_per > BAT_PERSENT_LEVEL_0)
         LCD_DISPLAY_SEG(_LCD_BATTERY_1_23A);
      if(pwr_para_in.alka_vcc_per > BAT_PERSENT_LEVEL_1)
         LCD_DISPLAY_SEG(_LCD_BATTERY_2_23A);
      if(pwr_para_in.alka_vcc_per > BAT_PERSENT_LEVEL_2)
         LCD_DISPLAY_SEG(_LCD_BATTERY_3_23A);
      if(pwr_para_in.alka_vcc_per > BAT_PERSENT_LEVEL_3)
         LCD_DISPLAY_SEG(_LCD_BATTERY_4_23A);
   }
}
/*
@@ -495,199 +457,169 @@
/*·§ÃÅÏÔʾ*/
//void Lcd_ValveShow(VALVE_STATUS valve_state,SYS_ALARM_VALVE_T cl_valve_cause,uint8_t valve_lock)
//{
//   static uint8_t show_flag = 0;
//   switch(valve_state)
//   {
//      case VALVE_OPEN:
//         LCD_DISPLAY_SEG(_LCD_VALVE_M_23A);
//         LCD_DISPLAY_SEG(_LCD_OPEN_23A);
//         break;
//      case VALVE_CLOSE:
//         LCD_DISPLAY_SEG(_LCD_VALVE_M_23A);
//         LCD_DISPLAY_SEG(_LCD_CLOSE_23A);
//         break;
//      case VALVE_OPENING:
//         LCD_DISPLAY_SEG(_LCD_VALVE_M_23A);
//         show_flag = !show_flag;
//         if(show_flag)
//            LCD_DISPLAY_SEG(_LCD_OPEN_23A);
//         break;
//      case VALVE_CLOSING:
//         LCD_DISPLAY_SEG(_LCD_VALVE_M_23A);
//         show_flag = !show_flag;
//         if(show_flag)
//            LCD_DISPLAY_SEG(_LCD_CLOSE_23A);
//         break;
//      case VALVE_ERROR:
//         LCD_DISPLAY_SEG(_LCD_VALVE_M_23A);
//         break;
//      default:break;
//   }
//   if(valve_lock)
//      LCD_DISPLAY_SEG(_LCD_LOCK_23A);
//   if(valve_state == VALVE_CLOSE && (cl_valve_cause <= 0x99))
//   {
//#ifdef LCD_NEW
//      Lcd_DisplayDigit_23A(1,BCD_2_DECIMAL(cl_valve_cause) / 10);
//      Lcd_DisplayDigit_23A(2,BCD_2_DECIMAL(cl_valve_cause) % 10);
//#else
//      switch(cl_valve_cause) //ÔÝδÏëºÃÔõô·ÖÀà
//      {
//         default:
////            Lcd_DisplayDigit_23A(1,5);
//            break;
//      }
//#endif
//   }
//}
void Lcd_ValveShow(VALVE_STATUS valve_state,uint16_t valve_close_ID,VALVE_LOCK_STATE_T valve_lock_status)
{
   static uint8_t show_flag = 0;
   switch(valve_state)
   {
      case VALVE_NONE:
         break;
      case VALVE_OPEN:
         LCD_DISPLAY_SEG(_LCD_VALVE_M_23A);
         LCD_DISPLAY_SEG(_LCD_OPEN_23A);
         break;
      case VALVE_CLOSE:
         LCD_DISPLAY_SEG(_LCD_VALVE_M_23A);
         LCD_DISPLAY_SEG(_LCD_CLOSE_23A);
         break;
      case VALVE_OPENING:
         LCD_DISPLAY_SEG(_LCD_VALVE_M_23A);
         if((sys_clockBCD_g.sec & 0x01) == 0)
            LCD_DISPLAY_SEG(_LCD_OPEN_23A);
         break;
      case VALVE_CLOSING:
         LCD_DISPLAY_SEG(_LCD_VALVE_M_23A);
         if((sys_clockBCD_g.sec & 0x01) == 0)
            LCD_DISPLAY_SEG(_LCD_CLOSE_23A);
         break;
      case VALVE_ERROR:
         if((sys_clockBCD_g.sec & 0x01) == 0)
            LCD_DISPLAY_SEG(_LCD_VALVE_M_23A);
         break;
      default:break;
   }
   if(valve_lock_status == VL_LOCK)
      LCD_DISPLAY_SEG(_LCD_LOCK_23A);
   valve_close_ID &=(~0x8000);
   if(valve_state == VALVE_CLOSE && (valve_close_ID <= 0xff))
   {
      Lcd_DisplayDigit_23A(1,BCD_2_DECIMAL(valve_close_ID) / 10);
      Lcd_DisplayDigit_23A(2,BCD_2_DECIMAL(valve_close_ID) % 10);
   }
}
/*¾¯¸æÏÔʾ*/
#define ALARM_ID_SHOW_MAX 5
void Lcd_WaringShow_New(uint8_t list_cnt,uint8_t sec_bcd)
void Lcd_WaringShow(uint8_t list_cnt,uint8_t sec_bcd)
{
//   uint8_t i = 0;
//#ifdef LCD_NEW
//   i = 1;
//#endif
//   static uint8_t sec_limit_flag = 0; //ÓÃÓÚÑ­»·±¨¾¯ÏÔʾʱ£¬°´¼ü·­Ò³µ¼ÖÂÏÔʾ²»Á÷³©µÄÎÊÌâ
//   static uint8_t temp_list_cnt_flag = 0; //ÓÃÓÚÅжϱ¨¾¯ÊÇ·ñÔöɾ
//   static uint8_t show_min_flag = 0; //ÏÔʾÅжϵÄ×îСֵ±ê־λ
//   __IO static int8_t alarm_show_num = 0; //±¨¾¯ÏÔʾµÄ³¤¶È£¬ÓÃÓÚ²éÕÒÁ´±íÖеı¨¾¯ID
//   __IO static SYS_ALARM_VALVE_T alarm_id = AV_NORMAL;
//   ALARM_NODE_T * ptr = pList_head;
//   if((sec_bcd & 1) && (ptr != NULL))//ÿ2SÐÞ¸ÄÒ»´ÎÊý¾Ý & ±¨¾¯Á´±íÊý¾ÝÓÐ
//   {
//      if(sec_limit_flag != sec_bcd)
//      {
//         sec_limit_flag = sec_bcd;
//         if(temp_list_cnt_flag != list_cnt) //±¨¾¯Ôö¼ÓorÏûʧʱ£¬´Ó×îеı¨¾¯¿ªÊ¼ÏÔʾ
//         {
//            alarm_show_num = temp_list_cnt_flag = list_cnt;
//            if(list_cnt > ALARM_ID_SHOW_MAX) //¼ÆËãÑ­»·ÏÔʾ×îСֵ
//               show_min_flag = list_cnt - ALARM_ID_SHOW_MAX;
//            else
//               show_min_flag = 0;
//         }
//         if(--alarm_show_num < show_min_flag) //Ò»ÂÖÑ­»·ºó£¬»Øµ½¿ªÊ¼Öµ
//            alarm_show_num = list_cnt - 1;
//         /*Á´±í²éÕÒ*/
//         for(uint8_t j = 0;j < alarm_show_num;j++)
//            ptr = ptr->alarm_list_next;
//         alarm_id = ptr->list_data;
//      }
//   }else if(ptr == NULL && temp_list_cnt_flag != 0) // ÒÔǰÓб¨¾¯£¬ÏÖÔÚûÁË
//   {
//      alarm_id = AV_NORMAL;
//      temp_list_cnt_flag = list_cnt;
//   }
//   /*±¨¾¯ÏÔʾ*/
//   if(alarm_id != AV_NORMAL)
//   {
//      LCD_DISPLAY_SEG(_LCD_WARNING_23A);
//      Lcd_DisplayDigit_23A(2 + i,BCD_2_DECIMAL(alarm_id) / 10);
//      Lcd_DisplayDigit_23A(3 + i,BCD_2_DECIMAL(alarm_id) % 10);
//   }
   uint8_t i = 0;
#ifdef LCD_NEW
   i = 1;
#endif
   static uint8_t sec_limit_flag = 0; //ÓÃÓÚÑ­»·±¨¾¯ÏÔʾʱ£¬°´¼ü·­Ò³µ¼ÖÂÏÔʾ²»Á÷³©µÄÎÊÌâ
   static uint8_t temp_list_cnt_flag = 0; //ÓÃÓÚÅжϱ¨¾¯ÊÇ·ñÔöɾ
   static uint8_t show_min_flag = 0; //ÏÔʾÅжϵÄ×îСֵ±ê־λ
   __IO static int8_t alarm_show_num = 0; //±¨¾¯ÏÔʾµÄ³¤¶È£¬ÓÃÓÚ²éÕÒÁ´±íÖеı¨¾¯ID
   __IO static SYS_ALARM_VALVE_T alarm_id = ALARM_ID_NORMAL;
   ALARM_NODE_T * ptr = pList_head;
   if((sec_bcd & 1) && (ptr != NULL))//ÿ2SÐÞ¸ÄÒ»´ÎÊý¾Ý & ±¨¾¯Á´±íÊý¾ÝÓÐ
   {
      if(sec_limit_flag != sec_bcd)
      {
         sec_limit_flag = sec_bcd;
         if(temp_list_cnt_flag != list_cnt) //±¨¾¯Ôö¼ÓorÏûʧʱ£¬´Ó×îеı¨¾¯¿ªÊ¼ÏÔʾ
         {
            alarm_show_num = temp_list_cnt_flag = list_cnt;
            if(list_cnt > ALARM_ID_SHOW_MAX) //¼ÆËãÑ­»·ÏÔʾ×îСֵ
               show_min_flag = list_cnt - ALARM_ID_SHOW_MAX;
            else
               show_min_flag = 0;
         }
         if(--alarm_show_num < show_min_flag) //Ò»ÂÖÑ­»·ºó£¬»Øµ½¿ªÊ¼Öµ
            alarm_show_num = list_cnt - 1;
         /*Á´±í²éÕÒ*/
         for(uint8_t j = 0;j < alarm_show_num;j++)
            ptr = ptr->alarm_list_next;
         alarm_id = ptr->list_data;
      }
   }else if(ptr == NULL && temp_list_cnt_flag != 0) // ÒÔǰÓб¨¾¯£¬ÏÖÔÚûÁË
   {
      alarm_id = ALARM_ID_NORMAL;
      temp_list_cnt_flag = list_cnt;
   }
   /*±¨¾¯ÏÔʾ*/
   if((alarm_id != ALARM_ID_NORMAL)&&(alarm_id <= 0xff))
   {
      LCD_DISPLAY_SEG(_LCD_WARNING_23A);
      Lcd_DisplayDigit_23A(2 + i,BCD_2_DECIMAL(alarm_id) / 10);
      Lcd_DisplayDigit_23A(3 + i,BCD_2_DECIMAL(alarm_id) % 10);
   }
}
/*¾¯¸æÏÔʾ*/
//void Lcd_WarningShow(SYS_ALARM_VALVE_T * warning_state,SYS_ALARM_VALVE_T * clear_state)
//{
//   uint8_t display_alarm_id_bcd = BCD_2_DECIMAL(*warning_state);
//   //µ±±¨¾¯ÏÔʾºÍÇå³ý±¨¾¯ÏÔʾÏàͬʱ
//   if(*warning_state == *clear_state && *clear_state != AV_NORMAL)
//      *warning_state = *clear_state = AV_NORMAL;
//   if(*warning_state == AV_NORMAL && *clear_state != AV_NORMAL)
//      *clear_state = AV_NORMAL;
//   switch(*warning_state)
//   {
//      case AV_NORMAL:
//      case V_KEY_OP: //¾¯¸æÖ»ÓÐÁ½Î»Êý×ÖÏÔʾ
//      case V_KEY_CL:
//      case V_GPRS_CMD_OP:
//      case V_GPRS_CMD_CL:
//         break;
//      default:
//         LCD_DISPLAY_SEG(_LCD_WARNING_23A);
//         Lcd_DisplayDigit_23A(2,display_alarm_id_bcd / 10);
//         Lcd_DisplayDigit_23A(3,display_alarm_id_bcd % 10);
//         break;
//   }
//}
/*Ô¶´«ÏÔʾ*/
void Lcd_GprsShow(uint8_t gprs_state,uint8_t flag_4g,uint8_t signal_intensity)
void Lcd_WrcShow(FlagStatus wrc_running_status,ErrorStatus last_wrc_result,uint8_t flag_4g,uint8_t signal_intensity)
{
//   static uint8_t temp_sig = 0;
//   if(!flag_4g)
//      LCD_DISPLAY_SEG(_LCD_4G_Flag_23A);
//   /*ÕýÔÚÉÏ´«Ê±ÏÔʾ*/
//   if(gprs_soft_para_g.gprs_state != GPRS_IDLE && gprs_soft_para_g.gprs_state != GPRS_RESTART)
//   {
//      LCD_DISPLAY_SEG(_LCD_WIFI_23A);
//      temp_sig++;
//      switch(temp_sig)
//      {
//         case 1:
//            LCD_DISPLAY_SEG(_LCD_4G_1_23A);
//            break;
//         case 2:
//            LCD_DISPLAY_SEG(_LCD_4G_1_23A);
//            LCD_DISPLAY_SEG(_LCD_4G_2_23A);
//            break;
//         case 3:
//            LCD_DISPLAY_SEG(_LCD_4G_1_23A);
//            LCD_DISPLAY_SEG(_LCD_4G_2_23A);
//            LCD_DISPLAY_SEG(_LCD_4G_3_23A);
//            break;
//         case 4:
//            LCD_DISPLAY_SEG(_LCD_4G_1_23A);
//            LCD_DISPLAY_SEG(_LCD_4G_2_23A);
//            LCD_DISPLAY_SEG(_LCD_4G_3_23A);
//            LCD_DISPLAY_SEG(_LCD_4G_4_23A);
//            break;
//         case 5:
//            LCD_DISPLAY_SEG(_LCD_4G_1_23A);
//            LCD_DISPLAY_SEG(_LCD_4G_2_23A);
//            LCD_DISPLAY_SEG(_LCD_4G_3_23A);
//            LCD_DISPLAY_SEG(_LCD_4G_4_23A);
//            LCD_DISPLAY_SEG(_LCD_4G_5_23A);
//            break;
//         default:
//            temp_sig = 0;
//            break;
//      }
//   }
//   else
//   {
//      if(!gprs_state)//ÉÏÒ»´ÎͨѶÕý³£
//      {
//         LCD_DISPLAY_SEG(_LCD_WIFI_23A);
//         LCD_DISPLAY_SEG(_LCD_4G_1_23A);
//         if(signal_intensity > GMS_WORST)
//            LCD_DISPLAY_SEG(_LCD_4G_2_23A);
//         if(signal_intensity > GMS_POOR)
//            LCD_DISPLAY_SEG(_LCD_4G_3_23A);
//         if(signal_intensity > GMS_GENERAL)
//            LCD_DISPLAY_SEG(_LCD_4G_4_23A);
//         if(signal_intensity > GMS_BEST)
//            LCD_DISPLAY_SEG(_LCD_4G_5_23A);
//      }
//   }
   static uint8_t temp_sig = 0;
   if((flag_4g>>4) == 4)
      LCD_DISPLAY_SEG(_LCD_4G_Flag_23A);
   /*ÕýÔÚÉÏ´«Ê±ÏÔʾ*/
   if(wrc_running_status == SET)
   {
      LCD_DISPLAY_SEG(_LCD_WIFI_23A);
      temp_sig++;
      switch(temp_sig)
      {
         case 1:
            LCD_DISPLAY_SEG(_LCD_4G_1_23A);
            break;
         case 2:
            LCD_DISPLAY_SEG(_LCD_4G_1_23A);
            LCD_DISPLAY_SEG(_LCD_4G_2_23A);
            break;
         case 3:
            LCD_DISPLAY_SEG(_LCD_4G_1_23A);
            LCD_DISPLAY_SEG(_LCD_4G_2_23A);
            LCD_DISPLAY_SEG(_LCD_4G_3_23A);
            break;
         case 4:
            LCD_DISPLAY_SEG(_LCD_4G_1_23A);
            LCD_DISPLAY_SEG(_LCD_4G_2_23A);
            LCD_DISPLAY_SEG(_LCD_4G_3_23A);
            LCD_DISPLAY_SEG(_LCD_4G_4_23A);
            break;
         case 5:
            LCD_DISPLAY_SEG(_LCD_4G_1_23A);
            LCD_DISPLAY_SEG(_LCD_4G_2_23A);
            LCD_DISPLAY_SEG(_LCD_4G_3_23A);
            LCD_DISPLAY_SEG(_LCD_4G_4_23A);
            LCD_DISPLAY_SEG(_LCD_4G_5_23A);
            break;
         default:
            temp_sig = 0;
            break;
      }
   }
   else
   {
      if(last_wrc_result == PASS)//ÉÏÒ»´ÎͨѶÕý³£
      {
         LCD_DISPLAY_SEG(_LCD_WIFI_23A);
         LCD_DISPLAY_SEG(_LCD_4G_1_23A);
         if(signal_intensity > GMS_WORST)
            LCD_DISPLAY_SEG(_LCD_4G_2_23A);
         if(signal_intensity > GMS_POOR)
            LCD_DISPLAY_SEG(_LCD_4G_3_23A);
         if(signal_intensity > GMS_GENERAL)
            LCD_DISPLAY_SEG(_LCD_4G_4_23A);
         if(signal_intensity > GMS_BEST)
            LCD_DISPLAY_SEG(_LCD_4G_5_23A);
      }
   }
   
}
/*¼Æ·ÑÏÔʾ*/
void Lcd_BillingShow(uint8_t bill_flag,uint8_t bill_mode,uint8_t price_mode)
void Lcd_BillingShow(uint8_t bill_mode,uint8_t ladder_now)
{
//   if(bill_flag)//ÓмƷÑ
//   {
//      if(bill_mode)//ºǫ́¼Æ·Ñģʽ
//         LCD_DISPLAY_SEG(_LCD_BILLBACK_23A);
//      if(price_mode == SPM_LADDER)
//         LCD_DISPLAY_SEG(_LCD_LADDERBILL_23A);//½×Ìݼ۸ñ
//      else
//         LCD_DISPLAY_SEG(_LCD_SINGLEBILL_23A);//µ¥Ò»¼Û¸ñ
//   }
   if(bill_mode == BM_DEVICE || bill_mode == BM_PLATFORM){
      if(bill_mode == BM_PLATFORM)//ºǫ́¼Æ·Ñģʽ
         LCD_DISPLAY_SEG(_LCD_BILLBACK_23A);
      if(ladder_now > 0)
         LCD_DISPLAY_SEG(_LCD_LADDERBILL_23A);//½×Ìݼ۸ñ
      else
         LCD_DISPLAY_SEG(_LCD_SINGLEBILL_23A);//µ¥Ò»¼Û¸ñ
   }
}