1628 lines
45 KiB
C
Executable File
1628 lines
45 KiB
C
Executable File
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <pthread.h>
|
|
#include <unistd.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
#include <fcntl.h>
|
|
#include <termios.h>
|
|
#include <errno.h>
|
|
#include <getopt.h>
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
#include <arpa/inet.h>
|
|
#include <sched.h>
|
|
#include <time.h>
|
|
|
|
|
|
#include "../inc/type.h"
|
|
#include "../inc/delay.h"
|
|
#include "../inc/lcd_task.h"
|
|
#include "../inc/isys_config.h"
|
|
#include "../inc/isys_com.h"
|
|
#include "../inc/i2c_drv.h"
|
|
#include "../inc/dpd_proc.h"
|
|
#include "../inc/iuart_user.h"
|
|
#include "../inc/eeprom.h"
|
|
#include "../inc/gps.h"
|
|
#include "../inc/main.h"
|
|
#include "../inc/msg.h"
|
|
#include "../inc/iweb_task.h"
|
|
#include "../inc/general_api.h"
|
|
#include "../inc/dac38j82.h"
|
|
#include "../inc/os_task.h"
|
|
#include "../inc/tcp_autocal.h"
|
|
#include "../inc/tsoip.h"
|
|
#include "../inc/fpga.h"
|
|
#include "../inc/http_get.h"
|
|
#include "../inc/adrv9009_ext.h"
|
|
|
|
extern uint32 adpc_source_udp;
|
|
extern uint32 adpc_source_web;
|
|
extern int g_trigger_up_tsnr_flg;
|
|
extern int g_remote_changed_byweb ;
|
|
#if USE_DRY_LOOP
|
|
extern S_DRYLOOP dryloop_status ;
|
|
#endif
|
|
extern uint8 off_rf;
|
|
|
|
static BOOL net_auto_adpc = FALSE;
|
|
BOOL udp_adj_auto_adpc = FALSE;
|
|
|
|
void set_force_stop_adpc(BOOL flag);
|
|
S_RF_PARA freqPara={0};
|
|
|
|
|
|
extern S_ATSC_PARA atsc_para;
|
|
extern S_CGI_STATUS cgi_status;
|
|
extern S_CGI_SET cgi_set;
|
|
extern S_CGI_RF cgi_rf;
|
|
extern S_CGI_NET cgi_net;
|
|
extern S_CGI_MODE cgi_mode;
|
|
extern S_CGI_GPS cgi_gps;
|
|
#if ERR_TO_LCM
|
|
extern S_CGI_LATCH cgi_latch;
|
|
#endif
|
|
|
|
#if ATSC_USA_AMP
|
|
extern S_CGI_AMP cgi_amp;
|
|
#endif
|
|
|
|
#if USE_TS2IP
|
|
extern TS_NET_STRUCT ts_net_para;
|
|
|
|
extern TS_NET_STRUCT cgi_ts;
|
|
#endif
|
|
|
|
|
|
extern uint32 auto_update;
|
|
extern void UARTprintf(const char *pcString, ...);
|
|
extern void read_log_para(void);
|
|
extern void enter_update_lcd(void);
|
|
void detect_id(void);
|
|
extern uint8 agc_value[];
|
|
extern uint8 layidx_temp;
|
|
|
|
extern uint16 get_tcp_seg_errnum(void);
|
|
extern uint16 get_tcp_seg_occupy(void);
|
|
extern S_EXTEND_SYS_STATE st_extend_state;
|
|
extern void web_save_gain_limit(uint16 gl);
|
|
extern void load_freq_para(S_RF_PARA * lrf_para);
|
|
extern void save_freq_para(void *psave);
|
|
|
|
#if 1
|
|
void http_load_ts(TS_NET_STRUCT *ppara)
|
|
{
|
|
#if USE_TS2IP
|
|
memcpy(ppara,&ts_net_para,sizeof(TS_NET_STRUCT));
|
|
#endif
|
|
}
|
|
|
|
#if USE_PSTS
|
|
static void http_load_psip(S_PSTS_PARA *ppara)
|
|
{
|
|
memcpy(ppara,&atsc_para.psts_para,sizeof(S_PSTS_PARA));
|
|
}
|
|
#endif
|
|
|
|
void http_load_status(S_CGI_STATUS *ppara)
|
|
{
|
|
int tmp_imd;
|
|
PS_LOG_PARA appara=&atsc_para.log_para;
|
|
|
|
ppara->input = appara->asi_input;
|
|
ppara->status= appara->input_ok_flag?0:1;
|
|
|
|
ppara->agc = atsc_para.rf_para.agc;
|
|
ppara->agc_state = atsc_para.log_para.agc_state;
|
|
ppara->agc_adj = atsc_para.log_para.agc_adj;
|
|
|
|
if(atsc_para.log_para.temperature[0]==0)
|
|
{
|
|
ppara->temp = (atsc_para.log_para.temperature[1]<<8)|atsc_para.log_para.temperature[2];
|
|
ppara->temp &= 0x03ff;
|
|
if(ppara->temp & 0x200) //-
|
|
{
|
|
ppara->temp = 1024-ppara->temp;
|
|
ppara->temp |= 0x10000;
|
|
}
|
|
else //+
|
|
{
|
|
ppara->temp &=0x1ff;
|
|
}
|
|
}
|
|
else
|
|
ppara->temp =(uint32)-1;
|
|
|
|
ppara->ts_rate = atsc_para.log_para.ts_rate;
|
|
ppara->ts_under = atsc_para.log_para.ts_under;
|
|
ppara->mode = atsc_para.log_para.mode;
|
|
|
|
//ppara->tsnr = atsc_para.log_para.tsnr;
|
|
if(atsc_para.wd_para.sa >= 0)
|
|
ppara->tsnr = atsc_para.log_para.tsnr+atsc_para.wd_para.sa;
|
|
else
|
|
ppara->tsnr = atsc_para.log_para.tsnr-(u8)(atsc_para.wd_para.sa*-1);
|
|
|
|
//ppara->l_imd = atsc_para.log_para.l_imd;
|
|
if(atsc_para.wd_para.sb >= 0)
|
|
ppara->l_imd = atsc_para.log_para.l_imd+atsc_para.wd_para.sb;
|
|
else{
|
|
tmp_imd = atsc_para.log_para.l_imd - (int)(-1*atsc_para.wd_para.sb);
|
|
if(tmp_imd<0)
|
|
ppara->l_imd = 0;
|
|
else{
|
|
int8 tmpdata = -1*atsc_para.wd_para.sb;
|
|
ppara->l_imd = atsc_para.log_para.l_imd-(u8)(tmpdata);
|
|
}
|
|
}
|
|
|
|
//ppara->u_imd = atsc_para.log_para.u_imd;
|
|
if(atsc_para.wd_para.sc >= 0)
|
|
ppara->u_imd = atsc_para.log_para.u_imd+atsc_para.wd_para.sc;
|
|
else{
|
|
tmp_imd = atsc_para.log_para.u_imd - (int)(-1*atsc_para.wd_para.sc);
|
|
if(tmp_imd<0)
|
|
ppara->u_imd = 0;
|
|
else{
|
|
ppara->u_imd = atsc_para.log_para.u_imd-(u8)(-1*atsc_para.wd_para.sc);
|
|
}
|
|
}
|
|
ppara->syserr = atsc_para.log_para.syserr;
|
|
ppara->rssi = atsc_para.log_para.rssi;
|
|
ppara->rsnr = atsc_para.log_para.rsnr;
|
|
ppara->hz_10m = atsc_para.log_para.gps;
|
|
ppara->fwd = atsc_para.log_para.fwd;
|
|
|
|
ppara->ntp_en = atsc_para.system_para.sntp_en;
|
|
memcpy(ppara->ntp_sip, atsc_para.system_para.sntp_sip, 4);
|
|
memcpy(ppara->ntp_date, atsc_para.system_para.sntp_date, SNTP_DATE_STRING_LEN);
|
|
memcpy(ppara->ntp_time, atsc_para.system_para.sntp_time, SNTP_TIME_STRING_LEN);
|
|
|
|
#if USE_DRY_LOOP
|
|
ppara->amp = atsc_para.log_para.amp; //
|
|
#endif
|
|
|
|
ppara->txfreq =atsc_para.rf_para.txfreq;
|
|
if(atsc_para.rf_para.hz&0xf0000) //全局变量保存的是低2字节0-10000 高3字节表示正负
|
|
{//-
|
|
ppara->hz_ = 1;
|
|
}
|
|
else
|
|
{//+
|
|
ppara->hz_ = 0;
|
|
}
|
|
ppara->hz = atsc_para.rf_para.hz&0xffff;
|
|
|
|
//ppara->tcp_seg = get_tcp_seg_errnum();
|
|
//ppara->tcp_occupy = get_tcp_seg_occupy();
|
|
|
|
ppara->a_fssi = st_extend_state.a_fssi;
|
|
ppara->b_fssi = st_extend_state.b_fssi;
|
|
|
|
ppara->temp_unit = atsc_para.wh_para.temp_unit;
|
|
}
|
|
|
|
void http_load_gps(S_CGI_GPS *ppara)
|
|
{
|
|
ppara->gps_use = atsc_para.log_para.use_gps;
|
|
ppara->gps_lock = atsc_para.log_para.gps;
|
|
ppara->freq[0] = atsc_para.log_para.gps_freq[0];
|
|
ppara->freq[1] = atsc_para.log_para.gps_freq[1];
|
|
ppara->status = atsc_para.log_para.gps_status;
|
|
ppara->gps_1pps = atsc_para.log_para.gps_1pps;
|
|
}
|
|
|
|
void http_load_sys(S_CGI_SET *ppara)
|
|
{
|
|
memset(ppara,0,sizeof(ppara));
|
|
|
|
ppara->ctrl = atsc_para.system_para.ctrl;
|
|
ppara->input = atsc_para.system_para.input;
|
|
|
|
if(net_auto_adpc)
|
|
{
|
|
if(atsc_para.system_para.adpc>=ADPC_UPDATE1)
|
|
#if USE_UPDATA5
|
|
ppara->adpc = ADPC_UPDATE5;//5;
|
|
#else
|
|
ppara->adpc = 5;
|
|
#endif
|
|
else
|
|
{
|
|
ppara->adpc = atsc_para.system_para.adpc;
|
|
net_auto_adpc = FALSE;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
ppara->adpc = atsc_para.system_para.adpc;
|
|
}
|
|
ppara->adpc_err = atsc_para.system_para.adpc_err;
|
|
ppara->mode = atsc_para.system_para.mode;
|
|
|
|
ppara->net = atsc_para.system_para.net;
|
|
ppara->gps = atsc_para.system_para.gps;
|
|
|
|
memcpy(ppara->web_title,atsc_para.system_para.web_title,ATSC_TITLE_LEN);
|
|
|
|
ppara->sntp_en = atsc_para.system_para.sntp_en;
|
|
memcpy(ppara->sntp_sip, atsc_para.system_para.sntp_sip, 4);
|
|
|
|
memcpy(ppara->netcfg.ip, atsc_para.config_para.ip, 4);
|
|
memcpy(ppara->netcfg.mask, atsc_para.config_para.mask, 4);
|
|
memcpy(ppara->netcfg.gateway, atsc_para.config_para.gateway, 4);
|
|
memcpy(ppara->netcfg.dns, atsc_para.config_para.dns, 4);
|
|
ppara->fwd_cal = atsc_para.ad3_para.fwd_cal;
|
|
|
|
ppara->sn = atsc_para.sn_para.sn;
|
|
ppara->pdt = atsc_para.wf_para.pdt;
|
|
ppara->pa_link_ctrl_rf = atsc_para.config_para.pa_link_ctrl_rf;
|
|
ppara->dpd_tst = atsc_para.dpd_para.dpd_test;
|
|
ppara->sys_reset= 0;
|
|
ppara->roll_off_sel = atsc_para.wl_para.roll_off_sel;
|
|
ppara->ab_mode = atsc_para.system_para.ab_mode;
|
|
ppara->gl = atsc_para.dpd_para.gl;
|
|
|
|
ppara->agc_att = atsc_para.system_para.agc_att;
|
|
ppara->adrv9009_att = atsc_para.system_para.adrv9009_att;
|
|
ppara->orx_manu_gain = atsc_para.system_para.orx_manu_gain;
|
|
}
|
|
|
|
#if ERR_TO_LCM
|
|
void http_load_latch(S_CGI_LATCH *ppara)
|
|
{
|
|
ppara->reset = atsc_para.latch_para.reset;
|
|
ppara->u1 = atsc_para.latch_para.u1;
|
|
ppara->u2 = atsc_para.latch_para.u2;
|
|
ppara->rf = atsc_para.latch_para.rf;
|
|
ppara->gps = atsc_para.latch_para.gps;
|
|
ppara->ts = atsc_para.latch_para.ts;
|
|
ppara->sys = atsc_para.latch_para.sys;
|
|
ppara->m_1pps= atsc_para.latch_para.m_1pps;
|
|
ppara->sfn = atsc_para.latch_para.sfn;
|
|
}
|
|
#endif
|
|
|
|
void usr_set_exc_pwr(int16 exc_pwr)
|
|
{
|
|
S_CGI_RF tmp_rf_para = {0};
|
|
//int32 exc_pwr;
|
|
uint32 tmp_pwr;
|
|
|
|
// how to set pwr ...
|
|
http_load_rf(&tmp_rf_para);
|
|
if(exc_pwr>0){
|
|
tmp_rf_para.power[0] = 0;
|
|
tmp_pwr = exc_pwr;
|
|
}
|
|
else{
|
|
tmp_rf_para.power[0] = 1;
|
|
tmp_pwr = -exc_pwr;
|
|
}
|
|
tmp_rf_para.power[1] = (uint8)(tmp_pwr/100);
|
|
tmp_rf_para.power[2] = (uint8)((tmp_pwr%100)/5);
|
|
http_write_rf(&tmp_rf_para);
|
|
}
|
|
|
|
void http_load_rf(S_CGI_RF *ppara)
|
|
{
|
|
unsigned long temp = 0;
|
|
|
|
ppara->rxfreq = atsc_para.rf_para.rxfreq;
|
|
|
|
temp = atsc_para.rf_para.power;
|
|
temp = temp>=RF_POWER_ZERO?(temp-RF_POWER_ZERO):(RF_POWER_ZERO-temp);
|
|
|
|
ppara->power[0] = (atsc_para.rf_para.power>RF_POWER_ZERO)?0:1;
|
|
|
|
ppara->power[1] = temp/20;
|
|
ppara->power[2] = temp%20;
|
|
|
|
ppara->cw = atsc_para.rf_para.cw;
|
|
ppara->rf = atsc_para.rf_para.rf;
|
|
ppara->agc= atsc_para.rf_para.agc;
|
|
|
|
ppara->rc_cmd = atsc_para.ad3_para.rc_cmd?1:0;
|
|
#if USE_DRY_LOOP
|
|
ppara->tx = atsc_para.rf_para.tx;
|
|
#endif
|
|
|
|
//ppara->txfreq = atsc_para.rf_para.txfreq;
|
|
if((atsc_para.rf_para.txfreq>=FREQ_MIN_V1)&&(atsc_para.rf_para.txfreq<=FREQ_6M_MAX_U))
|
|
{
|
|
ppara->txfreq = (atsc_para.rf_para.txfreq);
|
|
}
|
|
//printf("web_i_txfreq=%d\n",ppara->txfreq);
|
|
}
|
|
|
|
void http_load_freq(S_CGI_FREQ_PARA *ppara)
|
|
{
|
|
uint32 channel = atsc_para.rf_para.txfreq;
|
|
|
|
log_printf(LOG_DEBUG,I_NOUSED,"rf_txfreq=%d\n",atsc_para.rf_para.txfreq);
|
|
if((channel>=FREQ_MIN_V1)&&(channel<=FREQ_6M_MAX_U))
|
|
{
|
|
ppara->freq = (channel-FREQ_MIN_V1);
|
|
}
|
|
}
|
|
|
|
|
|
void http_load_net(S_CGI_NET *ppara)
|
|
{
|
|
ppara->delay = atsc_para.network_para.delay;
|
|
ppara->txid = atsc_para.network_para.txid;
|
|
ppara->netid = atsc_para.network_para.netid;
|
|
ppara->bratio= atsc_para.network_para.bratio;
|
|
}
|
|
void http_load_mh(S_CGI_MODE *ppara)
|
|
{
|
|
ppara->sync = atsc_para.mode_para.sync;
|
|
ppara->tcp_c = atsc_para.mode_para.tcp_c;
|
|
ppara->zp1f = atsc_para.mode_para.zp1f;
|
|
ppara->pid_det = atsc_para.mode_para.pid_det&0x1fff;
|
|
}
|
|
#if ATSC_USA_AMP
|
|
void http_load_pac(S_CGI_AMP *ppara)
|
|
{
|
|
if(atsc_para.pac_flag == 0)
|
|
{
|
|
memset(ppara,0,sizeof(S_CGI_AMP));
|
|
return;
|
|
}
|
|
|
|
ppara->vol_9v = atsc_para.avr_pa_para.vol_9v*10;
|
|
ppara->vol_12v = atsc_para.avr_pa_para.vol_12v*10;
|
|
ppara->vol_50v = atsc_para.avr_pa_para.vol_50v*10;
|
|
ppara->cur1_50v = atsc_para.avr_pa_para.cur_50v*10;
|
|
ppara->cur2_50v = atsc_para.avr_pa_para.cur_50V_2*10;
|
|
ppara->cur3_50v = atsc_para.avr_pa_para.cur_50v_3*10;
|
|
ppara->cur4_50v = atsc_para.avr_pa_para.cur_50v_4*10;
|
|
ppara->pa_in = atsc_para.avr_pa_para.pa_in;
|
|
ppara->pa_fwd = atsc_para.avr_pa_para.pa_fwd*10;
|
|
ppara->pa_reflect= atsc_para.avr_pa_para.pa_reflect*10;
|
|
ppara->gv_881 = atsc_para.avr_pa_para.gv_881*10;
|
|
ppara->vswr = atsc_para.avr_pa_para.swr*10;
|
|
|
|
if(get_temp_unit()==1){
|
|
ppara->temp_pa =atsc_para.avr_pa_para.temp_pa*10;
|
|
}
|
|
else{
|
|
ppara->temp_pa=(atsc_para.avr_pa_para.temp_pa*9/5+32)*10;
|
|
}
|
|
|
|
ppara->signal_fwd=atsc_para.avr_pa_para.signal_fwd;
|
|
ppara->signal_reflect=atsc_para.avr_pa_para.signal_reflect;
|
|
ppara->signal_temp=atsc_para.avr_pa_para.signal_temp;
|
|
|
|
if(atsc_para.pac_flag || atsc_para.wh_para.pac)
|
|
ppara->pac_lev=atsc_para.avr_pa_para.pac_lev;
|
|
else
|
|
ppara->pac_lev = 0;
|
|
}
|
|
#endif
|
|
|
|
void http_load_tuner_info(S_CGI_TUNER *ppara)
|
|
{
|
|
ppara->rxfreq =txfreq_to_hz(atsc_para.log_para.rxfreq);
|
|
|
|
if(atsc_para.log_para.tuner_init_status==1)
|
|
{
|
|
ppara->rsnr = atsc_para.log_para.tuner_snr;
|
|
ppara->rssi = atsc_para.log_para.tuner_strength;
|
|
ppara->lock_status = atsc_para.log_para.tuner_lock_status;
|
|
}
|
|
else
|
|
{
|
|
ppara->rsnr = atsc_para.log_para.tuner_snr;
|
|
ppara->rssi = atsc_para.log_para.tuner_strength;
|
|
ppara->lock_status = atsc_para.log_para.tuner_lock_status;
|
|
}
|
|
}
|
|
#endif
|
|
#if 1
|
|
void Net_write_RFREQ(uint8 param)
|
|
{
|
|
#if USE_TUNER
|
|
uint8 bak_tuner_freq =atsc_para.rf_para.rxfreq;
|
|
#endif
|
|
|
|
atsc_para.rf_para.rxfreq = param + FREQ_MIN_V1;
|
|
|
|
#if USE_TUNER
|
|
if(bak_tuner_freq!=atsc_para.rf_para.rxfreq)
|
|
{
|
|
tuner_init(atsc_para.rf_para.rxfreq);
|
|
}
|
|
#endif
|
|
c256_bytewrite(EEPROM_RXCHANNEL_ADDR,atsc_para.rf_para.rxfreq);
|
|
#if BAK_PARA_CHECK
|
|
c256_bytewrite2(BAK_EEPROM_RXCHANNEL_ADDR,atsc_para.rf_para.rxfreq);
|
|
#endif
|
|
|
|
}
|
|
void Net_write_TFREQ(uint8 param)
|
|
{
|
|
param+=7;
|
|
|
|
#if USE_FREQ_V1
|
|
param-=5;
|
|
#endif
|
|
if(atsc_para.wl_para.band==1)
|
|
{
|
|
if( (param<=FREQ_MAX_V) && (param>=FREQ_MIN_V))
|
|
atsc_para.rf_para.txfreq = param;
|
|
else
|
|
return;
|
|
}
|
|
else if(atsc_para.wl_para.band==2)
|
|
{
|
|
if( (param<=FREQ_MAX_V1) && (param>=FREQ_MIN_V1))
|
|
atsc_para.rf_para.txfreq = param;
|
|
else
|
|
return;
|
|
}
|
|
else if(atsc_para.wl_para.band==0)
|
|
{
|
|
if((param>=FREQ_MIN_U ) && (param<=FREQ_MAX_U ))
|
|
atsc_para.rf_para.txfreq = param;
|
|
else
|
|
return;
|
|
}
|
|
fpga_save_chn(&atsc_para.rf_para);
|
|
c256_bytewrite(EEPROM_CHANNEL_ADDR,atsc_para.rf_para.txfreq);
|
|
#if BAK_PARA_CHECK
|
|
c256_bytewrite2(BAK_EEPROM_CHANNEL_ADDR,atsc_para.rf_para.txfreq);
|
|
#endif
|
|
}
|
|
void Net_write_HZ(uint32 param1,uint32 param2) //lhz1 lhz0
|
|
{
|
|
if(param1==0) //+
|
|
{
|
|
atsc_para.rf_para.hz = param2;
|
|
}
|
|
else //-
|
|
{
|
|
atsc_para.rf_para.hz = param2;
|
|
atsc_para.rf_para.hz |=0x10000; //负值第3字节写1 否则写0
|
|
}
|
|
|
|
c256_bytewrite(EEPROM_HZ_UIH_ADDR,atsc_para.rf_para.hz>>16); //+ -
|
|
c256_bytewrite(EEPROM_HZ_UIM_ADDR,atsc_para.rf_para.hz>>8); //Hz display high 8 bit
|
|
c256_bytewrite(EEPROM_HZ_UIL_ADDR,atsc_para.rf_para.hz); //Hz display low 8 bit
|
|
|
|
fpga_byte_write(0x01,0x4c,atsc_para.rf_para.hz>>16); //+ -
|
|
fpga_byte_write(0x01,0x4d,atsc_para.rf_para.hz>>8);
|
|
fpga_byte_write(0x01,0x4e,atsc_para.rf_para.hz);
|
|
}
|
|
|
|
//
|
|
void Net_write_Power(uint8 sign, uint8 f_int,uint8 f_dec)
|
|
{
|
|
uint32 temp = 0;
|
|
|
|
if(sign) //-
|
|
{
|
|
//0 ~ RF_POWER_ZERO -25 ~0
|
|
if(f_int == RF_POWER_ZERO/20) //单位 /20
|
|
temp = 0;
|
|
else
|
|
temp = (RF_POWER_ZERO/20-1 -f_int ) * 20 +(20-f_dec);
|
|
}
|
|
else //+
|
|
{
|
|
if(atsc_para.wj_para.p_c)
|
|
{
|
|
if(f_int>=(RF_POWER_P_C_ON-RF_POWER_ZERO)/20)
|
|
temp = RF_POWER_P_C_ON;
|
|
else
|
|
temp = f_int * 20 +f_dec + RF_POWER_ZERO;
|
|
}
|
|
else
|
|
{
|
|
if(f_int>=(RF_POWER_MAX-RF_POWER_ZERO)/20)
|
|
temp = RF_POWER_MAX;
|
|
else
|
|
temp = f_int * 20 +f_dec + RF_POWER_ZERO;
|
|
}
|
|
}
|
|
|
|
temp = fpga_limit_power_target(&atsc_para.we_para, &atsc_para.rf_para,
|
|
(uint16)temp);
|
|
|
|
if(atsc_para.wj_para.p_c)
|
|
{
|
|
if(temp>RF_POWER_P_C_ON)
|
|
{
|
|
temp=RF_POWER_P_C_ON;
|
|
}
|
|
|
|
if(temp<=RF_POWER_P_C_ON)
|
|
{
|
|
if(temp>=atsc_para.rf_para.power)
|
|
{ //增加
|
|
if(atsc_para.rf_para.db+ (temp-atsc_para.rf_para.power)<RF_POWER_DB_MAX)
|
|
atsc_para.rf_para.db =atsc_para.rf_para.db+ (temp-atsc_para.rf_para.power);
|
|
else
|
|
{
|
|
if(atsc_para.rf_para.db < RF_POWER_DB_MAX )
|
|
{
|
|
temp = RF_POWER_DB_MAX-atsc_para.rf_para.db+atsc_para.rf_para.power;
|
|
}
|
|
else
|
|
{
|
|
temp = atsc_para.rf_para.power;
|
|
}
|
|
atsc_para.rf_para.db = RF_POWER_DB_MAX;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(atsc_para.rf_para.db>(atsc_para.rf_para.power-temp))
|
|
atsc_para.rf_para.db = atsc_para.rf_para.db-(atsc_para.rf_para.power-temp);
|
|
else
|
|
{
|
|
atsc_para.rf_para.db = 0;
|
|
temp = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(temp>RF_POWER_MAX)
|
|
{
|
|
temp=RF_POWER_MAX;
|
|
}
|
|
|
|
if(temp<=RF_POWER_MAX)
|
|
{
|
|
if(temp>=atsc_para.rf_para.power)
|
|
{ //增加
|
|
if(atsc_para.rf_para.db+ (temp-atsc_para.rf_para.power)<RF_POWER_DB_MAX)
|
|
atsc_para.rf_para.db =atsc_para.rf_para.db+ (temp-atsc_para.rf_para.power);
|
|
else
|
|
{
|
|
if(atsc_para.rf_para.db < RF_POWER_DB_MAX )
|
|
{
|
|
temp = RF_POWER_DB_MAX-atsc_para.rf_para.db+atsc_para.rf_para.power;
|
|
}
|
|
else
|
|
{
|
|
temp = atsc_para.rf_para.power;
|
|
}
|
|
atsc_para.rf_para.db = RF_POWER_DB_MAX;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(atsc_para.rf_para.db>(atsc_para.rf_para.power-temp))
|
|
atsc_para.rf_para.db = atsc_para.rf_para.db-(atsc_para.rf_para.power-temp);
|
|
else
|
|
{
|
|
atsc_para.rf_para.db = 0;
|
|
temp = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if(temp!=atsc_para.rf_para.power){
|
|
turn_off_rf_agc_state(E_CHG_TX_POWER);
|
|
}
|
|
|
|
atsc_para.rf_para.power = temp;
|
|
fpga_save_we(&atsc_para.we_para);
|
|
e2rom_save_power(&atsc_para.rf_para);
|
|
|
|
/*if(atsc_para.rf_para.agc)
|
|
{
|
|
fpga_save_agc_vol();
|
|
}*/
|
|
}
|
|
/*
|
|
void Net_write_agc(uint8 param)
|
|
{
|
|
if(atsc_para.rf_para.agc!=param)
|
|
{
|
|
atsc_para.rf_para.agc = param;
|
|
|
|
if(atsc_para.ad3_para.cor == 0)
|
|
c256_bytewrite(EEPROM_AGC_ADDR,param);
|
|
else
|
|
c256_bytewrite2(E2_AGC_ADDR,param);
|
|
if(param)
|
|
{
|
|
fpga_save_agc_vol();
|
|
}
|
|
fpga_byte_write(0x1,0x4A,agc_value[param]);
|
|
}
|
|
|
|
}*/
|
|
#endif
|
|
|
|
#define __GET_TO_IHTTP_GET__ 1
|
|
#if __GET_TO_IHTTP_GET__//already get to ihttp_get
|
|
|
|
|
|
|
|
void remote_write_rf(uint8 rf)
|
|
{
|
|
if(rf!=atsc_para.rf_para.rf){
|
|
turn_off_rf_agc_state(E_CHG_TX_RF);
|
|
}
|
|
atsc_para.rf_para.rf = rf;
|
|
if(atsc_para.rf_para.rf == 0)
|
|
setbit(off_rf, _KEY_RF);
|
|
fpga_set_rf_output(rf);
|
|
c256_bytewrite(EEPROM_RF_ADDR,rf);
|
|
}
|
|
|
|
uint32 Net_write_RF(uint8 param)
|
|
{
|
|
#if USE_DRY_LOOP
|
|
if(dryloop_status.rf==INVALID_DATA)
|
|
{
|
|
remote_write_rf(param);
|
|
return UART_PARA_SET_ERR_OK;
|
|
}
|
|
else
|
|
#endif
|
|
{
|
|
if(atsc_para.ad3_para.rc_cmd==0) //IO
|
|
{
|
|
return UART_PARA_SET_ERR_DRYLOOP;
|
|
}
|
|
else //WEB
|
|
{
|
|
remote_write_rf(param);
|
|
return UART_PARA_SET_ERR_OK;
|
|
}
|
|
}
|
|
}
|
|
|
|
void net_write_rc_cmd(uint8 param)
|
|
{
|
|
if(atsc_para.ad3_para.rc_cmd!=param)
|
|
{
|
|
atsc_para.ad3_para.rc_cmd = param?1:0;
|
|
c256_bytewrite(EEPROM_AD3_RC_CMD,atsc_para.ad3_para.rc_cmd);
|
|
// FPGA没啥可存的
|
|
}
|
|
}
|
|
|
|
// need mordify
|
|
void Net_write_delay(uint32 delay) //-400 ~ 9249599
|
|
{
|
|
if(delay>NET_MAX_DELAY)
|
|
{
|
|
delay = 0;
|
|
}
|
|
|
|
atsc_para.network_para.delay= delay;
|
|
c256_bytewrite(EEPROM_NET_DELAY_ADDR,(delay>>16)&0x00ff);
|
|
c256_bytewrite(EEPROM_NET_DELAY_ADDR+1,(delay>>8)&0x00ff);
|
|
c256_bytewrite(EEPROM_NET_DELAY_ADDR+2,delay&0x00ff);
|
|
fpga_byte_write(0x01,0x3f,(delay>>16)&0x00ff);
|
|
fpga_byte_write(0x01,0x40,(delay>>8)&0x00ff);
|
|
fpga_byte_write(0x01,0x41,delay&0x00ff);
|
|
}
|
|
|
|
void Net_write_TXID(uint32 param)
|
|
{
|
|
atsc_para.network_para.txid = param;
|
|
fpga_byte_write(0x5,0xa,param>>8);
|
|
fpga_byte_write(0x5,0xb,param);
|
|
c256_bytewrite(EEPROM_NET_TXID_ADDR,param>>8);
|
|
c256_bytewrite(EEPROM_NET_TXID_ADDR+1,param);
|
|
}
|
|
|
|
void Net_write_AREA(uint32 param)
|
|
{
|
|
atsc_para.network_para.netid = param;
|
|
fpga_byte_write(0x5,0x8,param>>8);
|
|
fpga_byte_write(0x5,0x9,param);
|
|
c256_bytewrite(EEPROM_NET_NETID_ADDR,param>>8);
|
|
c256_bytewrite(EEPROM_NET_NETID_ADDR+1,param);
|
|
}
|
|
|
|
void Net_write_TRANS(uint8 param)
|
|
{
|
|
atsc_para.network_para.bratio = param;
|
|
fpga_byte_write(0x5,0x7,param);
|
|
c256_bytewrite(EEPROM_NET_BRATIO_ADDR,param);
|
|
}
|
|
|
|
void Net_write_sync(uint8 param)
|
|
{
|
|
atsc_para.mode_para.sync=param;
|
|
c256_bytewrite(EEPROM_MODE_SYNC,param);
|
|
fpga_byte_write(0x3,0x5,param);
|
|
}
|
|
|
|
void Net_write_zp1f(uint8 param)
|
|
{
|
|
atsc_para.mode_para.zp1f=param;
|
|
c256_bytewrite(EEPROM_MODE_ZP1F,param);
|
|
fpga_byte_write(0x3,0x4,param);
|
|
}
|
|
/***************************************************************/
|
|
void Net_write_tcp_c(uint8 param)
|
|
{
|
|
atsc_para.mode_para.tcp_c=param;
|
|
c256_bytewrite(EEPROM_MODE_TCP_C,atsc_para.mode_para.tcp_c);
|
|
fpga_byte_write(0x3,0xb,atsc_para.mode_para.tcp_c);
|
|
}
|
|
/***************************************************************/
|
|
|
|
#endif//__GET_TO_IHTTP_GET__
|
|
|
|
|
|
//#include "netif.h"
|
|
//extern struct netif gnetif;
|
|
|
|
/*
|
|
static ip_addr_t gb_ip,gb_mask,gb_gate;
|
|
void usr_lwIPNetworkConfigChange(uint32 ip,uint32 mask,uint32 gate)
|
|
{
|
|
gb_ip.addr = htonl(ip);
|
|
gb_mask.addr = htonl(mask);
|
|
gb_gate.addr = htonl(gate);
|
|
netif_set_addr(&gnetif,&gb_ip,&gb_mask,&gb_gate);
|
|
}
|
|
*/
|
|
|
|
/*
|
|
void eth_addres_change(S_NET_PARA *pNet)
|
|
{
|
|
uint32 ip, gateway, mask;
|
|
|
|
if(pNet == NULL)
|
|
return;
|
|
|
|
ip = pNet->ip.addr;
|
|
gateway = pNet->gateway.addr;
|
|
mask = pNet->mask.addr;
|
|
|
|
#if 0//@MSG_NEED_ADD
|
|
//lwIPNetworkConfigChange(ip, mask, gateway);
|
|
usr_lwIPNetworkConfigChange(ip, mask, gateway);
|
|
#endif
|
|
|
|
}
|
|
*/
|
|
|
|
/*void remote_set_dpd_clr(void)//old
|
|
{
|
|
switch(atsc_para.system_para.adpc_step)
|
|
{
|
|
case 0:
|
|
delay_ms(1);
|
|
fpga_byte_write(0x5,0x30,0);
|
|
delay_ms(1);
|
|
fpga_byte_write(0x5,0x31,0x07);
|
|
atsc_para.system_para.adpc = ADPC_OFF;
|
|
atsc_para.system_para.adpc_err= 0;
|
|
c256_bytewrite(EEPROM_DPD_ADDR,ADPC_OFF);
|
|
break;
|
|
case 0x10:case 0x11:case 0x12:case 0x13:case 0x14:case 0x15:
|
|
delay_ms(20);
|
|
fpga_byte_write(0x5,0x30,0);
|
|
delay_ms(20);
|
|
atsc_para.system_para.adpc_err= 0;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
udp_adj_auto_adpc = FALSE;
|
|
}*/
|
|
|
|
|
|
|
|
//#include "netif.h"
|
|
//extern struct netif gnetif;
|
|
/***************************************************************/
|
|
void http_write_sys(S_CGI_SET *ppara)
|
|
{
|
|
BOOL auto_flag = FALSE;
|
|
uint8 i = 0;
|
|
S_NET_PARA new_netcfg;
|
|
S_ADVANCE3_PARA tmpAdv3={0};
|
|
S_SN_PARA tmpSnPara={0};
|
|
|
|
|
|
if(atsc_para.wf_para.pdt != ppara->pdt)
|
|
{
|
|
web_save_pdt(ppara->pdt);
|
|
atsc_para.wf_para.pdt = ppara->pdt;
|
|
}
|
|
|
|
if(atsc_para.config_para.pa_link_ctrl_rf != ppara->pa_link_ctrl_rf)
|
|
{
|
|
c256_bytewrite(EEPROM_PA_LINK_CTRL_RF_ADDR,ppara->pa_link_ctrl_rf);
|
|
atsc_para.config_para.pa_link_ctrl_rf = ppara->pa_link_ctrl_rf;
|
|
}
|
|
|
|
|
|
if(atsc_para.system_para.ctrl!=ppara->ctrl)
|
|
{
|
|
c256_bytewrite(EEPROM_CTRL_ADDR,ppara->ctrl);
|
|
if(ppara->ctrl==CTRL_REMOTE)
|
|
fpga_byte_write(0x01,0x27,1);
|
|
else
|
|
fpga_byte_write(0x01,0x27,0);
|
|
atsc_para.system_para.ctrl = ppara->ctrl;
|
|
g_remote_changed_byweb = 1;
|
|
}
|
|
if(atsc_para.system_para.input!=ppara->input)
|
|
{
|
|
if(ppara->input>=ASI_INPUT_END)
|
|
{
|
|
ppara->input = atsc_para.system_para.input;
|
|
}
|
|
if(!atsc_para.sn_para.eas_key_valid)
|
|
{
|
|
if(ppara->input==ASI_INPUT_EAS)
|
|
{
|
|
ppara->input = atsc_para.system_para.input; //key无效时,不能改为EAS模式
|
|
}
|
|
}
|
|
c256_bytewrite(EEPROM_SYS_INPUT,ppara->input);
|
|
|
|
atsc_para.system_para.input=ppara->input;
|
|
fpga_save_sys(&atsc_para.system_para);
|
|
}
|
|
|
|
|
|
if(atsc_para.system_para.adpc<=ADPC_HOLD&&g_trigger_up_tsnr_flg == 0)// 无大小均衡
|
|
atsc_para.system_para.ab_mode = ppara->ab_mode;
|
|
|
|
//-----------------------------------------
|
|
uint8 adpc_bak;
|
|
if(g_trigger_up_tsnr_flg == 0 ) {// 不在小均衡中
|
|
|
|
if((atsc_para.system_para.ab_mode==1 && ppara->adpc == ADPC_OFF ) //ab切 - 可以配置off , 不可以配置 大于off的 .
|
|
||( atsc_para.system_para.ab_mode==0) ) { // only A
|
|
adpc_bak = atsc_para.system_para.adpc;
|
|
|
|
if(g_ca_value!=1 && ppara->adpc >= ADPC_UPDATE1){
|
|
ppara->adpc = ADPC_OFF;
|
|
}
|
|
|
|
usr_remote_adpc(ppara->adpc);
|
|
if((adpc_bak >= ADPC_UPDATE1) && (ppara->adpc <= ADPC_HOLD)) {
|
|
set_force_stop_adpc(TRUE);
|
|
}
|
|
if((adpc_bak != ppara->adpc)&&(ppara->adpc >= ADPC_UPDATE1)) //ADPC有更新
|
|
{
|
|
if(g_ca_value!=1){
|
|
//ltmp_adpc = atsc_para.system_para.adpc;
|
|
}
|
|
else{
|
|
auto_update = TRUE;
|
|
adpc_source_udp = 0;
|
|
adpc_source_web = 1;
|
|
enter_update_lcd();
|
|
}
|
|
}else if ((adpc_bak != ppara->adpc)&&(ppara->adpc <= ADPC_HOLD)){
|
|
if(adpc_bak >= ADPC_UPDATE1) {
|
|
enter_menu(SPE_LCD);
|
|
}
|
|
else {
|
|
enter_menu(SPE_LCD+5);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
log_printf(LOG_DEBUG, I_USER_CFG, "adpc=%d ABmode=%d\n", atsc_para.system_para.adpc, atsc_para.system_para.ab_mode);
|
|
//-----------------------------------------
|
|
/*if(ppara->adpc!=atsc_para.system_para.adpc) {
|
|
udp_adj_auto_adpc = FALSE;
|
|
//USE_UPDATA5
|
|
if(ppara->adpc==5)
|
|
c256_bytewrite(EEPROM_DPD_ADDR, ADPC_UPDATE1);
|
|
else
|
|
c256_bytewrite(EEPROM_DPD_ADDR, ppara->adpc);
|
|
if((ppara->adpc>=ADPC_UPDATE1)&&(atsc_para.system_para.adpc==ADPC_OFF)) { //若当前为OFF,则做全新ADPC
|
|
atsc_para.ad5_para.use_dpd = 1;
|
|
}
|
|
else {
|
|
atsc_para.ad5_para.use_dpd = atsc_para.ad5_para.dpd;
|
|
}
|
|
if(ppara->adpc==5) //自动校正
|
|
fpga_write_adpc(ADPC_UPDATE1);
|
|
else
|
|
fpga_write_adpc(ppara->adpc);
|
|
}
|
|
|
|
if(atsc_para.system_para.adpc != ppara->adpc) {
|
|
if(ppara->adpc==5) {
|
|
atsc_para.system_para.adpc = ADPC_UPDATE1;
|
|
net_auto_adpc = TRUE;
|
|
auto_flag = TRUE;
|
|
}
|
|
else {
|
|
atsc_para.system_para.adpc = ppara->adpc;
|
|
net_auto_adpc = FALSE;
|
|
auto_flag = FALSE;
|
|
}
|
|
|
|
if(ppara->adpc>=ADPC_UPDATE1) {//改为非全自动预校正
|
|
auto_update = auto_flag;
|
|
auto_update = TRUE;
|
|
adpc_source_udp = 0;
|
|
adpc_source_web = 1;
|
|
enter_update_lcd();
|
|
}
|
|
}
|
|
if(ppara->adpc==0) {
|
|
set_force_stop_adpc(TRUE);
|
|
}*/
|
|
//-----------------------------------------
|
|
#if !USE_NEW_POWER_CFG
|
|
if(ppara->adrv9009_att!=atsc_para.system_para.adrv9009_att){
|
|
cfg_adrv_att(ppara->adrv9009_att);
|
|
atsc_para.system_para.adrv9009_att = ppara->adrv9009_att;
|
|
c256_bytewrite(EEPROM_ADRV9009_ATT_H, (ppara->adrv9009_att>>8)&0xff);
|
|
c256_bytewrite(EEPROM_ADRV9009_ATT_L, ppara->adrv9009_att&0xff);
|
|
}
|
|
#endif
|
|
if(ppara->orx_manu_gain!=atsc_para.system_para.orx_manu_gain){
|
|
cfg_adrv_orx_manu_gain(ppara->orx_manu_gain);
|
|
atsc_para.system_para.orx_manu_gain = ppara->orx_manu_gain;
|
|
c256_bytewrite(EEPROM_ADRV9009_ORX_MANU_GAIN, ppara->orx_manu_gain&0xff);
|
|
}
|
|
#if !USE_NEW_POWER_CFG
|
|
if(ppara->agc_att!=atsc_para.system_para.agc_att){
|
|
cfg_fpga_agc_att(ppara->agc_att);
|
|
atsc_para.system_para.agc_att = ppara->agc_att;
|
|
c256_bytewrite(EEPROM_AGC_ATT, ppara->agc_att);
|
|
}
|
|
#endif
|
|
|
|
if(atsc_para.system_para.gps != ppara->gps) {
|
|
atsc_para.system_para.gps = ppara->gps;
|
|
c256_bytewrite(EEPROM_GPS_ADDR, ppara->gps);
|
|
fpga_byte_write(0x01, 0x08, ppara->gps);
|
|
}
|
|
|
|
if(0 != memcmp(ppara->web_title,atsc_para.system_para.web_title,ATSC_TITLE_LEN)) {
|
|
uint32 i = 0;
|
|
memcpy(atsc_para.system_para.web_title,ppara->web_title,ATSC_TITLE_LEN);
|
|
for(i=0;i<ATSC_TITLE_LEN;i++) {
|
|
c256_bytewrite(EEPROM_WEB_TITLE_ADDR+i,ppara->web_title[i]);
|
|
}
|
|
}
|
|
|
|
if(0 != strcmp((char*)atsc_para.system_para.sntp_sip, (char*)ppara->sntp_sip)) // sntp
|
|
{
|
|
atsc_para.system_para.sntp_sip[0] = ppara->sntp_sip[0];
|
|
atsc_para.system_para.sntp_sip[1] = ppara->sntp_sip[1];
|
|
atsc_para.system_para.sntp_sip[2] = ppara->sntp_sip[2];
|
|
atsc_para.system_para.sntp_sip[3] = ppara->sntp_sip[3];
|
|
c256_bytewrite(EEPROM_SNTP_SIP1,ppara->sntp_sip[0]);
|
|
c256_bytewrite(EEPROM_SNTP_SIP2,ppara->sntp_sip[1]);
|
|
c256_bytewrite(EEPROM_SNTP_SIP3,ppara->sntp_sip[2]);
|
|
c256_bytewrite(EEPROM_SNTP_SIP4,ppara->sntp_sip[3]);
|
|
}
|
|
|
|
if(atsc_para.system_para.sntp_en != ppara->sntp_en) // sntp
|
|
{
|
|
atsc_para.system_para.sntp_en = ppara->sntp_en;
|
|
c256_bytewrite(EEPROM_SNTP_ENABLE,ppara->sntp_en);
|
|
#if 0//@NEED_TO_EN
|
|
sntp_enable(ppara->sntp_en, ppara->sntp_sip);
|
|
#endif
|
|
}
|
|
|
|
if(atsc_para.ad3_para.fwd_cal != ppara->fwd_cal && (ppara->fwd_cal==0 || ppara->fwd_cal==1)) {
|
|
memcpy(&tmpAdv3, &atsc_para.ad3_para, sizeof(S_ADVANCE3_PARA));
|
|
tmpAdv3.fwd_cal = ppara->fwd_cal;
|
|
save_ad3_para(&tmpAdv3);
|
|
}
|
|
|
|
#if 1
|
|
if(atsc_para.dpd_para.dpd_test != ppara->dpd_tst)
|
|
{
|
|
atsc_para.dpd_para.dpd_test = ppara->dpd_tst;
|
|
save_dpd_test_para(ppara->dpd_tst);
|
|
}
|
|
|
|
if(atsc_para.wl_para.roll_off_sel != ppara->roll_off_sel)
|
|
{
|
|
web_save_roll_off(ppara->roll_off_sel);
|
|
}
|
|
#endif
|
|
|
|
if(atsc_para.dpd_para.gl != ppara->gl) {
|
|
web_save_gain_limit(ppara->gl);
|
|
}
|
|
|
|
if(atsc_para.sn_para.sn != ppara->sn)
|
|
{
|
|
memcpy(&tmpSnPara,&atsc_para.sn_para,sizeof(S_SN_PARA));
|
|
tmpSnPara.sn = ppara->sn;
|
|
e2rom_save_sn(&tmpSnPara);
|
|
atsc_para.sn_para.sn = tmpSnPara.sn;
|
|
}
|
|
|
|
if(ppara->sys_reset) {
|
|
log_printf(LOG_DEBUG, I_USER_CFG, "SYSTEM RESET NOW (IMX+FPGA)!!!!!!!!!!!!!\n");
|
|
//复位 FPGA本身复位
|
|
fpga_byte_write(0x01,0xfe,0x5a);
|
|
fpga_byte_write(0x01,0xfe,0xa5);
|
|
|
|
// [one@20220419 add imx reset]
|
|
system("sync");
|
|
system("reboot");
|
|
}
|
|
|
|
}
|
|
|
|
|
|
#if ERR_TO_LCM
|
|
void http_write_latch_reset(S_CGI_LATCH *ppara)
|
|
{
|
|
if(ppara->reset)
|
|
{
|
|
memset(&atsc_para.latch_para,0,sizeof(atsc_para.latch_para));
|
|
atsc_para.rf_para.ssref = atsc_para.latch_para.u1;
|
|
}
|
|
}
|
|
#endif//ERR_TO_LCM
|
|
|
|
void usr_http_write_rx_freq(uint8 rx_freq)
|
|
{
|
|
load_freq_para(&freqPara);
|
|
if(freqPara.rxfreq != rx_freq){
|
|
freqPara.rxfreq = rx_freq;
|
|
save_freq_para(&freqPara);
|
|
}
|
|
}
|
|
|
|
void http_write_rf(S_CGI_RF *ppara)
|
|
{
|
|
uint32 rf_change = 0;
|
|
S_RF_PARA freqPara={0};
|
|
|
|
//Net_write_agc(ppara->agc);
|
|
if(1){
|
|
log_printf(LOG_INFO, I_USER_CFG, "web agc=%d\n",ppara->agc);
|
|
if(ppara->agc!=atsc_para.rf_para.agc) {
|
|
if(ppara->agc==0){
|
|
set_sys_rf_agc(0);
|
|
printf(">> cfg set rf agc off\n");
|
|
}
|
|
else{
|
|
printf(">> cfg trigger rf agc on proc\n");
|
|
trigger_rf_agc_proc(1);
|
|
}
|
|
}
|
|
}
|
|
|
|
if(ppara->rxfreq != atsc_para.rf_para.rxfreq){
|
|
printf("web set rxfreq_changed rxfreq %d -> %d\n", atsc_para.rf_para.rxfreq, ppara->rxfreq);
|
|
atsc_para.lcd_web_lock=1;
|
|
usr_http_write_rx_freq(ppara->rxfreq);
|
|
atsc_para.lcd_web_lock=0;
|
|
return;
|
|
}
|
|
|
|
if(ppara->txfreq != atsc_para.rf_para.txfreq){
|
|
printf("web set txfreq_changed txfreq %d->%d\n", atsc_para.rf_para.txfreq, ppara->txfreq);
|
|
usr_http_write_freq(ppara->txfreq);
|
|
}
|
|
|
|
#if AW_ATSC_5X
|
|
#if USE_NEW_DIO_MODE
|
|
if(atsc_para.ad3_para.mptv==1) //MPTV下
|
|
{
|
|
if(atsc_para.ad3_para.rc_cmd) //OTHER模式 可以通过网页改激励器功率
|
|
{
|
|
Net_write_Power(ppara->power[0],ppara->power[1],ppara->power[2]);
|
|
}
|
|
}
|
|
else //LPTV可改.
|
|
{
|
|
Net_write_Power(ppara->power[0],ppara->power[1],ppara->power[2]);
|
|
}
|
|
#else
|
|
Net_write_Power(ppara->power[0],ppara->power[1],ppara->power[2]);
|
|
#endif
|
|
#else
|
|
if(dryloop_status.rf==INVALID_DATA)
|
|
{
|
|
Net_write_Power(ppara->power[0],ppara->power[1],ppara->power[2]);
|
|
}
|
|
else
|
|
{
|
|
if(atsc_para.ad3_para.rc_cmd)
|
|
{
|
|
Net_write_Power(ppara->power[0],ppara->power[1],ppara->power[2]);
|
|
}
|
|
}
|
|
|
|
#if USE_DRY_LOOP
|
|
if(atsc_para.wh_para.func==0) //TX模式
|
|
{
|
|
if(atsc_para.ad3_para.rc_cmd==1) //Other时,才可通过网页改TX
|
|
{
|
|
if((atsc_para.rf_para.tx==0)&&(ppara->tx==1)) //OFF->ON 要执行某些动作
|
|
{
|
|
dryloop_amp_on(TRUE);
|
|
show_wait_info_with_sec(atsc_para.wj_para.rf_dly); //此处为发消息,需延时特定时间在控制rf
|
|
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;
|
|
fpga_set_rf_output(1);
|
|
c256_bytewrite(EEPROM_RF_ADDR,atsc_para.rf_para.rf);
|
|
off_rf = 0;
|
|
clrbit(off_rf,_KEY_TX);
|
|
rf_change++;
|
|
}
|
|
else if((atsc_para.rf_para.tx==1)&&(ppara->tx==0)) //ON->OFF
|
|
{
|
|
atsc_para.rf_para.rf = 0;
|
|
fpga_set_rf_output(0);
|
|
c256_bytewrite(EEPROM_RF_ADDR,atsc_para.rf_para.rf);
|
|
show_wait_info_with_sec(atsc_para.wj_para.rf_dly); //此处为发消息,需延时特定时间在控制rf
|
|
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);
|
|
atsc_para.latch_para.rf = 1;
|
|
setbit(off_rf,_KEY_TX);
|
|
rf_change++;
|
|
}
|
|
atsc_para.rf_para.tx = ppara->tx;
|
|
c256_bytewrite(EEPROM_RF_TX,atsc_para.rf_para.tx);
|
|
}
|
|
}
|
|
#endif
|
|
#endif
|
|
|
|
if(rf_change==0)
|
|
{
|
|
Net_write_RF(ppara->rf);
|
|
}
|
|
net_write_rc_cmd(ppara->rc_cmd);
|
|
}
|
|
|
|
int usr_http_write_freq(uint8 freq)
|
|
{
|
|
uint32 rf_change = 0;
|
|
|
|
#if 1
|
|
load_freq_para(&freqPara);
|
|
if(freqPara.txfreq != freq){
|
|
|
|
turn_off_rf_agc_state(E_CHG_TX_FREQ);
|
|
|
|
freqPara.txfreq = freq;
|
|
save_freq_para(&freqPara);
|
|
rf_change=1;
|
|
}
|
|
#endif
|
|
return rf_change;
|
|
}
|
|
|
|
void http_write_net(S_CGI_NET *ppara)
|
|
{
|
|
Net_write_delay(ppara->delay);
|
|
}
|
|
|
|
void http_write_mh(S_CGI_MODE *ppara)
|
|
{
|
|
uint16 temp = 0;
|
|
|
|
temp =fpga_byte_read(0x01,0x55) & 2;
|
|
if(temp == 0)
|
|
return;
|
|
|
|
Net_write_sync(ppara->sync);
|
|
if(atsc_para.system_para.net==0)
|
|
{
|
|
Net_write_zp1f(ppara->zp1f);
|
|
Net_write_tcp_c(ppara->tcp_c);
|
|
}
|
|
}
|
|
|
|
|
|
#if USE_TS2IP
|
|
void http_write_ts(TS_NET_STRUCT *ppara)
|
|
{
|
|
uint32 ultemp;
|
|
uint16 ustemp;
|
|
uint8 uctemp;
|
|
|
|
IP_DATA(ultemp,ppara->ip[3],ppara->ip[2],ppara->ip[1],ppara->ip[0]);
|
|
ip2ts_i2c_rw((unsigned char *)&ultemp,IP2TS_I2C_ADD_IP, 4, TS_NET_I2C_WRITE);
|
|
|
|
IP_DATA(ultemp,ppara->gateway[3],ppara->gateway[2],ppara->gateway[1],ppara->gateway[0]);
|
|
ip2ts_i2c_rw((unsigned char*)&ultemp, IP2TS_I2C_ADD_GATEWAY, 4, TS_NET_I2C_WRITE);
|
|
|
|
IP_DATA(ultemp,ppara->mask[3],ppara->mask[2],ppara->mask[1],ppara->mask[0]);
|
|
ip2ts_i2c_rw((unsigned char*)&ultemp,IP2TS_I2C_ADD_MASK, 4, TS_NET_I2C_WRITE);
|
|
|
|
IP_DATA(ultemp,ppara->multi_address[3],ppara->multi_address[2],ppara->multi_address[1],ppara->multi_address[0]);
|
|
ip2ts_i2c_rw((unsigned char*)&ultemp,IP2TS_I2C_ADD_MULTI, 4, TS_NET_I2C_WRITE);
|
|
|
|
IP_DATA(ultemp,ppara->ip_bak[3],ppara->ip_bak[2],ppara->ip_bak[1],ppara->ip_bak[0]);
|
|
ip2ts_i2c_rw((unsigned char *)&ultemp,IP2TS_I2C_IP_BAK, 4, TS_NET_I2C_WRITE);
|
|
|
|
ustemp = htons(ppara->port);
|
|
ip2ts_i2c_rw((unsigned char*)&ustemp,IP2TS_I2C_ADD_PORT, sizeof(ustemp), TS_NET_I2C_WRITE);
|
|
|
|
ustemp = htons(ppara->port_bak);
|
|
ip2ts_i2c_rw((unsigned char*)&ustemp,IP2TS_I2C_PORT_BAK, sizeof(ustemp), TS_NET_I2C_WRITE);
|
|
|
|
if(ppara->udp_rtp<=1)
|
|
{
|
|
ustemp = htons(ppara->udp_rtp);
|
|
ip2ts_i2c_rw((unsigned char*)&ustemp,IP2TS_I2C_ADD_UDP_RTP, 2, TS_NET_I2C_WRITE);
|
|
}
|
|
|
|
if(ppara->packet_len<=1)
|
|
{
|
|
ustemp = htons(ppara->packet_len);
|
|
ip2ts_i2c_rw((unsigned char*)&ustemp,IP2TS_I2C_ADD_PACKET_LEN, 2, TS_NET_I2C_WRITE);
|
|
}
|
|
|
|
if(ppara->receive_type<=1)
|
|
{
|
|
ustemp = htons(ppara->receive_type);
|
|
ip2ts_i2c_rw((unsigned char*)&ustemp,IP2TS_I2C_ADD_REC_TYPE, 2, TS_NET_I2C_WRITE);
|
|
}
|
|
|
|
|
|
ustemp = htons(ppara->fec);
|
|
ip2ts_i2c_rw((uint8*)&ustemp,IP2TS_I2C_ADD_FEC,sizeof(ustemp), TS_NET_I2C_WRITE);
|
|
|
|
// ustemp = htons(ppara.row);
|
|
//ip2ts_i2c_rw((uint8*)&ustemp,IP2TS_I2C_ADD_ROW,sizeof(ustemp), TS_NET_I2C_WRITE);
|
|
|
|
//ustemp = htons(ppara.col);
|
|
//ip2ts_i2c_rw((uint8*)&ustemp,IP2TS_I2C_ADD_COL,sizeof(ustemp), TS_NET_I2C_WRITE);
|
|
|
|
ustemp = htons(ppara->delay);
|
|
ip2ts_i2c_rw((uint8*)&ustemp,IP2TS_I2C_ADD_DELAY,sizeof(ustemp), TS_NET_I2C_WRITE);
|
|
|
|
uctemp = 0x01; // 复位
|
|
ip2ts_i2c_rw(&uctemp,IP2TS_I2C_ADD_RESET, 1, TS_NET_I2C_WRITE);
|
|
|
|
memcpy(&ts_net_para,ppara,sizeof(TS_NET_STRUCT)-4);
|
|
|
|
ts_net_para.valid = 0;
|
|
ts_net_para.delay_sec = 0;
|
|
}
|
|
#endif
|
|
|
|
#if USE_PSTS
|
|
extern void save_psts_para(void *psave);
|
|
void http_write_psip(S_PSTS_PARA *ppara)
|
|
{
|
|
//是否发消息给LCD_TASK_ID去保存?
|
|
save_psts_para(ppara);
|
|
}
|
|
#endif
|
|
/*
|
|
void local_ip_change(void)
|
|
{
|
|
#if 0//@NEED_TO_EN
|
|
|
|
S_ETH_ADDRES eth_addres;
|
|
|
|
load_net_para(ð_addres);
|
|
//lwIPNetworkConfigChange(eth_addres.ip,eth_addres.mask,eth_addres.gateway);
|
|
usr_lwIPNetworkConfigChange(eth_addres.ip,eth_addres.mask,eth_addres.gateway);
|
|
#endif
|
|
}*/
|
|
/**********************************************
|
|
function
|
|
|
|
name: void load_net_para(void)
|
|
|
|
description: set net para from eeprom which includes IP gateway & netmask setting.
|
|
|
|
return value: none.
|
|
***********************************************/
|
|
void load_net_para(S_ETH_ADDRES *peth)
|
|
{
|
|
uint32 temp_data_1;
|
|
uint8 *pchar;
|
|
uint32 UC_temp;
|
|
|
|
pchar =(uint8 *)&atsc_para.config_para.ip;
|
|
for(UC_temp=0; UC_temp<4; UC_temp++)//从E2PROM读取data给dvbt_para.config_para.ip
|
|
{
|
|
pchar[UC_temp] = c256_byteread(EEPROM_IP4_ADDR+UC_temp) ;
|
|
}
|
|
|
|
pchar =(uint8 *)&atsc_para.config_para.gateway;
|
|
for(UC_temp=0; UC_temp<4; UC_temp++)
|
|
{
|
|
pchar[UC_temp] = c256_byteread(EEPROM_GATEWAY_ADDR+UC_temp) ;
|
|
}
|
|
|
|
pchar =(uint8 *)&atsc_para.config_para.mask;
|
|
for(UC_temp=0; UC_temp<4; UC_temp++)
|
|
{
|
|
pchar[UC_temp] = c256_byteread(EEPROM_NETMASK_ADDR+UC_temp) ;
|
|
}
|
|
|
|
pchar =(uint8 *)&atsc_para.config_para.dns;
|
|
for(UC_temp=0; UC_temp<4; UC_temp++)
|
|
{
|
|
pchar[UC_temp] = c256_byteread(EEPROM_DNS_ADDR+UC_temp) ;
|
|
}
|
|
|
|
//get_net_mac_by_ip(dvbt_para.wl_para.mac,peth->mac);
|
|
|
|
temp_data_1 = *((uint32 *)atsc_para.config_para.ip);//再转存给temp_data_1
|
|
|
|
peth->ip=htonl(temp_data_1);//作处理后给peth。htonl函数就是将主机的无符号长整形数转换成网络字节顺序。
|
|
if(peth->ip==0)
|
|
{
|
|
IP_DATA(peth->ip,192,168,1,143); //0xc0a8018f;
|
|
}
|
|
|
|
temp_data_1 = *((uint32 *)atsc_para.config_para.gateway);
|
|
peth->gateway=htonl(temp_data_1);
|
|
if(peth->gateway==0)
|
|
{
|
|
IP_DATA(peth->gateway,192,168,1,1); //0xc0a80101;
|
|
}
|
|
|
|
temp_data_1 = *((uint32 *)atsc_para.config_para.mask);
|
|
peth->mask=htonl(temp_data_1);
|
|
if(peth->mask==0)
|
|
{
|
|
IP_DATA(peth->mask,255,255,0,0); //0xffff0000;
|
|
}
|
|
}
|
|
|
|
extern S_IP2TS_PARA ip2ts[2];
|
|
static void http_load_sys_tsoip(int index,S_TSOIP_CONFIG_PARA *ppara)
|
|
{
|
|
memcpy(ppara, &ip2ts[index].tsoip_config_para,sizeof(S_TSOIP_CONFIG_PARA));
|
|
}
|
|
|
|
static void http_load_default_admin_netaddr(S_CONFIG_PARA *ppara)
|
|
{
|
|
memcpy(ppara, &atsc_para.config_para, sizeof(S_CONFIG_PARA));
|
|
}
|
|
|
|
|
|
void http_load_default_para(uint32 type,void *ppara)
|
|
{
|
|
if(!ppara)
|
|
return;
|
|
|
|
switch(type)
|
|
{
|
|
case WEB_SET:
|
|
http_load_sys(ppara);
|
|
break;
|
|
case WEB_RF:
|
|
http_load_rf(ppara);
|
|
break;
|
|
case WEB_NET:
|
|
http_load_net(ppara);
|
|
break;
|
|
case WEB_MODE:
|
|
http_load_mh(ppara);
|
|
break;
|
|
case WEB_LATCH:
|
|
http_load_latch(ppara);
|
|
break;
|
|
/*case WEB_TS:
|
|
http_load_ts(ppara);
|
|
break;*/
|
|
#if USE_PSTS
|
|
case WEB_PSIP:
|
|
http_load_psip(ppara);
|
|
break;
|
|
#endif
|
|
case CGI_CTTB_WEB_TS2IP_1:
|
|
http_load_sys_tsoip(TSOIP_1, ppara);
|
|
break;
|
|
|
|
case WEB_IP_CFG://CGI_CTTB_SYS_ADMIN_IPCFG:
|
|
http_load_default_admin_netaddr(ppara);
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
#if 1//@ALD_UP
|
|
|
|
void http_write_ip_cfg(S_CONFIG_PARA* ppara)
|
|
{
|
|
int i;
|
|
|
|
// if((0 != strcmp((char *)atsc_para.config_para.ip, (char*)ppara->ip))||
|
|
// (0 != strcmp((char *)atsc_para.config_para.gateway, (char*)ppara->gateway))||
|
|
// (0 != strcmp((char *)atsc_para.config_para.mask, (char*)ppara->mask))||
|
|
// (0 != strcmp((char *)atsc_para.config_para.dns, (char*)ppara->dns))
|
|
// )
|
|
{
|
|
for(i = 0; i < 4; i++)
|
|
{
|
|
if(atsc_para.config_para.ip[i] != ppara->ip[i])
|
|
{
|
|
atsc_para.config_para.ip[i] = ppara->ip[i];
|
|
c256_bytewrite(EEPROM_IP4_ADDR+i,ppara->ip[i]);
|
|
}
|
|
}
|
|
for(i = 0; i < 4; i++)
|
|
{
|
|
if(atsc_para.config_para.gateway[i] != ppara->gateway[i])
|
|
{
|
|
atsc_para.config_para.gateway[i] = ppara->gateway[i];
|
|
c256_bytewrite(EEPROM_GATEWAY_ADDR+i,ppara->gateway[i]);
|
|
}
|
|
}
|
|
for(i = 0; i < 4; i++)
|
|
{
|
|
if(atsc_para.config_para.mask[i] != ppara->mask[i])
|
|
{
|
|
atsc_para.config_para.mask[i] = ppara->mask[i];
|
|
c256_bytewrite(EEPROM_NETMASK_ADDR+i,ppara->mask[i]);
|
|
}
|
|
}
|
|
#if USE_NETWORK_DNS
|
|
for(i = 0; i < 4; i++)
|
|
{
|
|
if(atsc_para.config_para.dns[i] != ppara->dns[i])
|
|
{
|
|
atsc_para.config_para.dns[i] = ppara->dns[i];
|
|
c256_bytewrite(EEPROM_DNS_ADDR+i,ppara->dns[i]);
|
|
}
|
|
}
|
|
#endif
|
|
|
|
//@ALD_UPDATE
|
|
local_ip_change_admin(&atsc_para.config_para);
|
|
}
|
|
}
|
|
|
|
static void http_save_sys_para_tsoip(int tsoip_index,S_TSOIP_CONFIG_PARA *ppara)
|
|
{
|
|
tsoip_index = tsoip_index & 0x01;
|
|
static uint32 u32_old_ip[2] = {0};
|
|
uint32 tmp_ip;
|
|
|
|
log_printf(LOG_DEBUG,I_NOUSED,"save TSOIP %d ,new ip2sel=%d old ip2sel=%d\n", tsoip_index+1,ppara->ip12_sel,ip2ts[tsoip_index].tsoip_config_para.ip12_sel);
|
|
|
|
if(!memcmp(&ip2ts[tsoip_index].tsoip_config_para, ppara, sizeof(S_TSOIP_CONFIG_PARA))) //后8个字节在收端为只读
|
|
return;
|
|
|
|
|
|
//检测变化的参数,并存入E2PROM 全部固定存效率有点低
|
|
e2rom_save_config_tsoip(tsoip_index, ppara);
|
|
|
|
IP_DATA(tmp_ip, ppara->ip[0], ppara->ip[1], ppara->ip[2], ppara->ip[3]);
|
|
|
|
if(tsoip_index == TSOIP_1_ETH_INDEX && (tmp_ip != u32_old_ip[tsoip_index])){
|
|
local_ip_change_tsoip(ppara,TSOIP_1_ETH_INDEX);
|
|
}
|
|
|
|
u32_old_ip[tsoip_index] = tmp_ip;
|
|
|
|
|
|
fpga_save_config_tsoip(tsoip_index, ppara);
|
|
|
|
//正常参数配置完后,会有复位命令
|
|
if(ppara->rst) {
|
|
//复位FPGA
|
|
ppara->rst = 0;
|
|
}
|
|
memcpy(&ip2ts[tsoip_index].tsoip_config_para, ppara, sizeof(S_TSOIP_CONFIG_PARA));
|
|
ts_load_default_para(tsoip_index, ppara);// 同步到LCD
|
|
|
|
//memcpy(&i2c_para_bak, ppara, sizeof(S_TSOIP_CONFIG_PARA));//h20190226 add
|
|
|
|
//change_tsoip_param_flg(1);
|
|
TSOIP_INSTANCE *p_tsoip1 ;
|
|
p_tsoip1 = (TSOIP_INSTANCE *)malloc(sizeof(TSOIP_INSTANCE));
|
|
inset_tsoip_instance(p_tsoip1, &ip2ts[tsoip_index].tsoip_config_para);
|
|
p_tsoip1->index = tsoip_index;
|
|
|
|
MSG msg;
|
|
memset(&msg, 0, sizeof(MSG));
|
|
msg.type = MSG_IGMP_REINIT;
|
|
msg.need_free = MSG_NEED_FREE;
|
|
msg.lPara = (uint32)p_tsoip1;
|
|
|
|
log_printf(LOG_DEBUG,I_NOUSED,"send MSG_IGMP_REINIT to TSOIP msg thread\n");
|
|
msg_send_to_tsoip(&msg);//cttb_msg_send_to_tsoip
|
|
|
|
// udp_imgp_init((uint32) p_tsoip1); // function 内部有free(p_tsoip1)
|
|
}
|
|
|
|
|
|
#endif
|
|
|
|
void http_save_change_para(void *p)
|
|
{
|
|
uint32 para_type;
|
|
MSG *pmsg = (MSG*)p;
|
|
void* ppara;
|
|
|
|
if(!pmsg)
|
|
return;
|
|
|
|
if(!pmsg->lPara)
|
|
return;
|
|
|
|
para_type = pmsg->wPara;
|
|
ppara = (void*)pmsg->lPara;
|
|
|
|
switch(para_type)
|
|
{
|
|
case WEB_SET:
|
|
http_write_sys(ppara);
|
|
break;
|
|
case WEB_RF:
|
|
http_write_rf(ppara);
|
|
break;
|
|
case WEB_NET:
|
|
http_write_net(ppara);
|
|
break;
|
|
case WEB_MODE:
|
|
http_write_mh(ppara);
|
|
break;
|
|
case WEB_LATCH:
|
|
http_write_latch_reset(ppara);
|
|
break;
|
|
case WEB_TS:
|
|
http_write_ts(ppara);
|
|
break;
|
|
#if USE_PSTS
|
|
case WEB_PSIP:
|
|
http_write_psip(ppara);
|
|
break;
|
|
#endif
|
|
|
|
case WEB_IP_CFG:
|
|
http_write_ip_cfg(ppara);
|
|
break;
|
|
case WEB_TS2IP1:
|
|
http_save_sys_para_tsoip(TSOIP_1_ETH_INDEX, ppara);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
if(pmsg->lPara)
|
|
free_mem((void*)pmsg->lPara);
|
|
}
|
|
|
|
|
|
/*****************************END**************************************/
|
|
|
|
|
|
|