This code has been take from moko_eightball by Jakob Westhoff: it just continuously prints the value of the three accelerometers.
#include <stdio.h>
#include <stdint.h>
void processInputEvents(FILE* in)
{
int x = 0, y = 0, z = 0;
while (1)
{
char padding[16];
uint16_t type, code;
int32_t value;
// Skip the timestamp
fread(padding, 1, 8, in);
// Read the type
fread(&type, 1, 2, in);
// Read the code
fread(&code, 1, 2, in);
// Read the value
fread(&value, 1, 4, in);
switch( type )
{
case 0:
switch( code )
{
case 0:
fprintf(stdout, "x%d y%d z%d\n", x, y, z);
break;
default:
//warning( "Unknown code ( 0x%02x ) for type 0x%02x\n", code, type );
break;
}
break;
case 2:
switch ( code )
{
case 0:
// Update to the new value
x = value;
break;
case 1:
// Update to the new value
y = value;
break;
case 2:
// Update to the new value
z = value;
break;
default:
//warning( "Unknown code ( 0x%02x ) for type 0x%02x\n", code, type );
break;
}
break;
default:
//warning( "Unknown type ( 0x%02x ) in accelerometer input stream\n", type );
break;
}
}
}
int main()
{
FILE* in = fopen("/dev/input/event2", "r");
processInputEvents(in);
fclose(in);
return 0;
}