void start_heartrate_sensor(appdata_s *ad) { sensor_error_e err = SENSOR_ERROR_NONE; sensor_get_default_sensor(SENSOR_HRM, &HRM_info.sensor); err = sensor_create_listener(HRM_info.sensor, &HRM_info.sensor_listener); sensor_listener_set_option(HRM_info.sensor_listener,SENSOR_OPTION_ALWAYS_ON); sensor_listener_set_event_cb(HRM_info.sensor_listener, 5000, _HRM_value, ad); //sensor_listener_set_event_cb() sensor_listener_start(HRM_info.sensor_listener); }
bool _init_sensor(sensor_type_e type, sensor_h *sensor, sensor_listener_h *listener) { int error = SENSOR_ERROR_NONE; error = sensor_get_default_sensor(type, sensor); if (error != SENSOR_ERROR_NONE) { LOGE("Failed to get default sensor %d with error", type, error); return false; } error = sensor_create_listener(*sensor, listener); if (error != SENSOR_ERROR_NONE) { LOGE("Failed to init listener for sensor %d with error", type, error); return false; } error = sensor_listener_set_event_cb(*listener, 100, _on_sensor_event, NULL); if (error != SENSOR_ERROR_NONE) { LOGE("Failed to set envent_cb for sensor %d with error", type, error); return false; } error = sensor_listener_start(*listener); if (error != SENSOR_ERROR_NONE) { LOGE("Failed to start listener for sensor %d with error", type, error); return false; } /* Needed for data acquisition when LCD screen is off */ #if 0 /* TODO: Find out how to stop acquisition */ error = sensor_listener_set_option(*listener, SENSOR_OPTION_ON_IN_SCREEN_OFF); if (error != SENSOR_ERROR_NONE) { LOGE("Failed to set ON option for sensor %d with error", type, error); return false; } #endif return true; }
/* ----------------------------------------------------------------------------*/ static int register_accelerometer_callback(appdata_s *ad) { dlog_print(DLOG_INFO, "basicui", "started"); int error; bool supported; sensor_h *accelerometer = ad->accelerometer; sensor_listener_h *accelerationListener = ad->accelerationListener; error = sensor_is_supported( SENSOR_ACCELEROMETER, &supported ); if(error != SENSOR_ERROR_NONE && supported){ return error; } error = sensor_get_default_sensor(SENSOR_ACCELEROMETER, &accelerometer); if(error != SENSOR_ERROR_NONE){ return error; } error = sensor_create_listener( accelerometer, &(ad->accelerationListener)); if(error != SENSOR_ERROR_NONE){ return error; } error = sensor_listener_set_event_cb( ad->accelerationListener, ACCELEROMETER_INTERVAL_MS, accelerometer_cb, ad ); if(error != SENSOR_ERROR_NONE){ return error; } //dlog_print(DLOG_INFO, "basicui", "listener"); return SENSOR_ERROR_NONE; }
/* ----------------------------------------------------------------------------*/ static int register_gyroscope_callback(appdata_s *ad) { dlog_print(DLOG_INFO, "basicui", "started"); int error; bool supported; sensor_h *gyroscope = ad->gyroscope; sensor_listener_h *gyroscopeListener = ad->gyroscopeListener; error = sensor_is_supported( SENSOR_GYROSCOPE , &supported ); if(error != SENSOR_ERROR_NONE && supported){ return error; } error = sensor_get_default_sensor(SENSOR_GYROSCOPE , &gyroscope); if(error != SENSOR_ERROR_NONE){ return error; } error = sensor_create_listener( gyroscope, &(ad->gyroscopeListener)); if(error != SENSOR_ERROR_NONE){ return error; } error = sensor_listener_set_event_cb( ad->gyroscopeListener, GYROSCOPE_INTERVAL_MS, gyroscope_cb, ad ); if(error != SENSOR_ERROR_NONE){ return error; } //dlog_print(DLOG_INFO, "basicui", "listener"); return SENSOR_ERROR_NONE; }