PASTEBIN
| #1 paste tool since 2002
create new paste
tools
api
archive
real-time
faq
PASTEBIN
create new paste
trending pastes
sign up
login
my alerts
my settings
my profile
Got an iPhone or iPad? We have a brand new Pastebin App for both devices, and it's totally free!
Click here to download the new Pastebin App for iOS
.
Public Pastes
Archive folder bas...
DOS | 0 sec ago
Download latest CC...
17 sec ago
Untitled
11 sec ago
Untitled
13 sec ago
Untitled
13 sec ago
Untitled
16 sec ago
gdp
HTML | 23 sec ago
Untitled
18 sec ago
New Paste
--- sensors.c 2010-02-02 13:21:25.000000000 +0100 +++ sensors_.c 2010-02-02 13:21:06.000000000 +0100 @@ -137,53 +135,31 @@ LOGD("using %s (name=%s,phys=%s)", devname, name, phys); break; } - close(fd); - fd = -1; - } - } - closedir(dir); - if(fd==-1) { - int status; - char buf[5] = {0x14,0,0,0,0}; - int retries=10; - - fd=open("/dev/bma150", O_RDONLY); - if (fd < 0) { - LOGD("bma_open: bma150 open FAILED"); - return fd; - } - bma150=1; - - status = ioctl(fd, BMA_IOCTL_INIT, buf); - status = ioctl(fd, BMA_IOCTL_READ, buf); - if (status < 0) { - LOGE("bma_open: failed to write bwidth range: %d", status); - return status; - } - - // 2G = -2G .. 2G - // 4G = -4G .. 4G - // 8G = -8G .. 8G - // BWIDTH: 25-750Hz digital, 1500Hz analog - buf[1] = (buf[1] & 0xe7) | (BMA_RANGE_2G << 3); - status = ioctl(fd, BMA_IOCTL_WRITE, buf); - if (status < 0) { - LOGE("bma_open: failed to write bwidth range: %d", status); - return status; - } + if (!strcmp(name, "bma150")) { + bzero(phys, 20); + ioctl(fd, EVIOCGPHYS(sizeof(phys)-1), &phys); axis_order[0]=-1; axis_order[1]=2; axis_order[2]=-3; parse_axis_order(); + bma150=1; + + LOGD("using %s (name=%s,phys=%s)", devname, name, phys); + break; + } + close(fd); + fd = -1; + } } + closedir(dir); return fd; } int sFD=-1; int evdev_close(struct hw_device_t *dev) { #ifdef DEBUG - LOGE("called evdev_close"); + LOGD("called evdev_close"); #endif close(sFD); sFD=-1; @@ -194,7 +170,7 @@ native_handle_t *hdl=native_handle_create(1,0); hdl->data[0]=sFD; #ifdef DEBUG - LOGE("called open_data_source"); + LOGD("called open_data_source"); #endif return hdl; } @@ -202,7 +178,7 @@ int activated=0; int activate(struct sensors_control_device_t *dev, int handle, int enabled) { #ifdef DEBUG - LOGE("sensors activate handle=%d, enabled=%d", handle, enabled); + LOGD("sensors activate handle=%d, enabled=%d", handle, enabled); #endif if(enabled) activated|=1<<handle; @@ -211,52 +187,31 @@ enabled=!!( ( activated&(1<<SENSOR_TYPE_ACCELEROMETER)) | (activated&(1<<SENSOR_TYPE_ORIENTATION))); - if(bma150) { - char buf[8] = {0, 0, 0, 0, 0, 0, 0, 0};; - int status; - int mode; - int retries=20; - if (enabled) - mode = BMA_MODE_NORMAL; - else - mode = BMA_MODE_SLEEP; - buf[0] = mode; - do { - status = ioctl(sFD, BMA_IOCTL_SET_MODE, buf); - } while( status < 0 && retries-- > 0 ); - if (status < 0) { - LOGE("activate: IGNORING error setting mode after %d retries (fd=%d, mode=%d, result=%d)", 20, sFD, mode, status); - return 0; //XXX: return status; - } - return 1; - } //TODO Change file path ? char *filename; asprintf(&filename, "/sys/class/i2c-adapter/i2c-0/%s/enable", phys+4); FILE *fd=fopen(filename, "w"); free(filename); - if(!fd) + if(!fd) { + LOGD("sensors activate couldn't open %s\n", filename); return -1; + } fprintf(fd, "%d\n", enabled); fclose(fd); - LOGE("sensors activate returing 1"); + LOGD("sensors activate returing 1"); return 1; } int set_delay(struct sensors_control_device_t *dev, int32_t ms) { #ifdef DEBUG - LOGE("sensors set_delay(%d)", ms); + LOGD("sensors set_delay(%d)", ms); #endif if(ms==0) { //Stupid app ? ok .... ms=100; } - if(bma150) { - wait_time=ms; - return 1; - } char *filename; asprintf(&filename, "/sys/class/i2c-adapter/i2c-0/%s/rate", phys+4); FILE *fd=fopen(filename, "w"); @@ -270,21 +225,21 @@ int wake(struct sensors_control_device_t *dev) { //Might need a core server #ifdef DEBUG - LOGE("called wake"); + LOGD("called wake"); #endif return 0; } int data_open(struct sensors_data_device_t *dev, native_handle_t* nh) { #ifdef DEBUG - LOGE("Called data_open"); + LOGD("Called data_open"); #endif return 0; } int data_close(struct sensors_data_device_t *dev, native_handle_t* nh) { #ifdef DEBUG - LOGE("Called data close"); + LOGD("Called data close"); #endif return 0; } @@ -328,7 +283,7 @@ } #define MS2 100.0//To be finely calibrated -double oldx=0,oldy=0,oldz=0,rawx=0,rawy=0,rawz=0; +double oldx=0,oldy=0,oldz=0,rawx=0,rawy=0,rawz=0,rawtemp=0; int state=0; int errcnt=0; int data_poll(struct sensors_data_device_t *dev, sensors_data_t* data) { @@ -336,14 +291,16 @@ int ret; double value; double dat[3]; + static float temp=0; + static float gFactor = GRAVITY_EARTH * 2.0f / 512.0f; #ifdef DEBUG - LOGE("called data poll"); + LOGD("called data poll"); #endif data->time=time(NULL)*1000*1000*1000; if(state==1) { #ifdef DEBUG - LOGE("Got accel data, send orientation"); + LOGD("Got accel data, send orientation"); #endif state=2; data->sensor=SENSOR_TYPE_ORIENTATION; @@ -359,17 +316,17 @@ data->orientation.pitch=-data->orientation.pitch; data->orientation.roll=asin(oldx/value)*180.0/3.14159; #ifdef DEBUG - LOGE("Returing orientation %f,%f,%f\n", data->acceleration.x, data->acceleration.y, data->acceleration.z); + LOGD("Returing orientation %f,%f,%f\n", data->acceleration.x, data->acceleration.y, data->acceleration.z); #endif return SENSOR_TYPE_ORIENTATION; } else if(state==2) { #ifdef DEBUG - LOGE("Sent orientation, send light"); + LOGD("Sent orientation, send light"); #endif state=3; value=read_light(); if(value<0) { - LOGE("Or not..."); + LOGD("Or not..."); return data_poll(dev, data); } data->sensor=SENSOR_TYPE_LIGHT; @@ -377,55 +334,34 @@ return SENSOR_TYPE_LIGHT; } else if(state==3) { #ifdef DEBUG - LOGE("Sent light, send proximity"); + LOGD("Sent light, send proximity"); #endif - state=0; + state=4; value=read_prox(); if(value<0) { - LOGE("Or not..."); + LOGD("Or not..."); return data_poll(dev, data); } data->sensor=SENSOR_TYPE_PROXIMITY; data->distance=value; return SENSOR_TYPE_PROXIMITY; + } else if(state==4 && bma150) { +#ifdef DEBUG + LOGD("Sent temperature"); +#endif + state=0; + data->sensor=SENSOR_TYPE_TEMPERATURE; + data->temperature=temp; +#ifdef DEBUG + LOGD("Returing temp %f\n", data->temperature); +#endif + return SENSOR_TYPE_TEMPERATURE; } + else state = 0; + if(sFD<0) sFD=open_input(); - if(bma150) { - short accel[8] = {0, 0, 0, 0, 0, 0, 0, 0}; - int retries=20; - int status; - static float gFactor = 9.81 * 2.0f / 512.0f; - - //We should check for Delta t instead of waiting constant time. - usleep(wait_time*1000); - do { - status = ioctl(sFD, BMA_IOCTL_READ_ACCELERATION, accel); - } while( status < 0 && retries-- > 0 ); - - if (status < 0) { - LOGE("Error polling for data after %d retries: %d, fd=%d", retries, status, sFD); - if(!errcnt) { - errcnt=1; - close(sFD); - sFD=-1; - return 0; - } - else { - PR_LN(); - return -1; - } - } else { - errcnt=0; - LOGE("bma_open: BUFFER: %d:%d:%d", accel[0], accel[1], accel[2]); - } - - dat[0]=accel[0]*gFactor; - dat[1]=accel[1]*gFactor; - dat[2]=accel[2]*gFactor; - - } else { int got=0; while(!got) { ret=read(sFD, &event, sizeof(event)); @@ -437,7 +373,7 @@ if(ret<sizeof(event))//Hu ? continue; #ifdef DEBUG - LOGE("Got event type: %d/%d/%d", event.type, event.code, event.value); + LOGD("Got event type: %d/%d/%d", event.type, event.code, event.value); #endif switch(event.type) { case EV_SYN: @@ -451,12 +387,21 @@ rawy=event.value; if(event.code==ABS_Z) rawz=event.value; + if(event.code==EVENT_TYPE_TEMPERATURE) + rawtemp=event.value; break; default: - LOGE("Got unknown event type: %d/%d/%d", event.type, event.code, event.value); + LOGD("Got unknown event type: %d/%d/%d", event.type, event.code, event.value); break; }; } + if(bma150) { + dat[0]=rawx*gFactor; + dat[1]=rawy*gFactor; + dat[2]=rawz*gFactor; + temp = -30.0 + (float)rawtemp/2; + } + else { dat[0]=rawx/MS2; dat[1]=rawy/MS2; dat[2]=rawz/MS2; @@ -469,18 +414,18 @@ data->acceleration.y=oldy; data->acceleration.z=oldz; #ifdef DEBUG - LOGE("Returing %f,%f,%f\n", data->acceleration.x, data->acceleration.y, data->acceleration.z); + LOGD("Returing %f,%f,%f\n", data->acceleration.x, data->acceleration.y, data->acceleration.z); #endif return SENSOR_TYPE_ACCELEROMETER; } int evdev_open(const struct hw_module_t* module, const char* id, struct hw_device_t** device) { #ifdef DEBUG - LOGE("evdev_open"); + LOGD("evdev_open"); #endif if(strcmp(id, SENSORS_HARDWARE_CONTROL)==0) { #ifdef DEBUG - LOGE("evdev_open hw ctl"); + LOGD("evdev_open hw ctl"); #endif struct sensors_control_device_t *dev; *device=malloc(sizeof(struct sensors_control_device_t)); @@ -501,12 +446,12 @@ if(sFD<0) return -1; #ifdef DEBUG - LOGE("evdev_open hw ctl returning ok"); + LOGD("evdev_open hw ctl returning ok"); #endif return 1; } else if(strcmp(id, SENSORS_HARDWARE_DATA)==0) { #ifdef DEBUG - LOGE("evdev_open hw data"); + LOGD("evdev_open hw data"); #endif struct sensors_data_device_t *dev; *device=malloc(sizeof(struct sensors_data_device_t)); @@ -525,7 +470,7 @@ if(sFD<0) return -1; #ifdef DEBUG - LOGE("evdev_open hw data returning ok"); + LOGD("evdev_open hw data returning ok"); #endif return 1; } else {
Optional Paste Settings
Syntax Highlighting:
None
Bash
C
C#
C++
CSS
HTML
HTML 5
Java
JavaScript
Lua
None
Perl
PHP
Python
Rails
-------------
4CS
6502 ACME Cross Assembler
6502 Kick Assembler
6502 TASM/64TASS
ABAP
ActionScript
ActionScript 3
Ada
ALGOL 68
Apache Log
AppleScript
APT Sources
ASM (NASM)
ASP
autoconf
Autohotkey
AutoIt
Avisynth
Awk
BASCOM AVR
Bash
Basic4GL
BibTeX
Blitz Basic
BNF
BOO
BrainFuck
C
C for Macs
C Intermediate Language
C#
C++
C++ (with QT extensions)
C: Loadrunner
CAD DCL
CAD Lisp
CFDG
ChaiScript
Clojure
Clone C
Clone C++
CMake
COBOL
CoffeeScript
ColdFusion
CSS
Cuesheet
D
DCS
Delphi
Delphi Prism (Oxygene)
Diff
DIV
DOS
DOT
E
ECMAScript
Eiffel
Email
EPC
Erlang
F#
Falcon
FO Language
Formula One
Fortran
FreeBasic
FreeSWITCH
GAMBAS
Game Maker
GDB
Genero
Genie
GetText
Go
Groovy
GwBasic
Haskell
HicEst
HQ9 Plus
HTML
HTML 5
Icon
IDL
INI file
Inno Script
INTERCAL
IO
J
Java
Java 5
JavaScript
jQuery
KiXtart
Latex
Liberty BASIC
Linden Scripting
Lisp
LLVM
Loco Basic
Logtalk
LOL Code
Lotus Formulas
Lotus Script
LScript
Lua
M68000 Assembler
MagikSF
Make
MapBasic
MatLab
mIRC
MIX Assembler
Modula 2
Modula 3
Motorola 68000 HiSoft Dev
MPASM
MXML
MySQL
newLISP
None
NullSoft Installer
Oberon 2
Objeck Programming Langua
Objective C
OCalm Brief
OCaml
OpenBSD PACKET FILTER
OpenGL Shading
Openoffice BASIC
Oracle 11
Oracle 8
Oz
Pascal
PAWN
PCRE
Per
Perl
Perl 6
PHP
PHP Brief
Pic 16
Pike
Pixel Bender
PL/SQL
PostgreSQL
POV-Ray
Power Shell
PowerBuilder
ProFTPd
Progress
Prolog
Properties
ProvideX
PureBasic
PyCon
Python
q/kdb+
QBasic
R
Rails
REBOL
REG
Robots
RPM Spec
Ruby
Ruby Gnuplot
SAS
Scala
Scheme
Scilab
SdlBasic
Smalltalk
Smarty
SQL
SystemVerilog
T-SQL
TCL
Tera Term
thinBasic
TypoScript
Unicon
UnrealScript
Vala
VB.NET
VeriLog
VHDL
VIM
Visual Pro Log
VisualBasic
VisualFoxPro
WhiteSpace
WHOIS
Winbatch
XBasic
XML
Xorg Config
XPP
YAML
Z80 Assembler
ZXBasic
Paste Expiration:
Never
10 Minutes
1 Hour
1 Day
1 Month
Paste Exposure:
Public
Unlisted
Private (members only)
Paste Name / Title:
Hello
Guest
Sign Up
or
Login
You are currently not logged in, this means you can not edit or delete anything you paste.
Sign Up
or
Login