Hi everyone
I used as base the FreeRTOS example of the sdk examples for the cc3200 to convert the TCP example into a RTOS example, I have the TCP as a task and the menu and UART as another Task, so when I want to send something from the task runing the UART to the TCP Task I use a Queue and there is where I have the problem, when I use the first Queue to send the info to the TCP task I get stuck in the function vListInsert. The TCP task is just receiving in what mode do you want the TCP connection (client or server) by a queue and in another queue I send first the IP, then the Port and finally the packet to send.
I've been reading some info and I saw that the principle problem is the configMAX_SYSCALL_INTERRUPT_PRIORITY but I haven't move that value I use the default value that come with the FreeRTOS example.
Above are my task declaration:
osi_TaskCreate( TaskTCP, "TCPTask",\
OSI_STACK_SIZE,NULL, 1, NULL );
osi_TaskCreate( TaskCore, "CoreTask",\
OSI_STACK_SIZE,NULL, 2, NULL );
Here I declare my queue:
OsiReturnVal_e osi_retVal;
osi_retVal = osi_MsgQCreate(&MsgTCP, "MESSAGETCP", MAX_MSG_LENGTH, 10);
if(osi_retVal != OSI_OK)
{
// Queue was not created and must not be used.
while(1);
}
osi_retVal = osi_MsgQCreate(&MsgMENU, "MENU", MAX_MSG_LENGTH, 10);
if(osi_retVal != OSI_OK)
{
// Queue was not created and must not be used.
while(1);
}
MAX_MSG_LENGTH has a value of 50
And here I use the queue that is when the program get stuck in the function I mention
osi_MsgQWrite(&MsgMENU, acCmdStore, OSI_NO_WAIT);
osi_Sleep(100);
The size of acCmdStore is about 8 bytes so it fix perfect in the size of 50 bytes of the queue.
I read that the most comun problem is the interrupt priority but I don't know how to fix it.
I don´t know what I missing so if you can tell me something it would be great.
Regards,
Juan