P2UWaterJiangXi/app/UWater_rtcc_app.c

243 lines
6.6 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* File: __GP22LoRa_RTCC_APP_C
* Author:
*
* Created on2017-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永久性数据
RTCC_HISTORY_DATA ee_history_data; //历史数据单元
u8 miji_collect_buf[384];//密集采集流量暂存寄存器
static u8 miji_collect_send_buf[192];//密集采集流量对外接口
RTCC_To_Float old_total_flow;//5min累积量初值
RTCC_To_Float new_total_flow;//5min累计量终值
RTCC_UNION_2U8TOU16 miji_date;
static u16 date_remember = 0;
RTCC_To_Float temp_to_gloat;//数据转换专用
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 默认正常
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;
}
/*************************************************
Functionvoid RtccInitApp()
DescriptionRTCC INIT
Inputvoid
Outputvoid
Returnvoid
Others:
*************************************************/
/*************************************************
Functionu8 RtccCheckMsgApp(void)
Description查询当前是否在活跃状态每一小时判断一次的接口、递传
Input
Outputbit0无线活跃状态每一小时判断一次的接口
bit1递传活跃状态每一小时判断一次的接口
bit2连续定时时间到MSG查询接口 1定时时间到0未到
bit3自动递传时间到MSG
bit4: 校时后不在递传活跃期msg
bit5: 退出域信道MSG
Returnvoid
Others:
*************************************************/
u8 RtccCheckMsgApp(Rtcc_MsgTypeDef msg_bit)
{
return (s_g_rtcc_msg & (1 << msg_bit));
}
/*************************************************
Functionu8 RtccClearMsgApp()
Description清MSG当前是否在活跃状态每一小时判断一次的接口、递传
Inputclear_bit
* 0状态不能清缺省
* 1状态不能清缺省
* 2清连续定时时间到MSG
* 3清自动递传时间到MSG
* 4清校时后不在递传活跃期msg
* 5清退出域信道MSG
* 输入 0,1,2,3,4,5
Output
Returnvoid
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: 查询密集上报每5min查一次
Input:
Return:
Others:
*****************************************************************/
void RtccAppCheckMiJi(DateTime alarm_time) //每5min查一次
{
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); //密集上报开始时间日月年bcd
miji_begin_time.rtcc_u32 = FrameCheckParaApp(FramePara_ReportStartSMH); //密集上报开始时间秒分时bcd
miji_end_date.rtcc_u32 = FrameCheckParaApp(FramePara_ReportEndSMH); //密集上报结束时间日月年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)) //在开始日期和结束日期之内(年月日)
{
u16 tmpi =0;
if(miji_begin_time.rtcc_u8[0] <= alarm_time.s.hour) //只判断到小时固定是00分。
{
if((miji_begin_time.rtcc_u8[0] == alarm_time.s.hour) && (0 == alarm_time.s.minute)) //刚开始存清除buf
{
//清存储buf
for (tmpi = 0;tmpi < 384;tmpi++)
{
miji_collect_buf[tmpi] = 0;
date_remember = 0;
}
old_total_flow.gp22_u32 = Gp30CheckDataApp(2); //更新密集采集初始值
}
else
{
miji_now_time = (alarm_time.s.hour >> 4)*10 + (alarm_time.s.hour & 0x0F);//转化为16进制比较
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) //密集上报时间内
{
//密集上报存储
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)) //密集上报结束时刻
{
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;//清接收数据BUF
}
date_remember = 0;
}
}
}
RtccSetMsgApp(RtccMsg_MiJiCaiJi);//s_g_rtcc_msg |= BIT1; //密集采集时间段内(开始年月日-结束年月日4h采集完成MSG
}
else
{
RtccClearMsgApp(RtccMsg_MiJiCaiJi);//s_g_rtcc_msg &= ~BIT1;
}
}
/*************************************************
Functionu32 RtccGetWorkHourApp()
Description获取工作累计时间
Inputvoid
Outputvoid
Returnvoid
Others:
*************************************************/
u32 RtccGetWorkHourApp(void)
{
return Sys_data_object.ee_data.data.work_hour;
}
/*************************************************
Function<EFBFBD>p30CheckJianGeDataApp(u8 *addr)
Description获取最新的密集流量
Inputvoid
Outputvoid
Returnvoid
Others:
*************************************************/
void Gp30CheckMiJiDataApp(u8 **addr)
{
*addr = miji_collect_send_buf;
}
/*************************************************
Function<EFBFBD>p30CheckJianGeDataApp(u8 *addr)
Description获取最新的间隔流量
Inputvoid
Outputvoid
Returnvoid
Others:
*************************************************/
void Gp30CheckJianGeDataApp(u8 **addr)
{
*addr = 0;//jiange_collect_send_buf;
}
#ifdef __cplusplus
}
#endif