X1UWaterWmbusISK/app/UWater_rtcc_app.c

243 lines
6.6 KiB
C
Raw Normal View History

2024-06-03 15:49:39 +08:00
/*
* File: __GP22LoRa_RTCC_APP_C
* Author:
*
* Created on<EFBFBD><EFBFBD>2017-7-24
*/
#ifdef __cplusplus
extern "C"
{
#endif
#include "type.h"
#include "UWater_rtcc_driver.h"
#include "UWater_power_app.h"
#include "UWater_eeprom_driver.h"
#include "UWater_valve_driver.h"
#include "UWater_timer1uS_driver.h"
#include "UWater_rtcc_app.h"
#include "UWater_frame_app.h"
#include "UWater_lcd_app.h"
#include "UWater_gp22_app.h"
#include "UWater_valve_app.h"
#include "UWater_DataTools_App.h"
//#include "sys_processor.h"
#include "UWater_pt_app.h"
//static RTCC_EE_DATA ee_data; //RTCC<43><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RTCC_HISTORY_DATA ee_history_data; //<2F><>ʷ<EFBFBD><CAB7><EFBFBD>ݵ<EFBFBD>Ԫ
u8 miji_collect_buf[384];//<2F>ܼ<EFBFBD><DCBC>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4>Ĵ<EFBFBD><C4B4><EFBFBD>
static u8 miji_collect_send_buf[192];//<2F>ܼ<EFBFBD><DCBC>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
RTCC_To_Float old_total_flow;//5min<69>ۻ<EFBFBD><DBBB><EFBFBD><EFBFBD><EFBFBD>ֵ
RTCC_To_Float new_total_flow;//5min<69>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD><EFBFBD>ֵ
RTCC_UNION_2U8TOU16 miji_date;
static u16 date_remember = 0;
RTCC_To_Float temp_to_gloat;//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ר<EFBFBD><D7A8>
RTCC_UNION_2U8TOU16 jiange_date;
//static u16 pulse_day_max_flow_time_temp;
//static u32 old_total_speed = 0;
//static u32 new_total_speed = 0;
//static u8 date_flag = 0;
static u8 s_g_rtcc_is_error = 0; //2015-6-3 Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static u8 s_g_rtcc_msg = 0; //2015-6-3
//static float s_daily_temprature[3];
//static u16 s_daily_temprature_min_max[2];
/*****************************/
u8 RtccIsError()
{
if((RTC_ClkSource()==1)||(s_g_rtcc_is_error == 1))
{
return 1;
}
return 0;
}
void RtccClearError(void)
{
s_g_rtcc_is_error = 0;
}
/*************************************************
Function<EFBFBD><EFBFBD>void RtccInitApp()
Description<EFBFBD><EFBFBD>RTCC INIT
Input<EFBFBD><EFBFBD>void
Output<EFBFBD><EFBFBD>void
Return<EFBFBD><EFBFBD>void
Others:
*************************************************/
/*************************************************
Function<EFBFBD><EFBFBD>u8 RtccCheckMsgApp(void)
Description<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD>ǰ<EFBFBD>Ƿ<EFBFBD><EFBFBD>ڻ<EFBFBD>Ծ״̬<EFBFBD><EFBFBD>ÿһСʱ<EFBFBD>ж<EFBFBD>һ<EFBFBD>εĽӿڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>
Input<EFBFBD><EFBFBD>
Output<EFBFBD><EFBFBD>bit0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߻<EFBFBD>Ծ״̬<EFBFBD><EFBFBD>ÿһСʱ<EFBFBD>ж<EFBFBD>һ<EFBFBD>εĽӿڣ<EFBFBD>
bit1<EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>Ծ״̬<EFBFBD><EFBFBD>ÿһСʱ<EFBFBD>ж<EFBFBD>һ<EFBFBD>εĽӿڣ<EFBFBD>
bit2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<EFBFBD>MSG<EFBFBD><EFBFBD>ѯ<EFBFBD>ӿ<EFBFBD> 1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD>
bit3<EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD>ݴ<EFBFBD>ʱ<EFBFBD>MSG
bit4: Уʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵݴ<EFBFBD><EFBFBD><EFBFBD>Ծ<EFBFBD><EFBFBD>msg
bit5: <EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>MSG
Return<EFBFBD><EFBFBD>void
Others:
*************************************************/
u8 RtccCheckMsgApp(Rtcc_MsgTypeDef msg_bit)
{
return (s_g_rtcc_msg & (1 << msg_bit));
}
/*************************************************
Function<EFBFBD><EFBFBD>u8 RtccClearMsgApp()
Description<EFBFBD><EFBFBD><EFBFBD><EFBFBD>MSG<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>Ƿ<EFBFBD><EFBFBD>ڻ<EFBFBD>Ծ״̬<EFBFBD><EFBFBD>ÿһСʱ<EFBFBD>ж<EFBFBD>һ<EFBFBD>εĽӿڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>
Input<EFBFBD><EFBFBD>clear_bit<EFBFBD><EFBFBD>
* 0<EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȱʡ
* 1<EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȱʡ
* 2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<EFBFBD>MSG
* 3<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD>ݴ<EFBFBD>ʱ<EFBFBD>MSG
* 4<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Уʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵݴ<EFBFBD><EFBFBD><EFBFBD>Ծ<EFBFBD><EFBFBD>msg
* 5<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>MSG
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>0,1,2,3,4,5
Output<EFBFBD><EFBFBD>
Return<EFBFBD><EFBFBD>void
Others:
*************************************************/
void RtccClearMsgApp(Rtcc_MsgTypeDef clear_bit)
{
s_g_rtcc_msg &= ~(1 << clear_bit);
}
void RtccSetMsgApp(Rtcc_MsgTypeDef set_bit)
{
s_g_rtcc_msg |= (1 << set_bit);
}
/****************************************************************
Function: void RtccAppCheckMiJi(DateTime alarm_time)
Description: <EFBFBD><EFBFBD>ѯ<EFBFBD>ܼ<EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD>ÿ5min<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>
Input:
Return:
Others:
*****************************************************************/
void RtccAppCheckMiJi(DateTime alarm_time) //ÿ5min<69><6E>һ<EFBFBD><D2BB>
{
To_u32_Rtcc miji_begin_date, miji_begin_time, miji_end_date;
u8 miji_now_time , miji_begin_time_hex; u32 temp_value = 0;
miji_begin_date.rtcc_u32 = FrameCheckParaApp(FramePara_ReportStartDMY); //<2F>ܼ<EFBFBD><DCBC>ϱ<EFBFBD><CFB1><EFBFBD>ʼʱ<CABC><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bcd
miji_begin_time.rtcc_u32 = FrameCheckParaApp(FramePara_ReportStartSMH); //<2F>ܼ<EFBFBD><DCBC>ϱ<EFBFBD><CFB1><EFBFBD>ʼʱ<CABC><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱbcd
miji_end_date.rtcc_u32 = FrameCheckParaApp(FramePara_ReportEndSMH); //<2F>ܼ<EFBFBD><DCBC>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bcd
temp_value = (alarm_time.s.year<<16) | (alarm_time.s.month<<8) | (alarm_time.s.day) ;
if((miji_begin_date.rtcc_u32 <= temp_value) && (miji_end_date.rtcc_u32 >= temp_value)) //<2F>ڿ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ںͽ<DABA><CDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD>
{
u16 tmpi =0;
if(miji_begin_time.rtcc_u8[0] <= alarm_time.s.hour) //ֻ<>жϵ<D0B6>Сʱ<D0A1><CAB1><EFBFBD>̶<EFBFBD><CCB6><EFBFBD>00<30>֡<EFBFBD>
{
if((miji_begin_time.rtcc_u8[0] == alarm_time.s.hour) && (0 == alarm_time.s.minute)) //<2F>տ<EFBFBD>ʼ<EFBFBD><EFBFBD><E6A3AC><EFBFBD><EFBFBD>buf
{
//<2F><><EFBFBD>洢buf
for (tmpi = 0;tmpi < 384;tmpi++)
{
miji_collect_buf[tmpi] = 0;
date_remember = 0;
}
old_total_flow.gp22_u32 = Gp30CheckDataApp(2); //<2F><><EFBFBD><EFBFBD><EFBFBD>ܼ<EFBFBD><DCBC>ɼ<EFBFBD><C9BC><EFBFBD>ʼֵ
}
else
{
miji_now_time = (alarm_time.s.hour >> 4)*10 + (alarm_time.s.hour & 0x0F);//ת<><D7AA>Ϊ16<31><36><EFBFBD>ƱȽ<C6B1>
miji_begin_time_hex = (miji_begin_time.rtcc_u8[0] >> 4)*10 + (miji_begin_time.rtcc_u8[0] & 0x0F);
if((miji_begin_time_hex + 4) >= miji_now_time) //<2F>ܼ<EFBFBD><DCBC>ϱ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
{
//<2F>ܼ<EFBFBD><DCBC>ϱ<EFBFBD><CFB1>
new_total_flow.gp22_u32 = Gp30CheckDataApp(2);
miji_date.datas = (u16)((new_total_flow.gp22_float - old_total_flow.gp22_float)*10);
miji_collect_buf[date_remember] = miji_date.datas_map.data0;
miji_collect_buf[date_remember+1] = miji_date.datas_map.data1;
miji_collect_buf[date_remember+2] = 0;
miji_collect_buf[date_remember+3] = 0;
old_total_flow.gp22_u32 = new_total_flow.gp22_u32;
date_remember = date_remember +4;
if(384 == date_remember )
{
date_remember = 384;
}
}
if(((miji_begin_time_hex + 4) == miji_now_time) && (0 == alarm_time.s.minute)) //<2F>ܼ<EFBFBD><DCBC>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
{
if(date_remember >192)
{
date_remember = date_remember -192;
}
else
{
date_remember =0;
}
for (tmpi = 0;tmpi < 192;tmpi++)
{
miji_collect_send_buf[tmpi] = miji_collect_buf[date_remember+tmpi];
}
for (tmpi = 0;tmpi < 384;tmpi++)
{
miji_collect_buf[tmpi] = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BUF
}
date_remember = 0;
}
}
}
RtccSetMsgApp(RtccMsg_MiJiCaiJi);//s_g_rtcc_msg |= BIT1; //<2F>ܼ<EFBFBD><DCBC>ɼ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD><D5A3><EFBFBD>4h<34>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>MSG
}
else
{
RtccClearMsgApp(RtccMsg_MiJiCaiJi);//s_g_rtcc_msg &= ~BIT1;
}
}
/*************************************************
Function<EFBFBD><EFBFBD>u32 RtccGetWorkHourApp()
Description<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>ʱ<EFBFBD><EFBFBD>
Input<EFBFBD><EFBFBD>void
Output<EFBFBD><EFBFBD>void
Return<EFBFBD><EFBFBD>void
Others:
*************************************************/
u32 RtccGetWorkHourApp(void)
{
return Sys_data_object.ee_data.data.work_hour;
}
/*************************************************
Function<EFBFBD>Gp30CheckJianGeDataApp(u8 *addr)
Description<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD>ܼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Input<EFBFBD><EFBFBD>void
Output<EFBFBD><EFBFBD>void
Return<EFBFBD><EFBFBD>void
Others:
*************************************************/
void Gp30CheckMiJiDataApp(u8 **addr)
{
*addr = miji_collect_send_buf;
}
/*************************************************
Function<EFBFBD>Gp30CheckJianGeDataApp(u8 *addr)
Description<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>µļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Input<EFBFBD><EFBFBD>void
Output<EFBFBD><EFBFBD>void
Return<EFBFBD><EFBFBD>void
Others:
*************************************************/
void Gp30CheckJianGeDataApp(u8 **addr)
{
*addr = 0;//jiange_collect_send_buf;
}
#ifdef __cplusplus
}
#endif