⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcodu_msg.c

📁 是关于arm7的代码
💻 C
📖 第 1 页 / 共 4 页
字号:
         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();
                }
                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();
                }
                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();
                }
                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();
                }
                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();
                }
                //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 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();
                }
                break;
              case 0x14:
                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:
                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];
                ltob.ch[1]=infor_msg[7]; ltob.ch[0]=infor_msg[8];
                if(ltob.ul>300) ltob.ul=300;
                if(ltob.ul!=v_e_att0) 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;  
                
                i=(unsigned char)(ltob.ul/10);
                set_att(0,i);
                //i=3+v_txpower_max-v_att0;
                //v_tx_target=v_e_pmax[i];
                
                break;
              case 0x38:
                //Rest Temp
                //v_temp_max=v_temp_value;
                address=(unsigned int)&v_temp_max;
                ltob.ul=v_temp_value;
                ack=at91f_flash_write(address,4,ltob.ch);
                if(ack!=0) { v_odu_alarm[1]|=ALARM_EEPROM; alarm_flag=1;}
                else v_odu_alarm[1]&=NORMAL_EEPROM;
                break;
#if(0)
              case 0x50:
                //AR1
                break;
              case 0x51:
                //AR2
                break;
              case 0x52:
                //AR3
                break;
              case 0x53:
                //AR4
                break;
#endif
              /*case 0x55:
                //Set  AT1
                i=infor_msg[8];
                if(i>30) i=30;
                set_att(0,i);
                break;*/
              case 0x56:
                //Set AT2
                i=infor_msg[8];
                if(i>30) i=30;
                set_att(1,i);
                v_at1b=v_att1-v_at1a-v_at1c-v_at1d-v_at1e;
                break;
              case 0x57:
                //Set AT3
                //break;
              case 0x65:
                //Set AT4
                ack=1;
                break;
              case 0x58:
                //TxIF 2610
                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!=(unsigned int)v_tx_f_lo) ack=1;
                v_tx_f_lo=ltob.ul;
                Set_TX_RX_RF(TX_RF,(v_tx_f_lo/1000));
                v_tx_frequency=v_tx_f_lo*v_c_m_tx+v_c_tx_if;
                ltob.ul=v_tx_frequency;
                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 0x5a:
                ltob.ch[3]=infor_msg[5]; ltob.ch[2]=infor_msg[6];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -