mirror of
https://github.com/apache/nuttx.git
synced 2026-06-01 16:59:28 +08:00
CC3000 driver updates from David Sidrane
This commit is contained in:
@@ -77,7 +77,6 @@
|
|||||||
#include "cc3000_socket.h"
|
#include "cc3000_socket.h"
|
||||||
#include "cc3000.h"
|
#include "cc3000.h"
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Pre-processor Definitions
|
* Pre-processor Definitions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@@ -782,12 +781,13 @@ static int cc3000_open(FAR struct file *filep)
|
|||||||
}
|
}
|
||||||
|
|
||||||
pthread_attr_init(&tattr);
|
pthread_attr_init(&tattr);
|
||||||
|
tattr.stacksize = 336;
|
||||||
param.sched_priority = SCHED_PRIORITY_MAX;
|
param.sched_priority = SCHED_PRIORITY_MAX;
|
||||||
pthread_attr_setschedparam(&tattr, ¶m);
|
pthread_attr_setschedparam(&tattr, ¶m);
|
||||||
|
|
||||||
ret = pthread_create(&priv->workertid, &tattr, cc3000_worker,
|
ret = pthread_create(&priv->workertid, &tattr, cc3000_worker,
|
||||||
(pthread_addr_t)priv);
|
(pthread_addr_t)priv);
|
||||||
if (ret < 0)
|
if (ret != 0)
|
||||||
{
|
{
|
||||||
mq_close(priv->queue);
|
mq_close(priv->queue);
|
||||||
priv->queue = 0;
|
priv->queue = 0;
|
||||||
@@ -796,16 +796,16 @@ static int cc3000_open(FAR struct file *filep)
|
|||||||
}
|
}
|
||||||
|
|
||||||
pthread_attr_init(&tattr);
|
pthread_attr_init(&tattr);
|
||||||
|
tattr.stacksize = 460;
|
||||||
param.sched_priority = SCHED_PRIORITY_DEFAULT+10;
|
param.sched_priority = SCHED_PRIORITY_DEFAULT+10;
|
||||||
pthread_attr_setschedparam(&tattr, ¶m);
|
pthread_attr_setschedparam(&tattr, ¶m);
|
||||||
ret = pthread_create(&priv->selecttid, &tattr, select_thread_func,
|
ret = pthread_create(&priv->selecttid, &tattr, select_thread_func,
|
||||||
(pthread_addr_t)priv);
|
(pthread_addr_t)priv);
|
||||||
if (ret < 0)
|
if (ret != 0)
|
||||||
{
|
{
|
||||||
pthread_t workertid = priv->workertid;
|
pthread_t workertid = priv->workertid;
|
||||||
priv->workertid = -1;
|
priv->workertid = -1;
|
||||||
pthread_cancel(workertid);
|
pthread_cancel(workertid);
|
||||||
pthread_join(workertid,NULL);
|
|
||||||
mq_close(priv->queue);
|
mq_close(priv->queue);
|
||||||
priv->queue = 0;
|
priv->queue = 0;
|
||||||
ret = -errno;
|
ret = -errno;
|
||||||
@@ -1525,6 +1525,7 @@ int cc3000_accept_socket(int sd, int minor, struct sockaddr *addr,
|
|||||||
sem_post(&priv->selectsem); /* Wake select thread if need be */
|
sem_post(&priv->selectsem); /* Wake select thread if need be */
|
||||||
sem_wait(&priv->accepting_socket.acc.semwait); /* Wait caller on select to finish */
|
sem_wait(&priv->accepting_socket.acc.semwait); /* Wait caller on select to finish */
|
||||||
sem_wait(&priv->selectsem); /* Sleep select thread */
|
sem_wait(&priv->selectsem); /* Sleep select thread */
|
||||||
|
|
||||||
if (priv->accepting_socket.acc.status != CC3000_SOC_ERROR)
|
if (priv->accepting_socket.acc.status != CC3000_SOC_ERROR)
|
||||||
{
|
{
|
||||||
*addr = priv->accepting_socket.addr;
|
*addr = priv->accepting_socket.addr;
|
||||||
|
|||||||
@@ -72,7 +72,6 @@ static struct
|
|||||||
uint8_t rx_buffer[CC3000_RX_BUFFER_SIZE];
|
uint8_t rx_buffer[CC3000_RX_BUFFER_SIZE];
|
||||||
mqd_t queue;
|
mqd_t queue;
|
||||||
sem_t *done;
|
sem_t *done;
|
||||||
|
|
||||||
} spiconf;
|
} spiconf;
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
@@ -195,7 +194,8 @@ static void *unsoliced_thread_func(void *parameter)
|
|||||||
while(spiconf.run)
|
while(spiconf.run)
|
||||||
{
|
{
|
||||||
memset(spiconf.rx_buffer,0,sizeof(spiconf.rx_buffer));
|
memset(spiconf.rx_buffer,0,sizeof(spiconf.rx_buffer));
|
||||||
nbytes = mq_receive(spiconf.queue, spiconf.rx_buffer, CC3000_RX_BUFFER_SIZE, 0);
|
nbytes = mq_receive(spiconf.queue, spiconf.rx_buffer,
|
||||||
|
CC3000_RX_BUFFER_SIZE, 0);
|
||||||
if (nbytes > 0)
|
if (nbytes > 0)
|
||||||
{
|
{
|
||||||
nlldbg("%d Processed\n",nbytes);
|
nlldbg("%d Processed\n",nbytes);
|
||||||
@@ -240,12 +240,15 @@ void SpiOpen(gcSpiHandleRx pfRxHandler)
|
|||||||
pthread_attr_t attr;
|
pthread_attr_t attr;
|
||||||
struct sched_param param;
|
struct sched_param param;
|
||||||
pthread_attr_init(&attr);
|
pthread_attr_init(&attr);
|
||||||
|
attr.stacksize = 292;
|
||||||
param.sched_priority = SCHED_PRIORITY_DEFAULT-10;
|
param.sched_priority = SCHED_PRIORITY_DEFAULT-10;
|
||||||
pthread_attr_setschedparam(&attr, ¶m);
|
pthread_attr_setschedparam(&attr, ¶m);
|
||||||
status = pthread_create(&spiconf.unsoliced_thread, &attr,
|
status = pthread_create(&spiconf.unsoliced_thread, &attr,
|
||||||
unsoliced_thread_func, NULL);
|
unsoliced_thread_func, NULL);
|
||||||
DEBUGASSERT(status == 0)
|
DEBUGASSERT(status == 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEBUGASSERT(spiconf.cc3000fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|||||||
Reference in New Issue
Block a user