GPRS_C_SDK
GPRS_C_SDK copied to clipboard
No SMS messages arrive after 20-30 messages
1. SDK version(SDK 版本)
{ 2.129 - 2.112 - 2.108 }
2. In what kind of operation problems appear, and how to reproduce the problem ?(什么样的操作步骤问题会出现,是否是稳定复现,如何复现问题?)
{ Hello everyone. I am using the SMS example only to resive text messages. I have shortened the example but still have the same problem. The A9G starts up correctly but, after receiving between 20 or 30 messages correctly, it stopped receiving messages and the only way to re-receive messages is by restarting the module. When the messages don't arrive, I can see that other events keep running. Thanks.
#define MAIN_TASK_STACK_SIZE (2048 * 2)
#define MAIN_TASK_PRIORITY 0
#define MAIN_TASK_NAME "SMS Test Task"
static HANDLE mainTaskHandle = NULL;
static uint8_t flag = 0;
void clearSms(){
int i;
for (i = 1; i < 31; ++i){
SMS_DeleteMessage(i,SMS_STATUS_ALL,SMS_STORAGE_SIM_CARD);
}
}
void SMSInit()
{
if(!SMS_SetFormat(SMS_FORMAT_TEXT,SIM0))
{
Trace(1,"sms set format error");
return;
}
SMS_Parameter_t smsParam = {
.fo = 17 ,
.vp = 167,
.pid= 0 ,
.dcs= 8 ,//0:English 7bit, 4:English 8 bit, 8:Unicode 2 Bytes
};
if(!SMS_SetParameter(&smsParam,SIM0))
{
Trace(1,"sms set parameter error");
return;
}
if(!SMS_SetNewMessageStorage(SMS_STORAGE_SIM_CARD))
{
Trace(1,"sms set message storage fail");
return;
}
}
void EventDispatch(API_Event_t* pEvent)
{
switch(pEvent->id)
{
case API_EVENT_ID_NO_SIMCARD:
Trace(10,"!!NO SIM CARD%d!!!!",pEvent->param1);
break;
case API_EVENT_ID_SYSTEM_READY:
Trace(1,"system initialize complete");
flag |= 1;
break;
case API_EVENT_ID_NETWORK_REGISTERED_HOME:
case API_EVENT_ID_NETWORK_REGISTERED_ROAMING:
Trace(2,"network register success");
flag |= 2;
break;
case API_EVENT_ID_SMS_SENT:
Trace(2,"Send Message Success");
break;
case API_EVENT_ID_SMS_RECEIVED:
Trace(2,"received message");
uint8_t* header = pEvent->pParam1;
uint8_t* content = pEvent->pParam2;
Trace(2,"message header:%s",header);
Trace(2,"message content:%s",content);
clearSms();
break;
default:
break;
}
if(flag == 3)
{
Trace(2, "SMS ready");
flag = 0;
}
}
void SMSTest(void* pData)
{
API_Event_t* event=NULL;
SMSInit();
while(1)
{
if(OS_WaitEvent(mainTaskHandle, (void**)&event, OS_TIME_OUT_WAIT_FOREVER))
{
EventDispatch(event);
Trace(1, "Event: %d", event->id);
OS_Free(event->pParam1);
OS_Free(event->pParam2);
OS_Free(event);
}
}
}
void sms_Main()
{
mainTaskHandle = OS_CreateTask(SMSTest,
NULL, NULL, MAIN_TASK_STACK_SIZE, MAIN_TASK_PRIORITY, 0, 0, MAIN_TASK_NAME);
OS_SetUserMainHandle(&mainTaskHandle);
}
}
This firmware has a lot of bugs and out of support 8(.
I can only suggest running clearSms in a loop :)
I think that you have no space for new SMS.
Some SMS can't be deleted for some unknown reason. Some can be deleted just after several tries, and here is a bug with unicode. You can find it in issues.