Honeywell HMC6352 digital compass library.

Dependents:   CanSat-C_test test AvoidTest Run-Avoid

Revision:
2:0a44cb78fd9a
Parent:
1:c1e543f15817
--- a/HMC6352.h	Thu Oct 28 09:33:50 2021 +0000
+++ b/HMC6352.h	Sat Nov 06 03:07:09 2021 +0000
@@ -1,37 +1,3 @@
-/**
- * @author Aaron Berk
- * 
- * @section LICENSE
- *
- * Copyright (c) 2010 ARM Limited
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * @section DESCRIPTION
- *
- * Honeywell HMC6352 digital compass.
- *
- * Datasheet:
- *
- * http://www.ssec.honeywell.com/magnetic/datasheets/HMC6352.pdf
- */
-
 #ifndef HMC6352_H
 #define HMC6352_H
 
@@ -43,44 +9,21 @@
 /**
  * Defines
  */
-#define HMC6352_I2C_ADDRESS  (0x21<<1) //7-bit address. 0x43 write, 0x42 read.
+#define HMC6352_I2C_ADDRESS  (0x42>>1) //7-bit address. 0x43 write, 0x42 read.
 
 //Commands.
 #define HMC6352_EEPROM_WRITE 0x77
-#define HMC6352_EEPROM_READ  0x72
 #define HMC6352_RAM_WRITE    0x47
 #define HMC6352_RAM_READ     0x67
-#define HMC6352_ENTER_SLEEP  0x53
-#define HMC6352_EXIT_SLEEP   0x57
-#define HMC6352_SET_RESET    0x4F
 #define HMC6352_ENTER_CALIB  0x43
 #define HMC6352_EXIT_CALIB   0x45
-#define HMC6352_SAVE_OPMODE  0x4C
 #define HMC6352_GET_DATA     0x41
 
 //EEPROM locations.
-#define HMC6352_SLAVE_ADDR   0x00
-#define HMC6352_MX_OFF_MSB   0x01
-#define HMC6352_MX_OFF_LSB   0x02
-#define HMC6352_MY_OFF_MSB   0x03
-#define HMC6352_MY_OFF_LSB   0x04
-#define HMC6352_TIME_DELAY   0x05
-#define HMC6352_SUMMED       0x06
-#define HMC6352_SOFT_VER     0x07
 #define HMC6352_OPMODE       0x08
 
 //RAM registers.
 #define HMC6352_RAM_OPMODE   0x74
-#define HMC6352_RAM_OUTPUT   0x4E
-
-#define HMC6352_MX_OFFSET    0x00
-#define HMC6352_MY_OFFSET    0x01
-
-#define HMC6352_HEADING_MODE 0x00
-#define HMC6352_RAWMAGX_MODE 0x01
-#define HMC6352_RAWMAGY_MODE 0x02
-#define HMC6352_MAGX_MODE    0x03
-#define HMC6352_MAGY_MODE    0x04
 
 //Operational mode register masks.
 #define HMC6352_CM_MR_1HZ    0x00
@@ -125,20 +68,6 @@
      */
     int sample(void);
 
-    /**
-     * Enter into or exit from sleep mode.
-     *
-     * @param enterOrExit 0x57 -> Exit sleep mode
-     *                    0x53 -> Enter
-     */
-    void setSleepMode(int enterOrExit);
-
-    /**
-     * Update bridge offsets.
-     *
-     * Performs a set/reset immediately.
-     */
-    void setReset(void);
 
     /**
      * Enter into or exit from calibration mode.
@@ -149,71 +78,6 @@
     void setCalibrationMode(int enterOrExit);
 
     /**
-     * Save the current operation mode byte to EEPROM.
-     */
-    void saveOpMode(void);
-
-    /**
-     * Read the memory location on the device which contains the slave address.
-     *
-     * @return The slave address of the device.
-     */
-    int getSlaveAddress(void);
-
-    /**
-     * Read the current offset for X or Y axis magnetometer.
-     *
-     * @param axis 0x00 -> X-axis
-     *             0x01 -> Y-axis
-     * @return The current offset for the axis as a 16-bit number.
-     */
-    int getOffset(int axis);
-
-    /**
-     * Set the offset for X or Y axis magnetometer.
-     *
-     * @param axis 0x00 -> X-axis
-     *             0x01 -> Y-axis
-     * @param offset The offset to set for the axis (set to a 16-bit number).
-     */
-    void setOffset(int axis, int offset);
-
-    /**
-     * Get the current time delay.
-     *
-     * @return The time delay in milliseconds.
-     */
-    int getTimeDelay(void);
-
-    /**
-     * Set the time delay of the device.
-     *
-     * @param delay The time delay to set in milliseconds (between 0-255);
-     */
-    void setTimeDelay(int delay);
-
-    /**
-     * Get the number of measurements being summed each sample.
-     *
-     * @return The number of summed measurement.
-     */
-    int getSumNumber(void);
-
-    /**
-     * Set the number of measurements being summed each sample.
-     *
-     * @param sum The number of measurements to be summed (between 0-16);
-     */
-    void setSumNumber(int sum);
-
-    /**
-     * Get the software version on the device.
-     *
-     * @return The software version number.
-     */
-    int getSoftwareVersion(void);
-
-    /**
      * Get the current operation mode.
      *
      * @return 0x00 -> Standby mode
@@ -235,24 +99,6 @@
      */
     void setOpMode(int mode, int periodicSetReset, int measurementRate = 0);
 
-    /**
-     * Get the current output mode of the device.
-     *
-     * @return The current output mode.
-     */
-    int getOutputMode(void);
-
-    /**
-     * Set the output mode of the device.
-     *
-     * @param mode 0x00 -> Heading mode
-     *             0x01 -> Raw magnetometer X mode
-     *             0x02 -> Raw magnetometer Y mode
-     *             0x03 -> Magnetometer X mode
-     *             0x04 -> Magnetometer Y mode
-     */
-    void setOutputMode(int mode);
-
 private:
 
     I2C* i2c_;