SlideShare a Scribd company logo
1 of 27
Download to read offline
Introduction to
G-Sesnsor and
    E-Compass
           Jiahe Jou
            2, Dec., 2011
Outlines
● Introduction
  ○ Sensor System
● G-Sensor System
  ○ Java Application Layer
  ○ Java Framework Layer
  ○ JNI
  ○ Hardware Abstraction Layer
  ○ Linux Kernel
  ○ Setup G-Sensor Driver
● Conclusion
Introduction
           Sensor System
Sensor System
● Detect the environment to provide better
  user experience
  ○   Accelerometer
  ○   Magnetometer
  ○   Light Sensor
  ○   Temperature Meter
● Application
  ○ Game feature
  ○ Rotate screen
  ○ E-compass
Sensor System
● General architecture of sensor system
Sensor System
● API
  ○ Provide a interface to get system sensor manager
● Framework
  ○ Sensor manager service
  ○ Definitions of sensor, sensor event, event listener
● JNI
  ○ Link the framework layer and HAL
● HAL
  ○ The hardware foundation of Android
Sensor System
● In more detail
G-Sensor
System
          Java Application Layer
          Java Framework Layer
                             JNI
                            HAL
                    Linux Kernel
       Setup the G-Sensor driver
Java Application Layer
● Implement a sensor application
  ○ Get sensor manager
  ○ Get a specific sensor
  ○ Register sensor event listener

     ...

     mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

     mAccerlerometer = mSensorManager.getDefautSensor(
                                  Sensor.TYPE_ACCELEROMETER);

     mSensorManager.registerListener(this, mAccelerometer,
                                     SensorManager.SENSOR_DELAY_GAME);
     ...
Java Application Layer
● Implement event listener
     ...
     // Called when the sensor accuracy changed
     public void onAccuracyChanged(int sensor, int accuracy){
            // You can leave this function empty
     }

     ...
     // Called when the sensor value changed
     public void onSensorChanged(SensorEvent event{
            ...
            Log.d(TAG, "onSensorChanged==> sensor: " + sensor +
                                  ", x: " + event.values[0] +
                                  ", y: " + event.values[1] +
                                  ", z: " + event.values[2]);
            …
     }
     ...
G-Sensor
System
          Java Application Layer
          Java Framework Layer
                             JNI
                            HAL
                    Linux Kernel
       Setup the G-Sensor driver
Java Framework Layer
● Sensor Manager
  ○ getDefautSensor(int type)
     ...
     public Sensor getDefaultSensor( int type){
           // just return the 1st sensor
           List<Sensor> l = getSensorList(type);
           return l.isEmpty() ? null : l.get(0);
     }
     …


  ○ registerListener(SensorEventListener listener,
    Sensor sensor, int rate)
     ...
     public boolean registerListener( (SensorEventListener listener, Sensor sensor, int rate){
              // Another function was return
              return registerListener(listener, sensor, rate, null);
     }
     …
Java Framework Layer
 ○ registerListener( (SensorEventListener listener,
    Sensor sensor, int rate, Handler handler)
    ■ Delegate a listener on a sensor
    ■ Lock the listening thread before sensor enabled
    ■ Enable the sensor
    ■ Unlock the listening thread
    ■ Start polling

    PS. Please refer to the Figure 7 in document
G-Sensor
System
          Java Application Layer
          Java Framework Layer
                             JNI
                            HAL
                    Linux Kernel
       Setup the G-Sensor driver
JNI
● Sensor Manager
  ○ Mapped to the sensor manager in framework layer
    ■ nativeClassInit()
  ○ Provide the native function interface, e.g.:
    ■ sensors_enable_sensor()
    ■ sensors_data_poll()

      PS. Please refer to the Figure 8 and Figure 9 in document
G-Sensor
System
          Java Application Layer
          Java Framework Layer
                             JNI
                            HAL
                    Linux Kernel
       Setup the G-Sensor driver
Hardware Abstraction Layer
● Located in /hardware/STSensors/*
● Built on SensorBase.cpp
  ○ openInput(const char* inpuName)
  ○ Open input device for a given name when
      construction

      P.S. Please refer to the Figure 10 in document
Hardware Abstraction Layer
● AccSensor
  ○ #define INPUT_SYSFS_PATH_ACC "/sys/class/i2c-
    adapter/i2c-4/4-0019/"
  ○ readEvents()
    ■ Get data from sensor event
    ■ Calibrate for real world

    P.S. Please refer to the Figure 12 in document
G-Sensor
System
          Java Application Layer
          Java Framework Layer
                             JNI
                            HAL
                    Linux Kernel
       Setup the G-Sensor driver
Linux Kernel
● User space communicate with kernel space
  by system call
● Hardware drivers
● i2c protocol used
Linux Kernel
● General architecture from user space to
  hardware
Linux Kernel
● i2c driver need implement four methods:
  ○ probe
    ■ Check the i2c functionality
    ■ Initialize the input status
    ■ Register the poll function
    ■ Create the sysfs interface
  ○ remove
    ■ Unregister the poll device
    ■ Shutdown the power
    ■ Remove sysfs interface
    ■ Free the memory
  ○ resume
  ○ suspend
     P.S. Please refer the Figure 16 and Figure 17 in document
Linux Kernel
● lsm303dlh_acc_report_values()
     static void lsm303dlh_acc_report_values(struct lsm303dlh_acc_data *acc, int *xyz)
     {
            struct input_dev *input = acc->input_poll_dev->input;

          input_report_abs(input, ABS_X, xyz[0]);
          input_report_abs(input, ABS_Y, xyz[1]);
          input_report_abs(input, ABS_Z, xyz[2]);
          input_sync(input);
     }


    P.S. Please refer to the Figure 18 and Figure 19 in document
G-Sensor
System
          Java Application Layer
          Java Framework Layer
                             JNI
                            HAL
                    Linux Kernel
       Setup the G-Sensor driver
Setup G-Sensor Driver
● Let Linux kernel load the driver
   ○ innocomm_oracle_deconfig
   ○ KConfig
   ○ Makefile
     P.S. Please refer to Figure 21 in document

● Setup regulator comsumer
   ○ board-oracle.c
     P.S. Please refer to Figure 22 in document

● Setup the i2c between oracle board and chip
   ○ board-oracle-i2c.c
     P.S. Please refer to Figure 23 in document
Conclusion
             Conclusion
Conclusion
● A top-down view:
  ○   Java application layer
  ○   Java framework layer
  ○   HAL
  ○   Linux kernel
● E-Compass system is as same as the G-
  Sensor system

More Related Content

What's hot

Open CL For Speedup Workshop
Open CL For Speedup WorkshopOpen CL For Speedup Workshop
Open CL For Speedup Workshop
Ofer Rosenberg
 
Csw2016 wheeler barksdale-gruskovnjak-execute_mypacket
Csw2016 wheeler barksdale-gruskovnjak-execute_mypacketCsw2016 wheeler barksdale-gruskovnjak-execute_mypacket
Csw2016 wheeler barksdale-gruskovnjak-execute_mypacket
CanSecWest
 
ISCA Final Presentaiton - Compilations
ISCA Final Presentaiton -  CompilationsISCA Final Presentaiton -  Compilations
ISCA Final Presentaiton - Compilations
HSA Foundation
 
Advanced cfg bypass on adobe flash player 18 defcon russia 23
Advanced cfg bypass on adobe flash player 18 defcon russia 23Advanced cfg bypass on adobe flash player 18 defcon russia 23
Advanced cfg bypass on adobe flash player 18 defcon russia 23
DefconRussia
 

What's hot (20)

Introduction to CUDA C: NVIDIA : Notes
Introduction to CUDA C: NVIDIA : NotesIntroduction to CUDA C: NVIDIA : Notes
Introduction to CUDA C: NVIDIA : Notes
 
YaST Debugging
YaST DebuggingYaST Debugging
YaST Debugging
 
Open CL For Speedup Workshop
Open CL For Speedup WorkshopOpen CL For Speedup Workshop
Open CL For Speedup Workshop
 
Technical Deep Dive into the New Prefab System
Technical Deep Dive into the New Prefab SystemTechnical Deep Dive into the New Prefab System
Technical Deep Dive into the New Prefab System
 
DLL Design with Building Blocks
DLL Design with Building BlocksDLL Design with Building Blocks
DLL Design with Building Blocks
 
Csw2016 wheeler barksdale-gruskovnjak-execute_mypacket
Csw2016 wheeler barksdale-gruskovnjak-execute_mypacketCsw2016 wheeler barksdale-gruskovnjak-execute_mypacket
Csw2016 wheeler barksdale-gruskovnjak-execute_mypacket
 
PVS-Studio, a solution for resource intensive applications development
PVS-Studio, a solution for resource intensive applications developmentPVS-Studio, a solution for resource intensive applications development
PVS-Studio, a solution for resource intensive applications development
 
Converting Scene Data to DOTS – Unite Copenhagen 2019
Converting Scene Data to DOTS – Unite Copenhagen 2019Converting Scene Data to DOTS – Unite Copenhagen 2019
Converting Scene Data to DOTS – Unite Copenhagen 2019
 
Paractical Solutions for Multicore Programming
Paractical Solutions for Multicore ProgrammingParactical Solutions for Multicore Programming
Paractical Solutions for Multicore Programming
 
We Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle Games
We Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle GamesWe Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle Games
We Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle Games
 
The Effect of Hierarchical Memory on the Design of Parallel Algorithms and th...
The Effect of Hierarchical Memory on the Design of Parallel Algorithms and th...The Effect of Hierarchical Memory on the Design of Parallel Algorithms and th...
The Effect of Hierarchical Memory on the Design of Parallel Algorithms and th...
 
Меняем javascript с помощью javascript
Меняем javascript с помощью javascriptМеняем javascript с помощью javascript
Меняем javascript с помощью javascript
 
Open gl basics
Open gl basicsOpen gl basics
Open gl basics
 
ISCA Final Presentaiton - Compilations
ISCA Final Presentaiton -  CompilationsISCA Final Presentaiton -  Compilations
ISCA Final Presentaiton - Compilations
 
Vulkan 1.1 Reference Guide
Vulkan 1.1 Reference GuideVulkan 1.1 Reference Guide
Vulkan 1.1 Reference Guide
 
Дмитрий Вовк: Векторизация кода под мобильные платформы
Дмитрий Вовк: Векторизация кода под мобильные платформыДмитрий Вовк: Векторизация кода под мобильные платформы
Дмитрий Вовк: Векторизация кода под мобильные платформы
 
The walking 0xDEAD
The walking 0xDEADThe walking 0xDEAD
The walking 0xDEAD
 
Lec02 03 opencl_intro
Lec02 03 opencl_introLec02 03 opencl_intro
Lec02 03 opencl_intro
 
Advanced cfg bypass on adobe flash player 18 defcon russia 23
Advanced cfg bypass on adobe flash player 18 defcon russia 23Advanced cfg bypass on adobe flash player 18 defcon russia 23
Advanced cfg bypass on adobe flash player 18 defcon russia 23
 
OpenXR 1.0 Reference Guide
OpenXR 1.0 Reference GuideOpenXR 1.0 Reference Guide
OpenXR 1.0 Reference Guide
 

Viewers also liked

From sensor data_to_android_and_back
From sensor data_to_android_and_backFrom sensor data_to_android_and_back
From sensor data_to_android_and_back
Droidcon Berlin
 
Internet Week Yahoo! Academy: How Direct Can You Be?
Internet Week Yahoo! Academy: How Direct Can You Be?Internet Week Yahoo! Academy: How Direct Can You Be?
Internet Week Yahoo! Academy: How Direct Can You Be?
YahooUK
 
The perng mha ngan box1
The perng mha ngan box1The perng mha ngan box1
The perng mha ngan box1
weerachai99
 
The perng mha ngan box
The perng mha ngan boxThe perng mha ngan box
The perng mha ngan box
weerachai99
 

Viewers also liked (20)

Getting started with YUI3 and AlloyUI
Getting started with YUI3 and AlloyUIGetting started with YUI3 and AlloyUI
Getting started with YUI3 and AlloyUI
 
Accelerometer 1
Accelerometer 1Accelerometer 1
Accelerometer 1
 
Android accelerometer sensor tutorial
Android accelerometer sensor tutorialAndroid accelerometer sensor tutorial
Android accelerometer sensor tutorial
 
Android 1.8 sensor
Android 1.8 sensorAndroid 1.8 sensor
Android 1.8 sensor
 
From sensor data_to_android_and_back
From sensor data_to_android_and_backFrom sensor data_to_android_and_back
From sensor data_to_android_and_back
 
Sensor-driven indoor localization with android #bcs2
Sensor-driven indoor localization with android #bcs2Sensor-driven indoor localization with android #bcs2
Sensor-driven indoor localization with android #bcs2
 
Fusion_Class
Fusion_ClassFusion_Class
Fusion_Class
 
Android Training (Sensors)
Android Training (Sensors)Android Training (Sensors)
Android Training (Sensors)
 
Internet Week Yahoo! Academy: How Direct Can You Be?
Internet Week Yahoo! Academy: How Direct Can You Be?Internet Week Yahoo! Academy: How Direct Can You Be?
Internet Week Yahoo! Academy: How Direct Can You Be?
 
пдд азербайджана
пдд азербайджанапдд азербайджана
пдд азербайджана
 
Gresco catalog
Gresco catalogGresco catalog
Gresco catalog
 
The perng mha ngan box1
The perng mha ngan box1The perng mha ngan box1
The perng mha ngan box1
 
Quotationsanddialogue 2014
Quotationsanddialogue 2014Quotationsanddialogue 2014
Quotationsanddialogue 2014
 
The perng mha ngan box
The perng mha ngan boxThe perng mha ngan box
The perng mha ngan box
 
видеокамера сони
видеокамера сонивидеокамера сони
видеокамера сони
 
Bosh
BoshBosh
Bosh
 
Showdonttell
ShowdonttellShowdonttell
Showdonttell
 
Wallander - Becka
Wallander - BeckaWallander - Becka
Wallander - Becka
 
Gallus2002 usermanual
Gallus2002 usermanualGallus2002 usermanual
Gallus2002 usermanual
 
The perng mha ngan box
The perng mha ngan boxThe perng mha ngan box
The perng mha ngan box
 

Similar to Introduction to Android G-sensor

OWF12/PAUG Conf Days Android tools for developpeurs, paul marois, design and ...
OWF12/PAUG Conf Days Android tools for developpeurs, paul marois, design and ...OWF12/PAUG Conf Days Android tools for developpeurs, paul marois, design and ...
OWF12/PAUG Conf Days Android tools for developpeurs, paul marois, design and ...
Paris Open Source Summit
 
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Opersys inc.
 
UA Mobile 2012 (English)
UA Mobile 2012 (English)UA Mobile 2012 (English)
UA Mobile 2012 (English)
dmalykhanov
 
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling ToolsTIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
Xiaozhe Wang
 

Similar to Introduction to Android G-sensor (20)

Understanding the Android System Server
Understanding the Android System ServerUnderstanding the Android System Server
Understanding the Android System Server
 
OWF12/PAUG Conf Days Android tools for developpeurs, paul marois, design and ...
OWF12/PAUG Conf Days Android tools for developpeurs, paul marois, design and ...OWF12/PAUG Conf Days Android tools for developpeurs, paul marois, design and ...
OWF12/PAUG Conf Days Android tools for developpeurs, paul marois, design and ...
 
Android Internals
Android InternalsAndroid Internals
Android Internals
 
Android Internals
Android InternalsAndroid Internals
Android Internals
 
Advantages and limitations of PhoneGap for sensor processing
Advantages and limitations of PhoneGap for sensor processingAdvantages and limitations of PhoneGap for sensor processing
Advantages and limitations of PhoneGap for sensor processing
 
SensorStudio deep dive (IDC 2016)
SensorStudio deep dive (IDC 2016)SensorStudio deep dive (IDC 2016)
SensorStudio deep dive (IDC 2016)
 
Android Internals at Linaro Connect Asia 2013
Android Internals at Linaro Connect Asia 2013Android Internals at Linaro Connect Asia 2013
Android Internals at Linaro Connect Asia 2013
 
Fluentd - CNCF Paris
Fluentd - CNCF ParisFluentd - CNCF Paris
Fluentd - CNCF Paris
 
Introducing the Sun SPOTs
Introducing the Sun SPOTsIntroducing the Sun SPOTs
Introducing the Sun SPOTs
 
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
 
Designate Install and Operate Workshop
Designate Install and Operate WorkshopDesignate Install and Operate Workshop
Designate Install and Operate Workshop
 
Node in Real Time - The Beginning
Node in Real Time - The BeginningNode in Real Time - The Beginning
Node in Real Time - The Beginning
 
Jollen's Presentation: Introducing Android low-level
Jollen's Presentation: Introducing Android low-levelJollen's Presentation: Introducing Android low-level
Jollen's Presentation: Introducing Android low-level
 
Nodejs
NodejsNodejs
Nodejs
 
UA Mobile 2012 (English)
UA Mobile 2012 (English)UA Mobile 2012 (English)
UA Mobile 2012 (English)
 
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling ToolsTIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
 
ELC North America 2021 Introduction to pin muxing and gpio control under linux
ELC  North America 2021 Introduction to pin muxing and gpio control under linuxELC  North America 2021 Introduction to pin muxing and gpio control under linux
ELC North America 2021 Introduction to pin muxing and gpio control under linux
 
Ultracode Berlin #2 : Introduction to Perceptual Computing by Sulamita Garcia
Ultracode Berlin #2 : Introduction to Perceptual Computing by Sulamita GarciaUltracode Berlin #2 : Introduction to Perceptual Computing by Sulamita Garcia
Ultracode Berlin #2 : Introduction to Perceptual Computing by Sulamita Garcia
 
Android crash debugging
Android crash debuggingAndroid crash debugging
Android crash debugging
 
Distributed Computing on PostgreSQL | PGConf EU 2017 | Marco Slot
Distributed Computing on PostgreSQL | PGConf EU 2017 | Marco SlotDistributed Computing on PostgreSQL | PGConf EU 2017 | Marco Slot
Distributed Computing on PostgreSQL | PGConf EU 2017 | Marco Slot
 

More from Johnson Chou (6)

JavaScript OOPs
JavaScript OOPsJavaScript OOPs
JavaScript OOPs
 
Introduction to omap4 pad configuration
Introduction to omap4 pad configurationIntroduction to omap4 pad configuration
Introduction to omap4 pad configuration
 
Introduction of unit test on android kernel
Introduction of unit test on android kernelIntroduction of unit test on android kernel
Introduction of unit test on android kernel
 
Introduction of omap4 booting sequence
Introduction of omap4 booting sequence Introduction of omap4 booting sequence
Introduction of omap4 booting sequence
 
Integrate gitolite with mantis
Integrate gitolite with mantisIntegrate gitolite with mantis
Integrate gitolite with mantis
 
Algorithm Final Presentation
Algorithm Final PresentationAlgorithm Final Presentation
Algorithm Final Presentation
 

Recently uploaded

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Recently uploaded (20)

Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 

Introduction to Android G-sensor

  • 1. Introduction to G-Sesnsor and E-Compass Jiahe Jou 2, Dec., 2011
  • 2. Outlines ● Introduction ○ Sensor System ● G-Sensor System ○ Java Application Layer ○ Java Framework Layer ○ JNI ○ Hardware Abstraction Layer ○ Linux Kernel ○ Setup G-Sensor Driver ● Conclusion
  • 3. Introduction Sensor System
  • 4. Sensor System ● Detect the environment to provide better user experience ○ Accelerometer ○ Magnetometer ○ Light Sensor ○ Temperature Meter ● Application ○ Game feature ○ Rotate screen ○ E-compass
  • 5. Sensor System ● General architecture of sensor system
  • 6. Sensor System ● API ○ Provide a interface to get system sensor manager ● Framework ○ Sensor manager service ○ Definitions of sensor, sensor event, event listener ● JNI ○ Link the framework layer and HAL ● HAL ○ The hardware foundation of Android
  • 7. Sensor System ● In more detail
  • 8. G-Sensor System Java Application Layer Java Framework Layer JNI HAL Linux Kernel Setup the G-Sensor driver
  • 9. Java Application Layer ● Implement a sensor application ○ Get sensor manager ○ Get a specific sensor ○ Register sensor event listener ... mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); mAccerlerometer = mSensorManager.getDefautSensor( Sensor.TYPE_ACCELEROMETER); mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_GAME); ...
  • 10. Java Application Layer ● Implement event listener ... // Called when the sensor accuracy changed public void onAccuracyChanged(int sensor, int accuracy){ // You can leave this function empty } ... // Called when the sensor value changed public void onSensorChanged(SensorEvent event{ ... Log.d(TAG, "onSensorChanged==> sensor: " + sensor + ", x: " + event.values[0] + ", y: " + event.values[1] + ", z: " + event.values[2]); … } ...
  • 11. G-Sensor System Java Application Layer Java Framework Layer JNI HAL Linux Kernel Setup the G-Sensor driver
  • 12. Java Framework Layer ● Sensor Manager ○ getDefautSensor(int type) ... public Sensor getDefaultSensor( int type){ // just return the 1st sensor List<Sensor> l = getSensorList(type); return l.isEmpty() ? null : l.get(0); } … ○ registerListener(SensorEventListener listener, Sensor sensor, int rate) ... public boolean registerListener( (SensorEventListener listener, Sensor sensor, int rate){ // Another function was return return registerListener(listener, sensor, rate, null); } …
  • 13. Java Framework Layer ○ registerListener( (SensorEventListener listener, Sensor sensor, int rate, Handler handler) ■ Delegate a listener on a sensor ■ Lock the listening thread before sensor enabled ■ Enable the sensor ■ Unlock the listening thread ■ Start polling PS. Please refer to the Figure 7 in document
  • 14. G-Sensor System Java Application Layer Java Framework Layer JNI HAL Linux Kernel Setup the G-Sensor driver
  • 15. JNI ● Sensor Manager ○ Mapped to the sensor manager in framework layer ■ nativeClassInit() ○ Provide the native function interface, e.g.: ■ sensors_enable_sensor() ■ sensors_data_poll() PS. Please refer to the Figure 8 and Figure 9 in document
  • 16. G-Sensor System Java Application Layer Java Framework Layer JNI HAL Linux Kernel Setup the G-Sensor driver
  • 17. Hardware Abstraction Layer ● Located in /hardware/STSensors/* ● Built on SensorBase.cpp ○ openInput(const char* inpuName) ○ Open input device for a given name when construction P.S. Please refer to the Figure 10 in document
  • 18. Hardware Abstraction Layer ● AccSensor ○ #define INPUT_SYSFS_PATH_ACC "/sys/class/i2c- adapter/i2c-4/4-0019/" ○ readEvents() ■ Get data from sensor event ■ Calibrate for real world P.S. Please refer to the Figure 12 in document
  • 19. G-Sensor System Java Application Layer Java Framework Layer JNI HAL Linux Kernel Setup the G-Sensor driver
  • 20. Linux Kernel ● User space communicate with kernel space by system call ● Hardware drivers ● i2c protocol used
  • 21. Linux Kernel ● General architecture from user space to hardware
  • 22. Linux Kernel ● i2c driver need implement four methods: ○ probe ■ Check the i2c functionality ■ Initialize the input status ■ Register the poll function ■ Create the sysfs interface ○ remove ■ Unregister the poll device ■ Shutdown the power ■ Remove sysfs interface ■ Free the memory ○ resume ○ suspend P.S. Please refer the Figure 16 and Figure 17 in document
  • 23. Linux Kernel ● lsm303dlh_acc_report_values() static void lsm303dlh_acc_report_values(struct lsm303dlh_acc_data *acc, int *xyz) { struct input_dev *input = acc->input_poll_dev->input; input_report_abs(input, ABS_X, xyz[0]); input_report_abs(input, ABS_Y, xyz[1]); input_report_abs(input, ABS_Z, xyz[2]); input_sync(input); } P.S. Please refer to the Figure 18 and Figure 19 in document
  • 24. G-Sensor System Java Application Layer Java Framework Layer JNI HAL Linux Kernel Setup the G-Sensor driver
  • 25. Setup G-Sensor Driver ● Let Linux kernel load the driver ○ innocomm_oracle_deconfig ○ KConfig ○ Makefile P.S. Please refer to Figure 21 in document ● Setup regulator comsumer ○ board-oracle.c P.S. Please refer to Figure 22 in document ● Setup the i2c between oracle board and chip ○ board-oracle-i2c.c P.S. Please refer to Figure 23 in document
  • 26. Conclusion Conclusion
  • 27. Conclusion ● A top-down view: ○ Java application layer ○ Java framework layer ○ HAL ○ Linux kernel ● E-Compass system is as same as the G- Sensor system