新增:V1.1 硬件功率校准

This commit is contained in:
efox
2026-08-28 13:28:25 +08:00
committed by rfeng
parent eebdd22256
commit 936a850c6b
9 changed files with 193 additions and 32 deletions
+99 -25
View File
@@ -85,6 +85,26 @@ static const int32 we_power[]=
1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000
}; };
/* Hardware V1.1 VHF calibration, channels 2..13. */
static const uint16 we_power_v1_1_v[]=
{
143,98,66,38,28,52,52,59,62,64,66,74
};
/*
* Hardware V1.1 UHF calibration, channels 14..83 (473..887 MHz).
* Values are the raw WE register values measured with 563 MHz as 0 dB.
* 1 raw step = 0.05 dB; 300 = 0 dB. Values at the upper end are
* limited to WE_POWER_MAX (500).
*/
static const uint16 we_power_v1_1[]=
{
224,226,231,231,234,235,239,244,245,248,254,257,264,268,269,275,281,282,
292,292,295,301,304,312,317,322,329,335,340,345,347,350,354,358,361,366,
370,377,382,385,389,391,394,399,403,405,413,420,423,432,437,447,454,463,
480,495,500,500,500,500,500,500,500,500,500,500,500,500,500,500
};
/*auto ver /*auto ver
{ {
-405, -361, -349, -314, -332, -303, -295, -285, -172, -257, -405, -361, -349, -314, -332, -303, -295, -285, -172, -257,
@@ -192,6 +212,7 @@ void e2rom_save_sys(S_SYSTEM_PARA *ppara)
c256_bytewrite(EEPROM_ADRV9009_ORX_MANU_GAIN, ppara->orx_manu_gain&0xff); c256_bytewrite(EEPROM_ADRV9009_ORX_MANU_GAIN, ppara->orx_manu_gain&0xff);
c256_bytewrite(EEPROM_SPEC_ENABLE, ppara->spec_enable ? 1 : 0); c256_bytewrite(EEPROM_SPEC_ENABLE, ppara->spec_enable ? 1 : 0);
c256_bytewrite(EEPROM_HARDWARE_VERSION, ppara->hardware_version);
} }
void e2rom_save_power(S_RF_PARA *ppara) void e2rom_save_power(S_RF_PARA *ppara)
{ {
@@ -398,18 +419,26 @@ void e2rom_save_wd(S_WD_PARA *ppara)
c256_bytewrite(EEPROM_WD_ADDR+i,*pchar++); c256_bytewrite(EEPROM_WD_ADDR+i,*pchar++);
} }
} }
static uint16 e2rom_legacy_power_addr(void)
{
return (atsc_para.wl_para.exc_5x == 0) ?
EEPROM_CH2_POWER_ADDR : EEPROM_CH1_POWER_ADDR;
}
static uint16 e2rom_active_power_addr(void)
{
if(atsc_para.system_para.hardware_version == HARDWARE_VERSION_V1_1)
return EEPROM_CH_POWER_V1_1_ADDR;
return e2rom_legacy_power_addr();
}
void e2rom_save_leak(uint32 ch, S_WE_PARA *ppara) void e2rom_save_leak(uint32 ch, S_WE_PARA *ppara)
{ {
if(atsc_para.wl_para.exc_5x==0) uint16 base = e2rom_active_power_addr();
{
c256_bytewrite(EEPROM_CH2_POWER_ADDR+ch*2+0,ppara->power>>8); c256_bytewrite(base+ch*2+0,ppara->power>>8);
c256_bytewrite(EEPROM_CH2_POWER_ADDR+ch*2+1,ppara->power); c256_bytewrite(base+ch*2+1,ppara->power);
}
else
{
c256_bytewrite(EEPROM_CH1_POWER_ADDR+ch*2+0,ppara->power>>8);
c256_bytewrite(EEPROM_CH1_POWER_ADDR+ch*2+1,ppara->power);
}
} }
void e2rom_save_we(S_WE_PARA *ppara) void e2rom_save_we(S_WE_PARA *ppara)
{ {
@@ -1145,8 +1174,16 @@ void e2rom_read_system(S_SYSTEM_PARA *ppara)
ppara->orx_manu_gain = orx_gain_max; ppara->orx_manu_gain = orx_gain_max;
ppara->spec_enable = 1; ppara->spec_enable = 1;
ppara->hardware_version = c256_byteread(EEPROM_HARDWARE_VERSION);
if(ppara->hardware_version >= HARDWARE_VERSION_END)
{
ppara->hardware_version = DEFAULT_HARDWARE_VERSION;
c256_bytewrite(EEPROM_HARDWARE_VERSION, ppara->hardware_version);
}
printf("load agc_att=%d %fdb adrv9009_att=%d orx_manu_gain=%d spec_enable=%d\n", ppara->agc_att, -0.5*ppara->agc_att, ppara->adrv9009_att, ppara->orx_manu_gain, ppara->spec_enable); printf("load agc_att=%d %fdb adrv9009_att=%d orx_manu_gain=%d spec_enable=%d hardware=V1.%d\n",
ppara->agc_att, -0.5*ppara->agc_att, ppara->adrv9009_att,
ppara->orx_manu_gain, ppara->spec_enable, ppara->hardware_version);
} }
static void bak_e2rom_read_rf(S_RF_PARA *ppara) static void bak_e2rom_read_rf(S_RF_PARA *ppara)
{ {
@@ -2008,6 +2045,26 @@ static void e2rom_fac_power_rst_3x(void)
} }
} }
static void e2rom_fac_power_rst_v1_1(void)
{
uint32 i;
uint16 power;
for(i=FREQ_MIN_V1; i<=FREQ_MAX_V3; i++)
{
power = we_power_v1_1_v[i-FREQ_MIN_V1];
c256_bytewrite(EEPROM_CH_POWER_V1_1_ADDR+i*2+0, power>>8);
c256_bytewrite(EEPROM_CH_POWER_V1_1_ADDR+i*2+1, power);
}
for(i=FREQ_MIN_U; i<=FREQ_MAX_U; i++)
{
power = we_power_v1_1[i-FREQ_MIN_U];
c256_bytewrite(EEPROM_CH_POWER_V1_1_ADDR+i*2+0, power>>8);
c256_bytewrite(EEPROM_CH_POWER_V1_1_ADDR+i*2+1, power);
}
}
static uint16 e2rom_read_fac_power_default_3x(uint32 chn) static uint16 e2rom_read_fac_power_default_3x(uint32 chn)
{ {
uint16 power; uint16 power;
@@ -2860,6 +2917,7 @@ void e2rom_load_default_param(unsigned char menu)
atsc_para.system_para.gps = 0; atsc_para.system_para.gps = 0;
atsc_para.system_para.test = TEST_OFF; atsc_para.system_para.test = TEST_OFF;
atsc_para.system_para.spec_enable = 1; atsc_para.system_para.spec_enable = 1;
atsc_para.system_para.hardware_version = DEFAULT_HARDWARE_VERSION;
//atsc_para.system_para.net = 1; //MFN; //atsc_para.system_para.net = 1; //MFN;
atsc_para.system_para.ctrl = CTRL_REMOTE; // remote atsc_para.system_para.ctrl = CTRL_REMOTE; // remote
@@ -3243,6 +3301,7 @@ void e2rom_load_default_param(unsigned char menu)
case MENU_POWER: case MENU_POWER:
atsc_para.rf_para.power = RF_POWER_ZERO; atsc_para.rf_para.power = RF_POWER_ZERO;
e2rom_fac_power_rst_v1_1();
if(atsc_para.wl_para.exc_5x==0) if(atsc_para.wl_para.exc_5x==0)
{ {
atsc_para.rf_para.db = DEFAULT_RF_POWER_DB_3X; atsc_para.rf_para.db = DEFAULT_RF_POWER_DB_3X;
@@ -3270,27 +3329,41 @@ void e2rom_load_default_param(unsigned char menu)
void e2rom_read_leak(uint32 chn,S_WE_PARA *ppara) void e2rom_read_leak(uint32 chn,S_WE_PARA *ppara)
{ {
uint8 data = 0; uint8 data;
uint16 base = e2rom_active_power_addr();
if(atsc_para.wl_para.exc_5x==0) data = c256_byteread(base+chn*2+0);
ppara->power = (data<<8)|c256_byteread(base+chn*2+1);
/*
* Populate an upgraded unit's missing V1.1 entry from the measured
* V1.1 defaults and persist it in the independent V1.1 EEPROM table.
*/
if((ppara->power>WE_POWER_MAX) &&
(atsc_para.system_para.hardware_version == HARDWARE_VERSION_V1_1))
{ {
data = c256_byteread(EEPROM_CH2_POWER_ADDR+chn*2+0); if((chn>=FREQ_MIN_V1)&&(chn<=FREQ_MAX_V3))
ppara->power = (data<<8)|c256_byteread(EEPROM_CH2_POWER_ADDR+chn*2+1);
if(ppara->power>WE_POWER_MAX)
{ {
ppara->power = e2rom_read_fac_power_default_3x(chn); ppara->power = we_power_v1_1_v[chn-FREQ_MIN_V1];
}
else if((chn>=FREQ_MIN_U)&&(chn<=FREQ_MAX_U))
{
ppara->power = we_power_v1_1[chn-FREQ_MIN_U];
}
if(ppara->power<=WE_POWER_MAX)
{
c256_bytewrite(EEPROM_CH_POWER_V1_1_ADDR+chn*2+0,ppara->power>>8);
c256_bytewrite(EEPROM_CH_POWER_V1_1_ADDR+chn*2+1,ppara->power);
} }
} }
else
{
data = c256_byteread(EEPROM_CH1_POWER_ADDR+chn*2+0);
ppara->power = (data<<8)|c256_byteread(EEPROM_CH1_POWER_ADDR+chn*2+1);
if(ppara->power>WE_POWER_MAX) if(ppara->power>WE_POWER_MAX)
{ {
if(atsc_para.wl_para.exc_5x==0)
ppara->power = e2rom_read_fac_power_default_3x(chn);
else
ppara->power = e2rom_read_fac_power_default_5x(chn); ppara->power = e2rom_read_fac_power_default_5x(chn);
}
} }
} }
extern void fpga_read_system(S_SYSTEM_PARA *ppara); extern void fpga_read_system(S_SYSTEM_PARA *ppara);
@@ -3443,6 +3516,7 @@ void e2rom_read_all_para(void)
e2rom_load_default_param(2); e2rom_load_default_param(2);
e2rom_load_default_param(3); e2rom_load_default_param(3);
e2rom_fac_power_rst_v1_1();
if(atsc_para.wl_para.exc_5x==0) //此处是将非当前标准的we功率也置为默认值. if(atsc_para.wl_para.exc_5x==0) //此处是将非当前标准的we功率也置为默认值.
{ {
e2rom_fac_power_rst_5x(); e2rom_fac_power_rst_5x();
+29 -3
View File
@@ -80,11 +80,26 @@ void uart_debug(uint8 *pbuf,uint32 len)
#define HMC472_STEP_MDB 500 #define HMC472_STEP_MDB 500
#define HMC472_STEPS_MAX 63 #define HMC472_STEPS_MAX 63
#define ADRV9009_ATT_BASE 8000 #define ADRV9009_ATT_BASE 8000
#define ADRV9009_ATT_MAX 40000
/*
* The post-reset measurements were made in V1.0 software mode and established
* that LCD -11 dB produces 0 dBm at the 563 MHz reference point. Therefore
* V1.1 needs 11 dB additional attenuation for LCD 0 dB to map to the same
* physical 0 dBm output.
*/
#define V1_1_OUTPUT_GAIN_MDB 11000
static int32 g_last_total_mdb = -1; static int32 g_last_total_mdb = -1;
static uint16 g_last_adrv9009_att = 0xFFFF; static uint16 g_last_adrv9009_att = 0xFFFF;
static volatile uint8 g_adrv9009_ready = 0; static volatile uint8 g_adrv9009_ready = 0;
static int32 hardware_output_gain_mdb(void)
{
return atsc_para.system_para.hardware_version == HARDWARE_VERSION_V1_1
? V1_1_OUTPUT_GAIN_MDB : 0;
}
/* /*
* Validate a stored power command only after the current channel's WE power * Validate a stored power command only after the current channel's WE power
* has been loaded. A raw attenuation of zero is a valid physical maximum; * has been loaded. A raw attenuation of zero is a valid physical maximum;
@@ -98,6 +113,7 @@ static uint8 normalize_new_power_rf_db(S_WE_PARA *pwe, S_RF_PARA *prf)
raw_total_mdb = (int32)RAW_MAX_OUTPUT_MDB raw_total_mdb = (int32)RAW_MAX_OUTPUT_MDB
- ((int32)prf->db + (int32)pwe->power - (int32)REF_POWER_UNITS) - ((int32)prf->db + (int32)pwe->power - (int32)REF_POWER_UNITS)
* (int32)PWR_UNIT_TO_MDB; * (int32)PWR_UNIT_TO_MDB;
raw_total_mdb += hardware_output_gain_mdb();
if(raw_total_mdb >= 0) if(raw_total_mdb >= 0)
return 0; return 0;
@@ -1057,6 +1073,7 @@ uint16 fpga_limit_power_target(S_WE_PARA *pwe, S_RF_PARA *prf, uint16 target_pow
total_mdb = (int32)RAW_MAX_OUTPUT_MDB total_mdb = (int32)RAW_MAX_OUTPUT_MDB
- ((int32)prf->db + (int32)pwe->power - (int32)REF_POWER_UNITS) - ((int32)prf->db + (int32)pwe->power - (int32)REF_POWER_UNITS)
* (int32)PWR_UNIT_TO_MDB; * (int32)PWR_UNIT_TO_MDB;
total_mdb += hardware_output_gain_mdb();
if(total_mdb <= 0) if(total_mdb <= 0)
return prf->power; return prf->power;
@@ -1087,12 +1104,13 @@ void fpga_save_power(S_WE_PARA *pwe,S_RF_PARA *prf)
total_mdb = (int32)RAW_MAX_OUTPUT_MDB total_mdb = (int32)RAW_MAX_OUTPUT_MDB
- ((int32)prf->db + (int32)pwe->power - (int32)REF_POWER_UNITS) - ((int32)prf->db + (int32)pwe->power - (int32)REF_POWER_UNITS)
* (int32)PWR_UNIT_TO_MDB; * (int32)PWR_UNIT_TO_MDB;
total_mdb += hardware_output_gain_mdb();
if(total_mdb < 0) if(total_mdb < 0)
total_mdb = 0; total_mdb = 0;
if(total_mdb > (int32)(ADRV9009_ATT_BASE + HMC472_STEPS_MAX * HMC472_STEP_MDB)) if(total_mdb > (int32)(ADRV9009_ATT_MAX + HMC472_STEPS_MAX * HMC472_STEP_MDB))
total_mdb = ADRV9009_ATT_BASE + HMC472_STEPS_MAX * HMC472_STEP_MDB; total_mdb = ADRV9009_ATT_MAX + HMC472_STEPS_MAX * HMC472_STEP_MDB;
if(total_mdb >= (int32)ADRV9009_ATT_BASE) if(total_mdb >= (int32)ADRV9009_ATT_BASE)
{ {
@@ -1100,7 +1118,13 @@ void fpga_save_power(S_WE_PARA *pwe,S_RF_PARA *prf)
agc_att_val = (uint8)(hmc_extra / HMC472_STEP_MDB); agc_att_val = (uint8)(hmc_extra / HMC472_STEP_MDB);
if(agc_att_val > HMC472_STEPS_MAX) if(agc_att_val > HMC472_STEPS_MAX)
agc_att_val = HMC472_STEPS_MAX; agc_att_val = HMC472_STEPS_MAX;
adrv9009_att_val = (uint16)(ADRV9009_ATT_BASE + (hmc_extra % HMC472_STEP_MDB));
/*
* Keep ADRV9009 near its 8000 mdB optimum while HMC472 has range.
* Once HMC472 reaches 63, use the remaining ADRV9009 range up to
* 40000 mdB instead of clipping the combined attenuation at 39500.
*/
adrv9009_att_val = (uint16)(total_mdb - agc_att_val * HMC472_STEP_MDB);
} }
else else
{ {
@@ -1141,6 +1165,8 @@ void fpga_save_power(S_WE_PARA *pwe,S_RF_PARA *prf)
} }
g_last_total_mdb = total_mdb; g_last_total_mdb = total_mdb;
printf("[power] hardware=V1.%d offset_mdb=%d\n",
atsc_para.system_para.hardware_version, hardware_output_gain_mdb());
printf("[power] we=%3d db=%3d total_mdb=%5d | agc_att=%d adrv_att=%d\n", printf("[power] we=%3d db=%3d total_mdb=%5d | agc_att=%d adrv_att=%d\n",
pwe->power, prf->db, total_mdb, agc_att_val, adrv9009_att_val); pwe->power, prf->db, total_mdb, agc_att_val, adrv9009_att_val);
+1 -1
View File
@@ -272,7 +272,7 @@
#define USE_NETWORK_DNS 0 // 是否配置dns #define USE_NETWORK_DNS 0 // 是否配置dns
#define USE_NEW_POWER_CFG 1 // HMC472 + ADRV9009 power allocation #define USE_NEW_POWER_CFG 1 // HMC472 + ADRV9009 power allocation
#define USE_FREQ_CHANGE_RESET_PWR 1 // 切换频点后是否先将输出功率降到-25dB #define USE_FREQ_CHANGE_RESET_PWR 0 // 切换频点后是否先将输出功率降到-25dB
#if USE_BIG_LCD #if USE_BIG_LCD
+3
View File
@@ -38,6 +38,7 @@ typedef enum
EEPROM_ADRV9009_ATT_L, EEPROM_ADRV9009_ATT_L,
EEPROM_ADRV9009_ORX_MANU_GAIN, EEPROM_ADRV9009_ORX_MANU_GAIN,
EEPROM_SPEC_ENABLE, EEPROM_SPEC_ENABLE,
EEPROM_HARDWARE_VERSION,
EEPROM_CHANNEL_ADDR = 0x50, //RF 相关 EEPROM_CHANNEL_ADDR = 0x50, //RF 相关
@@ -188,6 +189,8 @@ typedef enum
//工厂菜单当前WK为0x220, 工厂菜单power定义到0x300,中间预留部分空间 //工厂菜单当前WK为0x220, 工厂菜单power定义到0x300,中间预留部分空间
EEPROM_CH1_POWER_ADDR = 0x300, //约60多字节 EEPROM_CH1_POWER_ADDR = 0x300, //约60多字节
EEPROM_CH2_POWER_ADDR = 0X400, //1.42(3X+)功率控制字 EEPROM_CH2_POWER_ADDR = 0X400, //1.42(3X+)功率控制字
// V1.1独立频点WE表;0x500~0x5A7,未配置项回退到V1.0表
EEPROM_CH_POWER_V1_1_ADDR = 0x500,
EEPROM_PSTS_TS_EDIT = 0x600, //开关 EEPROM_PSTS_TS_EDIT = 0x600, //开关
EEPROM_PSTS_TSIDH, //tsid EEPROM_PSTS_TSIDH, //tsid
+10
View File
@@ -106,6 +106,15 @@
#define WE_POWER_MIN 0 #define WE_POWER_MIN 0
#define WE_POWER_MAX 500 #define WE_POWER_MAX 500
typedef enum
{
HARDWARE_VERSION_V1_0 = 0,
HARDWARE_VERSION_V1_1,
HARDWARE_VERSION_END
} HARDWARE_VERSION;
#define DEFAULT_HARDWARE_VERSION HARDWARE_VERSION_V1_1
#define OCXO_MAX 10 //单位0.1hz system菜单 #define OCXO_MAX 10 //单位0.1hz system菜单
#define OCXO_UNIT 106 //保存时的放大倍数 #define OCXO_UNIT 106 //保存时的放大倍数
#define LOG_RSSI_ADJUST 107 //读取tuner的rssi修正值 #define LOG_RSSI_ADJUST 107 //读取tuner的rssi修正值
@@ -372,6 +381,7 @@ typedef struct
uint8 agc_att; uint8 agc_att;
uint16 adrv9009_att; uint16 adrv9009_att;
uint8 orx_manu_gain; uint8 orx_manu_gain;
uint8 hardware_version;
}S_SYSTEM_PARA,*PS_SYSTEM_PARA; }S_SYSTEM_PARA,*PS_SYSTEM_PARA;
typedef struct typedef struct
+1
View File
@@ -225,6 +225,7 @@ typedef struct
uint8 agc_att; uint8 agc_att;
uint16 adrv9009_att; uint16 adrv9009_att;
uint8 orx_manu_gain; uint8 orx_manu_gain;
uint8 hardware_version;
}S_CGI_SET,*PS_CGI_SET; }S_CGI_SET,*PS_CGI_SET;
typedef struct typedef struct
+20
View File
@@ -272,6 +272,7 @@ void http_load_sys(S_CGI_SET *ppara)
ppara->agc_att = atsc_para.system_para.agc_att; ppara->agc_att = atsc_para.system_para.agc_att;
ppara->adrv9009_att = atsc_para.system_para.adrv9009_att; ppara->adrv9009_att = atsc_para.system_para.adrv9009_att;
ppara->orx_manu_gain = atsc_para.system_para.orx_manu_gain; ppara->orx_manu_gain = atsc_para.system_para.orx_manu_gain;
ppara->hardware_version = atsc_para.system_para.hardware_version;
} }
#if ERR_TO_LCM #if ERR_TO_LCM
@@ -975,6 +976,25 @@ void http_write_sys(S_CGI_SET *ppara)
c256_bytewrite(EEPROM_ADRV9009_ATT_L, ppara->adrv9009_att&0xff); c256_bytewrite(EEPROM_ADRV9009_ATT_L, ppara->adrv9009_att&0xff);
} }
#endif #endif
if(ppara->hardware_version < HARDWARE_VERSION_END &&
ppara->hardware_version != atsc_para.system_para.hardware_version)
{
/*
* V1.1 -> V1.0 removes 13 dB of compensation. Always switch
* RF off before applying a hardware profile change.
*/
atsc_para.rf_para.rf = 0;
c256_bytewrite(EEPROM_RF_ADDR, 0);
fpga_set_rf_output(0);
atsc_para.system_para.hardware_version = ppara->hardware_version;
c256_bytewrite(EEPROM_HARDWARE_VERSION, ppara->hardware_version);
atsc_para.we_para.ch = atsc_para.rf_para.txfreq;
e2rom_read_leak(atsc_para.we_para.ch, &atsc_para.we_para);
fpga_save_we(&atsc_para.we_para);
log_printf(LOG_INFO, I_USER_CFG,
"hardware version changed to V1.%d; RF forced off; WE=%u reloaded\n",
ppara->hardware_version, atsc_para.we_para.power);
}
if(ppara->orx_manu_gain!=atsc_para.system_para.orx_manu_gain){ if(ppara->orx_manu_gain!=atsc_para.system_para.orx_manu_gain){
cfg_adrv_orx_manu_gain(ppara->orx_manu_gain); cfg_adrv_orx_manu_gain(ppara->orx_manu_gain);
atsc_para.system_para.orx_manu_gain = ppara->orx_manu_gain; atsc_para.system_para.orx_manu_gain = ppara->orx_manu_gain;
+11
View File
@@ -788,6 +788,11 @@ int get_sys_cfg(char *pbuf,short bufMaxLen)
atsc_para.system_para.adrv9009_att, atsc_para.system_para.adrv9009_att,
atsc_para.system_para.orx_manu_gain atsc_para.system_para.orx_manu_gain
); );
{
size_t used = strlen(pbuf);
if(used < (size_t)bufMaxLen)
snprintf(pbuf + used, (size_t)bufMaxLen - used, "#%u", atsc_para.system_para.hardware_version);
}
#if CGI_PRINT #if CGI_PRINT
//printf("[%s,%d] %s\n", __FUNCTION__,__LINE__,pbuf); //printf("[%s,%d] %s\n", __FUNCTION__,__LINE__,pbuf);
@@ -888,6 +893,12 @@ int set_sys_cfg(char *pbuf, short bufMaxLen)
p_cgi_sys_para->adrv9009_att = (uint16)atoi(paraBuf[13]); p_cgi_sys_para->adrv9009_att = (uint16)atoi(paraBuf[13]);
#endif #endif
p_cgi_sys_para->orx_manu_gain = (uint16)atoi(paraBuf[14]); p_cgi_sys_para->orx_manu_gain = (uint16)atoi(paraBuf[14]);
if(paraNum > 15)
{
uint8 hardware_version = (uint8)atoi(paraBuf[15]);
if(hardware_version < HARDWARE_VERSION_END)
p_cgi_sys_para->hardware_version = hardware_version;
}
} }
#if 1 #if 1
+19 -3
View File
@@ -230,6 +230,7 @@ function SetFormDefaults(){
cf0.agc_att.value = Number(syspara[i++])*(-0.5); cf0.agc_att.value = Number(syspara[i++])*(-0.5);
cf0.adrv9009_att.value = syspara[i++]; cf0.adrv9009_att.value = syspara[i++];
cf0.orx_manu_gain.value = syspara[i++]; cf0.orx_manu_gain.value = syspara[i++];
cf0.hardware_version.value = (syspara[i] === undefined || Number(syspara[i]) !== 0) ? 1 : 0;
// sysnet form1 // sysnet form1
i = 1; i = 1;
@@ -478,6 +479,7 @@ function set_syspara() {
postData += "#"+cf.agc_att.value; postData += "#"+cf.agc_att.value;
postData += "#"+cf.adrv9009_att.value; postData += "#"+cf.adrv9009_att.value;
postData += "#"+cf.orx_manu_gain.value; postData += "#"+cf.orx_manu_gain.value;
postData += "#"+cf.hardware_version.value;
if(cf.ab_mode.value == "1" && Number(cf.adp.value) > 0) { if(cf.ab_mode.value == "1" && Number(cf.adp.value) > 0) {
alert("The ADPC cannot be set to Hold or Update or UpdateLIN/UpdateNLIN mode when 'FSSI Refresh' switch is 'On'. Please change 'FSSI Refresh' to 'Off'."); alert("The ADPC cannot be set to Hold or Update or UpdateLIN/UpdateNLIN mode when 'FSSI Refresh' switch is 'On'. Please change 'FSSI Refresh' to 'Off'.");
@@ -675,7 +677,10 @@ function uploadfile(){
// 1. Update the Text (You already have this) // 1. Update the Text (You already have this)
result.innerHTML = "Uploading package ... " + percent + '%'; result.innerHTML = "Uploading package ... " + percent + '%';
// 2. ADD THIS LINE to update the Green Bar visual // 2. Show + update the Green Bar. Starts display:none so it is not an empty
// grey bar at rest (matches the sibling #prog_id / #rst_progid pattern);
// revealed here when upload begins, hidden again on completion below.
$("#progress").show();
document.getElementById('progress').value = percent; document.getElementById('progress').value = percent;
if(e.loaded == e.total){ if(e.loaded == e.total){
@@ -751,6 +756,7 @@ function uploadFpgaFile(){
xhr.upload.onprogress = function(e){ xhr.upload.onprogress = function(e){
var percent = Math.round(e.loaded / e.total * 100); var percent = Math.round(e.loaded / e.total * 100);
result.innerHTML = "Uploading .mcs ... " + percent + '%'; result.innerHTML = "Uploading .mcs ... " + percent + '%';
$("#fpga_progress").show(); // reveal on upload start (starts display:none, sibling pattern)
document.getElementById('fpga_progress').value = percent; document.getElementById('fpga_progress').value = percent;
if(e.loaded == e.total){ if(e.loaded == e.total){
// upload done -> the board now erases+writes the flash; track its progress // upload done -> the board now erases+writes the flash; track its progress
@@ -1612,6 +1618,16 @@ function set_timezone() {
<input maxlength="3" size="5" name="orx_manu_gain" value="">(195~255) <input maxlength="3" size="5" name="orx_manu_gain" value="">(195~255)
</td> </td>
</tr> </tr>
<tr>
<td>HardwareVersion</td>
<td>
<select name="hardware_version" id="hardware_version" style="width:100px">
<option value="0">V1.0</option>
<option value="1">V1.1</option>
</select>
</td>
<td colspan="2">Changing this setting turns RF output Off.</td>
</tr>
<tr> <tr>
<td><input type="button" class="btn-modern" disabled id="para_set_id" alt="Set" value="Set" onclick="return set_syspara();"></td> <td><input type="button" class="btn-modern" disabled id="para_set_id" alt="Set" value="Set" onclick="return set_syspara();"></td>
</tr> </tr>
@@ -1825,7 +1841,7 @@ function set_timezone() {
<progress id="prog_id" class="aw-progress" style="width:100%; margin-left:1px; display:none" value="0" max="100"></progress> <progress id="prog_id" class="aw-progress" style="width:100%; margin-left:1px; display:none" value="0" max="100"></progress>
<br><br> <br><br>
<span id='result' style="color:var(--info-text);font-size:18px"></span> <span id='result' style="color:var(--info-text);font-size:18px"></span>
<progress id='progress' class="aw-progress" style="width:100%; margin-left:1px" value="0" max="100"></progress> <progress id='progress' class="aw-progress" style="width:100%; margin-left:1px; display:none" value="0" max="100"></progress>
</div> </div>
<br> <br>
@@ -1844,7 +1860,7 @@ function set_timezone() {
<br> <br>
<div> <div>
<span id='fpga_result' style="color:var(--info-text);font-size:18px"></span> <span id='fpga_result' style="color:var(--info-text);font-size:18px"></span>
<progress id='fpga_progress' class="aw-progress" style="width:100%; margin-left:1px" value="0" max="100"></progress> <progress id='fpga_progress' class="aw-progress" style="width:100%; margin-left:1px; display:none" value="0" max="100"></progress>
</div> </div>
</main> </main>