File: as3kinectMotor.as

package info (click to toggle)
libfreenect 1%3A0.5.3-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 4,156 kB
  • sloc: ansic: 7,417; cpp: 7,265; cs: 2,062; python: 992; ruby: 873; java: 730; xml: 49; sh: 27; makefile: 23
file content (136 lines) | stat: -rwxr-xr-x 3,640 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/*
 * 
 * This file is part of the OpenKinect Project. http://www.openkinect.org
 * 
 * Copyright (c) 2010 individual OpenKinect contributors. See the CONTRIB file 
 * for details.
 * 
 * This code is licensed to you under the terms of the Apache License, version 
 * 2.0, or, at your option, the terms of the GNU General Public License, 
 * version 2.0. See the APACHE20 and GPL20 files for the text of the licenses, 
 * or the following URLs:
 * http://www.apache.org/licenses/LICENSE-2.0
 * http://www.gnu.org/licenses/gpl-2.0.txt
 * 
 * If you redistribute this file in source form, modified or unmodified, 
 * you may:
 * 1) Leave this header intact and distribute it under the same terms,
 * accompanying it with the APACHE20 and GPL20 files, or
 * 2) Delete the Apache 2.0 clause and accompany it with the GPL20 file, or
 * 3) Delete the GPL v2.0 clause and accompany it with the APACHE20 file
 * In all cases you must keep the copyright notice intact and include a copy 
 * of the CONTRIB file.
 * Binary distributions must follow the binary distribution requirements of 
 * either License.
 * 
 */

package org.as3kinect {
	
	import org.as3kinect.as3kinect;
	import org.as3kinect.as3kinectSocket;
	import org.as3kinect.objects.motorData;
	
	import flash.utils.ByteArray;
	
	public class as3kinectMotor {
		private var _socket:as3kinectSocket;
		private var _data:ByteArray;
		private var _motor_busy:Boolean;
		private var _motor_data:motorData;
		private var _motor_position:Number;

		public function as3kinectMotor(){
			_socket = as3kinectSocket.instance;
			_data = new ByteArray;
			_motor_busy = false;
			_motor_data = new motorData;
			_motor_position = 0;
		}


		/*
		 * Tell server to send the latest depth frame
		 * Note: We should lock the command while we are waiting for the data to avoid lag
		 */
		public function getData():void {
			if(!_motor_busy){
				_motor_busy = true;
				_data.clear();
				_data.writeByte(as3kinect.MOTOR_ID);
				_data.writeByte(as3kinect.ACCEL_DATA);
				_data.writeInt(0);
				if(_socket.sendCommand(_data) != as3kinect.SUCCESS){
					throw new Error('Data was not complete');
				}
			}
		}
		
		/*
		 * Set motor data from ByteArray
		 */
		public function updateDataFromBytes(bytes:ByteArray):void{
			_motor_data.ax = bytes.readShort();
			_motor_data.ay = bytes.readShort();
			_motor_data.az = bytes.readShort();
			_motor_data.dx = bytes.readDouble();
			_motor_data.dy = bytes.readDouble();
			_motor_data.dz = bytes.readDouble();
		}
		
		public function get data():motorData 
		{
			return _motor_data;
		}
		
		public function set data(data:motorData):void 
		{
			_motor_data = data;
		}
		
		public function set busy(flag:Boolean):void 
		{
			_motor_busy = flag;
		}
		
		public function get busy():Boolean 
		{
			return _motor_busy;
		}

		public function set position(position:Number):void 
		{
			_data.clear();
			_data.writeByte(as3kinect.MOTOR_ID);
			_data.writeByte(as3kinect.MOVE_MOTOR);
			_data.writeInt(position);
			if(_socket.sendCommand(_data) != as3kinect.SUCCESS){
				throw new Error('Data was not complete');
			} else {
				_motor_position = position;
			}
		}

		public function get position():Number
		{
			return _motor_position;
		}

		// 0 = Turn Off
		// 1 = Green
		// 2 = Red
		// 3 = Orange
		// 4 = Blink Green-Off
		// 6 = Blink Red-Orange
		public function set ledColor(color:Number):void 
		{
			_data.clear();
			_data.writeByte(as3kinect.MOTOR_ID);
			_data.writeByte(as3kinect.LED_COLOR);
			_data.writeInt(color);
			if(_socket.sendCommand(_data) != as3kinect.SUCCESS){
				throw new Error('Data was not complete');
			}
		}
	}
}