1276 lines
38 KiB
C
Executable File
1276 lines
38 KiB
C
Executable File
|
|
|
|
/********************************************************************
|
|
**dryloop通讯模块文件
|
|
|
|
********************************************************************/
|
|
#include "type.h"
|
|
#include "config.h"
|
|
#include "lcd_task.h"
|
|
#include "i2c_drv.h"
|
|
#include "delay.h"
|
|
#include "eeprom.h"
|
|
#include "dryloop.h"
|
|
#include "fpga.h"
|
|
|
|
|
|
#if USE_DRY_LOOP
|
|
#include "os_task.h"
|
|
|
|
extern S_ATSC_PARA atsc_para;
|
|
extern uint32 update_flag;
|
|
extern uint8 off_rf;
|
|
BOOL dryloop_version_flag = FALSE;
|
|
|
|
extern S_DRYLOOP dryloop_status;
|
|
|
|
#if USE_DRYLOOP_I2C==0 //串口模式
|
|
static void dryloop_uart_init_send_buf(uint8 cmd);
|
|
static uint8 dryloop_sendbuf[DRYLOOP_UART_BUF_MAX_LEN];
|
|
|
|
extern uint8 get_check_sum(void * p, uint32 len);
|
|
extern uint32 uart_com_init(uint32 com_num,uint32 baud,UART_PARITY verify,uint32 int_sw);
|
|
extern void uart_send_string(uint32 port,const uint8 *pbuf,uint32 len);
|
|
|
|
|
|
void dryloop_uart_send_cmd(DRYLOOP_CMD_TYPE cmd,void *pdata)
|
|
{
|
|
pS_DRYLOOP_UART_PROTOCOL puart_send = (pS_DRYLOOP_UART_PROTOCOL)dryloop_sendbuf;
|
|
uint32 len = 0;
|
|
|
|
dryloop_uart_init_send_buf((uint8)cmd);
|
|
switch(cmd)
|
|
{
|
|
case DRYLOOP_CMD_SET_TS: case DRYLOOP_CMD_SET_RF: case DRYLOOP_CMD_SET_SYS:case DRYLOOP_CMD_SET_FWD:
|
|
puart_send->data_len = 1;
|
|
puart_send->other[0] = *(uint8*)pdata;
|
|
break;
|
|
case DRYLOOP_CMD_GET_VER: case DRYLOOP_CMD_GET_RF: case DRYLOOP_CMD_GET_POWER: case DRYLOOP_CMD_GET_AMP:
|
|
puart_send->data_len = 0;
|
|
break;
|
|
default:
|
|
return;
|
|
}
|
|
GET_UART_LEN_BY_DATA_LEN(puart_send->data_len,len);
|
|
puart_send->other[puart_send->data_len] = get_check_sum((uint8*)puart_send,len-2);
|
|
puart_send->other[puart_send->data_len+1] = DRYLOOP_UART_COMM_HEAD;
|
|
if(len)
|
|
{
|
|
uart_send_string(DRYLOOP_UART_NUM,(uint8*)puart_send,len);
|
|
}
|
|
dryloop_printf("%s:Send cmd:%d\n",__FUNCTION__,cmd);
|
|
}
|
|
|
|
void dryloop_uart_get_version(void)
|
|
{
|
|
static uint32 tick_bak = 0;
|
|
|
|
if(check_delay_over(&tick_bak,DRYLOOO_CHECK_VERSION)==FALSE)
|
|
return;
|
|
dryloop_uart_send_cmd(DRYLOOP_CMD_GET_VER,NULL);
|
|
}
|
|
|
|
//由于串口的慢速性,每次只能发1条命令,本处只负责发
|
|
static uint32 dryloop_uart_get_status(void)
|
|
{
|
|
static uint32 tick_bak = 0;
|
|
static S_DRYLOOP_GET_STATUS dryloop_get_status ={FALSE,0,};
|
|
|
|
//判断条件: 1.100ms执行一次,2.当前tick内,没有执行send操作;
|
|
if(check_delay_over(&tick_bak,DRYLOOO_CHECK_CYCLE)==FALSE)
|
|
return 0;
|
|
|
|
if(dryloop_get_status.rf_need_get)
|
|
{
|
|
dryloop_get_status.rf_need_get = FALSE;
|
|
dryloop_get_status.rf_get_tick = get_sys_tick();
|
|
dryloop_uart_send_cmd(DRYLOOP_CMD_GET_RF,NULL);
|
|
return 1;
|
|
}
|
|
if(dryloop_get_status.power_need_get)
|
|
{
|
|
dryloop_get_status.power_need_get = FALSE;
|
|
dryloop_get_status.power_get_tick = get_sys_tick();
|
|
dryloop_uart_send_cmd(DRYLOOP_CMD_GET_POWER,NULL);
|
|
return 1;
|
|
}
|
|
if(dryloop_get_status.amp_need_get)
|
|
{
|
|
dryloop_get_status.amp_need_get = FALSE;
|
|
dryloop_get_status.amp_get_tick = get_sys_tick();
|
|
dryloop_uart_send_cmd(DRYLOOP_CMD_GET_AMP,NULL);
|
|
return 1;
|
|
}
|
|
|
|
//到此处,说明全部读取完, 检查延时,重新读取
|
|
if(dryloop_get_status.rf_get_tick+DRYLOOP_GET_CHECK_CYCLE*2<get_sys_tick())
|
|
dryloop_get_status.rf_need_get = TRUE;
|
|
if(dryloop_get_status.power_get_tick+DRYLOOP_GET_CHECK_CYCLE<get_sys_tick())
|
|
dryloop_get_status.power_need_get = TRUE;
|
|
if(dryloop_get_status.amp_get_tick+DRYLOOP_GET_CHECK_CYCLE*2<get_sys_tick())
|
|
dryloop_get_status.amp_need_get = TRUE;
|
|
return 0;
|
|
}
|
|
|
|
void dryloop_uart_send_status(void)
|
|
{
|
|
uint8 UC_temp21=0;
|
|
uint8 ts_ok = 0;
|
|
//uint8 asi_fpga;
|
|
uint8 off_ts = 0;
|
|
|
|
static uint32 tick_bak = 0;
|
|
static S_DRYLOOP_LED_STATUS dryloop_led_on = {FALSE,FALSE,0,FALSE,FALSE,0,FALSE,FALSE,0};
|
|
|
|
if(check_delay_over(&tick_bak,DRYLOOP_SEND_CYCLE)==FALSE)
|
|
return;
|
|
|
|
UC_temp21 = fpga_byte_read(0x1,0x26); //sys info
|
|
|
|
#if USE_NEW_DIO_MODE
|
|
if(atsc_para.ad3_para.mptv==1)
|
|
{
|
|
if(!atsc_para.mptv.alarm)
|
|
{ //TS IO口 用来表示功放告警状态 发生告警时,灯灭
|
|
if(dryloop_led_on.ts!=TRUE)
|
|
{
|
|
dryloop_led_on.ts=TRUE;
|
|
dryloop_led_on.ts_need_send =TRUE;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(dryloop_led_on.ts!=FALSE)
|
|
{
|
|
dryloop_led_on.ts=FALSE;
|
|
dryloop_led_on.ts_need_send =TRUE;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{ //固定灭
|
|
if(dryloop_led_on.ts!=FALSE)
|
|
{
|
|
dryloop_led_on.ts=FALSE;
|
|
|
|
dryloop_led_on.ts_need_send =TRUE;
|
|
}
|
|
}
|
|
#else
|
|
asi_fpga = fpga_byte_read(0x1,0x50); //asi
|
|
ts = fpga_byte_read(0x1,0x54); //ts
|
|
if(dryloop_led_on.ts!=FALSE)
|
|
{
|
|
dryloop_led_on.ts=FALSE;
|
|
|
|
dryloop_led_on.ts_need_send =TRUE;
|
|
}
|
|
#endif
|
|
|
|
|
|
#if USE_NEW_DIO_MODE
|
|
if(atsc_para.ad3_para.mptv==1)
|
|
{ //MPTV模式下,该口表示为发射机的TX
|
|
if(atsc_para.mptv.tx_open==0)
|
|
{
|
|
if(dryloop_led_on.rf!=FALSE)
|
|
{
|
|
dryloop_led_on.rf=FALSE;
|
|
dryloop_led_on.rf_need_send =TRUE;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(dryloop_led_on.rf!=TRUE)
|
|
{
|
|
dryloop_led_on.rf=TRUE;
|
|
dryloop_led_on.rf_need_send =TRUE;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
#endif
|
|
{
|
|
if(atsc_para.wh_para.func==0) //TX
|
|
{
|
|
if(atsc_para.rf_para.tx==0)
|
|
{
|
|
if(dryloop_led_on.rf!=FALSE)
|
|
{
|
|
dryloop_led_on.rf=FALSE;
|
|
dryloop_led_on.rf_need_send =TRUE;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(dryloop_led_on.rf!=TRUE)
|
|
{
|
|
dryloop_led_on.rf=TRUE;
|
|
dryloop_led_on.rf_need_send =TRUE;
|
|
}
|
|
}
|
|
|
|
//仅开机时有此操作
|
|
if(atsc_para.fpga_load_wait_flag==1)
|
|
{
|
|
//等待2秒
|
|
show_wait_info_with_sec(atsc_para.wj_para.rf_dly);
|
|
|
|
//在此处发送RF,因上电未发
|
|
//fpga_byte_write(0x0 ,0x01);
|
|
fpga_set_rf_output(atsc_para.rf_para.rf);
|
|
|
|
atsc_para.fpga_load_wait_flag = 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(UC_temp21&0x40) //RF
|
|
{
|
|
if(dryloop_led_on.rf!=TRUE)
|
|
{
|
|
dryloop_led_on.rf=TRUE;
|
|
dryloop_led_on.rf_need_send =TRUE;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(dryloop_led_on.rf!=FALSE)
|
|
{
|
|
dryloop_led_on.rf=FALSE;
|
|
dryloop_led_on.rf_need_send =TRUE;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//系统正常,或者ts输入正常时,亮灯,否则灭灯
|
|
//SYSERR OR ts err
|
|
ts_ok = atsc_para.log_para.input_ok_flag; //1:ok 0:err
|
|
if((UC_temp21&0x80)||(ts_ok==0))
|
|
{//bit7 1:err 0:ok
|
|
if(dryloop_led_on.sys_err!=FALSE)
|
|
{
|
|
dryloop_led_on.sys_err=FALSE;
|
|
dryloop_led_on.sys_need_send =TRUE;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(dryloop_led_on.sys_err!=TRUE)
|
|
{
|
|
dryloop_led_on.sys_err=TRUE;
|
|
dryloop_led_on.sys_need_send =TRUE;
|
|
}
|
|
}
|
|
|
|
if(UC_temp21&0x40) //RF
|
|
{
|
|
if(atsc_para.wh_para.func==1)
|
|
{
|
|
off_rf = 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(atsc_para.rf_para.rf)
|
|
{
|
|
off_rf = 0 ;//清错误
|
|
|
|
if((atsc_para.ad2_para.m_ts) && (off_ts))
|
|
{
|
|
setbit(off_rf,_MISS_TS);
|
|
}
|
|
|
|
if (!(atsc_para.ad2_para.m_ts ))
|
|
setbit(off_rf,_MISS_OTHER);
|
|
}
|
|
else
|
|
{
|
|
if(atsc_para.wh_para.func==1)
|
|
{
|
|
off_rf = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
if((off_rf==0) && (atsc_para.rf_para.rf==0))
|
|
setbit(off_rf,_KEY_RF);
|
|
|
|
//当前是否有未应答报文
|
|
//if(dryloop_uart_buf.un_resp_flag!=0)
|
|
// return;
|
|
|
|
//每次只发一个状态
|
|
if(dryloop_led_on.ts_need_send)
|
|
{
|
|
dryloop_led_on.ts_need_send = FALSE;
|
|
dryloop_led_on.ts_send_tick = get_sys_tick();
|
|
dryloop_uart_send_cmd(DRYLOOP_CMD_SET_TS,&dryloop_led_on.ts);
|
|
return;
|
|
}
|
|
if(dryloop_led_on.rf_need_send)
|
|
{
|
|
dryloop_led_on.rf_need_send = FALSE;
|
|
dryloop_led_on.rf_send_tick = get_sys_tick();
|
|
dryloop_uart_send_cmd(DRYLOOP_CMD_SET_RF,&dryloop_led_on.rf);
|
|
return;
|
|
}
|
|
if(dryloop_led_on.sys_need_send)
|
|
{
|
|
dryloop_led_on.sys_need_send = FALSE;
|
|
dryloop_led_on.sys_send_tick = get_sys_tick();
|
|
dryloop_uart_send_cmd(DRYLOOP_CMD_SET_SYS,&dryloop_led_on.sys_err);
|
|
return;
|
|
}
|
|
|
|
dryloop_uart_send_cmd(DRYLOOP_CMD_SET_FWD,&atsc_para.log_para.fwd); //周期发送fwd
|
|
|
|
//走到此处,说明3个状态均未发送 检查是否需要周期发送
|
|
if(dryloop_led_on.ts_send_tick+DRYLOOP_SEND_CHECK_CYCLE<get_sys_tick())
|
|
dryloop_led_on.ts_need_send = TRUE;
|
|
if(dryloop_led_on.rf_send_tick+DRYLOOP_SEND_CHECK_CYCLE<get_sys_tick())
|
|
dryloop_led_on.rf_need_send = TRUE;
|
|
if(dryloop_led_on.sys_send_tick+DRYLOOP_SEND_CHECK_CYCLE<get_sys_tick())
|
|
dryloop_led_on.sys_need_send = TRUE;
|
|
}
|
|
|
|
static uint8* dryloop_uart_protocol_valid(uint8 *pinbuf,uint32 len)
|
|
{
|
|
uint32 i = 0;
|
|
uint8 *prec_buf = NULL;
|
|
uint8 data_len = 0;
|
|
|
|
|
|
for(i=0,prec_buf = pinbuf;i<len;i++,prec_buf++)
|
|
{
|
|
if(*prec_buf==DRYLOOP_UART_COMM_HEAD) //find header
|
|
{
|
|
data_len = *(prec_buf+1);
|
|
if(DRYLOOP_UART_COMM_HEAD==*(prec_buf+data_len+4)) //find tail
|
|
{
|
|
if(get_check_sum(prec_buf,data_len+3)==*(prec_buf+data_len+3)) //check sum
|
|
{
|
|
return prec_buf;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return NULL;
|
|
}
|
|
static void dryloop_uart_init_send_buf(uint8 cmd)
|
|
{
|
|
pS_DRYLOOP_UART_PROTOCOL puart_send = (pS_DRYLOOP_UART_PROTOCOL)dryloop_sendbuf;
|
|
|
|
puart_send->header = DRYLOOP_UART_COMM_HEAD;
|
|
puart_send->data_len = 0;
|
|
puart_send->cmd = cmd&DRYLOOP_UART_PROTOCOL_ANS_CMD;
|
|
}
|
|
|
|
uint32 dryloop_proc_protocol(uint8* pbuf)
|
|
{
|
|
uint32 len = 0;
|
|
pS_DRYLOOP_UART_PROTOCOL puart_ptc = (pS_DRYLOOP_UART_PROTOCOL)pbuf;
|
|
uint8 cmd = 0;
|
|
uint8 rf_mute = 0,power = 0;
|
|
uint8 amp = 0;
|
|
|
|
if(pbuf==NULL)
|
|
return 0;
|
|
|
|
if(0==(puart_ptc->cmd &(DRYLOOP_UART_PROTOCOL_ANS_OK|DRYLOOP_UART_PROTOCOL_ANS_ERR))) //非应答命令
|
|
{
|
|
|
|
}
|
|
else //应答命令
|
|
{
|
|
//需判断错误与正常状态字
|
|
cmd = puart_ptc->cmd&DRYLOOP_UART_PROTOCOL_ANS_CMD;
|
|
switch(cmd)
|
|
{
|
|
case 0x01: //设置TS状态
|
|
dryloop_printf("%s:set TS ans ok!\n",__FUNCTION__);
|
|
break;
|
|
case 0x02: //设置RF状态
|
|
dryloop_printf("%s:set RF ans ok!\n",__FUNCTION__);
|
|
break;
|
|
case 0x03: //设置SYS状态
|
|
dryloop_printf("%s:set SYS LED ans ok!\n",__FUNCTION__);
|
|
break;
|
|
case 0x04: //查询版本号
|
|
if( ((puart_ptc->other[0]) == 0) || ((puart_ptc->other[2]) == 0) || ((puart_ptc->other[3]) == 0) )
|
|
{
|
|
dryloop_version_flag = FALSE;
|
|
dryloop_printf("%d\n",puart_ptc->other[0]);
|
|
}
|
|
else
|
|
{
|
|
atsc_para.rg_para.dryloop[0] = puart_ptc->other[0]; //版本号
|
|
if(atsc_para.rg_para.dryloop[0]==0x02)
|
|
atsc_para.rg_para.dryloop[0]=10;
|
|
atsc_para.rg_para.dryloop[1] = puart_ptc->other[1]; //年
|
|
atsc_para.rg_para.dryloop[2] = puart_ptc->other[2]; //月
|
|
atsc_para.rg_para.dryloop[3] = puart_ptc->other[3]; //日 返回的均为十进制模式
|
|
|
|
dryloop_printf("%d\n",puart_ptc->other[0]);
|
|
dryloop_printf("%d\n",puart_ptc->other[1]);
|
|
dryloop_printf("%d\n",puart_ptc->other[2]);
|
|
dryloop_printf("%d\n",puart_ptc->other[3]);
|
|
dryloop_version_flag = TRUE;
|
|
init_version_info(); //暂时直接调用
|
|
}
|
|
break;
|
|
case 0x10: //查询RF开关状态
|
|
rf_mute = puart_ptc->other[0];
|
|
dryloop_printf("TEST rf_mute %d\n", rf_mute );
|
|
if(rf_mute>=2) //0 1
|
|
{
|
|
dryloop_status.rf=INVALID_DATA;
|
|
break;
|
|
}
|
|
|
|
dryloop_status.rf=rf_mute;
|
|
|
|
#if USE_NEW_DIO_MODE
|
|
if(atsc_para.ad3_para.rc_cmd==0) //IO
|
|
{
|
|
if(atsc_para.ad3_para.mptv)
|
|
{//MPTV -> tx on/off 功放射频开关
|
|
if(atsc_para.mptv.tx_crm_is_dio){
|
|
atsc_para.mptv.dio_tx = rf_mute;
|
|
//dryloop_amp_on(rf_mute); //由send_status发送
|
|
}
|
|
}
|
|
else
|
|
{//LPTV ->本地激励器视频开关
|
|
if(rf_mute==1) //OFF->ON
|
|
{
|
|
if(rf_mute!=atsc_para.rf_para.rf)
|
|
{
|
|
dryloop_printf("%s:GET TX:%d!\n",__FUNCTION__,rf_mute);
|
|
dryloop_amp_on(TRUE);
|
|
//show_wait_info_with_sec(atsc_para.wj_para.rf_dly);
|
|
atsc_para.rf_para.rf = 1;
|
|
off_rf = 0;
|
|
fpga_set_rf_output(atsc_para.rf_para.rf);
|
|
}
|
|
else
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
else if(rf_mute==0) //ON->OFF
|
|
{
|
|
if(rf_mute!=atsc_para.rf_para.rf)
|
|
{
|
|
atsc_para.rf_para.rf = 0;
|
|
setbit(off_rf,_PIN_DRYLOOP);
|
|
fpga_set_rf_output(0);
|
|
//show_wait_info_with_sec(atsc_para.wj_para.rf_dly);
|
|
dryloop_amp_on(FALSE);
|
|
dryloop_printf("%s:GET TX:%d!\n",__FUNCTION__,rf_mute);
|
|
}
|
|
else
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
c256_bytewrite(EEPROM_RF_ADDR,atsc_para.rf_para.rf);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
dryloop_status.rf=INVALID_DATA;
|
|
}
|
|
#else
|
|
if(atsc_para.wh_para.func==0) //TX模式
|
|
{
|
|
if(atsc_para.ad3_para.rc_cmd==0) //IO
|
|
{
|
|
if((atsc_para.rf_para.tx==0)&&(rf_mute==1)) //OFF->ON
|
|
{
|
|
dryloop_printf("%s:GET TX:%d!\n",__FUNCTION__,rf_mute);
|
|
dryloop_amp_on(TRUE);
|
|
show_wait_info_with_sec(atsc_para.wj_para.rf_dly);
|
|
if(atsc_para.wj_para.rf_dly>2)
|
|
{
|
|
delay_ms(2000);
|
|
}
|
|
else
|
|
{
|
|
delay_ms(1000*atsc_para.wj_para.rf_dly);
|
|
}
|
|
atsc_para.rf_para.rf = 1;
|
|
off_rf = 0;
|
|
fpga_set_rf_output(atsc_para.rf_para.rf);
|
|
}
|
|
else if((atsc_para.rf_para.tx==1)&&(rf_mute==0)) //ON->OFF
|
|
{
|
|
atsc_para.rf_para.rf = 0;
|
|
setbit(off_rf,_PIN_DRYLOOP);
|
|
fpga_set_rf_output(0);
|
|
show_wait_info_with_sec(atsc_para.wj_para.rf_dly);
|
|
if(atsc_para.wj_para.rf_dly>2)
|
|
{
|
|
delay_ms(2000);
|
|
}
|
|
else
|
|
{
|
|
delay_ms(1000*atsc_para.wj_para.rf_dly);
|
|
}
|
|
dryloop_amp_on(FALSE);
|
|
dryloop_printf("%s:GET TX:%d!\n",__FUNCTION__,rf_mute);
|
|
}
|
|
atsc_para.rf_para.tx = rf_mute;
|
|
c256_bytewrite(EEPROM_RF_ADDR,atsc_para.rf_para.rf);
|
|
c256_bytewrite(EEPROM_RF_TX,atsc_para.rf_para.tx);
|
|
}
|
|
}
|
|
else //EX模式 相比于TX 没有rf_dly
|
|
{
|
|
if(atsc_para.ad3_para.rc_cmd==0) //IO
|
|
{
|
|
if((atsc_para.rf_para.tx==0)&&(rf_mute==1)) //OFF->ON
|
|
{
|
|
dryloop_printf("%s:GET TX:%d!\n",__FUNCTION__,rf_mute);
|
|
dryloop_amp_on(TRUE);
|
|
atsc_para.rf_para.rf = 1;
|
|
off_rf = 0;
|
|
fpga_set_rf_output(atsc_para.rf_para.rf);
|
|
}
|
|
else if((atsc_para.rf_para.tx==1)&&(rf_mute==0)) //ON->OFF
|
|
{
|
|
atsc_para.rf_para.rf = 0;
|
|
setbit(off_rf,_PIN_DRYLOOP);
|
|
fpga_set_rf_output(0);
|
|
dryloop_amp_on(FALSE);
|
|
dryloop_printf("%s:GET TX:%d!\n",__FUNCTION__,rf_mute);
|
|
}
|
|
atsc_para.rf_para.tx = rf_mute;
|
|
c256_bytewrite(EEPROM_RF_ADDR,atsc_para.rf_para.rf);
|
|
c256_bytewrite(EEPROM_RF_TX,atsc_para.rf_para.tx);
|
|
}
|
|
}
|
|
#endif
|
|
break;
|
|
case 0x11: //查询功率按键状态
|
|
power = puart_ptc->other[0];
|
|
dryloop_printf("TEST power %d\n", power );
|
|
if(atsc_para.ad3_para.rc_cmd) //不是IO模式,不能修改功率
|
|
break;
|
|
#if USE_NEW_DIO_MODE //新的DIO逻辑,若功放处于REMOTE状态,且TX_CRM为IO模式,会返回1,否则返回0
|
|
if((atsc_para.mptv.tx_crm_is_dio!=1)&&(atsc_para.ad3_para.mptv)) //必须是在MPTV模式下,LPTV不考虑DIO模式
|
|
{
|
|
break;
|
|
}
|
|
#endif
|
|
if(power == 0) //dryloop代码处理功率按键时存在错误,此处power==1应为power_down power==0应为power_up
|
|
{
|
|
dryloop_printf("%s:GET POWER UP!\n",__FUNCTION__);
|
|
dryloop_status.power = 1;
|
|
if(atsc_para.wj_para.p_c)
|
|
{
|
|
if((atsc_para.rf_para.power<RF_POWER_P_C_ON)&&(atsc_para.rf_para.db<RF_POWER_DB_MAX))
|
|
{
|
|
atsc_para.rf_para.power++;
|
|
atsc_para.rf_para.db++;
|
|
e2rom_save_power(&atsc_para.rf_para);
|
|
fpga_save_power(&atsc_para.we_para,&atsc_para.rf_para);
|
|
if(atsc_para.rf_para.agc) //由OFF->ON时发送 判断有效标志
|
|
{
|
|
fpga_save_agc_vol();
|
|
}
|
|
#if USE_NEW_DIO_MODE
|
|
atsc_para.mptv.power_diff++;
|
|
#endif
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if((atsc_para.rf_para.power<RF_POWER_MAX)&&(atsc_para.rf_para.db<RF_POWER_DB_MAX))
|
|
{
|
|
atsc_para.rf_para.power++;
|
|
atsc_para.rf_para.db++;
|
|
e2rom_save_power(&atsc_para.rf_para);
|
|
fpga_save_power(&atsc_para.we_para,&atsc_para.rf_para);
|
|
if(atsc_para.rf_para.agc) //由OFF->ON时发送 判断有效标志
|
|
{
|
|
fpga_save_agc_vol();
|
|
}
|
|
#if USE_NEW_DIO_MODE
|
|
atsc_para.mptv.power_diff++;
|
|
#endif
|
|
}
|
|
}
|
|
}
|
|
else if(power == 1)
|
|
{
|
|
dryloop_printf("%s:GET POWER DOWN!\n",__FUNCTION__);
|
|
dryloop_status.power = 0;
|
|
if((atsc_para.rf_para.power>0)&&(atsc_para.rf_para.db>0))
|
|
{
|
|
atsc_para.rf_para.power--;
|
|
atsc_para.rf_para.db--;
|
|
e2rom_save_power(&atsc_para.rf_para);
|
|
fpga_save_power(&atsc_para.we_para,&atsc_para.rf_para);
|
|
if(atsc_para.rf_para.agc) //由OFF->ON时发送 判断有效标志
|
|
{
|
|
fpga_save_agc_vol();
|
|
}
|
|
#if USE_NEW_DIO_MODE
|
|
atsc_para.mptv.power_diff--;
|
|
#endif
|
|
}
|
|
}
|
|
else
|
|
{
|
|
dryloop_status.power = INVALID_DATA;
|
|
}
|
|
break;
|
|
case 0x12: //查询AMP按键状态'
|
|
//ATSC5000 COR 恒为1
|
|
amp = puart_ptc->other[0];
|
|
dryloop_printf("TEST amp %d\n", amp );
|
|
|
|
if(amp<2)
|
|
{
|
|
dryloop_status.amp=amp;
|
|
if(atsc_para.wh_para.func==0) //TX模式
|
|
{
|
|
dryloop_printf("%s:GET AMP %d!\n",__FUNCTION__,amp);
|
|
atsc_para.log_para.amp=amp;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
atsc_para.log_para.amp=1;
|
|
dryloop_status.amp=INVALID_DATA;
|
|
}
|
|
break;
|
|
default: //未知命令
|
|
break;
|
|
}
|
|
}
|
|
return len;
|
|
}
|
|
//检查对应串口中是否有待处理报文
|
|
void dryloop_uart_buf_check(uint8* pbuf,uint32 len)
|
|
{
|
|
uint8 *pputbuf;
|
|
|
|
pputbuf = dryloop_uart_protocol_valid(pbuf,len);
|
|
if(pputbuf!=NULL) //假设每次只收到一个有效报文
|
|
{
|
|
dryloop_proc_protocol(pputbuf);
|
|
}
|
|
}
|
|
|
|
void dryloop_amp_on(BOOL flag)
|
|
{
|
|
int i;
|
|
BOOL rf = flag;
|
|
|
|
for(i=0; i<8; i++) //间隔发三次,确保成功亮灯
|
|
{
|
|
dryloop_uart_send_cmd(DRYLOOP_CMD_SET_RF,&rf);
|
|
delay_ms(35);
|
|
}
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
/*****************************************************************************
|
|
函 数 名 : dryloop_check
|
|
功能描述 : 周期性的读取dryloop的按键状态
|
|
输入参数 : void
|
|
输出参数 : 无
|
|
返 回 值 :
|
|
调用函数 :
|
|
被调函数 :
|
|
|
|
修改历史 :
|
|
1.日 期 : 2012年9月19日
|
|
作 者 : 郭金涛
|
|
修改内容 : 新生成函数
|
|
|
|
*****************************************************************************/
|
|
void dryloop_check(void)
|
|
{
|
|
#if USA_ATSC_5X
|
|
uint8 power_down = 0,power_up=0;
|
|
uint8 amp = 0;
|
|
uint8 cor_bak;
|
|
#endif
|
|
uint8 rf_mute;
|
|
//判断条件: 1.100ms执行一次,2.当前tick内,没有执行send操作;
|
|
|
|
#if AW_ATSC_5X
|
|
rf_mute = dryloop_read(0); //读取RF
|
|
//show_cycle_tick(tick_bak);
|
|
//0:off 1:on 2:异常 3:未连接
|
|
dryloop_status.rf=rf_mute;
|
|
if(rf_mute<2)
|
|
{
|
|
if(atsc_para.ad3_para.rc_cmd==0) //IO
|
|
{
|
|
if((rf_mute==1)&&(rf_mute!=atsc_para.rf_para.rf)) //OFF->ON
|
|
{
|
|
dryloop_write(DRYLOOP_I2C_RF_LED,1);
|
|
//show_wait_info_with_sec(atsc_para.wj_para.rf_dly);
|
|
atsc_para.rf_para.rf = 1;
|
|
fpga_set_rf_output(atsc_para.rf_para.rf);
|
|
off_rf = 0 ;
|
|
}
|
|
else if((rf_mute==0) && (rf_mute!=atsc_para.rf_para.rf)) //ON->OFF
|
|
{
|
|
atsc_para.rf_para.rf = 0;
|
|
fpga_set_rf_output(0);
|
|
//show_wait_info_with_sec(atsc_para.wj_para.rf_dly);
|
|
dryloop_write(DRYLOOP_I2C_RF_LED,0);
|
|
atsc_para.latch_para.rf = 1;
|
|
setbit(off_rf,_PIN_DRYLOOP);
|
|
}
|
|
c256_bytewrite(EEPROM_RF_ADDR,atsc_para.rf_para.rf);
|
|
}
|
|
}
|
|
#else
|
|
rf_mute = dryloop_read(0); //读取RF
|
|
power_up = dryloop_read(1); //读取power_down
|
|
power_down = dryloop_read(2); //读取power_up
|
|
amp = dryloop_read(7); //DPDsel OR amp
|
|
if(rf_mute<=2)
|
|
{
|
|
dryloop_status.rf=rf_mute;
|
|
if(rf_mute<2)
|
|
{
|
|
if(atsc_para.wh_para.func==0) //TX模式
|
|
{
|
|
if(atsc_para.ad3_para.rc_cmd==0) //IO 能通过dryloop改TX和RF
|
|
{
|
|
if((atsc_para.rf_para.tx==0)&&(rf_mute==1)) //OFF->ON
|
|
{
|
|
dryloop_write(DRYLOOP_I2C_RF_LED,1);
|
|
show_wait_info_with_sec(atsc_para.wj_para.rf_dly);
|
|
atsc_para.rf_para.rf = 1;
|
|
//fpga_byte_write(0x0 ,0x01);
|
|
fpga_set_rf_output(atsc_para.rf_para.rf);
|
|
off_rf = 0 ;
|
|
}
|
|
else if((atsc_para.rf_para.tx==1)&&(rf_mute==0)) //ON->OFF
|
|
{
|
|
atsc_para.rf_para.rf = 0;
|
|
//fpga_byte_write(0x0 ,0x01);
|
|
fpga_set_rf_output(0);
|
|
show_wait_info_with_sec(atsc_para.wj_para.rf_dly);
|
|
dryloop_write(DRYLOOP_I2C_RF_LED,0);
|
|
atsc_para.latch_para.rf = 1;
|
|
setbit(off_rf,_PIN_DRYLOOP);
|
|
}
|
|
|
|
atsc_para.rf_para.tx = rf_mute;
|
|
|
|
c256_bytewrite(EEPROM_RF_ADDR,atsc_para.rf_para.rf);
|
|
c256_bytewrite(EEPROM_RF_TX,atsc_para.rf_para.tx);
|
|
}
|
|
}
|
|
else //EX模式
|
|
{
|
|
atsc_para.rf_para.rf = rf_mute;
|
|
//printf("case it :%d\n",atsc_para.rf_para.rf);
|
|
fpga_set_rf_output(atsc_para.rf_para.rf);
|
|
c256_bytewrite(EEPROM_RF_ADDR,atsc_para.rf_para.rf);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
dryloop_status.rf=INVALID_DATA;
|
|
}
|
|
|
|
if(amp<2)
|
|
{
|
|
dryloop_status.amp=amp;
|
|
|
|
cor_bak = atsc_para.ad3_para.cor;
|
|
|
|
if(atsc_para.wh_para.func==0) //TX模式
|
|
{
|
|
atsc_para.log_para.amp=amp;
|
|
}
|
|
else //EX模式 DPD
|
|
{
|
|
atsc_para.ad3_para.cor=amp; //保存新cor函数
|
|
|
|
if(cor_bak != amp)
|
|
{
|
|
save_new_cor(amp);
|
|
}
|
|
|
|
c256_bytewrite(EEPROM_AD3_TYPE,amp);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
atsc_para.log_para.amp=1;
|
|
dryloop_status.amp=INVALID_DATA;
|
|
}
|
|
|
|
if((power_up==0)&&((power_down!=0)&&(power_down!=4)))
|
|
{
|
|
if(atsc_para.ad3_para.rc_cmd != 0)
|
|
return;
|
|
if(atsc_para.wj_para.p_c)
|
|
{
|
|
if((atsc_para.rf_para.power<RF_POWER_P_C_ON)&&(atsc_para.rf_para.db<RF_POWER_DB_MAX))
|
|
{
|
|
atsc_para.rf_para.power++;
|
|
atsc_para.rf_para.db++;
|
|
e2rom_save_power(&atsc_para.rf_para);
|
|
fpga_save_power(&atsc_para.we_para,&atsc_para.rf_para);
|
|
if(atsc_para.rf_para.agc) //由OFF->ON时发送 判断有效标志
|
|
{
|
|
fpga_save_agc_vol();
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if((atsc_para.rf_para.power<RF_POWER_MAX)&&(atsc_para.rf_para.db<RF_POWER_DB_MAX))
|
|
{
|
|
atsc_para.rf_para.power++;
|
|
atsc_para.rf_para.db++;
|
|
e2rom_save_power(&atsc_para.rf_para);
|
|
fpga_save_power(&atsc_para.we_para,&atsc_para.rf_para);
|
|
if(atsc_para.rf_para.agc) //由OFF->ON时发送 判断有效标志
|
|
{
|
|
fpga_save_agc_vol();
|
|
}
|
|
}
|
|
}
|
|
#if SHOW_DEBUG_INFO
|
|
key_time++;
|
|
#endif
|
|
return;
|
|
}
|
|
if(((power_up!=0)&&(power_up!=4))&&(power_down==0))
|
|
{
|
|
if(atsc_para.ad3_para.rc_cmd != 0)
|
|
return;
|
|
if((atsc_para.rf_para.power>0)&&(atsc_para.rf_para.db>0))
|
|
{
|
|
atsc_para.rf_para.power--;
|
|
atsc_para.rf_para.db--;
|
|
e2rom_save_power(&atsc_para.rf_para);
|
|
fpga_save_power(&atsc_para.we_para,&atsc_para.rf_para);
|
|
if(atsc_para.rf_para.agc) //由OFF->ON时发送 判断有效标志
|
|
{
|
|
fpga_save_agc_vol();
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
if((power_up==4)||(power_down==0)||(power_up==0)||(power_down==4))
|
|
dryloop_status.power = 2;
|
|
else
|
|
dryloop_status.power = INVALID_DATA;
|
|
#endif
|
|
}
|
|
|
|
/*****************************************************************************
|
|
函 数 名 : dryloop_send
|
|
功能描述 : 向dryloop发送当前系统状态(TS SYS,RF)
|
|
输入参数 : void
|
|
输出参数 : 无
|
|
返 回 值 :
|
|
调用函数 :
|
|
被调函数 :
|
|
|
|
修改历史 :
|
|
1.日 期 : 2012年9月19日
|
|
作 者 : 郭金涛
|
|
修改内容 : 新生成函数
|
|
*****************************************************************************/
|
|
void dryloop_send(void)
|
|
{
|
|
uint8 UC_temp21=0;
|
|
uint8 ts = 0;
|
|
|
|
S_ASI_INPUT asi_input;
|
|
uint8 tmp;
|
|
uint8 off_ts=0;
|
|
uint8 off_1pps=0;
|
|
uint8 off_10ms=0;
|
|
|
|
dryloop_write(DRYLOOP_I2C_FWD_ADDR,atsc_para.log_para.fwd);
|
|
#if AW_ATSC_5X
|
|
UC_temp21 = fpga_byte_read(0x1,0x26); //sys info
|
|
ts = fpga_byte_read(0x1,0x54); //ts
|
|
|
|
asi_input.input = (ASI_GRP_STATE)atsc_para.log_para.asi_input;
|
|
asi_input.status = (ASI_INPUT_STATE)(atsc_para.log_para.input_ok_flag?0:1);
|
|
if((asi_input.status!=ASI_ERR)&&((ts&1)==0)) //ASI ts
|
|
{
|
|
//Dryloop_Write(0x10,1);
|
|
off_ts = 0;
|
|
}
|
|
else
|
|
{
|
|
//Dryloop_Write(0x10,0);
|
|
off_ts = 1;
|
|
atsc_para.latch_para.ts = 1;
|
|
}
|
|
|
|
if(UC_temp21&0x40) //RF
|
|
{
|
|
dryloop_write(DRYLOOP_I2C_RF_LED,1);
|
|
}
|
|
else
|
|
{
|
|
dryloop_write(DRYLOOP_I2C_RF_LED,0);
|
|
}
|
|
|
|
|
|
tmp = fpga_byte_read(0x1,0x56);
|
|
|
|
if(tmp&0x08) //bit3
|
|
off_1pps = 1;
|
|
else
|
|
off_1pps = 0;
|
|
|
|
if(tmp&0x04) //bit2
|
|
atsc_para.log_para.use_gps = 1; //INT模式
|
|
else
|
|
atsc_para.log_para.use_gps = 0; //EXT模式
|
|
|
|
if(atsc_para.log_para.use_gps) //int模式
|
|
{
|
|
tmp = fpga_byte_read(0x1,0x8a);
|
|
atsc_para.log_para.gps_status = tmp&0x0f;
|
|
if(tmp&0x10)
|
|
{
|
|
off_10ms = 0;//locked;
|
|
}
|
|
else
|
|
{
|
|
off_10ms = 1;
|
|
}
|
|
}
|
|
else //ext
|
|
{
|
|
tmp = fpga_byte_read(0x1,0x56);
|
|
if(tmp&0x01)
|
|
{
|
|
off_10ms = 0; //locked;
|
|
}
|
|
else
|
|
{
|
|
off_10ms = 1;
|
|
}
|
|
}
|
|
|
|
//////////////////////////////
|
|
if(UC_temp21&0x40) //RF
|
|
{
|
|
if(atsc_para.wh_para.func==1)
|
|
{
|
|
off_rf = 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(atsc_para.rf_para.rf)
|
|
{
|
|
off_rf = 0 ;//清错误
|
|
|
|
if((atsc_para.ad2_para.m_ts) && (off_ts))
|
|
{
|
|
setbit(off_rf,_MISS_TS);
|
|
}
|
|
|
|
if((atsc_para.ad2_para.m_10m) && (off_10ms))
|
|
{
|
|
if(off_rf)
|
|
{
|
|
setbits(off_rf,_MISS_10M) ;
|
|
}
|
|
else
|
|
{
|
|
setbit(off_rf,_MISS_10M) ;
|
|
}
|
|
}
|
|
|
|
if((atsc_para.ad2_para.m_1pps) && (off_1pps))
|
|
{
|
|
if(off_rf)
|
|
{
|
|
setbits(off_rf,_MISS_1PPS) ;
|
|
}
|
|
else
|
|
{
|
|
setbit(off_rf,_MISS_1PPS);
|
|
}
|
|
}
|
|
|
|
if (!(atsc_para.ad2_para.m_ts || atsc_para.ad2_para.m_10m || atsc_para.ad2_para.m_1pps))
|
|
setbit(off_rf,_MISS_OTHER);
|
|
}
|
|
|
|
atsc_para.latch_para.rf = 1;
|
|
}
|
|
|
|
if((off_rf==0) && (atsc_para.rf_para.rf==0))
|
|
setbit(off_rf,_KEY_RF);
|
|
//////////////////////////////
|
|
|
|
if(UC_temp21&0x80)
|
|
{
|
|
//Dryloop_Write(0x12,0); //SYS ERR
|
|
atsc_para.latch_para.sys = 1;
|
|
}
|
|
else
|
|
{
|
|
//Dryloop_Write(0x12,1); //正常
|
|
}
|
|
#else
|
|
UC_temp21 = fpga_byte_read(0x1,0x26); //sys info
|
|
ts = fpga_byte_read(0x1,0x54); //ts
|
|
|
|
asi_input.input = atsc_para.log_para.asi_input;
|
|
asi_input.status = atsc_para.log_para.input_ok_flag?0:1;
|
|
if((asi_input.status!=ASI_ERR)&&((ts&1)==0)) //ASI ts
|
|
{
|
|
dryloop_write(DRYLOOP_I2C_TS_LED,1);
|
|
off_ts = 0;
|
|
}
|
|
else
|
|
{
|
|
dryloop_write(DRYLOOP_I2C_TS_LED,0);
|
|
off_ts = 1;
|
|
atsc_para.latch_para.ts = 1;
|
|
}
|
|
|
|
if(atsc_para.wh_para.func==0) //TX
|
|
{
|
|
if(atsc_para.rf_para.tx==0)
|
|
{
|
|
dryloop_write(DRYLOOP_I2C_RF_LED,0); //AMP GND
|
|
atsc_para.latch_para.rf = 1;
|
|
}
|
|
else
|
|
{
|
|
dryloop_write(DRYLOOP_I2C_RF_LED,1); //AMP ENABLE
|
|
}
|
|
|
|
//仅开机时有此操作
|
|
if(atsc_para.fpga_load_wait_flag==1)
|
|
{
|
|
//等待2秒
|
|
show_wait_info_with_sec(atsc_para.wj_para.rf_dly);
|
|
|
|
//在此处发送RF,因上电未发
|
|
//fpga_byte_write(0x0 ,0x01);
|
|
fpga_set_rf_output(atsc_para.rf_para.rf);
|
|
|
|
atsc_para.fpga_load_wait_flag = 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(UC_temp21&0x40) //RF
|
|
{
|
|
dryloop_write(DRYLOOP_I2C_RF_LED,1);
|
|
}
|
|
else
|
|
{
|
|
dryloop_write(DRYLOOP_I2C_RF_LED,0);
|
|
}
|
|
}
|
|
|
|
//fpga_byte_write(0x0 ,0x1 ); //段地址
|
|
tmp = fpga_byte_read(0x1,0x56);
|
|
|
|
if(tmp&0x08) //bit3
|
|
off_1pps = 1;
|
|
else
|
|
off_1pps = 0;
|
|
|
|
if(tmp&0x04) //bit2
|
|
atsc_para.log_para.use_gps = 1; //INT模式
|
|
else
|
|
atsc_para.log_para.use_gps = 0; //EXT模式
|
|
|
|
if(atsc_para.log_para.use_gps) //int模式
|
|
{
|
|
tmp = fpga_byte_read(0x1,0x8a);
|
|
atsc_para.log_para.gps_status = tmp&0x0f;
|
|
if(tmp&0x10)
|
|
{
|
|
off_10ms = 0;//locked;
|
|
}
|
|
else
|
|
{
|
|
off_10ms = 1;
|
|
}
|
|
}
|
|
else //ext
|
|
{
|
|
tmp = fpga_byte_read(0x1,0x56);
|
|
if(tmp&0x01)
|
|
{
|
|
off_10ms = 0; //locked;
|
|
}
|
|
else
|
|
{
|
|
off_10ms = 1;
|
|
}
|
|
}
|
|
|
|
//////////////////////////////
|
|
|
|
if(UC_temp21&0x40) //RF
|
|
{
|
|
if(atsc_para.wh_para.func==1)
|
|
{
|
|
off_rf = 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(atsc_para.rf_para.rf)
|
|
{
|
|
off_rf = 0 ;//清错误
|
|
|
|
if((atsc_para.ad2_para.m_ts) && (off_ts))
|
|
{
|
|
setbit(off_rf,_MISS_TS);
|
|
}
|
|
if((atsc_para.ad2_para.m_10m) && (off_10ms))
|
|
{
|
|
if(off_rf)
|
|
{
|
|
setbits(off_rf,_MISS_10M) ;
|
|
}
|
|
else
|
|
{
|
|
setbit(off_rf,_MISS_10M) ;
|
|
}
|
|
}
|
|
if((atsc_para.ad2_para.m_1pps) && (off_1pps))
|
|
{
|
|
if(off_rf)
|
|
{
|
|
setbits(off_rf,_MISS_1PPS) ;
|
|
}
|
|
else
|
|
{
|
|
setbit(off_rf,_MISS_1PPS);
|
|
}
|
|
}
|
|
if (!(atsc_para.ad2_para.m_ts || atsc_para.ad2_para.m_10m || atsc_para.ad2_para.m_1pps))
|
|
setbit(off_rf,_MISS_OTHER);
|
|
}
|
|
else
|
|
{
|
|
if(atsc_para.wh_para.func==1)
|
|
{
|
|
off_rf = 0;
|
|
}
|
|
}
|
|
atsc_para.latch_para.rf = 1;
|
|
}
|
|
|
|
if((off_rf==0) && (atsc_para.rf_para.rf==0))
|
|
setbit(off_rf,_KEY_RF);
|
|
//////////////////////////////
|
|
|
|
if(UC_temp21&0x80)
|
|
{
|
|
dryloop_write(DRYLOOP_I2C_SYSERR_LED,0); //SYS ERR
|
|
atsc_para.latch_para.sys = 1;
|
|
}
|
|
else
|
|
{
|
|
dryloop_write(DRYLOOP_I2C_SYSERR_LED,1); //正常
|
|
}
|
|
#endif
|
|
}
|
|
|
|
|
|
|
|
|
|
void dryloop_reset(void)
|
|
{
|
|
#if USE_DRYLOOP_I2C
|
|
//GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_6, 0<<6);
|
|
delay_ticks(10);
|
|
//GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_6, 1<<6);
|
|
#endif
|
|
}
|
|
|
|
|
|
void dryloop_init(void)
|
|
{
|
|
#if USE_DRYLOOP_I2C==0
|
|
uart_com_init(DRYLOOP_UART_NUM,DRYLOOP_UART_BPS,PARITY_NO,INT_ON);
|
|
#endif
|
|
}
|
|
|
|
/*****************************************************************************
|
|
函 数 名 : dryloop_process
|
|
功能描述 : dryloop处理函数,需根据通讯模式(i2c或者uart)分别做处理
|
|
输入参数 : void
|
|
输出参数 : 无
|
|
返 回 值 :
|
|
调用函数 :
|
|
被调函数 :
|
|
|
|
修改历史 :
|
|
1.日 期 : 2012年9月19日
|
|
作 者 : 郭金涛
|
|
修改内容 : 新生成函数
|
|
|
|
*****************************************************************************/
|
|
void dryloop_process(void)
|
|
{
|
|
uint32 send_flag = 0;
|
|
|
|
if(update_flag)
|
|
return;
|
|
|
|
#if USE_DRYLOOP_I2C //dryloop为I2C通讯模式
|
|
if(atsc_para.system_para.ctrl==CTRL_REMOTE)
|
|
dryloop_check();
|
|
else
|
|
{
|
|
dryloop_status.rf = INVALID_DATA;
|
|
dryloop_status.power = INVALID_DATA;
|
|
}
|
|
|
|
dryloop_send();
|
|
#else //dryloop为串口通讯模式
|
|
if(atsc_para.system_para.ctrl==CTRL_REMOTE)
|
|
{
|
|
send_flag = dryloop_uart_get_status();
|
|
}
|
|
else
|
|
{
|
|
dryloop_status.rf = INVALID_DATA;
|
|
dryloop_status.power = INVALID_DATA;
|
|
}
|
|
|
|
if(dryloop_version_flag == FALSE)
|
|
{
|
|
dryloop_uart_get_version();
|
|
}
|
|
|
|
if(send_flag==0)
|
|
{
|
|
dryloop_uart_send_status();
|
|
}
|
|
#endif
|
|
}
|
|
#endif
|
|
/******************************************END**********************************/
|