//define receive sms struct member variable.
Err err;
UInt16 gTelRefNum;
TelAppID gTelAppID;

TelSmsMultiPartExtensionType extensionType;
TelSmsExtensionType ext;
TelSmsDateTimeType gTeldatetime;

TelSmsGetAvailableStorageType m_Stores;
UInt16 m_Index;
UInt16 m_Storage=0;
UInt16 m_Retrieved=0;
UInt16 m_StorageCount=0;
UInt16 m_DataSize;
TelSmsDeliveryMessageType m_Sms;
TelSmsDeliveryAdvancedGSMType tmp;

//load telephone library

UInt16 TelLoadLibrary()
{
err = SysLibFind(kTelMgrLibName, &gTelRefNum);
if(err!=0) err = SysLibLoad(kTelMgrDatabaseType,kTelMgrDatabaseCreator, &gTelRefNum); if (err==errNone||err==0)
return gTelRefNum;
else
return 0;
}


void InitSms() // the receive sms struct member variable is filled,
Please you point out where is error?
{
extensionType.bytesSent = 0;
extensionType.partCurrent = 0;
extensionType.partCount = 0;
extensionType.partId = 0;

ext.extensionTypeId = kTelSmsMultiPartExtensionTypeId;
ext.extension.mp = extensionType;

gTeldatetime.absolute = false;
gTeldatetime.dateTime = 86400*2;

tmp.protocolId = kTelSmsDefaultProtocol;
tmp.replyPath = false;
tmp.serviceCenterNumber = "+8613800755500";//sms center code,there is china
tmp.serviceCenterNumberSize = kTelMaxPhoneNumberLen + 1;
m_Sms.version = kTelSmsAPIVersion; m_Sms.dataSize = m_DataSize;
m_Sms.data = (unsigned char*)MemPtrNew(m_DataSize + 1 );
m_Sms.data[m_Sms.dataSize]='\0';
m_Sms.dataCodingScheme = kTelSmsDefaultGSMEncoding;
m_Sms.originatingAddressSize=kTelMaxPhoneNumberLen + 1;
m_Sms.originatingAddress =(char*)MemPtrNew(m_Sms.originatingAddressSize);
m_Sms.otherToReceive=false;
m_Sms.reportDeliveryIndicator=false;
m_Sms.standardType = kTelNwkGSM;
m_Sms.extensionsCount = 1;
m_Sms.extensionsP = &ext;
m_Sms.advancedParams.advancedGSM=tmp;
}



void CleanSms() { memset(&ext,0,sizeof(ext)); memset(&tmp,0,sizeof(tmp)); memset(&extensionType,0,sizeof(extensionType)); memset(&gTeldatetime,0,sizeof(gTeldatetime)); memset(&m_Sms,0,sizeof(m_Sms)); }



const char* Next() // read every sms content.
{ m_Index++;
CleanSms();
InitSms();
m_Sms.index = m_Index;
//I have track here it's right, m_Index's value is change for 0 to sms count' value
// m_StorageCount is total of sms count


if (m_Retrieved < m_StorageCount)
  {
  //there is the sticking point.it can't read sms content normally
 // I guess &m_Sms it's error be filled?

err = TelSmsReadMessage(gTelRefNum, gTelAppID,&m_Sms,NULL);
if( err==errNone)
{
m_Retrieved ++;
return (const char*)m_Sms.data;
}
else
{
if (err == telErrInvalidIndex)
m_Retrieved = m_StorageCount;
return "failed"; }


  }
}
above function be used it's return failed all at times. why?
thank you in advance, Please help me!

_________________________________________________________________
享用世界上最大的电子邮件系统― MSN Hotmail。 http://www.hotmail.com



-- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/

Reply via email to