3 #include <sys/memory.h>
7 #include <spurs/spurs.h>
9 #include <sys/thread.h>
10 #include <sys/systime.h>
12 #define SPURS_DEFAULT_PREFIX_NAME "gem_spurs"
16 u16 newGemAnalogT = 0;
17 extern cameraReadInfo camread;
20 vec_array(vec_float4 vec, unsigned int idx)
38 gemAttribute gem_attr;
39 u8 gem_spu_priorities[8] = { 1, 0, 0, 0, 0, 0, 0, 0 };
43 spurs = initSpurs (NULL);
48 printf ("preparing GemAttribute structure with spurs\n");
50 initAttributeGem (&gem_attr, 1, NULL, spurs, gem_spu_priorities);
51 gem_attr->version = 2;
53 gem_attr->spurs = spurs;
54 gem_attr->memory = NULL;
55 gem_attr->spu_priorities[0] = 1;
56 for (i = 1; i < 8; ++i)
57 gem_attr->spu_priorities[i] = 0;
59 printf ("calling GemInit with GemAttribute structure version=%d max_connect=%d spurs=%X\n",
60 gem_attr.version, gem_attr.max, gem_attr.spurs);
61 ret = gemInit (&gem_attr);
62 printf ("return from GemInit %X \n", ret);
66 ret = gemPrepareCamera (128, 0.5);
67 printf ("GemPrepareCamera return %d exposure set to 128 and quality to 0.5\n",
72 printf ("GemReset return %X \n", ret);
99 ret = gemUpdateStart (camread.buffer, camread.timestamp);
103 printf ("Return from gemUpdateStart %X\n", ret);
109 ret = gemUpdateFinish ();
112 printf ("Return from gemUpdateFinish %X\n", ret);
117 ret = gemConvertVideoFinish ();
120 printf ("Return from gemConvertVideoFinish %X\n", ret);
132 readGemPad(int num_gem)
136 unsigned int hues[] = { 4 << 24, 4 << 24, 4 << 24, 4 << 24 };
137 ret = gemGetState (0, 0, -22000, &gem_state);
139 newGemPad = gem_state.paddata.buttons & (~oldGemPad);
140 newGemAnalogT = gem_state.paddata.ANA_T;
141 oldGemPad = gem_state.paddata.buttons;
145 gemForceRGB (num_gem, 0.5, 0.5, 0.5);
150 gemTrackHues (hues, NULL);
159 readGemAccPosition(int num_gem)
163 gemGetAccelerometerPositionInDevice (num_gem, &position);
165 printf (" accelerometer device coordinates [%f,%f,%f,%f]\n",
166 vec_array (position, 0), vec_array (position, 1), vec_array (position, 2),
167 vec_array (position, 3));
171 readGemInertial(int num_gem)
173 gemInertialState gem_inertial_state;
176 ret = gemGetInertialState (num_gem, 0, -22000, &gem_inertial_state);
177 printf ("gemGetInertialState return %X\n", ret);
178 printf ("counter %d temperature %f\n", gem_inertial_state.counter,
179 gem_inertial_state.temperature);
181 printf (" accelerometer sensor [%f,%f,%f,%f]\n",
182 vec_array (gem_inertial_state.accelerometer, 0),
183 vec_array (gem_inertial_state.accelerometer, 1),
184 vec_array (gem_inertial_state.accelerometer, 2),
185 vec_array (gem_inertial_state.accelerometer, 3));
187 printf (" accelerometer_bias sensor [%f,%f,%f,%f]\n",
188 vec_array (gem_inertial_state.accelerometer_bias, 0),
189 vec_array (gem_inertial_state.accelerometer_bias, 1),
190 vec_array (gem_inertial_state.accelerometer_bias, 2),
191 vec_array (gem_inertial_state.accelerometer_bias, 3));
193 printf (" gyro sensor [%f,%f,%f,%f]\n", vec_array (gem_inertial_state.gyro,
194 0), vec_array (gem_inertial_state.gyro, 1),
195 vec_array (gem_inertial_state.gyro, 2),
196 vec_array (gem_inertial_state.gyro, 3));
198 printf (" gyro_bias sensor [%f,%f,%f,%f]\n",
199 vec_array (gem_inertial_state.gyro_bias, 0),
200 vec_array (gem_inertial_state.gyro_bias, 1),
201 vec_array (gem_inertial_state.gyro_bias, 2),
202 vec_array (gem_inertial_state.gyro_bias, 3));
213 readGemPad (0); // This will read buttons from Move
216 printf ("Select pressed \n");
220 printf ("T pressed value %d\n", newGemAnalogT);
222 ("Frame %d center of the sphere in world coordinates %f %f %f %f \n",
223 camread.frame, vec_array (gem_state.pos, 0), vec_array (gem_state.pos,
224 1), vec_array (gem_state.pos, 2), vec_array (gem_state.pos, 3));
228 printf ("Move pressed \n");
233 printf ("Start pressed \n");
239 printf ("Triangle pressed \n");
244 printf ("Circle pressed \n");
248 printf ("Cross pressed \n");
249 printf ("X,Y,Z position (mm) %f %f %f\n", vec_array (gem_state.pos, 0),
250 vec_array (gem_state.pos, 1), vec_array (gem_state.pos, 2));
251 readGemAccPosition (0);
255 printf ("Square pressed \n");
269 gemImageState imgState;
271 gemGetImageState (0, &imgState);
272 printf (" u [%f]\n", imgState.u);
273 printf (" v [%f]\n", imgState.v);
274 printf (" r [%f]\n", imgState.r);
275 printf (" projectionx [%f]\n", imgState.projectionx);
276 printf (" projectiony [%f]\n", imgState.projectiony);
277 printf (" distance [%f]\n", imgState.distance);
278 printf ("visible=%d r_valid=%d\n", imgState.visible, imgState.r_valid);
279 printf ("tiemestamp=%Ld\n", imgState.frame_time);