/* 
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
 * Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. 
 * 
 * This file is available and licensed under the following license:
 * 
 * Redistribution and use in source and binary forms, with or without 
 * modification, are permitted provided that the following conditions are met:
 *
 *   * Redistributions of source code must retain the above copyright notice, 
 *     this list of conditions and the following disclaimer.
 *
 *   * Redistributions in binary form must reproduce the above copyright notice,
 *     this list of conditions and the following disclaimer in the documentation
 *     and/or other materials provided with the distribution.
 *
 *   * Neither the name of Sun Microsystems nor the names of its contributors 
 *     may be used to endorse or promote products derived from this software 
 *     without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
/*
 * Main.fx
 *
 * Created on Jan 14, 2009, 4:29:21 PM
 */

package accelerometertest;

import javafx.animation.*;
import javafx.stage.Stage;
import javafx.scene.*;
import javafx.scene.shape.*;
import javafx.scene.paint.*;
import javafx.scene.text.Text;
import javafx.scene.text.Font;
import javax.microedition.sensor.*;
import javax.microedition.io.Connector;
import javax.microedition.sensor.control.*;

/**
 * @author Administrator
 */


var axisX = 0.0;
var axisY = 0.0;
var axisZ = 0.0;

println("getting data");
var sensors = SensorManager.findSensors("acceleration", null);
SensorUtil.dumpInfo();
println("sensors = {sensors}");
var accel = sensors[0];
println("infos = {accel.getChannelInfos()}");
var infosLen = accel.getChannelInfos().length;
var accelInfo = accel.getChannelInfos()[0];
println("info = {accelInfo} - {accelInfo.getName()} type = {accelInfo.getDataType()}");
var accelUrl = accel.getUrl();
println("accel url = {accelUrl}");
var accelConn: SensorConnection =
Connector.open(accelUrl) as SensorConnection;

function getData():Void {
    if(accelInfo.getDataType() == ChannelInfo.TYPE_DOUBLE) {
        var data: Data[] = accelConn.getData(1);
        axisX = data[0].getDoubleValues()[0];
        axisY = data[1].getDoubleValues()[0];
        axisZ = data[2].getDoubleValues()[0];
        println("accel values = x,y,z = {axisX}, {axisY}, {axisZ}");
    }
}


var loop = Timeline {
    repeatCount: Timeline.INDEFINITE
    keyFrames: KeyFrame { time: 100ms action: getData };
}
loop.play();


var scene:Scene = Scene {
        fill: Color.DARKRED
        content: Group {
            content:
            Circle {
                centerX: bind scene.width/2 * (1 + axisX)
                centerY: bind scene.height/2 * (1 + axisY)
                fill: Color.RED
                radius: 20
            }

        }
    };
Stage {
    scene: scene
    width: 320
    height: 240
}