comparison src/joystick/iphoneos/SDLUIAccelerationDelegate.m @ 2362:44fc2537ff9e gsoc2008_iphone

These files contain the specification for a class which receives updates from the iPhone accelerometer. The class holds the accelerometer information, and is queried by SDL_sysjoystick.m.
author Holmes Futrell <hfutrell@umail.ucsb.edu>
date Fri, 18 Jul 2008 17:46:17 +0000
parents
children 32b9909db651
comparison
equal deleted inserted replaced
2361:ba39d5af12a7 2362:44fc2537ff9e
1 //
2 // SDLUIAccelerationDelegate.m
3 // iPodSDL
4 //
5 // Created by Holmes Futrell on 6/21/08.
6 // Copyright 2008 __MyCompanyName__. All rights reserved.
7 //
8
9 #import "SDLUIAccelerationDelegate.h"
10
11 static SDLUIAccelerationDelegate *sharedDelegate=nil;
12
13 @implementation SDLUIAccelerationDelegate
14
15 +(SDLUIAccelerationDelegate *)sharedDelegate {
16 if (sharedDelegate == nil) {
17 sharedDelegate = [[SDLUIAccelerationDelegate alloc] init];
18 }
19 return sharedDelegate;
20 }
21
22 -(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
23
24 x = acceleration.x;
25 y = acceleration.y;
26 z = acceleration.z;
27
28 hasNewData = YES;
29 //timestamp = acceleration.timestamp;
30
31 }
32
33 -(void)getLastOrientation:(Sint16 *)data {
34
35 #define MAX_G_FORCE 5.0
36 #define MAX_SINT16 0x7FFF
37
38 if (x > MAX_G_FORCE) x = MAX_G_FORCE;
39 else if (x < -MAX_G_FORCE) x = -MAX_G_FORCE;
40
41 if (y > MAX_G_FORCE) y = MAX_G_FORCE;
42 else if (y < -MAX_G_FORCE) y = -MAX_G_FORCE;
43
44 if (z > MAX_G_FORCE) z = MAX_G_FORCE;
45 else if (z < -MAX_G_FORCE) z = -MAX_G_FORCE;
46
47 data[0] = (x / MAX_G_FORCE) * MAX_SINT16;
48 data[1] = (y / MAX_G_FORCE) * MAX_SINT16;
49 data[2] = (z / MAX_G_FORCE) * MAX_SINT16;
50
51 }
52
53 -(id)init {
54
55 self = [super init];
56 x = y = z = 0.0;
57 return self;
58
59 }
60
61 -(void)dealloc {
62 sharedDelegate = nil;
63 [super dealloc];
64 }
65
66 -(void)startup {
67 [UIAccelerometer sharedAccelerometer].delegate = self;
68 isRunning = YES;
69 }
70
71 -(void)shutdown {
72 [UIAccelerometer sharedAccelerometer].delegate = nil;
73 isRunning = NO;
74 }
75
76 -(BOOL)isRunning {
77 return isRunning;
78 }
79
80 -(BOOL)hasNewData {
81 return hasNewData;
82 }
83
84 -(void)setHasNewData:(BOOL)value {
85 hasNewData = value;
86 }
87
88 @end