河北水利局项目
This commit is contained in:
132
rp/rpprocess.c
Normal file
132
rp/rpprocess.c
Normal file
@@ -0,0 +1,132 @@
|
||||
#include "stdafx.h"
|
||||
#include "include.h"
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
#include "gprs.h"
|
||||
#include "general.h"
|
||||
//#include "frame3762task.h"
|
||||
//#include "jpmeter.h"
|
||||
//#include "dlresult.h"
|
||||
|
||||
/*
|
||||
Éϱ¨¹ý³Ì
|
||||
*/
|
||||
#define PAGE_NUM_MAX (10)
|
||||
extern u8* GetCurrentTime( void );
|
||||
extern void concent_rp_data(u8 * val,u16 * len,u16 datalen);
|
||||
extern u32 time_cur;
|
||||
extern u8 * get_uart_send();
|
||||
extern u16 * get_uart_send_plen();
|
||||
extern bool is_report_time();
|
||||
|
||||
extern bool gprs_connect_status();
|
||||
extern void gprs_send_flag();
|
||||
extern void jp_dl_up(u8 * data,u16 datalen);
|
||||
extern void jp_dl_ack_up(u8 * val,u16 len);
|
||||
extern void gprs_recv_judge_timeset();
|
||||
extern bool meter_find_id_fromaddr(u8 * addr,u16 * id);
|
||||
extern bool meter_getaddress_fromid(u16 id,u8 * addr);
|
||||
extern void cur_dl_grouphistroy(u8 curnum,u8 * cur_addrgroup,u8 *outnum,u8 * outaddrgroup);
|
||||
extern bool meter_get_addr(u16 index,u8 * addr);
|
||||
extern u16 meter_get_count();
|
||||
extern bool manager_get_data(u8 * addr,u8* data,u8* state,u8 * state2);
|
||||
extern bool hb_data_rp_pro(u16 index,u8 * val,u16 * len);
|
||||
|
||||
extern bool hb_data_rp_cur_pro(u8 * val,u16 * len,u8 * currentdata,u8 * sumdata,u8 * surplus,u8 * ala,u8 year,u8 month,u8 day,u8 hour);
|
||||
|
||||
extern void datarp_sucess_write(u16 index);
|
||||
void rp_start();
|
||||
|
||||
|
||||
SemaphoreHandle_t xSemaphore_rp;
|
||||
|
||||
static u16 rp_count = 0;
|
||||
static bool is_rp_current = false;
|
||||
|
||||
static u8 rp_cur_time_year = 0;
|
||||
static u8 rp_cur_time_month = 0;
|
||||
static u8 rp_cur_time_day = 0;
|
||||
static u8 rp_cur_time_hour = 0;
|
||||
static u8 rp_currentdata[CUR_DATA_LEN];
|
||||
static u8 rp_sumdata[SUM_DATA_LEN];
|
||||
static u8 rp_surplusadta[SURPLUS_DATA_LEN];
|
||||
static u8 rp_ala[ALA_DATA_LEN];
|
||||
|
||||
|
||||
void rp_setcount(u16 count)
|
||||
{
|
||||
rp_count = count;
|
||||
}
|
||||
|
||||
void rp_current(u16 count,
|
||||
u8 * current,
|
||||
u8 * sumdata,u8 * surplus,u8 * ala,
|
||||
u8 year,u8 month,u8 day,u8 hour)
|
||||
{
|
||||
is_rp_current = true;
|
||||
rp_count = count;
|
||||
|
||||
MemCpy(rp_currentdata,current,sizeof(rp_currentdata));
|
||||
MemCpy(rp_sumdata,sumdata,sizeof(rp_sumdata));
|
||||
MemCpy(rp_surplusadta,surplus,sizeof(rp_surplusadta));
|
||||
MemCpy(rp_ala,ala,sizeof(rp_ala));
|
||||
|
||||
rp_cur_time_year = year;
|
||||
rp_cur_time_month = month;
|
||||
rp_cur_time_day = day;
|
||||
rp_cur_time_hour = hour;
|
||||
|
||||
rp_start();
|
||||
}
|
||||
|
||||
void rpprocess1()
|
||||
{
|
||||
if(is_rp_current)
|
||||
{
|
||||
is_rp_current = false;
|
||||
hb_data_rp_cur_pro(get_uart_send(),get_uart_send_plen(),
|
||||
rp_currentdata,rp_sumdata,rp_surplusadta,rp_ala,
|
||||
rp_cur_time_year,rp_cur_time_month,rp_cur_time_day,rp_cur_time_hour);
|
||||
|
||||
gprs_send_flag();
|
||||
}
|
||||
else
|
||||
{
|
||||
if(hb_data_rp_pro(rp_count,get_uart_send(),get_uart_send_plen()))
|
||||
{
|
||||
gprs_send_flag();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void rpprocess_recv_ack()
|
||||
{
|
||||
datarp_sucess_write(rp_count);
|
||||
printf("\r\n[RP] count = %d sucess\r\n",rp_count);
|
||||
}
|
||||
|
||||
void rp_start()
|
||||
{
|
||||
xSemaphoreGive(xSemaphore_rp);
|
||||
}
|
||||
|
||||
void rp_task()
|
||||
{
|
||||
MemSet(rp_currentdata,0,sizeof(rp_currentdata));
|
||||
MemSet(rp_sumdata,0,sizeof(rp_sumdata));
|
||||
MemSet(rp_surplusadta,0,sizeof(rp_surplusadta));
|
||||
MemSet(rp_ala,0,sizeof(rp_ala));
|
||||
|
||||
vSemaphoreCreateBinary(xSemaphore_rp);
|
||||
xSemaphoreTake(xSemaphore_rp, 0);
|
||||
for (;;)
|
||||
{
|
||||
xSemaphoreTake(xSemaphore_rp, portMAX_DELAY);
|
||||
if(gprs_connect_status())
|
||||
{
|
||||
rpprocess1();
|
||||
}
|
||||
xSemaphoreTake(xSemaphore_rp, 0);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user