int BBMBPS::InitializeEvents() { m_eventChannel = bps_channel_get_active(); m_BBMInternalDomain = bps_register_domain(); return (m_BBMInternalDomain >= 0) ? 0 : 1; }
/* * This method initialises the interface to BPS */ void NfcWorker::initialize() { qDebug() << "XXXX NfcWorker::initialize() starts..."; int rc = BPS_FAILURE; qDebug() << "XXXX Time(ms) : " << getSysTimeMs() << ": bps_initialize() - entering"; rc = bps_initialize(); qDebug() << "XXXX Time(ms) : " << getSysTimeMs() << ": bps_initialize() - exited"; if (rc) { _failedToInitialize = true; qDebug() << "XXXX Error: BPS failed to initialise. rc=" << rc; emit message(QString("BPS failed to initialise. rc=%1").arg(rc)); } else { qDebug() << "XXXX BPS Initialised"; } qDebug() << "XXXX Time(ms) : " << getSysTimeMs() << ": nfc_request_events() - entering"; rc = nfc_request_events(); qDebug() << "XXXX Time(ms) : " << getSysTimeMs() << ": nfc_request_events() - exited"; if (rc) { _failedToInitialize = true; qDebug() << "XXXX Error: Failed to request NFC BPS events. rc=" << rc; emit message("Failed to request NFC BPS events"); bps_shutdown(); } else { qDebug() << "XXXX Registered for NFC BPS events OK"; emit message("Registered for NFC BPS events OK"); _interruptMutex.lock(); _bpsInterruptDomain = bps_register_domain(); if (_bpsInterruptDomain == -1) { qDebug() << "XXXX Failed to register an interrupt domain."; emit message("Failed to register an interrupt domain"); } _bpsChannel = bps_channel_get_active(); _interruptMutex.unlock(); qDebug() << "XXXX Time(ms) : " << getSysTimeMs() << ": navigator_request_events() - entering"; CHECK(navigator_request_events(0)); qDebug() << "XXXX Time(ms) : " << getSysTimeMs() << ": navigator_request_events() - exited"; } qDebug() << "XXXX NfcWorker::initialize() ends..."; }
QEventDispatcherBlackberryPrivate::QEventDispatcherBlackberryPrivate() : loop_level(0) , ioData(new bpsIOHandlerData) { // prepare to use BPS int result = bps_initialize(); if (Q_UNLIKELY(result != BPS_SUCCESS)) qFatal("QEventDispatcherBlackberry: bps_initialize failed"); bps_channel = bps_channel_get_active(); if (bps_channel_create(&holding_channel, 0) != BPS_SUCCESS) { qWarning("QEventDispatcherBlackberry: bps_channel_create failed"); holding_channel = -1; } // get domain for IO ready and wake up events - ignoring race condition here for now if (bpsUnblockDomain == -1) { bpsUnblockDomain = bps_register_domain(); if (Q_UNLIKELY(bpsUnblockDomain == -1)) qWarning("QEventDispatcherBlackberry: bps_register_domain failed"); } }
/** * Thread that handles accelerometer events and * sends relevant information to a dialog. * * @param p Unused. */ static void * accel_main (void *p) { bool run = true; bps_event_t *event; float force_x, force_y, force_z; bps_initialize(); /* * Each thread that calls bps_initialize() will have its * own unique channel ID. Protect it inside a mutex and * condition variable to avoid race condition where main * thread tries to use it before we assign it. */ pthread_mutex_lock(&chidMutex); accel_chid = bps_channel_get_active(); pthread_cond_signal(&chidCond); pthread_mutex_unlock(&chidMutex); /* * Create and display a dialog that will show the data. */ create_bottom_dialog(); show_bottom_dialog_message("\n\nThis is the Accelerometer Dialog"); if (BPS_SUCCESS != sensor_request_events(SENSOR_TYPE_ACCELEROMETER)) { fprintf(stderr, "Error requesting sensor's accelerometer events: %s", strerror(errno)); bps_shutdown(); return NULL; } sensor_set_rate(SENSOR_TYPE_ACCELEROMETER, ACCELEROMETER_RATE); sensor_set_skip_duplicates(SENSOR_TYPE_ACCELEROMETER, true); while (run) { /* * Block, at the very least we'll get the "STOP" event */ bps_get_event(&event, -1); if (bps_event_get_domain(event) == local_event_domain) { if (bps_event_get_code(event) == STOP_REQUEST) { run = false; } } if (bps_event_get_domain(event) == sensor_get_domain()) { if (SENSOR_ACCELEROMETER_READING == bps_event_get_code(event)) { sensor_event_get_xyz(event, &force_x, &force_y, &force_z); display_accelerometer_reading(force_x, force_y, force_z); } } } sensor_stop_events(0); destroy_bottom_dialog(); bps_shutdown(); fprintf(stderr, "Exiting accelerometer thread\n"); return NULL; }
BpsChannelScopeSwitcher(int scopeChannel) : innerChannel(scopeChannel) { outerChannel = bps_channel_get_active(); if (outerChannel != innerChannel) bps_channel_set_active(innerChannel); }
int main(int argc, char **argv) { const int usage = SCREEN_USAGE_NATIVE; screen_window_t screen_win; screen_buffer_t screen_buf = NULL; int rect[4] = { 0, 0, 0, 0 }; // create an application window which will just act as a background screen_create_context(&screen_ctx, 0); screen_create_window(&screen_win, screen_ctx); screen_create_window_group(screen_win, vf_group); screen_set_window_property_iv(screen_win, SCREEN_PROPERTY_USAGE, &usage); screen_create_window_buffers(screen_win, 1); screen_get_window_property_pv(screen_win, SCREEN_PROPERTY_RENDER_BUFFERS, (void **)&screen_buf); screen_get_window_property_iv(screen_win, SCREEN_PROPERTY_BUFFER_SIZE, rect+2); // fill the window with black int attribs[] = { SCREEN_BLIT_COLOR, 0x00000000, SCREEN_BLIT_END }; screen_fill(screen_ctx, screen_buf, attribs); screen_post_window(screen_win, screen_buf, 1, rect, 0); // position the window at an arbitrary z-order int i = APP_ZORDER; screen_set_window_property_iv(screen_win, SCREEN_PROPERTY_ZORDER, &i); // Signal bps library that navigator and screen events will be requested bps_initialize(); main_bps_chid = bps_channel_get_active(); screen_request_events(screen_ctx); navigator_request_events(0); // create a custom BPS event that we can use in to let our main thread know // that photo-taking is finished photo_done_domain = bps_register_domain(); // open camera and configure viewfinder if (init_camera() == EOK) { // our main loop just runs a state machine and handles input while (!shutdown) { run_state_machine(); // Handle user input handle_event(); } if (state == STATE_TAKINGPHOTO) { // wait for picture-taking to finish? TBD state = STATE_VIEWFINDER; } if (state == STATE_VIEWFINDER) { // clean up camera camera_stop_photo_viewfinder(handle); camera_close(handle); } } // Clean up screen_stop_events(screen_ctx); bps_shutdown(); screen_destroy_window(screen_win); screen_destroy_context(screen_ctx); return 0; }