Files
smod_atsc_app/atsc_app/task/http_get.c
T

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(&eth_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**************************************/