Results 1 to 6 of 6

Your favorite Apple, iPhone, iPad, iOS, Jailbreak, and Cydia site.


Thread: News - iPhone accelerometer source code released

  1. #1
    Default News - iPhone accelerometer source code released
    The iPhone has a built-in LIS302DL, a tiny 3-axis accelerometer and someone has figured out how to take advantage of this natively. For more information and to see a youtube video of some native apps taking advantage of this go here:

    http://blog.medallia.com/

    For developers interested in the source look below. This is all thanks to Erling Ellingsen from medallia blog. Link posted above.

    Code:

    #include <IOKit/IOKitLib.h>
    #include <CoreFoundation/CoreFoundation.h>


    typedef struct {} *IOHIDEventSystemRef;
    typedef struct {} *IOHIDEventRef;
    float IOHIDEventGetFloatValue(IOHIDEventRef ref, int param);


    void handleHIDEvent(int a, int b, int c, IOHIDEventRef ptr) {
    int type = IOHIDEventGetType(ptr);
    if (type == 12) {
    float x,y,z;
    x = IOHIDEventGetFloatValue(ptr, 0xc0000);
    y = IOHIDEventGetFloatValue(ptr, 0xc0001);
    z = IOHIDEventGetFloatValue(ptr, 0xc0002);
    // do whatever you need to do with the gravity
    ballSetAccel(x, y);
    }


    }

    #define expect(x) if(!x) { printf("failed: %s\n", #x); return; }


    void initialize(int hz) {
    mach_port_t master;
    expect(0 == IOMasterPort(MACH_PORT_NULL, &master));


    int page = 0xff00, usage = 3;


    CFNumberRef nums[2];
    CFStringRef keys[2];
    keys[0] = CFStringCreateWithCString(0, "PrimaryUsagePage", 0);
    keys[1] = CFStringCreateWithCString(0, "PrimaryUsage", 0);
    nums[0] = CFNumberCreate(0, kCFNumberSInt32Type, &page);
    nums[1] = CFNumberCreate(0, kCFNumberSInt32Type, &usage);
    CFDictionaryRef dict = CFDictionaryCreate(0, (const void**)keys, (const void**)nums, 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
    expect(dict);


    IOHIDEventSystemRef sys = (IOHIDEventSystemRef) IOHIDEventSystemCreate(0);
    expect(sys);


    CFArrayRef srvs = (CFArrayRef)IOHIDEventSystemCopyMatchingServices(s ys, dict, 0, 0, 0);
    expect(CFArrayGetCount(srvs)==1);


    io_registry_entry_t serv = (io_registry_entry_t)CFArrayGetValueAtIndex(srvs, 0);
    expect(serv);


    CFStringRef cs = CFStringCreateWithCString(0, "ReportInterval", 0);
    int rv = 1000000/hz;
    CFNumberRef cn = CFNumberCreate(0, kCFNumberSInt32Type, &rv);


    int res = IOHIDServiceSetProperty(serv, cs, cn);
    expect(res == 1);


    res = IOHIDEventSystemOpen(sys, handleHIDEvent, 0, 0);
    expect(res == 0);
    }

  2. #2
    so what kind of program can we use?
    where is this file located at?
    i want some kind of source code on how to create your own using this hack... ie... motion sensor alarm when you lay it down and it goes off when its moved... something like that

  3. #3
    anyone got the .apps for those accelerometer apps he was playing on it?

  4. #4
    so if i add that code to a program on my phone already
    say, SMS, would it make the program rotate with the phone?

    or is that a completely different code?

  5. #5
    um, that was almost a year old?

  6. #6
    Quote Originally Posted by mikeyman70 View Post
    so if i add that code to a program on my phone already
    say, SMS, would it make the program rotate with the phone?

    or is that a completely different code?
    Not going to happen.

Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •