motion/motion/motion.rb in bubble-wrap-1.8.0 vs motion/motion/motion.rb in bubble-wrap-1.9.0

- old
+ new

@@ -127,295 +127,7 @@ retval end end - class Accelerometer < GenericMotionInterface - - def start(options={}, &handler) - if options.key?(:interval) - @manager.accelerometerUpdateInterval = options[:interval] - end - - if handler - queue = convert_queue(options[:queue]) - @manager.startAccelerometerUpdatesToQueue(queue, withHandler: internal_handler(handler)) - else - @manager.startAccelerometerUpdates - end - - return self - end - - private def handle_result(result_data, error, handler) - if result_data - result = { - data: result_data, - acceleration: result_data.acceleration, - x: result_data.acceleration.x, - y: result_data.acceleration.y, - z: result_data.acceleration.z, - } - else - result = nil - end - - handler.call(result, error) - end - - def available? - @manager.accelerometerAvailable? - end - - def active? - @manager.accelerometerActive? - end - - def data - @manager.accelerometerData - end - - def stop - @manager.stopAccelerometerUpdates - end - - end - - class Gyroscope < GenericMotionInterface - - def start(options={}, &handler) - if options.key?(:interval) - @manager.gyroUpdateInterval = options[:interval] - end - - if handler - queue = convert_queue(options[:queue]) - @manager.startGyroUpdatesToQueue(queue, withHandler: internal_handler(handler)) - else - @manager.startGyroUpdates - end - - return self - end - - private def handle_result(result_data, error, handler) - if result_data - result = { - data: result_data, - rotation: result_data.rotationRate, - x: result_data.rotationRate.x, - y: result_data.rotationRate.y, - z: result_data.rotationRate.z, - } - else - result = nil - end - - handler.call(result, error) - end - - def available? - @manager.gyroAvailable? - end - - def active? - @manager.gyroActive? - end - - def data - @manager.gyroData - end - - def stop - @manager.stopGyroUpdates - end - - end - - class Magnetometer < GenericMotionInterface - - def start(options={}, &handler) - if options.key?(:interval) - @manager.magnetometerUpdateInterval = options[:interval] - end - - if handler - queue = convert_queue(options[:queue]) - @manager.startMagnetometerUpdatesToQueue(queue, withHandler: internal_handler(handler)) - else - @manager.startMagnetometerUpdates - end - - return self - end - - private def handle_result(result_data, error, handler) - if result_data - result = { - data: result_data, - field: result_data.magneticField, - x: result_data.magneticField.x, - y: result_data.magneticField.y, - z: result_data.magneticField.z, - } - else - result = nil - end - - handler.call(result, error) - end - - def available? - @manager.magnetometerAvailable? - end - - def active? - @manager.magnetometerActive? - end - - def data - @manager.magnetometerData - end - - def stop - @manager.stopMagnetometerUpdates - end - - end - - class DeviceMotion < GenericMotionInterface - - def start(options={}, &handler) - if options.key?(:interval) - @manager.deviceMotionUpdateInterval = options[:interval] - end - - if options.key?(:reference) - reference_frame = convert_reference_frame(options[:reference]) - else - reference_frame = nil - end - - if handler - queue = convert_queue(options[:queue]) - - if reference_frame - @manager.startDeviceMotionUpdatesUsingReferenceFrame(reference_frame, toQueue: queue, withHandler: internal_handler(handler)) - else - @manager.startDeviceMotionUpdatesToQueue(queue, withHandler: internal_handler(handler)) - end - else - if reference_frame - @manager.startDeviceMotionUpdatesUsingReferenceFrame(reference_frame) - else - @manager.startDeviceMotionUpdates - end - end - - return self - end - - private def handle_result(result_data, error, handler) - if result_data - result = { - data: result_data, - attitude: result_data.attitude, - rotation: result_data.rotationRate, - gravity: result_data.gravity, - acceleration: result_data.userAcceleration, - magnetic: result_data.magneticField, - } - - if result_data.attitude - result.merge!({ - roll: result_data.attitude.roll, - pitch: result_data.attitude.pitch, - yaw: result_data.attitude.yaw, - matrix: result_data.attitude.rotationMatrix, - quaternion: result_data.attitude.quaternion, - }) - end - - if result_data.rotationRate - result.merge!({ - rotation_x: result_data.rotationRate.x, - rotation_y: result_data.rotationRate.y, - rotation_z: result_data.rotationRate.z, - }) - end - - if result_data.gravity - result.merge!({ - gravity_x: result_data.gravity.x, - gravity_y: result_data.gravity.y, - gravity_z: result_data.gravity.z, - }) - end - - if result_data.userAcceleration - result.merge!({ - acceleration_x: result_data.userAcceleration.x, - acceleration_y: result_data.userAcceleration.y, - acceleration_z: result_data.userAcceleration.z, - }) - end - - if result_data.magneticField - case result_data.magneticField.accuracy - when CMMagneticFieldCalibrationAccuracyLow - accuracy = :low - when CMMagneticFieldCalibrationAccuracyMedium - accuracy = :medium - when CMMagneticFieldCalibrationAccuracyHigh - accuracy = :high - end - - result.merge!({ - field: result_data.magneticField.field, - magnetic_x: result_data.magneticField.field.x, - magnetic_y: result_data.magneticField.field.y, - magnetic_z: result_data.magneticField.field.z, - magnetic_accuracy: accuracy, - }) - end - else - result = nil - end - - handler.call(result, error) - end - - def convert_reference_frame(reference_frame) - case reference_frame - when :arbitrary_z - CMAttitudeReferenceFrameXArbitraryZVertical - when :corrected_z - CMAttitudeReferenceFrameXArbitraryCorrectedZVertical - when :magnetic_north - CMAttitudeReferenceFrameXMagneticNorthZVertical - when :true_north - CMAttitudeReferenceFrameXTrueNorthZVertical - else - reference_frame - end - end - - def available? - @manager.deviceMotionAvailable? - end - - def active? - @manager.deviceMotionActive? - end - - def data - @manager.deviceMotion - end - - def stop - @manager.stopDeviceMotionUpdates - end - - end - end end