void testTickerNotification() { CallbackUserData userData; RTL_START(1000000); calculateSampleData(); OUTPUT_DRIVER driver(OUTPUT_DRIVER_CONSTRUCTOR_PARAMS); userData.mDriver = &driver; OsCallback notificationCallback((intptr_t)&userData, &driverCallback); frameTime = 0; sampleDataSz = TEST_SAMPLE_DATA_SIZE; driver.enableDevice(TEST_SAMPLES_PER_FRAME_SIZE, TEST_SAMPLES_PER_SECOND, 0, notificationCallback); // Wait defined amount of time. OsTask::delay(TEST_SAMPLE_DATA_LENGTH_SEC*1000); driver.disableDevice(); CPPUNIT_ASSERT(!driver.isEnabled()); CPPUNIT_ASSERT(frameInCallback > TEST_SAMPLE_DATA_LENGTH_SEC*TEST_FRAME_RATE); RTL_WRITE("testTickerNotification.rtl"); RTL_STOP }
void testEnableDisableFast() { OUTPUT_DRIVER driver(OUTPUT_DRIVER_CONSTRUCTOR_PARAMS); CallbackUserData userData; userData.mDriver = &driver; OsCallback notificationCallback((intptr_t)&userData, &driverCallback); sampleDataSz = 0; driver.enableDevice(TEST_SAMPLES_PER_FRAME_SIZE, TEST_SAMPLES_PER_SECOND, 0, notificationCallback); driver.disableDevice(); }
void AsyncIOQueue::maybeDequeue() { while (!queue_.empty() && asyncIO_->pending() < asyncIO_->capacity()) { auto& opFactory = queue_.front(); auto op = opFactory(); queue_.pop_front(); // Interpose our completion callback auto& nextCb = op->notificationCallback(); op->setNotificationCallback([this, nextCb](AsyncIOOp* op) { this->onCompleted(op); if (nextCb) nextCb(op); }); asyncIO_->submit(op); } }