duckietownhsunina / Mbed 2 deprecated AccpiuGiroscopio_timer_copy

Dependencies:   X_NUCLEO_IKS01A2 mbed

Fork of AccpiuGiroscopio_timer by duckietownhsunina

Files at this revision

API Documentation at this revision

Comitter:
cparata
Date:
Wed Nov 23 16:45:36 2016 +0000
Parent:
5:61e1b61c7e7d
Child:
7:12afd7461180
Commit message:
Move interrupt settings inside component drivers

Changed in this revision

X_NUCLEO_IKS01A2/Components/LSM6DSLSensor/LSM6DSLSensor.cpp Show annotated file Show diff for this revision Revisions of this file
X_NUCLEO_IKS01A2/Components/LSM6DSLSensor/LSM6DSLSensor.h Show annotated file Show diff for this revision Revisions of this file
X_NUCLEO_IKS01A2/x_nucleo_iks01a2.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/X_NUCLEO_IKS01A2/Components/LSM6DSLSensor/LSM6DSLSensor.cpp	Wed Nov 23 15:53:51 2016 +0000
+++ b/X_NUCLEO_IKS01A2/Components/LSM6DSLSensor/LSM6DSLSensor.cpp	Wed Nov 23 16:45:36 2016 +0000
@@ -51,7 +51,7 @@
  * @param i2c object of an helper class which handles the I2C peripheral
  * @param address the address of the component's instance
  */
-LSM6DSLSensor::LSM6DSLSensor(DevI2C &i2c) : dev_i2c(i2c)
+LSM6DSLSensor::LSM6DSLSensor(DevI2C &i2c, PinName INT1_pin, PinName INT2_pin) : dev_i2c(i2c), INT1_irq(INT1_pin), INT2_irq(INT2_pin)
 {
   address = LSM6DSL_ACC_GYRO_I2C_ADDRESS_HIGH; 
 };
@@ -60,7 +60,7 @@
  * @param i2c object of an helper class which handles the I2C peripheral
  * @param address the address of the component's instance
  */
-LSM6DSLSensor::LSM6DSLSensor(DevI2C &i2c, uint8_t address) : dev_i2c(i2c), address(address)
+LSM6DSLSensor::LSM6DSLSensor(DevI2C &i2c, PinName INT1_pin, PinName INT2_pin, uint8_t address) : dev_i2c(i2c), INT1_irq(INT1_pin), INT2_irq(INT2_pin), address(address)
 {
 
 };
--- a/X_NUCLEO_IKS01A2/Components/LSM6DSLSensor/LSM6DSLSensor.h	Wed Nov 23 15:53:51 2016 +0000
+++ b/X_NUCLEO_IKS01A2/Components/LSM6DSLSensor/LSM6DSLSensor.h	Wed Nov 23 16:45:36 2016 +0000
@@ -119,8 +119,8 @@
 class LSM6DSLSensor : public MotionSensor, public GyroSensor
 {
   public:
-    LSM6DSLSensor(DevI2C &i2c);
-    LSM6DSLSensor(DevI2C &i2c, uint8_t address);
+    LSM6DSLSensor(DevI2C &i2c, PinName INT1_pin, PinName INT2_pin);
+    LSM6DSLSensor(DevI2C &i2c, PinName INT1_pin, PinName INT2_pin, uint8_t address);
     virtual int Init(void *init);
     virtual int ReadID(uint8_t *id);
     virtual int Get_X_Axes(int32_t *pData);
@@ -175,6 +175,66 @@
     int WriteReg(uint8_t reg, uint8_t data);
     
     /**
+     * @brief  Attaching an interrupt handler to the INT1 interrupt.
+     * @param  fptr An interrupt handler.
+     * @retval None.
+     */
+    void AttachINT1IRQ(void (*fptr)(void))
+    {
+        INT1_irq.rise(fptr);
+    }
+
+    /**
+     * @brief  Enabling the INT1 interrupt handling.
+     * @param  None.
+     * @retval None.
+     */
+    void EnableINT1IRQ(void)
+    {
+        INT1_irq.enable_irq();
+    }
+    
+    /**
+     * @brief  Disabling the INT1 interrupt handling.
+     * @param  None.
+     * @retval None.
+     */
+    void DisableINT1IRQ(void)
+    {
+        INT1_irq.disable_irq();
+    }
+    
+    /**
+     * @brief  Attaching an interrupt handler to the INT2 interrupt.
+     * @param  fptr An interrupt handler.
+     * @retval None.
+     */
+    void AttachINT2IRQ(void (*fptr)(void))
+    {
+        INT2_irq.rise(fptr);
+    }
+
+    /**
+     * @brief  Enabling the INT2 interrupt handling.
+     * @param  None.
+     * @retval None.
+     */
+    void EnableINT2IRQ(void)
+    {
+        INT2_irq.enable_irq();
+    }
+    
+    /**
+     * @brief  Disabling the INT2 interrupt handling.
+     * @param  None.
+     * @retval None.
+     */
+    void DisableINT2IRQ(void)
+    {
+        INT2_irq.disable_irq();
+    }
+    
+    /**
      * @brief Utility function to read data.
      * @param  pBuffer: pointer to data to be read.
      * @param  RegisterAddr: specifies internal address register to be read.
@@ -206,7 +266,10 @@
 
     /* Helper classes. */
     DevI2C &dev_i2c;
-    
+
+    InterruptIn INT1_irq;
+    InterruptIn INT2_irq;
+
     /* Configuration */
     uint8_t address;
     
--- a/X_NUCLEO_IKS01A2/x_nucleo_iks01a2.cpp	Wed Nov 23 15:53:51 2016 +0000
+++ b/X_NUCLEO_IKS01A2/x_nucleo_iks01a2.cpp	Wed Nov 23 16:45:36 2016 +0000
@@ -52,7 +52,7 @@
     magnetometer(new LSM303AGR_MAG_Sensor(*dev_i2c)),
     accelerometer(new LSM303AGR_ACC_Sensor(*dev_i2c)),
     pt_sensor(new LPS22HBSensor(*dev_i2c)),
-    acc_gyro(new LSM6DSLSensor(*dev_i2c))
+    acc_gyro(new LSM6DSLSensor(*dev_i2c, IKS01A2_PIN_LSM6DSL_INT1, IKS01A2_PIN_LSM6DSL_INT2))
 { 
   ht_sensor->Init(NULL);
   magnetometer->Init(NULL);