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/sundry.h |  199 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 199 insertions(+), 0 deletions(-)

diff --git a/Soft/sundry.h b/Soft/sundry.h
new file mode 100644
index 0000000..ebee5c9
--- /dev/null
+++ b/Soft/sundry.h
@@ -0,0 +1,199 @@
+#ifndef _SUNDRY_H_
+#define _SUNDRY_H_
+
+#include "define_all.h" 
+#include "extern_rtc.h"
+#include "time.h"
+
+/*���������С*/
+#define FLOW_RING_BUFFER_SIZE 20
+#define TEMP_RING_BUFFER_SIZE 10
+#define PRESS_RING_BUFFER_SIZE 10
+#define INSTANT_WC_RING_BUFFER_SIZE 20
+
+// ��С��ת��
+#define BSWAP_16(x) ((x & 0x00ff) << 8) | \
+                        ((x & 0xff00) >> 8)
+
+#define BSWAP_32(x) ((x & 0xff000000) >> 24) |    \
+                        ((x & 0x00ff0000) >> 8) | \
+                        ((x & 0x0000ff00) << 8) | \
+                        ((x & 0x000000ff) << 24)
+
+// #define BSWAP_64(x) ((BSWAP_32(x) << 32) | BSWAP_32((x) >> 32))
+
+#define BSWAP_64(x) ((x & 0xff00000000000000) >> 56) |     \
+                        ((x & 0x00ff000000000000) >> 40) | \
+                        ((x & 0x0000ff0000000000) >> 24) | \
+                        ((x & 0x000000ff00000000) >> 8) |  \
+                        ((x & 0x00000000ff000000) << 8) |  \
+                        ((x & 0x0000000000ff0000) << 24) | \
+                        ((x & 0x000000000000ff00) << 40) | \
+                        ((x & 0x00000000000000ff) << 56)
+
+// ϵͳͨ���ӳ�ʱ������
+#define __SYS_DELAY_SEC_TIME_SET_(__HANDLE__, __NUMBER__) ((&sys_delay_sec_para_g)->__HANDLE__.delay_time = __NUMBER__)
+
+// ϵͳͨ���ӳ�ʱ���ȡ
+#define __SYS_DELAY_SEC_TIME_GET_(__HANDLE__)	((&sys_delay_sec_para_g)->__HANDLE__.delay_time)
+
+// ϵͳͨ���ӳٱ�־λget
+#define __SYS_DELAY_SEC_FLAG_GET(__HANDLE__) ((&sys_delay_sec_para_g)->__HANDLE__.delay_flag)
+// ϵͳͨ���ӳٱ�־λ����
+#define __SYS_DELAY_SEC_FLAG_SET_(__HANDLE__) ((&sys_delay_sec_para_g)->__HANDLE__.delay_flag = SET)
+// ϵͳͨ���ӳٱ�־λ���
+#define __SYS_DELAY_SEC_FLAG_CLEAR_(__HANDLE__) ((&sys_delay_sec_para_g)->__HANDLE__.delay_flag = RESET)
+
+// �����״μ����־λ����
+#define __PERIOD_FIRST_CALC_FLAG_SET(__HANDLE__) ((&period_para_g)->__HANDLE__.period_flag = SET)
+
+/*�ó��ṹ���Աƫ�����ʹ�С*/
+#define OFFSET_OF(type, member) ((size_t) & (((type *)0))->member)
+#define SIZEOF_OF(type, member) (sizeof(((type *)0))->member)
+
+/*ʮ�����ƺ�BCD��ʽ����ת�������Ʒ�Χ0~99��*/
+#define BCD_2_HEX_U8(__BCD_DATA__) (((__BCD_DATA__) / 16) * 10 + (__BCD_DATA__) % 16)
+#define HEX_2_BCD_U8(__HEX_DATA__) (((__HEX_DATA__) / 10) * 16 + (__HEX_DATA__) % 10)
+
+/*ÿ��0��*/
+#define DAILY_ZERO ((&calendar_g)->Hour == 0 && (&calendar_g)->Minute == 0 && (&calendar_g)->Second == 0 ? SET : RESET)
+
+/**
+ * @brief ���ṹ���С�Ƿ����
+ *        �ڱ���ʱ����м��
+ * @param type �ṹ������
+ * @param size �ṹ�����С
+ */
+#define TYPE_CHECK_SIZE(type, size) extern char sizeof_##type##_is_##size##_error[!!(sizeof(type) == (size_t)(size)) - 1]
+/**
+ * @brief �ṹ���Ա
+ * @param type   �ṹ������
+ * @param member ��Ա����
+ */
+#define TYPE_MEMBER(type, member) (((type *)0)->member)
+/**
+ * @brief ���ṹ���Ա��С�Ƿ����
+ *        �ڱ���ʱ����м��
+ * @param type �ṹ������
+ * @param member �ṹ������
+ * @param size �ṹ�����С
+ */
+#define TYPE_MEMBER_CHECK_SIZE(type, member, size) extern int sizeof_##type##_##member##_is_error \
+    [!!(sizeof(TYPE_MEMBER(type, member)) == (size_t)(size)) - 1]
+/**
+ * @brief ���ṹ���нṹ���Ա��С�Ƿ����
+ *        �ڱ���ʱ����м��
+ * @param type �ṹ������
+ * @param member �ṹ������
+ * @param size �ṹ�����С
+ */
+#define TYPE_CHILDTYPE_MEMBER_CHECK_SIZE(type, childtype, member, size) extern int sizeof_##type##_##childtype##_##member##_is_error \
+    [!!(sizeof(TYPE_MEMBER(type, childtype.member)) == (size_t)(size)) - 1]
+/**
+ * @brief ���ṹ���Աƫ��λ���Ƿ����
+ *        �ڱ���ʱ����м��
+ * @param type �ṹ������
+ * @param member �ṹ���Ա
+ * @param value ��Աƫ��
+ */
+#define TYPE_MEMBER_CHECK_OFFSET(type, member, value)  \
+  extern int offset_of_##member##_in_##type##_is_error \
+      [!!(__builtin_offsetof(type, member) == ((size_t)(value))) - 1]
+/**
+ * @brief ���ṹ���Աƫ��λ���Ƿ����
+ *        �ڱ���ʱ����м��
+ * @param type �ṹ������
+ * @param member �ṹ���Ա
+ * @param value ��Աƫ��
+ */
+#define TYPE_CHILDTYPE_MEMBER_CHECK_OFFSET(type, childtype, member, value) \
+  extern int offset_of_##member##_in_##type##_##childtype##_is_error       \
+      [!!(__builtin_offsetof(type, childtype.member) == ((size_t)(value))) - 1]
+
+#pragma pack(1)
+
+typedef struct
+{
+  float *pRing_buffer;
+  uint8_t front_index;     // ����ͷ����һ������+1��
+  uint8_t rear_index;      // ����β(дһ������+1)
+} ANALOGOUS_RING_BUFFER_T; // ���ƻ������飨ֻ��Ҫд������Ҫ����
+
+typedef struct
+{
+  __IO uint8_t delay_flag;  // ��ʱʱ�䵽��־λ
+  __IO uint16_t delay_time; // ��ʱ����ʱ��
+} DELAY_SEC_TYPE_T;         // ��ʱʱ�����ͽṹ��
+
+typedef struct
+{
+  DELAY_SEC_TYPE_T gprs_delay_para;       // GPRS�ӳ�ʱ��
+  DELAY_SEC_TYPE_T gprs_timeout_para;     // GPRS��ʱʱ��
+  DELAY_SEC_TYPE_T flow_data_period_para; // �������ݻ�ȡ����ʱ��
+  DELAY_SEC_TYPE_T sys_active_time;       // ϵͳ����ʱ��
+  DELAY_SEC_TYPE_T mode_flag_active_time; // �л�ģʽ��־λ����ʱ��
+	DELAY_SEC_TYPE_T sys_restart_delay_time;// ϵͳ�������ӳ�ʱ��
+} SYS_DELAY_SEC_PARA_T;
+
+typedef struct
+{
+   uint16_t  period_flag ;    // �״μ�����һ�����ڵı�־λ
+  __IO uint16_t last_time_m; // ��һ�ε�ʱ��
+} PERIOD_TYPE_T ;
+
+typedef struct
+{
+  PERIOD_TYPE_T gprs_send_period;
+  PERIOD_TYPE_T alka_get_power_period;
+  PERIOD_TYPE_T lith_get_power_period;
+  PERIOD_TYPE_T mcu_get_temperature_period;
+} PERIOD_PARA_T ;
+
+#pragma pack()
+
+extern uint8_t restart_alarm_flag;
+
+extern SYS_DELAY_SEC_PARA_T sys_delay_sec_para_g;
+
+extern PERIOD_PARA_T period_para_g;
+
+extern ANALOGOUS_RING_BUFFER_T flow_ring;
+extern ANALOGOUS_RING_BUFFER_T temp_ring;
+extern ANALOGOUS_RING_BUFFER_T press_ring;
+extern ANALOGOUS_RING_BUFFER_T instant_wc_ring;
+
+uint8_t Bcd_2_Hex(uint8_t bcd_data);
+uint8_t Hex_2_Bcd(uint8_t hex_data);
+void Hex_2_Ascii(uint8_t *Hex, uint8_t *Ascii, int Len); //	HEX_TO_ASCII
+void Ascii_2_Hex(uint8_t *Ascii, uint8_t *Hex, int Len); //	ASCII_TO_HEX
+
+void Float_To_Byte4(float flo, uint8_t *pData);
+float Byte4_To_Float(uint8_t *pData);
+
+void Sys_Delay_Sec(SYS_DELAY_SEC_PARA_T *sys_delay_sec_para_p);
+
+FlagStatus Func_PeriodStartHandler(uint16_t ref_time_m, uint16_t period_min_set,
+                                   uint16_t *pPeriod_flag, __IO uint16_t *pLast_time_m, __IO RTC_TimeDateTypeDef *calendar_p);
+uint16_t get_one_in_data_3(uint16_t data);
+int Datecmp(const uint8_t *pDate1, const uint8_t *pDate2);
+int16_t Date_DaysDifference(uint8_t yearst_bcd, uint8_t monthst_bcd, uint8_t dayst_bcd,
+                            uint8_t yearend_bcd, uint8_t monthend_bcd, uint8_t dayend_bcd);
+int16_t Data_MonthsDifference(uint8_t yearst_bcd, uint8_t monthst_bcd,
+                              uint8_t yearend_bcd, uint8_t monthend_bcd);
+
+uint8_t ring_write_array(ANALOGOUS_RING_BUFFER_T *ring_buffer_p, const float *pData, uint8_t write_cnt, uint8_t buffer_len_max);
+uint8_t ring_read_1_data(ANALOGOUS_RING_BUFFER_T *ring_buffer_p, float *pData, uint8_t buffer_len_max);
+float LowPassFilter_Ring_Average(ANALOGOUS_RING_BUFFER_T *ring_buffer_p, const float *pData, uint8_t write_cnt, uint8_t buffer_len_max);
+float LowPassFilter_MaxMin_Ring_Average(ANALOGOUS_RING_BUFFER_T *ring_buffer_p, const float *pData, uint8_t write_cnt, uint8_t buffer_len_max);
+
+
+float Wc_2_Sc(float wc_flow, float real_press, float real_temp);
+
+float BLEndianFloat(float fValue);
+double BLEndianDouble(double ffValue);
+
+uint8_t CalcCheckSum(const uint8_t *pData, uint16_t Len);
+
+int8_t my_memcmp(const void * pData_1,const void * pData_2,size_t n);
+
+#endif

--
Gitblit v1.9.3