int Serial_::available(void) { if (peek_buffer >= 0) { return 1 + USB_Available(CDC_RX); } return USB_Available(CDC_RX); }
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++; } }
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] ); }