pfGUIColorScheme::pfGUIColorScheme( const ST::string &face, uint8_t size, uint8_t fontFlags ) { IReset(); fFontFace = face; fFontSize = size; fFontFlags = fontFlags; }
void i2c_t::ScanBus() { if(chBSemWait(&BSemaphore) != MSG_OK) return; Uart.Printf(" 0 1 2 3 4 5 6 7 8 9 a b c d e f"); uint32_t AddrHi, Addr; I2C_TypeDef *pi2c = PParams->pi2c; // To make things shorter for(AddrHi = 0; AddrHi < 0x80; AddrHi += 0x10) { Uart.Printf("\r%02X: ", AddrHi); for(uint32_t n=0; n<0x10; n++) { Addr = AddrHi + n; if(Addr <= 0x01 or Addr > 0x77) Uart.Printf(" "); else { IReset(); // Reset I2C // Set addr and autoend; NBYTES = 0 pi2c->CR2 = (Addr << 1) | I2C_CR2_AUTOEND; pi2c->CR2 |= I2C_CR2_START; // Start while(!(pi2c->ISR & I2C_ISR_STOPF)); if(pi2c->ISR & I2C_ISR_NACKF) Uart.Printf("__ "); else Uart.Printf("%02X ", Addr); } } // for lo } // for hi // Disable I2C pi2c->CR1 &= ~I2C_CR1_PE; Uart.Printf("\r"); chBSemSignal(&BSemaphore); }
uint8_t i2c_t::Write(uint32_t Addr, uint8_t *WPtr, uint32_t WLength) { if(chBSemWait(&BSemaphore) != MSG_OK) return FAILURE; uint8_t Rslt; msg_t r; I2C_TypeDef *pi2c = PParams->pi2c; // To make things shorter if(WLength == 0 or WPtr == nullptr) { Rslt = CMD_ERROR; goto WriteEnd; } if(IBusyWait() != OK) { Rslt = BUSY; goto WriteEnd; } IReset(); // Reset I2C // Prepare TX DMA dmaStreamSetMode(PParams->PDmaTx, DMA_MODE_TX); dmaStreamSetMemory0(PParams->PDmaTx, WPtr); dmaStreamSetTransactionSize(PParams->PDmaTx, WLength); // Prepare tx IState = istWrite; // Nothing to read pi2c->CR2 = (Addr << 1) | (WLength << 16); dmaStreamEnable(PParams->PDmaTx); // Enable TX DMA // Enable IRQs: TX completed, error, NAck pi2c->CR1 |= (I2C_CR1_TCIE | I2C_CR1_ERRIE | I2C_CR1_NACKIE); pi2c->CR2 |= I2C_CR2_START; // Start transmission // Wait completion chSysLock(); r = chThdSuspendTimeoutS(&PThd, MS2ST(I2C_TIMEOUT_MS)); chSysUnlock(); // Disable IRQs pi2c->CR1 &= ~(I2C_CR1_TCIE | I2C_CR1_ERRIE | I2C_CR1_NACKIE); if(r == MSG_TIMEOUT) { pi2c->CR2 |= I2C_CR2_STOP; Rslt = TIMEOUT; } else Rslt = (IState == istFailure)? FAILURE : OK; WriteEnd: chBSemSignal(&BSemaphore); return Rslt; }
// DTOR plAvatarMgr::~plAvatarMgr() { IReset(); delete fLog; fLog = nil; }
bool plManifest::Read(const char* filename) { plVersSection versReader(this); plBaseSection baseReader(this); plInitSectionReader* readers[] = { &versReader, &baseReader, nil }; plInitFileReader reader(readers, 4096); // Allow extra long lines reader.SetUnhandledSectionReader(&baseReader); if (!reader.Open(filename)) return false; // Clear out before we read IReset(); if (!reader.Parse()) return false; return true; }
// ================================ IRQ ======================================== void Usb_t::IHandleIrq() { uint32_t sts, src; // Get irq flag sts = OTG_FS->GINTSTS & OTG_FS->GINTMSK; OTG_FS->GINTSTS = sts; Uart.Printf("Irq: %X %u\r\n", sts, chTimeNow()); // Uart.Printf("OCTL: %X\r\n", OTG_FS->oe[0].DOEPCTL); // Reset if(sts & GINTSTS_USBRST) IReset(); // Enumeration done if (sts & GINTSTS_ENUMDNE) { (void)OTG_FS->DSTS; } // RX FIFO not empty handling if (sts & GINTSTS_RXFLVL) { Uart.Printf("rx\r\n"); IRxHandler(); // chSysLockFromIsr(); // OTG_FS->GINTMSK &= ~GINTMSK_RXFLVLM; // Disable RX irq until current is processed // if(PThread->p_state == THD_STATE_SUSPENDED) chThdResumeI(PThread); // chSysUnlockFromIsr(); } // OUT & IN event handling if(sts & GINTSTS_IEPINT) { src = OTG_FS->DAINT; if(src & (1 << 0)) IEpInHandler(0); if(src & (1 << 1)) IEpInHandler(1); if(src & (1 << 2)) IEpInHandler(2); if(src & (1 << 3)) IEpInHandler(3); } if(sts & GINTSTS_OEPINT) { src = OTG_FS->DAINT; if(src & (1 << 16)) IEpOutHandler(0); if(src & (1 << 17)) IEpOutHandler(1); if(src & (1 << 18)) IEpOutHandler(2); if(src & (1 << 19)) IEpOutHandler(3); } }
bool plManifest::Read(hsStream* stream) { plVersSection versReader(this); plBaseSection baseReader(this); plInitSectionReader* readers[] = { &versReader, &baseReader, nil }; plInitFileReader reader(readers, 4096); // Allow extra long lines reader.SetUnhandledSectionReader(&baseReader); // manifests don't need to be encrypted reader.SetRequireEncrypted(false); if (!reader.Open(stream)) return false; // Clear out before we read IReset(); if (!reader.Parse()) return false; return true; }
pfGUIColorScheme::pfGUIColorScheme( hsColorRGBA &foreColor, hsColorRGBA &backColor ) { IReset(); fForeColor = foreColor; fBackColor = backColor; }
pfGUIColorScheme::pfGUIColorScheme() { IReset(); }
plManifest::~plManifest() { IReset(); }