243 lines
6.6 KiB
C
243 lines
6.6 KiB
C
/*
|
||
* File: __GP22LoRa_RTCC_APP_C
|
||
* Author:
|
||
*
|
||
* Created on: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永久性数据
|
||
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;
|
||
}
|
||
/*************************************************
|
||
Function:void RtccInitApp()
|
||
Description:RTCC INIT
|
||
Input:void
|
||
Output:void
|
||
Return:void
|
||
Others:
|
||
*************************************************/
|
||
|
||
|
||
/*************************************************
|
||
Function:u8 RtccCheckMsgApp(void)
|
||
Description:查询当前是否在活跃状态(每一小时判断一次的接口)、递传
|
||
Input:
|
||
Output:bit0:无线活跃状态(每一小时判断一次的接口)
|
||
bit1:递传活跃状态(每一小时判断一次的接口)
|
||
bit2:连续定时时间到MSG查询接口 1:定时时间到,0:未到
|
||
bit3:自动递传时间到MSG
|
||
bit4: 校时后不在递传活跃期msg
|
||
bit5: 退出域信道MSG
|
||
|
||
Return:void
|
||
Others:
|
||
*************************************************/
|
||
u8 RtccCheckMsgApp(Rtcc_MsgTypeDef msg_bit)
|
||
{
|
||
return (s_g_rtcc_msg & (1 << msg_bit));
|
||
}
|
||
/*************************************************
|
||
Function:u8 RtccClearMsgApp()
|
||
Description:清MSG:当前是否在活跃状态(每一小时判断一次的接口)、递传
|
||
Input:clear_bit:
|
||
* 0:状态,不能清,缺省
|
||
* 1:状态,不能清,缺省
|
||
* 2:清连续定时时间到MSG
|
||
* 3:清自动递传时间到MSG
|
||
* 4:清校时后不在递传活跃期msg
|
||
* 5:清退出域信道MSG
|
||
* 输入 :0,1,2,3,4,5
|
||
Output:
|
||
Return: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: 查询密集上报,每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;
|
||
}
|
||
}
|
||
/*************************************************
|
||
Function:u32 RtccGetWorkHourApp()
|
||
Description:获取工作累计时间
|
||
Input:void
|
||
Output:void
|
||
Return:void
|
||
Others:
|
||
*************************************************/
|
||
u32 RtccGetWorkHourApp(void)
|
||
{
|
||
return Sys_data_object.ee_data.data.work_hour;
|
||
}
|
||
/*************************************************
|
||
Function<EFBFBD>p30CheckJianGeDataApp(u8 *addr)
|
||
Description:获取最新的密集流量
|
||
Input:void
|
||
Output:void
|
||
Return:void
|
||
Others:
|
||
*************************************************/
|
||
void Gp30CheckMiJiDataApp(u8 **addr)
|
||
{
|
||
*addr = miji_collect_send_buf;
|
||
}
|
||
/*************************************************
|
||
Function<EFBFBD>p30CheckJianGeDataApp(u8 *addr)
|
||
Description:获取最新的间隔流量
|
||
Input:void
|
||
Output:void
|
||
Return:void
|
||
Others:
|
||
*************************************************/
|
||
void Gp30CheckJianGeDataApp(u8 **addr)
|
||
{
|
||
*addr = 0;//jiange_collect_send_buf;
|
||
}
|
||
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
|