#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #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)(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)(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;iweb_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**************************************/