From 72def895431ad7a08e635b11f3da738e2b2c4618 Mon Sep 17 00:00:00 2001
From: wujiazhi <1147861305@qq.com>
Date: Thu, 13 Jun 2024 11:31:04 +0800
Subject: [PATCH] add lower model test

---
 Soft/billing.h |  103 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 103 insertions(+), 0 deletions(-)

diff --git a/Soft/billing.h b/Soft/billing.h
new file mode 100644
index 0000000..fa4b62f
--- /dev/null
+++ b/Soft/billing.h
@@ -0,0 +1,103 @@
+#ifndef _BILLING_H_
+#define _BILLING_H_
+
+#include "define_all.h" 
+#include "extern_rtc.h"
+#include "administrator.h"
+
+#define LADDER_PRICE_DEFAULT_VER 0
+
+typedef enum
+{
+  BPM_NORMAL = 0U, // �����Ʒ�
+  BPM_LADDER_1,
+  BPM_LADDER_2,
+  BPM_LADDER_3,
+  BPM_LADDER_4,
+  BPM_LADDER_5
+} BILLING_PRICE_MODE_NOW_T; // ��ǰ�ļ۸�ģʽ
+typedef enum
+{
+  SPM_NORMAL = 0U,
+  SPM_LADDER = 0x12, // ���ݵ���
+  SPM_TIME = 0x13    // ʱ�����
+} SET_PRICE_MODE_T;  // ���ü۸�ģʽ
+typedef enum
+{
+  PPS_CYCLICALLY = 0U,
+  PPS_ONLY_ONE = 0x11
+} PRICE_PERIOD_STATUS_T; // �۸�����״̬
+typedef enum
+{
+  PPU_HOUR = 0x11,
+  PPU_DAY = 0x22,
+  PPU_MONTH = 0x33,
+  PPU_QUARTER = 0x44,  // ����
+	PPU_YEAR = 0x55,		 // ���
+} PRICE_PERIOD_UNIT_T; // �۸����ڵ�λ
+
+#pragma pack(1)
+
+#define REALTIME_BILLING_FORMAT_SIZE sizeof(BILLING_REAL_PARA_T)
+typedef struct
+{
+  uint8_t price_type_mode_now;
+  uint32_t price_now;
+  double use_money_sum;
+  double balance_now;
+  double residual_gas_now;
+  double ladder_cumulate_sc;
+} BILLING_REAL_PARA_T; // �Ʒ�ʵʱ����
+
+#define SYS_BILLING_ALARM_CFG_FORMAT_SIZE sizeof(BILLING_ALARM_CFG_T)
+typedef struct
+{
+	uint16_t alarm_ctl_byte_2;
+	uint16_t alarm_send_byte_2;
+  uint16_t valve_close_ctl[2];
+  int32_t balance_small_value[5];
+  uint32_t cumulate_flow_value;
+  uint8_t no_gprs_days;
+  uint8_t no_use_gas_days;
+  uint8_t reserve[5];
+} BILLING_ALARM_CFG_T; // �Ʒѱ�������
+
+typedef struct
+{
+  uint8_t time[6];
+  uint16_t duration;
+} LADDER_TIME_PRICE_PARA_T;
+#define SYS_LADDER_PRICE_CFG_FORMAT_SIZE sizeof(LADDER_PRICE_CFG_PARA_T)
+typedef struct
+{
+  uint16_t price_ver;
+  uint32_t normal_price_now;
+  SET_PRICE_MODE_T set_price_type_mode;
+  PRICE_PERIOD_STATUS_T period_state;
+  uint8_t period_start_time[6];
+  PRICE_PERIOD_UNIT_T period_unit;
+  uint16_t period_duration;
+  uint32_t set_ladder_price[5];
+  uint32_t set_ladder_cumulate[5];
+  LADDER_TIME_PRICE_PARA_T set_time_price[5];
+  PRICE_PERIOD_UNIT_T time_unit;
+  uint8_t price_scheme_start_time[6];
+  uint8_t reserve[7];
+} LADDER_PRICE_CFG_PARA_T; // ���ݼ۸����ò���
+
+#pragma pack()
+
+extern BILLING_REAL_PARA_T billing_real_para_g;
+extern LADDER_PRICE_CFG_PARA_T ladder_price_cfg_para_true_g;
+extern LADDER_PRICE_CFG_PARA_T ladder_price_cfg_para_new_g;
+extern ErrorStatus_STM32 have_gprs_send_flag;
+extern BILLING_ALARM_CFG_T billing_alarm_cfg_g;
+
+void Billing_RealTimeProcess(BILLING_MODE_T start_flag, __IO double single_flow_sum, LADDER_PRICE_CFG_PARA_T *ladder_cfg_p, BILLING_REAL_PARA_T *billing_para_p);
+double GasCumulant_Ladder_PeriodCalculation(BILLING_MODE_T mode_flag,double single_flow_sum, 
+																						LADDER_PRICE_CFG_PARA_T *ladder_cfg_p_p, BILLING_REAL_PARA_T *billing_para_p_p);
+void Add_days_CalculateYearMonTHDay(uint8_t *pYear_bcd, uint8_t *pMonth_bcd, uint8_t *pDay_bcd, uint16_t add_days);
+void GasCumulant_Ladder_PeriodCfg(LADDER_PRICE_CFG_PARA_T *ladder_cfg_new, LADDER_PRICE_CFG_PARA_T *ladder_cfg_old, __IO RTC_TimeDateTypeDef *calendar);
+void StartTime_NextCalculation(PRICE_PERIOD_UNIT_T price_unit, uint16_t time_duration, uint8_t *pNext_time);
+
+#endif

--
Gitblit v1.9.3