Exemple #1
0
int blobsLoop()
{
	BlobA *blobs;
	BlobB *ccBlobs;
	uint32_t numBlobs, numCCBlobs;

	// create blobs
	g_blobs->blobify();

	// handle received data immediately
	handleRecv();

	// send blobs
	g_blobs->getBlobs(&blobs, &numBlobs, &ccBlobs, &numCCBlobs);
	cc_sendBlobs(g_chirpUsb, blobs, numBlobs, ccBlobs, numCCBlobs);

	ser_getSerial()->update();

	cc_setLED();
	
	// deal with any latent received data until the next frame comes in
	while(!g_qqueue->queued())
		handleRecv();

	return 0;
}
Exemple #2
0
int ptLoop()
{
	int32_t panError, tiltError;
	uint16_t x, y;
	BlobA *blob, *blobs;
	BlobB *ccBlobs;
	uint32_t numBlobs, numCCBlobs;

	// create blobs
	g_blobs->blobify();

	blob = g_blobs->getMaxBlob();
	if (blob)
	{
		x = blob->m_left + (blob->m_right - blob->m_left)/2;
		y = blob->m_top + (blob->m_bottom - blob->m_top)/2;

		panError = X_CENTER-x;
		tiltError = y-Y_CENTER;

		g_panLoop.update(panError);
		g_tiltLoop.update(tiltError);
	}

	// send blobs
	g_blobs->getBlobs(&blobs, &numBlobs, &ccBlobs, &numCCBlobs);
	cc_sendBlobs(g_chirpUsb, blobs, numBlobs, ccBlobs, numCCBlobs);

	cc_setLED();
	
	return 0;
}
Exemple #3
0
int chaseLoop()
{
	uint16_t x, y;
	BlobA *blobs, *blob;
	BlobB *ccBlobs;
	uint32_t numBlobs, numCCBlobs;


	// create blobs
	g_blobs->blobify();

	blob = (BlobA *)g_blobs->getMaxBlob();
	if (blob)
	{
		x = blob->m_left + (blob->m_right - blob->m_left)/2;
		y = blob->m_top + (blob->m_bottom - blob->m_top)/2;

		combine(x, y);
	}
	else
	{
		rcs_setPos(LEFT_AXIS, RCS_CENTER_POS);
		rcs_setPos(RIGHT_AXIS, RCS_CENTER_POS);
	}


	// send blobs
	g_blobs->getBlobs(&blobs, &numBlobs, &ccBlobs, &numCCBlobs);
	cprintf("chaseLoop");
	cc_sendBlobs(g_chirpUsb, blobs, numBlobs, ccBlobs, numCCBlobs);

	cc_setLED();
	
	return 0;
}
Exemple #4
0
int blobsLoop()
{
	BlobA *blobs;
	uint32_t numBlobs;

	// create blobs
	g_blobs->blobify();

	// send blobs
	g_blobs->getBlobs(&blobs, &numBlobs);
	cc_sendBlobs(g_chirpUsb, blobs, numBlobs);

	ser_getSerial()->update();

	cc_setLED();

	return 0;
}
Exemple #5
0
int blobsLoop()
{
#if 1
	BlobA *blobs;
	BlobB *ccBlobs;
	uint32_t numBlobs, numCCBlobs;
	static uint32_t drop = 0;

	// create blobs
	if (g_blobs->blobify()<0)
	{
		DBG("drop %d\n", drop++);
		return 0;
	}
	// handle received data immediately
	handleRecv();

	// send blobs
	g_blobs->getBlobs(&blobs, &numBlobs, &ccBlobs, &numCCBlobs);
	cc_sendBlobs(g_chirpUsb, blobs, numBlobs, ccBlobs, numCCBlobs);

	ser_getSerial()->update();

	// if user isn't controlling LED, set it here, according to biggest detected object
	if (!g_ledSet)
		cc_setLED();
	
	// deal with any latent received data until the next frame comes in
	while(!g_qqueue->queued())
		handleRecv();

#endif
#if 0
	Qval qval;
	static int i = 0;
	while(1)
	{
		if (g_qqueue->dequeue(&qval) && qval.m_col==0xffff)
		{
			cprintf("%d\n", i++);
			break;
		}	
	}
#endif
#if 0
	BlobA *blobs;
	BlobB *ccBlobs;
	uint32_t numBlobs, numCCBlobs;
	static uint32_t drop = 0;

	// create blobs
	if (g_blobs->blobify()<0)
	{
		DBG("drop %d\n", drop++);
		return 0;
	}
	g_blobs->getBlobs(&blobs, &numBlobs, &ccBlobs, &numCCBlobs);
	cc_sendBlobs(g_chirpUsb, blobs, numBlobs, ccBlobs, numCCBlobs);

#endif

	return 0;
}