void BrcmPatchRAM::uploadFirmware() { // get firmware here to pre-cache for eventual use on wakeup or now BrcmFirmwareStore* firmwareStore = getFirmwareStore(); OSArray* instructions = NULL; if (!firmwareStore || !firmwareStore->getFirmware(OSDynamicCast(OSString, getProperty(kFirmwareKey)))) return; if (mDevice->open(this)) { // Print out additional device information printDeviceInfo(); // Set device configuration to composite configuration index 0 // Obtain first interface if (setConfiguration(0) && (mInterface = findInterface()) && mInterface->open(this)) { mInterruptPipe = findPipe(kUSBInterrupt, kUSBIn); mBulkPipe = findPipe(kUSBBulk, kUSBOut); if (mInterruptPipe && mBulkPipe) { if (performUpgrade()) AlwaysLog("[%04x:%04x]: Firmware upgrade completed successfully.\n", mVendorId, mProductId); else AlwaysLog("[%04x:%04x]: Firmware upgrade failed.\n", mVendorId, mProductId); OSSafeReleaseNULL(mReadBuffer); // mReadBuffer is allocated by performUpgrade but not released } mInterface->close(this); } // cleanup if (mInterruptPipe) { mInterruptPipe->Abort(); mInterruptPipe->release(); // retained in findPipe mInterruptPipe = NULL; } if (mBulkPipe) { mBulkPipe->Abort(); mBulkPipe->release(); // retained in findPipe mBulkPipe = NULL; } OSSafeReleaseNULL(mInterface);// retained in findInterface mDevice->close(this); } }
void BrcmPatchRAM::uploadFirmware() { // signal to timer that firmware already loaded mDevice->setProperty(kFirmwareLoaded, true); if (mDevice->open(this)) { // Print out additional device information printDeviceInfo(); // Set device configuration to composite configuration index 0 // Obtain first interface if (setConfiguration(0) && (mInterface = findInterface()) && mInterface->open(this)) { mInterruptPipe = findPipe(kUSBInterrupt, kUSBIn); mBulkPipe = findPipe(kUSBBulk, kUSBOut); if (mInterruptPipe && mBulkPipe) { if (performUpgrade()) AlwaysLog("[%04x:%04x]: Firmware upgrade completed successfully.\n", mVendorId, mProductId); else AlwaysLog("[%04x:%04x]: Firmware upgrade failed.\n", mVendorId, mProductId); OSSafeReleaseNULL(mReadBuffer); // mReadBuffer is allocated by performUpgrade but not released } mInterface->close(this); } // cleanup if (mInterruptPipe) { mInterruptPipe->Abort(); mInterruptPipe->release(); // retained in findPipe mInterruptPipe = NULL; } if (mBulkPipe) { mBulkPipe->Abort(); mBulkPipe->release(); // retained in findPipe mBulkPipe = NULL; } OSSafeReleaseNULL(mInterface);// retained in findInterface mDevice->close(this); } }
bool Node::_cmdDestroyPipe( co::ICommand& cmd ) { co::ObjectICommand command( cmd ); LB_TS_THREAD( _nodeThread ); LBLOG( LOG_INIT ) << "Destroy pipe " << command << std::endl; Pipe* pipe = findPipe( command.read< uint128_t >( )); LBASSERT( pipe ); pipe->exitThread(); const bool stopped = pipe->isStopped(); Config* config = getConfig(); config->unmapObject( pipe ); pipe->send( getServer(), fabric::CMD_PIPE_CONFIG_EXIT_REPLY ) << stopped; Global::getNodeFactory()->releasePipe( pipe ); return true; }
bool Node::_cmdDestroyPipe( co::Command& command ) { LB_TS_THREAD( _nodeThread ); const NodeDestroyPipePacket* packet = command.get< NodeDestroyPipePacket >(); LBLOG( LOG_INIT ) << "Destroy pipe " << packet << std::endl; Pipe* pipe = findPipe( packet->pipeID ); LBASSERT( pipe ); pipe->exitThread(); PipeConfigExitReplyPacket reply( packet->pipeID, pipe->isStopped( )); Config* config = getConfig(); config->unmapObject( pipe ); Global::getNodeFactory()->releasePipe( pipe ); getServer()->send( reply ); // send to config object return true; }
void ToyStream::loadFile(QString filePath) { QRegExp isLogoLine("(\\|*)(\\s*)\xff"); QRegExp isToyLine("^\\s*\\{(\\d+)\\}\\{(\\d+)\\}(.+)\n"); QRegExp findOpt("\\{(.*)\\}"); QRegExp findPipe("([^|]*)(\\|+)([^|]*)"); QRegExp OptColor("\\{c:\\$([0-9A-F]+):?\\$?([0-9A-F]*)\\}"); QRegExp OptPos("\\{o:(\\d+),(\\d+)\\}"); QFile toyfile(filePath); if (!toyfile.open(QIODevice::ReadOnly | QIODevice::Text)) { cerr << "Can't read : " << filePath << "\n"; exit(1); } while (!toyfile.atEnd()) { QByteArray line = toyfile.readLine(); if (isToyLine.exactMatch(line)) { QString optAndText = isToyLine.cap(3); // Syl if (isLogoLine.indexIn(optAndText) != -1) { ToySyl newsyl; newsyl.pos = isLogoLine.cap(2).size(); findPipe.exactMatch(optAndText); newsyl.nbpipe = findPipe.cap(2).size(); newsyl.length = findPipe.cap(3).size(); newsyl.start = isToyLine.cap(1).toInt(); newsyl.stop = isToyLine.cap(2).toInt(); syl.insert(newsyl); //show_ToySyl(newsyl); } //Text else { ToyText newtext; newtext.start = isToyLine.cap(1).toInt(); newtext.stop = isToyLine.cap(2).toInt(); newtext.nbpipe = 0; newtext.posx = -1; newtext.posy = -1; // Colors if (OptColor.indexIn(optAndText) != -1) { newtext.color1 = toycolor2QColor(OptColor.cap(1)); if (!OptColor.cap(2).isEmpty()) newtext.color2 = toycolor2QColor(OptColor.cap(2)); } // Pos if (OptPos.indexIn(optAndText) != -1) { newtext.posx = OptPos.cap(1).toInt(); newtext.posy = OptPos.cap(2).toInt(); } optAndText.replace(findOpt, ""); if (findPipe.exactMatch(optAndText)) { newtext.text = findPipe.cap(3); newtext.nbpipe = findPipe.cap(2).size(); } else { newtext.text = optAndText; } text.insert(newtext); } } } }