📄 lcodu_msg.c
字号:
//* Object : report the dynamic parameters of odu.
//* report in main loop
//* autor : wang ping
//* Input Parameters : subject:the subject number of the content to be reported
//* Output Parameters : none
//*-----------------------------------------------------------------------------
void report_status_pro(unsigned char subject)
{
unsigned char ack,i;
ack=0;
switch(subject)
{
case 0x20:
ODU_MSG_INT_DATA(v_temp_value)
break;
case 0x21:
ODU_MSG_INT_DATA(v_temp_value)
break;
case 0x22:
ODU_MSG_INT_DATA(v_temp_max)
break;
case 0x23:
ODU_MSG_INT_DATA(v_rssi*10)
break;
case 0x24:
ODU_MSG_INT_DATA(v_tx_power)
break;
default:
break;
}
if(ack>0)
{
ODU_MSG_HEAD(0x03,subject,ack);
ack+=5;
load_msg(tx_buf,ack);
}
}
/*上报告警信息*/
//*-----------------------------------------------------------------------------
//* Function Name : report_alarm_pro
//* Object : report the alarm information of odu.
//* report immediately when alarm occurs
//* autor : wang ping
//* Input Parameters : none
//* Output Parameters : none
//*-----------------------------------------------------------------------------
void report_alarm_pro()
{
ODU_MSG_HEAD(0x01,0,2);
tx_buf[6]=v_odu_alarm[0];
tx_buf[5]=v_odu_alarm[1];
load_msg(tx_buf,7);
}
/*打包debug上报消息*/
//*-----------------------------------------------------------------------------
//* Function Name : debug_report_pro
//* Object : report the informations for debugging,used only by monitor.
//* report in main loop
//* autor : wang ping
//* Input Parameters : subject:the subject number of the content to be reported
//* Output Parameters : none
//*-----------------------------------------------------------------------------
void debug_report_pro(unsigned char subject)
{
unsigned char i,ack;
ack=0;
switch(subject)
{
case 0x35:
//PA Atten
ODU_MSG_INT_DATA(v_att0*10);
break;
case 0x40:
ODU_MSG_INT_DATA(adc_det_in)
break;
case 0x41:
ODU_MSG_INT_DATA(adc_det_out)
break;
case 0x42:
ODU_MSG_INT_DATA(v_rssi*10)
break;
case 0x43:
ODU_MSG_INT_DATA(adc_rssi)
break;
case 0x44:
ODU_MSG_INT_DATA(v_dac_spi)
break;
case 0x47:
//adc_rssi1
ODU_MSG_INT_DATA(adc_rssi_1)
break;
case 0X48:
//adc_rssi2
ODU_MSG_INT_DATA(adc_rssi_2)
break;
case 0X49:
//att1a
tx_buf[5]=v_at1a;
ack=1;
break;
case 0X4A:
//att1b
tx_buf[5]=v_at1b;
ack=1;
break;
case 0X4B:
//att1c
tx_buf[5]=v_at1c;
ack=1;
break;
case 0X4C:
//att1d
tx_buf[5]=v_at1d;
ack=1;
break;
case 0x4D:
//tx power target
ODU_MSG_INT_DATA(v_txpower_max);
break;
case 0x56:
ODU_MSG_INT_DATA(v_att1)
break;
default:
break;
}
if(ack>0)
{
ODU_MSG_HEAD(0x03,subject,ack);
ack+=5;
load_msg(tx_buf,ack);
}
}
/*for debug; report all debug options*/
//*-----------------------------------------------------------------------------
//* Function Name : report_all_debugs();
//* Object : execute the set command,and give the response
//* autor : wang ping
//* Input Parameters : none
//* Output Parameters : none
//*-----------------------------------------------------------------------------
void report_all_debugs()
{
debug_report_pro(0x35);
debug_report_pro(0x40);
debug_report_pro(0x41);
debug_report_pro(0x42);
debug_report_pro(0x43);
debug_report_pro(0x44);
debug_report_pro(0x47);
debug_report_pro(0x48);
debug_report_pro(0x49);
debug_report_pro(0x4a);
debug_report_pro(0x4b);
debug_report_pro(0x4c);
debug_report_pro(0x4d);
debug_report_pro(0x56);
}
/*处理set命令*/
//*-----------------------------------------------------------------------------
//* Function Name : set_cmd_pro
//* Object : execute the set command,and give the response
//* autor : wang ping
//* Input Parameters : subject:the subject number of the content to be reported
//* component:the component ID in commands field
//* Output Parameters : none
//*-----------------------------------------------------------------------------
void set_cmd_pro(unsigned char subject,unsigned char component)
{ unsigned char ack;
unsigned char i;
unsigned char buf[8];
unsigned int address;
ack=0;
switch (subject)
{
case 0xB0:
//config name
address=(unsigned int)&config_b[0];
buf[0]=infor_msg[8];buf[1]=infor_msg[7];
buf[2]=infor_msg[6];buf[3]=infor_msg[5];
ack=at91f_flash_write(address,4,buf);
if(ack!=0) { v_odu_alarm[1]|=ALARM_EEPROM; alarm_flag=1;}
else v_odu_alarm[1]&=NORMAL_EEPROM;
break;
case 0xB1:
//config name
address=(unsigned int)&config_b[1];
buf[0]=infor_msg[8];buf[1]=infor_msg[7];
buf[2]=infor_msg[6];buf[3]=infor_msg[5];
ack=at91f_flash_write(address,4,buf);
if(ack!=0) { v_odu_alarm[1]|=ALARM_EEPROM; alarm_flag=1;}
else v_odu_alarm[1]&=NORMAL_EEPROM;
break;
case 0xB2:
//config name
address=(unsigned int)&config_b[2];
buf[0]=infor_msg[8];buf[1]=infor_msg[7];
buf[2]=infor_msg[6];buf[3]=infor_msg[5];
ack=at91f_flash_write(address,4,buf);
if(ack!=0) { v_odu_alarm[1]|=ALARM_EEPROM; alarm_flag=1;}
else
{ v_odu_alarm[1]&=NORMAL_EEPROM;
//Delay(500);
//odu_data_init();
v_sysmax_txpower=(config_b[2]>>16)&0x0ff;
v_c_m_tx=(config_b[2]>>8)&0x0ff;
v_c_m_rx=config_b[2]&0x00ff;
}
break;
case 0xB3:
//config name
address=(unsigned int)&config_b[3];
buf[0]=infor_msg[8];buf[1]=infor_msg[7];
buf[2]=infor_msg[6];buf[3]=infor_msg[5];
ack=at91f_flash_write(address,4,buf);
if(ack!=0) { v_odu_alarm[1]|=ALARM_EEPROM; alarm_flag=1;}
else v_odu_alarm[1]&=NORMAL_EEPROM;
break;
case 0xB4:
//config name
address=(unsigned int)&config_b[4];
buf[0]=infor_msg[8];buf[1]=infor_msg[7];
buf[2]=infor_msg[6];buf[3]=infor_msg[5];
ack=at91f_flash_write(address,4,buf);
if(ack!=0) { v_odu_alarm[1]|=ALARM_EEPROM; alarm_flag=1;}
else
{ v_odu_alarm[1]&=NORMAL_EEPROM;
//Delay(500);
//odu_data_init();
v_c_tx_if=(config_b[4]>>16)&0x0ffff;
v_c_tx_if*=1000;
v_c_rx_if=config_b[4]&0x00ffff;
v_c_rx_if*=1000;
}
break;
case 0xB5:
//config data1
address=(unsigned int)&config_b[5];
buf[0]=infor_msg[8];buf[1]=infor_msg[7];
buf[2]=infor_msg[6];buf[3]=infor_msg[5];
ack=at91f_flash_write(address,4,buf);
if(ack!=0) { v_odu_alarm[1]|=ALARM_EEPROM; alarm_flag=1;}
else
{ v_odu_alarm[1]&=NORMAL_EEPROM;
//Delay(500);
//odu_data_init();
//odu_spi_init();
syn_select=(config_b[5]>>24)&0x0ff;
v_at1d =(config_b[5]>>16)&0x0ff;
v_at1e =(config_b[5]>>8)&0x0ff;
}
break;
case 0xB6:
//config data2
address=(unsigned int)&config_b[6];
buf[0]=infor_msg[8];buf[1]=infor_msg[7];
buf[2]=infor_msg[6];buf[3]=infor_msg[5];
ack=at91f_flash_write(address,4,buf);
if(ack!=0) { v_odu_alarm[1]|=ALARM_EEPROM; alarm_flag=1;}
else
{ v_odu_alarm[1]&=NORMAL_EEPROM;
//Delay(500);
//odu_data_init();
v_rssi_calibrate=(config_b[6]>>8)&0x0ff;
v_txpower_max=config_b[6]&0x0ff;
//v_tx_power=(v_txpower_max-v_att0)*10-diplexer_tx_loss;
}
break;
case 0xB7:
address=(unsigned int)&config_b[7];
buf[0]=infor_msg[8];buf[1]=infor_msg[7];
buf[2]=infor_msg[6];buf[3]=infor_msg[5];
ack=at91f_flash_write(address,4,buf);
if(ack!=0) { v_odu_alarm[1]|=ALARM_EEPROM; alarm_flag=1;}
else
{ v_odu_alarm[1]&=NORMAL_EEPROM;
//Delay(500);
//odu_data_init();
v_gate_a=(config_b[7]>>24)&0x0ff;
v_gate_b=(config_b[7]>>16)&0x0ff;
v_gate_c=(config_b[7]>>8)&0x0ff;
}
//config data3
break;
case 0xB8:
//config data4
address=(unsigned int)&config_b[8];
buf[0]=infor_msg[8];buf[1]=infor_msg[7];
buf[2]=infor_msg[6];buf[3]=infor_msg[5];
ack=at91f_flash_write(address,4,buf);
if(ack!=0) { v_odu_alarm[1]|=ALARM_EEPROM; alarm_flag=1;}
else v_odu_alarm[1]&=NORMAL_EEPROM;
break;
case 0xB9:
//config data5
address=(unsigned int)&config_b[9];
buf[0]=infor_msg[8];buf[1]=infor_msg[7];
buf[2]=infor_msg[6];buf[3]=infor_msg[5];
ack=at91f_flash_write(address,4,buf);
if(ack!=0) { v_odu_alarm[1]|=ALARM_EEPROM; alarm_flag=1;}
else v_odu_alarm[1]&=NORMAL_EEPROM;
break;
case 0xBA:
/*address=(unsigned int)&config_b[10];
buf[0]=infor_msg[8];buf[1]=infor_msg[7];
buf[2]=infor_msg[6];buf[3]=infor_msg[5];
ack=at91f_flash_write(address,4,buf);
if(ack!=0) { v_odu_alarm[1]|=ALARM_EEPROM; alarm_flag=1;}
else
{ v_odu_alarm[1]&=NORMAL_EEPROM;
att_step_delay=config_b[10];
}*/
ack=0;
break;
case 0xBB:
address=(unsigned int)&config_b[11];
buf[0]=infor_msg[8];buf[1]=infor_msg[7];
buf[2]=infor_msg[6];buf[3]=infor_msg[5];
ack=at91f_flash_write(address,4,buf);
if(ack!=0) { v_odu_alarm[1]|=ALARM_EEPROM; alarm_flag=1;}
else
{ v_odu_alarm[1]&=NORMAL_EEPROM;
//odu_data_init();
v_en_telemetry_alarm=(config_b[11]>>24)&0x0ff;
v_tm_telemetry_alarm=((config_b[11]>>16)&0x0ff)*4;
}
break;
case 0xBC:
case 0xBD:
case 0xBE:
case 0xBF:
ack=0;
break;
case 0x14:
//set tx diplexer loss
address=(unsigned int)&diplexer_tx_loss;
ack=1;
ltob.ch[3]=infor_msg[5]; ltob.ch[2]=infor_msg[6];
ltob.ch[1]=infor_msg[7]; ltob.ch[0]=infor_msg[8];
if(ltob.ul>100) break;
ack=at91f_flash_write(address,4,(unsigned char *)ltob.ch);
if(ack!=0) { v_odu_alarm[1]|=ALARM_EEPROM; alarm_flag=1;}
else v_odu_alarm[1]&=NORMAL_EEPROM;
break;
case 0x15:
//set rx diplexer loss
address=(unsigned int)&diplexer_rx_loss;
ack=1;
ltob.ch[3]=infor_msg[5]; ltob.ch[2]=infor_msg[6];
ltob.ch[1]=infor_msg[7]; ltob.ch[0]=infor_msg[8];
if(ltob.ul>100) break;
ack=at91f_flash_write(address,4,(unsigned char *)ltob.ch);
if(ack!=0) { v_odu_alarm[1]|=ALARM_EEPROM; alarm_flag=1;}
else v_odu_alarm[1]&=NORMAL_EEPROM;
break;
case 0x30:
//Set Mute or Unmute
i=infor_msg[5];
if(i==0) v_txmute=0;
else if(i==1) v_txmute=1;
ack=set_mute(i);
break;
case 0x31:
//set auto mute
i=infor_msg[5];
v_txmute_auto=i;
break;
case 0x33:
//TX
ltob.ch[3]=infor_msg[5]; ltob.ch[2]=infor_msg[6];
ltob.ch[1]=infor_msg[7]; ltob.ch[0]=infor_msg[8];
if(ltob.ul!=v_tx_frequency) ack=1;
v_tx_frequency=ltob.ul;
v_tx_f_lo=(v_tx_frequency-v_c_tx_if)/(float)v_c_m_tx;
Set_TX_RX_RF(TX_RF,(v_tx_f_lo/1000));
if(ack==1) ack=at91f_flash_write(EADDR_F_TX,4,(unsigned char *)ltob.ch);
if(ack!=0) { v_odu_alarm[1]|=ALARM_EEPROM; alarm_flag=1;}
else v_odu_alarm[1]&=NORMAL_EEPROM;
break;
case 0x34:
//RX
ltob.ch[3]=infor_msg[5]; ltob.ch[2]=infor_msg[6];
ltob.ch[1]=infor_msg[7]; ltob.ch[0]=infor_msg[8];
if(ltob.ul!=v_rx_frequency) ack=1;
v_rx_frequency=ltob.ul;
v_rx_f_lo=(v_rx_frequency-v_c_rx_if)/(float)v_c_m_rx;
Set_TX_RX_RF(RX_RF,(v_rx_f_lo/1000));
if(ack==1) ack=at91f_flash_write(EADDR_F_RX,4,(unsigned char *)ltob.ch);
if(ack!=0) { v_odu_alarm[1]|=ALARM_EEPROM; alarm_flag=1;}
else v_odu_alarm[1]&=NORMAL_EEPROM;
break;
case 0x35:
//PA
address=(unsigned int)&v_e_att0;
ltob.ch[3]=infor_msg[5]; ltob.ch[2]=infor_msg[6];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -