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

📄 atpte.c

📁 free sources for gsm
💻 C
📖 第 1 页 / 共 5 页
字号:
   ParameterStructInit(paramArray, 1);
   result = ParseForNOptIntAndString( paramStrPtr, 1, paramArray, &nFinal );

   if((result != DIDIT) || (nFinal > 1))
      return AT_ECMDERROR;

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

   
   GSMsprintf( str, "%s", paramArray[0].String.Buffer);

   for( i = 0; i < (sizeof(nvm_offset_size)/sizeof(NVM_ACCESS_DATA)) ; i++ )
   {  
      if ( GSMstrcmp( str, nvm_offset_size[i].name ) == 0 )
      {
         GSMsprintf( str2,"%s:%d,%d",nvm_offset_size[i].name,
                                     nvm_offset_size[i].offset,
                                     nvm_offset_size[i].size);

         NVM_Read( nvm_offset_size[i].offset, nvm_offset_size[i].size, buff );

         GSMstrcpy(buff2,"data:");

         for( j = 0 ; j < nvm_offset_size[i].size ; j++ )
         {
            GSMsprintf( hexstr,"%02xh ", ( UINT8 )buff[j] );
            GSMstrcat( buff2, hexstr );
         }

         GSMstrcat( str2 ,buff2 );
         
         ATSendReply( str2 );

         break;
         }
      }

   return DIDIT;
}

/*- Local Functions ---------------------------------------------------------  */
/* Command for MMI NVM Contents
/* Name: HndlATsMMINVMCONTENTS                                                                                           
/* Type: Set
/* Using : AT+MMINVMCONTENTS="<Field Name>"
/* Desc : MMINVMCONTENTS俊 措茄 蔼 技泼 
/* Returns: OK or ERROR
/* ------------------------------------------------------------------------*/
ATCMD_RESULT HndlATsMMINVMCONTENTS(INT8* paramStrPtr)
{
   INT8  i;
   INT8 *str = ( INT8 * ) GSMMalloc( 256 );
   INT8 *buff = ( UINT8 * ) GSMMalloc( 256 );
   UINT8  nFinal;
   ATCMD_RESULT result;
   PARAMETER_RECORD paramArray[64];

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

   if((paramArray[0].ParamType != ATCMD_PARAMTYPE_STRING) ||( nFinal <= 1))
      return AT_ECMDERROR;
   
   GSMsprintf( str, "%s", paramArray[0].String.Buffer);

   for ( i = 0; i < nFinal - 1; i++ )
      {
      buff[i] = paramArray[i+1].Value;
      }

   for( i = 0 ; i < (sizeof(nvm_offset_size)/sizeof(NVM_ACCESS_DATA)) ; i++ )
      {  
      if ( GSMstrcmp( str, nvm_offset_size[i].name ) == 0 )
         {
         NVM_Write( nvm_offset_size[i].offset, nvm_offset_size[i].size, buff );  /* Get Ring Volume */
         break;
         }
      }

   GSMFree( str );
   GSMFree( buff );

//   ATSendReply("SetMmiNVMContents:DONE");
   return DIDIT;
}

/*- Local Functions ---------------------------------------------------------  */
/* Command for MS Personal
/* Name: HndlATrMSPERSONAL                                                                                           
/* Type: Read
/* Using : AT+MSPERSONAL?
/* Desc : HndlATsMSPERSONAL俊 技泼等 蔼阑 焊咯霖促. 
/* Returns: OK or ERROR
/* Note :
/* ------------------------------------------------------------------------*/
ATCMD_RESULT HndlATrMSPERSONAL(void)
{
   UINT8 i,j;
   INT8 hexstr[10];
   //INT8 *buff = ( UINT8 * ) GSMMalloc( sizeof( NVM_MsPersonal_t ) );
   INT8 *str = ( INT8 * ) GSMMalloc( 125 );

   union local_MsPersonal_t{
   INT8  buff[sizeof( NVM_MsPersonal_t )];
   NVM_MsPersonal_t MsPersonal;
   }l_MsPersonal_t;

   NVM_Read( E2P_MS_PERSONAL, l_MsPersonal_t.buff );

   GSMsprintf( str,"TestPattern:%04xh ", l_MsPersonal_t.MsPersonal.TestPattern );
   ATSendReply( str );

   GSMsprintf( str,"LevelOfLock:%02xh ", l_MsPersonal_t.MsPersonal.LevelOfLock );
   ATSendReply( str );

   GSMsprintf( str,"SPCode:%02xh ", l_MsPersonal_t.MsPersonal.SPCode );
   ATSendReply( str );

   GSMsprintf( str,"ImsiMask[%d]:", sizeof( l_MsPersonal_t.MsPersonal.ImsiMask ) );
   for( i = 0 ; i < sizeof( l_MsPersonal_t.MsPersonal.ImsiMask ) ; i++ )
      {
      GSMsprintf( hexstr,"%02xh ", l_MsPersonal_t.MsPersonal.ImsiMask[i] );
      GSMstrcat( str, hexstr );
      }
   ATSendReply( str );

   GSMsprintf( str,"PCK %08xh ", l_MsPersonal_t.MsPersonal.PCK.Pwd );
   GSMsprintf( hexstr,"%02xh ", l_MsPersonal_t.MsPersonal.PCK.Attempts );
   GSMstrcat( str, hexstr );
   GSMsprintf( hexstr,"%02xh ", l_MsPersonal_t.MsPersonal.PCK.MaxAttempts );
   GSMstrcat( str, hexstr );
   ATSendReply( str );

   GSMsprintf( str,"NCK %08xh ", l_MsPersonal_t.MsPersonal.NCK.Pwd );
   GSMsprintf( hexstr,"%02xh ", l_MsPersonal_t.MsPersonal.NCK.Attempts );
   GSMstrcat( str, hexstr );
   GSMsprintf( hexstr,"%02xh ", l_MsPersonal_t.MsPersonal.NCK.MaxAttempts );
   GSMstrcat( str, hexstr );
   ATSendReply( str );

   GSMsprintf( str,"SCK %08xh ", l_MsPersonal_t.MsPersonal.SCK.Pwd );
   GSMsprintf( hexstr,"%02xh ", l_MsPersonal_t.MsPersonal.SCK.Attempts );
   GSMstrcat( str, hexstr );
   GSMsprintf( hexstr,"%02xh ", l_MsPersonal_t.MsPersonal.SCK.MaxAttempts );
   GSMstrcat( str, hexstr );
   ATSendReply( str );

   GSMsprintf( str,"SPCK %08xh ", l_MsPersonal_t.MsPersonal.SPCK.Pwd );
   GSMsprintf( hexstr,"%02xh ", l_MsPersonal_t.MsPersonal.SPCK.Attempts );
   GSMstrcat( str, hexstr );
   GSMsprintf( hexstr,"%02xh ", l_MsPersonal_t.MsPersonal.SPCK.MaxAttempts );
   GSMstrcat( str, hexstr );
   ATSendReply( str );

   GSMsprintf( str,"MCK %08xh ", l_MsPersonal_t.MsPersonal.MCK.Pwd );
   GSMsprintf( hexstr,"%02xh ", l_MsPersonal_t.MsPersonal.MCK.Attempts );
   GSMstrcat( str, hexstr );
   GSMsprintf( hexstr,"%02xh ", l_MsPersonal_t.MsPersonal.MCK.MaxAttempts );
   GSMstrcat( str, hexstr );
   ATSendReply( str );

   for( i = 0 ; i < sizeof( NVM_MsPersonal_t ) ; i++ )
      {
      GSMstrcpy(str,"data:");
      j = 0;
      while( j < 10 && i < sizeof( NVM_MsPersonal_t ) )
         {
         GSMsprintf(hexstr,"%02xh ", ( UINT8 )l_MsPersonal_t.buff[i] );
         GSMstrcat( str, hexstr );
         j++;
         i++;
         }
         i--;
         ATSendReply( str );
      }
   GSMFree( str );

   return DIDIT;
}
   
/*- Local Functions ---------------------------------------------------------  */
/* Command for MS Personal
/* Name: HndlATsMSPERSONAL                                                                                           
/* Type: Set
/* Using : AT+MSPERSONAL= <value>
/* Desc : MSPERSONAL俊 措茄 蔼 技泼 
/* Returns: OK or ERROR
/* Note : 蔼阑 茄锅俊 弥措 10俺父 技泼 啊瓷 
/* ------------------------------------------------------------------------*/
ATCMD_RESULT HndlATsMSPERSONAL(INT8* paramStrPtr)
{
   UINT16 i,j;
   UINT16 calTableSize = 60;
   INT8 *buff = ( UINT8 * ) GSMMalloc( sizeof(NVM_MsPersonal_t) );
   INT8 *str = ( INT8 * ) GSMMalloc( 256 );
   UINT8  nFinal, addr[10], data[10];
   CHAR  temp[10];
   ATCMD_RESULT result;
   PARAMETER_RECORD paramArray[20];

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

   if((result != DIDIT) || (nFinal > 20))
      return AT_ECMDERROR;

   for(j=0; j < nFinal ; j += 2)
   {
      if(paramArray[j].ParamType != ATCMD_PARAMTYPE_NUMERIC)
         return AT_ECMDERROR;
      if(paramArray[j+1].ParamType != ATCMD_PARAMTYPE_STRING)
         return AT_ECMDERROR;
   }
   
   /* Check all indices given are in range */
   for ( i = 0; i < sizeof(NvmAccessElemArray); i += 2 )
      {
      if ( NvmAccessElemArray[i] != 0xFF && NvmAccessElemArray[i] > calTableSize )
         {
         ATSendReply( "SetGainCalTableEl:WRONG:INVALID_INPUT_INDEX" );
         return AT_ECMDERROR;
         }
      }

   GSMmemset(addr, 0x00, 10);
   GSMmemset(data, 0x00, 10);

   for(i=0, j = 0; i < nFinal; i += 2, j++)
   {
      addr[j] = paramArray[i].Value;
      GSMmemset(temp, 0x00, 10);
      GSMmemcpy(temp, paramArray[i+1].String.Buffer, paramArray[i+1].String.Len);
      data[j] = (UINT8)CTAsciiToINT32(temp);
   }

   i = 0, j = 0;

   NVM_Read(E2P_MS_PERSONAL,buff);
/*
   while ( NvmAccessElemArray[i] != 0xFF && i < sizeof(NvmAccessElemArray)  && j < nFinal)
      {
      buff[NvmAccessElemArray[i]] = data[j++];
      i++;
      i++;
      }
*/
   while(i < nFinal / 2)
   {
      buff[addr[i]] = data[i];
      i++;
   }
   
   NVM_Write(E2P_MS_PERSONAL,buff);

   GSMmemset( &NvmAccessElemArray[0], 0xFF, sizeof(NvmAccessElemArray) );   /* Reseting the values of the array. */
   GSMFree( buff );

   return DIDIT;
}


/*- Local Functions ---------------------------------------------------------  */
/* Command for Set Time
/* Name: HndlATrTIME                                                                                          
/* Type: Read
/* Using : AT+SETTIME?
/* Desc : Time 蔼阑 焊咯霖促.
/* Returns: OK or ERROR
/* Note :
/* ------------------------------------------------------------------------*/
ATCMD_RESULT HndlATrTIME(void)
{
   UINT8 i;
   UHDateTime *TheTimebuff = GSMMalloc( sizeof( UHDateTime ) );
   INT8 *str0 = ( INT8 * ) GSMMalloc( 125 );
   INT8 *str1 = ( INT8 * ) GSMMalloc( 125 );
   UINT8 *pTimeStruct;

   pTimeStruct = (UINT8 *)TheTimebuff;

   UHGetTime( (UHDateTime *)TheTimebuff );

   GSMsprintf(str0,"hour:%d", TheTimebuff->hour);
   ATSendReply(str0);
   GSMsprintf(str0,"min:%d", TheTimebuff->min);
   ATSendReply(str0);
   GSMsprintf(str0,"sec:%d", TheTimebuff->sec);
   ATSendReply(str0);
   GSMsprintf(str0,"day:%d", TheTimebuff->day);
   ATSendReply(str0);
   GSMsprintf(str0,"dayofweek:%d", TheTimebuff->dayofweek);
   ATSendReply(str0);
   GSMsprintf(str0,"month:%d", TheTimebuff->month);
   ATSendReply(str0);
   GSMsprintf(str0,"year:%d", TheTimebuff->year);
   ATSendReply(str0);

   GSMstrcpy(str0,"data:");
   for( i=0; i<sizeof( UHDateTime ); i++)
   {
      GSMsprintf(str1,"%d ",pTimeStruct[i]);
      GSMstrcat(str0,str1);
   }
   ATSendReply(str0);

   GSMFree( TheTimebuff );
   GSMFree( str0 );
   GSMFree( str1 );

   //ATSendReply( "GetTime:DONE" );

   return DIDIT;
}

/*- Local Functions ---------------------------------------------------------  */
/* Command for Set Time
/* Name: HndlATsTIME                                                                                          
/* Type: Set
/* Using : AT+SETTIME=<Hour>,<min>,<sec>,<day>,<dayofweek>,<month>,<year>
/* Desc : Time 蔼阑 技泼茄促.
/* Returns: OK or ERROR
/* Note :
/* ------------------------------------------------------------------------*/
ATCMD_RESULT HndlATsTIME(INT8* paramStrPtr)
{
   UINT16 i;
   INT8 *str = ( INT8 * ) GSMMalloc( 40 );
//   UINT8 *buff = ( UINT8 * ) GSMMalloc( 100 );
   UHDateTime data;
   UINT8  nFinal;
   ATCMD_RESULT result;
   PARAMETER_RECORD paramArray[7];

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

   if(result != DIDIT)
      return AT_ECMDERROR;

/*
   for ( i = 0; i< nFinal; i++ )
      {
      buff[i] = (UINT8)paramArray[i].Value;
      }
*/

   data.hour = paramArray[0].Value;
   data.min = paramArray[1].Value;
   data.sec = paramArray[2].Value;
   data.day = paramArray[3].Value;
   data.dayofweek = paramArray[4].Value;
   data.month = paramArray[5].Value;
   data.year = paramArray[6].Value;
   
   /* data check */
   if(0)
   {
      ATSendReply( "Unknown Time Data format" );
      return AT_ECMDERROR;
   }

//   UHSetTime( (UHDateTime *)buff );
   UHSetTime(&data);

   GSMFree( str );
//   GSMFree( buff );

   return DIDIT;
}

/*- Local Functions ---------------------------------------------------------  */
/* Command for SecListCalData
/* Name: HndlATsSECLISTCALDATA                                                                                         
/* Type: Set
/* Using : AT+SECLISTCALDATA = vlaue
/* Desc : 
/* Returns: OK or ERROR
/* Note : value 狼 蔼捞 1牢 版快俊 悼累茄促. 
/* ------------------------------------------------------------------------*/
ATCMD_RESULT HndlATsSECLISTCALDATA(INT8* paramStrPtr)
{
#if !defined (SILABS_RF)
   INT8 *str = ( INT8 * ) GSMMalloc( 512 );
   INT8 *str_temp = ( INT8 * ) GSMMalloc( 512 );
   INT16 i;
   _RF_RAMP_CONFIG_S *TxConfigRampData;

   union RxGainTable{
   INT8  Hw_Rf_Gain_Cal_Table[60];
   _RF_GAIN_CAL_S  rf_gain_cal_s;
   }local_rx_gain_cal_val;

   UINT8 battlevel[8];
   UINT8  nFinal;
   ATCMD_RESULT result;
   PARAMETER_RECORD paramArray[1];

⌨️ 快捷键说明

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