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

📄 atpte.c

📁 free sources for gsm
💻 C
📖 第 1 页 / 共 5 页
字号:

   ParameterStructInit(paramArray, 1);
   result = ParseForNOptIntAndString( paramStrPtr, 1, paramArray, &nFinal );

   if((result != DIDIT) || (paramArray[0].Value != 1))
      return AT_ECMDERROR;
   
   /* Tx Power calibration data update Start */ 
   GSMstrcpy(str,"\nGSM Power Cal Table");
   ATSendReply( str );
   for( i= 0 ; i < NO_GSM_RAMPS ; i++ )
      {
      TxConfigRampData = (_RF_RAMP_CONFIG_S *)&HWCalibrationData.GSMPowerRampTables[i][0];

      GSMsprintf(str,"[%d]%d ", i+5, TxConfigRampData->ramp.level);

      GSMsprintf(str_temp,"%d(%d) ", TxConfigRampData->lower_adjust.level_adjust, TxConfigRampData->ramp.level + TxConfigRampData->lower_adjust.level_adjust);
      GSMstrcat(str,str_temp);

      GSMsprintf(str_temp,"%d(%d)", TxConfigRampData->upper_adjust.level_adjust,TxConfigRampData->ramp.level + (INT8)TxConfigRampData->upper_adjust.level_adjust);
      GSMstrcat(str,str_temp);
      ATSendReply( str );
      }

   GSMstrcpy(str,"\nDCS Power Cal Table");
   ATSendReply( str );   
   for( i= 0 ; i < NO_DCS_RAMPS ; i++ )
      {
      TxConfigRampData = (_RF_RAMP_CONFIG_S *)&HWCalibrationData.DCSPowerRampTables[i][0];

      GSMsprintf(str,"[%d]%d ", i, TxConfigRampData->ramp.level);

      GSMsprintf(str_temp,"%d(%d) ", TxConfigRampData->lower_adjust.level_adjust, TxConfigRampData->ramp.level + TxConfigRampData->lower_adjust.level_adjust);
      GSMstrcat(str,str_temp);

      GSMsprintf(str_temp,"%d(%d)", TxConfigRampData->upper_adjust.level_adjust, TxConfigRampData->ramp.level + (INT8)TxConfigRampData->upper_adjust.level_adjust);
      GSMstrcat(str,str_temp);
      ATSendReply( str );
      }
   /* Tx Power calibration data update end */ 



   /* Gain calibration data update Start */ 
   for(i=0; i<60; i++)
      local_rx_gain_cal_val.Hw_Rf_Gain_Cal_Table[i] = HWCalibrationData.Hw_Rf_Gain_Cal_Table[i];

   GSMsprintf(str,"\nPGA stage\n");
   for( i=0; i<6; i++ )
      {
      if(i&1)
         {
         GSMsprintf(str_temp,"%d/100(x%02x) ",local_rx_gain_cal_val.rf_gain_cal_s.bb_cal.comp_pga[i>>1].upper * 100 / 16
                                 ,(UINT8)local_rx_gain_cal_val.rf_gain_cal_s.bb_cal.comp_pga[i>>1].upper);
         GSMstrcat(str,str_temp);
         }
      else
         {
         GSMsprintf(str_temp,"%d/100(x%02x) ",local_rx_gain_cal_val.rf_gain_cal_s.bb_cal.comp_pga[i>>1].lower * 100 / 16
                                 ,(UINT8)local_rx_gain_cal_val.rf_gain_cal_s.bb_cal.comp_pga[i>>1].lower);
         GSMstrcat(str,str_temp);
         }
      }
   ATSendReply( str );

   GSMsprintf(str,"mixer2 stage\n");
   GSMsprintf(str_temp,"%d/100(x%02x) %d/100(x%02x)",local_rx_gain_cal_val.rf_gain_cal_s.bb_cal.mixer2.lower * 100 / 16
                                    ,(UINT8)local_rx_gain_cal_val.rf_gain_cal_s.bb_cal.mixer2.lower
                                    ,local_rx_gain_cal_val.rf_gain_cal_s.bb_cal.mixer2.upper * 100 / 16
                                    ,(UINT8)local_rx_gain_cal_val.rf_gain_cal_s.bb_cal.mixer2.upper);
   GSMstrcat(str,str_temp);
   ATSendReply( str );
   
   GSMsprintf(str,"\ngsm_lna_cal stage\n");
   GSMsprintf(str_temp,"%d/100(x%02x)\n",local_rx_gain_cal_val.rf_gain_cal_s.gsm_lna_cal.gain_lna_on * 100 / 16
                               ,(UINT16)local_rx_gain_cal_val.rf_gain_cal_s.gsm_lna_cal.gain_lna_on);
   GSMstrcat(str,str_temp);
   ATSendReply( str );
   
   GSMsprintf(str,"frequency compansation\n");
   for( i=0; i<8; i++ )
      {
      if(i&1)
         {
         GSMsprintf(str_temp,"%d/100(x%02x) ",local_rx_gain_cal_val.rf_gain_cal_s.gsm_lna_cal.comp_lna_on[i>>1].upper * 100 / 16
                                  ,(UINT8)local_rx_gain_cal_val.rf_gain_cal_s.gsm_lna_cal.comp_lna_on[i>>1].upper);
         GSMstrcat(str,str_temp);
         }
      else
         {
         GSMsprintf(str_temp,"%d/100(x%02x) ",local_rx_gain_cal_val.rf_gain_cal_s.gsm_lna_cal.comp_lna_on[i>>1].lower * 100 / 16
                                  ,(UINT8)local_rx_gain_cal_val.rf_gain_cal_s.gsm_lna_cal.comp_lna_on[i>>1].lower);
         GSMstrcat(str,str_temp);
         }
      }
   ATSendReply( str );

   GSMsprintf(str,"mixer1 stage\n");
   GSMsprintf(str_temp,"%d/100(x%02x) %d/100(x%02x)",local_rx_gain_cal_val.rf_gain_cal_s.gsm_lna_cal.mixer1.lower * 100 / 16
                                      ,(UINT8)local_rx_gain_cal_val.rf_gain_cal_s.gsm_lna_cal.mixer1.lower
                                      ,local_rx_gain_cal_val.rf_gain_cal_s.gsm_lna_cal.mixer1.upper * 100 / 16
                                      ,(UINT8)local_rx_gain_cal_val.rf_gain_cal_s.gsm_lna_cal.mixer1.upper);
   GSMstrcat(str,str_temp);
   ATSendReply( str );

   GSMsprintf(str,"\ndcs_lna_cal stage\n");
   GSMsprintf(str_temp,"%d/100(x%04x)\n",local_rx_gain_cal_val.rf_gain_cal_s.dcs_lna_cal.gain_lna_on * 100 / 16
                            ,(UINT16)local_rx_gain_cal_val.rf_gain_cal_s.dcs_lna_cal.gain_lna_on);
   GSMstrcat(str,str_temp);
   ATSendReply( str );
   
   GSMsprintf(str,"frequency compansation\n");
   for( i=0; i<8; i++ )
      {
      if(i&1)
         {
         GSMsprintf(str_temp,"%d/100(x%02x) ",local_rx_gain_cal_val.rf_gain_cal_s.dcs_lna_cal.comp_lna_on[i>>1].upper * 100 / 16
                                 ,(UINT8)local_rx_gain_cal_val.rf_gain_cal_s.dcs_lna_cal.comp_lna_on[i>>1].upper);
         GSMstrcat(str,str_temp);
         }
      else
         {
         GSMsprintf(str_temp,"%d/100(x%02x) ",local_rx_gain_cal_val.rf_gain_cal_s.dcs_lna_cal.comp_lna_on[i>>1].lower * 100 / 16
                                 ,(UINT8)local_rx_gain_cal_val.rf_gain_cal_s.dcs_lna_cal.comp_lna_on[i>>1].lower);
         GSMstrcat(str,str_temp);
         }
      }
   ATSendReply( str );

   GSMsprintf(str,"mixer1 stage\n");
   GSMsprintf(str_temp,"%d/100(x%02x) %d/100(x%02x)\n",local_rx_gain_cal_val.rf_gain_cal_s.dcs_lna_cal.mixer1.lower * 100 / 16
                                      ,(UINT8)local_rx_gain_cal_val.rf_gain_cal_s.dcs_lna_cal.mixer1.lower
                                      ,local_rx_gain_cal_val.rf_gain_cal_s.dcs_lna_cal.mixer1.upper * 100 / 16
                                      ,(UINT8)local_rx_gain_cal_val.rf_gain_cal_s.dcs_lna_cal.mixer1.upper);
   GSMstrcat(str,str_temp);
   ATSendReply( str );
   /* Gain calibration data update End */

   /* AFC Calibration Value Display Start */
   GSMsprintf( str, "AFC DAC start value, %d\n", HWCalibrationData.AFCDACStartValue );
   ATSendReply( str );
   /* AFC Calibration Value Display End*/
   
   /* Battery Calubration data update Start */
   GSMsprintf(str,"\nBatt Calibration Data");   
   ATSendReply( str );
   if( ReadBattData( battlevel ) )
      {
      GSMsprintf( str,"  Type I  " );
      for( i = 0; i < 4 ; i++ )
         {
         GSMsprintf( str_temp,"%d ",battlevel[i] );
         GSMstrcat( str,str_temp);
         }
      ATSendReply( str );
      
      GSMsprintf( str,"  Type II  " );
      for( ; i < 8 ; i++ )
         {
         GSMsprintf( str_temp,"%d ",battlevel[i] );
         GSMstrcat( str,str_temp);
         }
      ATSendReply( str );
      }
   else
      ATSendReply( "   check sum error!!" );
   /* Battery Calubration data update End */

   GSMFree( str );
   GSMFree( str_temp );

#endif /* SILABS_RF */

   //ATSendReply( "SecCaldatalist:DONE" );

   return DIDIT;
}


/*- Local Functions ---------------------------------------------------------  */
/* Command for AvailableHW
/* Name: HndlATsAVAILABLEHW                                                                                        
/* Type: Set
/* Using : AT+AVAILABLEHW = value
/* Desc : 
/* Returns: OK or ERROR
/* Note : value 狼 蔼捞 1牢 版快俊父 悼累茄促. 
/* ------------------------------------------------------------------------*/
ATCMD_RESULT HndlATsAVAILABLEHW(INT8 *paramStrPtr)
{
   extern const SECHwBoardList sechwboardlist[DEFAULT_HWID+1];
   extern void  HWNVMGetHWIdString( UINT8 * putItHere );

   INT8 *str = ( INT8 * ) GSMMalloc( 512 );
   INT8 *hwIdBuffer = ( INT8 * ) GSMMalloc( 121 );   
   UINT8 hwid = HW_ID_NOT_FOUND;
   UINT8 i;
   UINT8  nFinal;
   ATCMD_RESULT result;
   PARAMETER_RECORD paramArray[1];

   ParameterStructInit(paramArray, 1);
   result = ParseForNOptIntAndString( paramStrPtr, 1, paramArray, &nFinal );

   if((result != DIDIT) || (paramArray[0].Value != 1))
      return AT_ECMDERROR;
      
   /* this has to come from somewhere else*/
   #if 0
   HWNVMGetHWIdString( hwIdBuffer );
   #else
   *hwIdBuffer = '\0';
   #endif
   for( i = 0; i < sizeof(sechwboardlist)/sizeof(SECHwBoardList) ; i++ )
      {
      GSMsprintf( str, "[%d] %s,", i, sechwboardlist[i].HWIDString );
      ATSendReply( str );
      
      if( GSMstrncmp( sechwboardlist[i].HWIDString, hwIdBuffer, HWIDSTRING_LEN ) == 0 )
         {
         hwid = sechwboardlist[i].HWID;
         }
      }
   
   GSMsprintf(str,"NVM saved Hw id [%d] %s", hwid, sechwboardlist[hwid].HWIDString);
   ATSendReply( str );

   GSMFree( hwIdBuffer );
   GSMFree( str );

   //ATSendReply( "AvailableHW:DONE" );

   return DIDIT;
}


/*- Local Functions ---------------------------------------------------------  */
/* Command for ClearWap
/* Name: HndlATsCLEARWAP                                                                                        
/* Type: Set
/* Using : AT+AVAILABLEHW= <Value>
/* Desc : Setting等 wap csd gprs狼 proxy 沥焊甫 NULL肺 檬扁拳 茄促.
/* Returns: OK or ERROR
/* Note : Value狼 蔼捞 1牢 版快俊父 悼累窍档废 窃.
/* ------------------------------------------------------------------------*/
ATCMD_RESULT HndlATsCLEARWAP(INT8 *paramStrPtr)
{
   int i;
   UINT8 NvmGoodBlock   = NVM_GOOD_BLOCK ;
   ProxyInfo  *ptrProxyInfo = (UINT8 *)GSMMalloc(sizeof(ProxyInfo));
   UINT8  nFinal;
   ATCMD_RESULT result;
   PARAMETER_RECORD paramArray[1];

   ParameterStructInit(paramArray, 1);
   result = ParseForNOptIntAndString( paramStrPtr, 1, paramArray, &nFinal );

   if((result != DIDIT) || (paramArray[0].Value != 1))
      return AT_ECMDERROR;
      
   // Clear UPServer;
   GSMmemset(ptrProxyInfo, 0x00 , sizeof(ProxyInfo));
   for( i=0 ; i < kNumWAPProxies ; i++) 
   {
      NVM_Write( E2P_UPSERVER(UP_SIMIndex, i), ptrProxyInfo ); 
      GSMmemcpy(&NW_Proxies[i], ptrProxyInfo, sizeof(ProxyInfo));
   }
   NVM_Write( E2P_CHECK_UP(0), &NvmGoodBlock );
   GSMFree(ptrProxyInfo);

   return DIDIT;
}


/*- Local Functions ---------------------------------------------------------  */
/* Command for Hardware ID
/* Name: HndlATrHWID                                                                                      
/* Type: Read
/* Using : AT+HWID?
/* Desc : Hardware ID 甫 佬绢柯促.  
/* Returns: OK or ERROR
/* Note :
/* ------------------------------------------------------------------------*/
ATCMD_RESULT HndlATrHWID(void)
{
   INT8 *str0 = ( INT8 * ) GSMMalloc( 125 );

   NVM_Read( E2P_HWID, str0 );

   str0[16]='\0';

   ATSendReply( str0 );
   GSMFree( str0 );

   // ATSendReply( "GetHWId:DONE" );

   return DIDIT;
}

/*- Local Functions ---------------------------------------------------------  */
/* Command for Hardware ID
/* Name: HndlATsHWID                                                                                      
/* Type: Set
/* Using : AT+HWID = "<HW ID>"
/* Desc : Hardware ID 甫 技泼茄促.
/* Returns: OK or ERROR
/* Note : <HW ID> -String
/* ------------------------------------------------------------------------*/
ATCMD_RESULT HndlATsHWID(INT8 *paramStrPtr)
{
   UINT16 stringLen;
   NVMMmiCal_t  MmiCal;
   UINT8 buff;
   UINT8  nFinal;
   ATCMD_RESULT result;
   PARAMETER_RECORD paramArray[1];

   ParameterStructInit(paramArray, 1);
   result = ParseForNOptIntAndString( paramStrPtr, 1, paramArray, &nFinal );

   if((result != DIDIT) || (paramArray[0].ParamType != ATCMD_PARAMTYPE_STRING))
      return AT_ECMDERROR;

   stringLen = paramArray[0].String.Len;
   
   if ( stringLen > sizeof(MmiCal.HWId) )
      stringLen = sizeof(MmiCal.HWId);

   GSMmemset(MmiCal.HWId, 0x00, sizeof(MmiCal.HWId)); /* garbage value reset */
   GSMmemcpy(MmiCal.HWId, paramArray[0].String.Buffer, stringLen);  
   NVM_Write(E2P_HWID,MmiCal.HWId);

   // ATSendReply( "SetHWId:DONE" );

   return DIDIT;
}


/*- Local Functions ---------------------------------------------------------  */
/* Command for Hardware Rev.
/* Name: HndlATrHWREV                                                                                      
/* Type: Read
/* Using : AT+HWREV?
/* Desc : Hardware version 阑  佬绢柯促.  
/* Returns: OK or ERROR
/* Note :
/* ------------------------------------------------------------------------*/
ATCMD_RESULT HndlATrHWREV(void)
{
   INT8 *str0 = ( INT8 * ) GSMMalloc( 125 );
   INT8 *str1 = ( INT8 * ) GSMMalloc( 125 );
   
   NVM_Read( E2P_HWREV, str0 );

   str0[8]='\0';
   GSMsprintf(str1,"hwrev:%s", str0);
   ATSendReply( str0 );
   GSMFree( str0 );
   GSMFree( str1 );
   // ATSendReply( "GetHWRev:DONE" );

   return DIDIT;
}

/*- Local Functions ---------------------------------------------------------  */
/* Command for Hardware Rev.
/* Name: HndlATsHWREV                                                                                      
/* Type: Set
/* Using : AT+HWREV="<value1>", <value2>
/* Desc : Hardware version 阑  setting 茄促.   
/* Returns: OK or ERROR
/* Note : <value1> - String
/*            <value2> - Number
/* ------------------------------------------------------------------------*/
ATCMD_RESULT HndlATsHWREV(INT8 *paramStrPtr)
{
   UINT16 stringLen;
   NVMMmiCal_t  MmiCal;
   UINT8 buff;
   UINT8  nFinal;
   ATCMD_RESULT result;
   PARAMETER_RECORD paramArray[2];

   ParameterStructInit(paramArray, 2);
   result = ParseForNOptIntAndString( paramStrPtr, 2, paramArray, &nFinal );

   if((paramArray[0].ParamType != ATCMD_PARAMTYPE_STRING) || \
       (paramArray[1].ParamType != ATCMD_PARAMTYPE_NUMERIC))
       return AT_ECMDERROR;

   stringLen = paramArray[0].String.Len;
   if ( stringLen > sizeof(MmiCal.HWRev) )
      stringLen = sizeof(MmiCal.HWRev);

   GSMmemset(MmiCal.HWRev, 0x00, sizeof(MmiCal.HWRev)); /* garbage value reset */
   GSMmemcpy(MmiCal.HWRev, paramArray[0].String.Buffer, stringLen);  
   NVM_Write(E2P_HWREV,MmiCal.HWRev);  

⌨️ 快捷键说明

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