Exemplo n.º 1
0
int Serial_::available(void)
{
	if (peek_buffer >= 0) {
		return 1 + USB_Available(CDC_RX);
	}
	return USB_Available(CDC_RX);
}
Exemplo n.º 2
0
int Serial_::available(void)
{
	u8 avail = USB_Available(CDC_RX);
	if (_serialPeek != -1)
		avail++;
	return avail;
}
void CDC_FrameReceived(void)
{
bool bSend = false;

  // NOTE:  if I haven't configured the baud/bits yet, or the DTR bit is cleared,
  //        do NOT send anything nor muck with the flags.  Wait until the device
  //        is actually RUNNING, first.

  if(!_usbLineInfo.bDataBits || !(_cdcLineState & CONTROL_LINE_STATE_DTR))
  {
    return; // don't do anything if I haven't properly set up the data bits yet
  }

  if(USB_Available(CDC_RX) >= 64) // allow ~64 buffered bytes
  {
    if(_cdcSerialState & SERIAL_STATE_RX_CARRIER_DCD) // was on?
    {
      _cdcSerialState &= ~SERIAL_STATE_RX_CARRIER_DCD;

      bSend = true;
    }
  }
  else
  {
    if(!(_cdcSerialState & SERIAL_STATE_RX_CARRIER_DCD)) // was off?
    {
      _cdcSerialState |= SERIAL_STATE_RX_CARRIER_DCD;

      bSend = true;
    }
  }

//  if(USB_SendQLength(CDC_TX) > 0) // anything to send??
//  {
//    if(!(_cdcSerialState & SERIAL_STATE_TX_CARRIER_DSR))
//    {
//      _cdcSerialState |= SERIAL_STATE_TX_CARRIER_DSR; // to tell host "I have data"
//
//      bSend = true;
//    }
//  }
//  else
//  {
//    if(_cdcSerialState & SERIAL_STATE_TX_CARRIER_DSR)
//    {
//      _cdcSerialState &= ~SERIAL_STATE_TX_CARRIER_DSR; // to tell host "I have data"
//
//      bSend = true;
//    }
//  }

  if((bSend || wInterval >= 64) // will send every 64 'bus cycles' or when there's a change
     && !USB_SendQLength(CDC_ACM))
  {
    CDC_SendACM();

    wInterval = 0;
  }
  else if(wInterval < 64)
  {
    wInterval++;
  }
}
Exemplo n.º 4
0
void MyPictures_Init( void )
{
	int					nHDD, i;
	char				szPfs[32];
	const char			*pMnt;
	const smbShare_t	*smbShare;

	szCurDir[0]	= 0;
	nNumFiles	= 0;

	GUI_Ctrl_ThumbnailPanel_Clean( GUI_ControlByID(ID_THUMBNAIL_PANEL) );

	if( (nHDD = HDD_Available()) )
	{
		if( nHDD == HDD_AVAIL )
		{
			fileInfo[ nNumFiles ].flags		= FLAG_DIRECTORY;
			fileInfo[ nNumFiles ].size		= 0;

			strcpy( fileInfo[ nNumFiles ].name, "pfs0:/" );

			nNumFiles++;

			// add boot partition
			if( GetBootMode() == BOOT_HDD )
			{
				if( (pMnt = BootMntPoint()) )
				{
					if( strcmp( pMnt, "pfs0" ) )
					{
						fileInfo[ nNumFiles ].flags		= FLAG_DIRECTORY;
						fileInfo[ nNumFiles ].size		= 0;

						strcpy( fileInfo[ nNumFiles ].name, "pfs1:/" );

						nNumFiles++;
					}
				}
			}
		}

		// add other mounted partitions to list
		for( i = 0; i < HDD_NumMounted(); i++ )
		{
			snprintf( szPfs, sizeof(szPfs), "pfs%i:/", i + 2 );

			fileInfo[ nNumFiles ].flags		= FLAG_DIRECTORY;
			fileInfo[ nNumFiles ].size		= 0;

			strcpy( fileInfo[ nNumFiles ].name, szPfs );

			nNumFiles++;
		}
	}

	if( MC_Available(0) )
	{
		fileInfo[ nNumFiles ].flags		= FLAG_DIRECTORY;
		fileInfo[ nNumFiles ].size		= 0;

		strcpy( fileInfo[ nNumFiles ].name, "mc0:/" );

		nNumFiles++;
	}

	if( MC_Available(1) )
	{
		fileInfo[ nNumFiles ].flags		= FLAG_DIRECTORY;
		fileInfo[ nNumFiles ].size		= 0;

		strcpy( fileInfo[ nNumFiles ].name, "mc1:/" );

		nNumFiles++;
	}

	if( USB_Available() )
	{
		fileInfo[ nNumFiles ].flags		= FLAG_DIRECTORY;
		fileInfo[ nNumFiles ].size		= 0;

		strcpy( fileInfo[ nNumFiles ].name, "mass:/" );

		nNumFiles++;
	}

	for( i = 0; i < SMB_GetNumShares(); i++ )
	{
		smbShare = SMB_GetShare(i);

		fileInfo[ nNumFiles ].flags		= FLAG_DIRECTORY;
		fileInfo[ nNumFiles ].size		= 0;

		strcpy( fileInfo[ nNumFiles ].name, smbShare->pSharePath );

		nNumFiles++;
	}

	fileInfo[ nNumFiles ].flags		= FLAG_DIRECTORY;
	fileInfo[ nNumFiles ].size		= 0;

	strcpy( fileInfo[ nNumFiles ].name, "cdfs:/" );

	nNumFiles++;

	for( i = 0; i < nNumFiles; i++ )
		GUI_Ctrl_ThumbnailPanel_AddItem( GUI_ControlByID(ID_THUMBNAIL_PANEL), &fileInfo[i] );
}