Modified for compatibility with Rev.E. hardware

Fork of AkmSensor by AKM Development Platform

Committer:
masahikofukasawa
Date:
Wed Feb 22 21:56:05 2017 +0000
Revision:
20:2fca76521680
Parent:
19:8dcc4f323bdc
Child:
24:1d37438f31a9
Child:
27:41aa9fb23a2f
Debugged for AK09915 when stop sensor.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
masahikofukasawa 0:7a00359e701e 1 #ifndef AKMAKD_H
masahikofukasawa 0:7a00359e701e 2 #define AKMAKD_H
masahikofukasawa 0:7a00359e701e 3
masahikofukasawa 0:7a00359e701e 4 #include "mbed.h"
masahikofukasawa 0:7a00359e701e 5 #include "SerialNano.h"
masahikofukasawa 0:7a00359e701e 6 #include "akmsensor.h"
masahikofukasawa 0:7a00359e701e 7 #include "akmecompass.h"
masahikofukasawa 0:7a00359e701e 8
masahikofukasawa 20:2fca76521680 9 #define AKDP_MAG_SENSITIVITY (0.15) // [uT/LSB]
masahikofukasawa 20:2fca76521680 10 #define AKDP_POLLING_FREQUENCY (200.0) // [Hz]
masahikofukasawa 20:2fca76521680 11
masahikofukasawa 0:7a00359e701e 12 class AkmAkd : public AkmSensor
masahikofukasawa 0:7a00359e701e 13 {
masahikofukasawa 0:7a00359e701e 14
masahikofukasawa 0:7a00359e701e 15 public:
masahikofukasawa 0:7a00359e701e 16
masahikofukasawa 0:7a00359e701e 17 // SUB ID
masahikofukasawa 18:b7182d5ad8d5 18 typedef enum { // 5bit AKDP Secondary ID
masahikofukasawa 0:7a00359e701e 19 SUB_ID_AK8963N = 0x1A, // 26
masahikofukasawa 6:c4401549d68f 20 SUB_ID_AK8963C = 0x1C, // 28
masahikofukasawa 10:5c69b067d88a 21 SUB_ID_AK09911C = 0x0A, // 10
masahikofukasawa 10:5c69b067d88a 22 SUB_ID_AK09912C = 0x09, // 9
masahikofukasawa 10:5c69b067d88a 23 SUB_ID_AK09915C = 0x0D, // 13
masahikofukasawa 0:7a00359e701e 24 SUB_ID_AK09916C = 0x0E, // 14
masahikofukasawa 10:5c69b067d88a 25 SUB_ID_AK09916D = 0x0F, // 15
masahikofukasawa 10:5c69b067d88a 26 SUB_ID_AK09915D = 0x10, // 16
masahikofukasawa 18:b7182d5ad8d5 27 SUB_ID_AK09918 = 0x11, // 17
masahikofukasawa 0:7a00359e701e 28 } SubIdAkd;
masahikofukasawa 0:7a00359e701e 29
masahikofukasawa 19:8dcc4f323bdc 30 typedef enum {
masahikofukasawa 19:8dcc4f323bdc 31 INTERRUPT_DISABLED = 0x00, // Polling
masahikofukasawa 19:8dcc4f323bdc 32 INTERRUPT_ENABLED_PP = 0x01, // Push-Pull
masahikofukasawa 19:8dcc4f323bdc 33 INTERRUPT_ENABLED_OD = 0x02, // Open drain
masahikofukasawa 19:8dcc4f323bdc 34 } InterruptMode;
masahikofukasawa 19:8dcc4f323bdc 35
masahikofukasawa 0:7a00359e701e 36 /**
masahikofukasawa 0:7a00359e701e 37 * Constructor.
masahikofukasawa 0:7a00359e701e 38 *
masahikofukasawa 0:7a00359e701e 39 */
masahikofukasawa 0:7a00359e701e 40 AkmAkd();
masahikofukasawa 0:7a00359e701e 41
masahikofukasawa 0:7a00359e701e 42 /**
masahikofukasawa 0:7a00359e701e 43 * Destructor.
masahikofukasawa 0:7a00359e701e 44 *
masahikofukasawa 0:7a00359e701e 45 */
masahikofukasawa 0:7a00359e701e 46 virtual ~AkmAkd();
masahikofukasawa 0:7a00359e701e 47 virtual AkmSensor::Status init(const uint8_t id, const uint8_t subid);
masahikofukasawa 0:7a00359e701e 48 virtual bool isEvent();
masahikofukasawa 0:7a00359e701e 49 virtual AkmSensor::Status startSensor();
masahikofukasawa 0:7a00359e701e 50 virtual AkmSensor::Status startSensor(const float sec);
masahikofukasawa 0:7a00359e701e 51 virtual AkmSensor::Status stopSensor();
masahikofukasawa 0:7a00359e701e 52 virtual AkmSensor::Status readSensorData(Message* msg);
masahikofukasawa 0:7a00359e701e 53 virtual Status requestCommand(Message* in, Message* out);
masahikofukasawa 13:d008249f0359 54 virtual char* getSensorName();
masahikofukasawa 0:7a00359e701e 55
masahikofukasawa 0:7a00359e701e 56 void checkDRDY();
masahikofukasawa 0:7a00359e701e 57 void detectDRDY();
masahikofukasawa 0:7a00359e701e 58 int getSensorType();
masahikofukasawa 19:8dcc4f323bdc 59 InterruptMode getInterrupt(uint8_t primaryId, uint8_t subId);
masahikofukasawa 20:2fca76521680 60 AkmSensor::Status checkSensor( const uint8_t primaryid, const uint8_t subid, AkmECompass::DeviceId* devid);
masahikofukasawa 19:8dcc4f323bdc 61
masahikofukasawa 0:7a00359e701e 62 private:
masahikofukasawa 0:7a00359e701e 63 bool event;
masahikofukasawa 0:7a00359e701e 64 uint8_t primaryId;
masahikofukasawa 0:7a00359e701e 65 uint8_t subId;
masahikofukasawa 13:d008249f0359 66 char* sensorName;
masahikofukasawa 0:7a00359e701e 67
masahikofukasawa 0:7a00359e701e 68 Ticker ticker;
masahikofukasawa 0:7a00359e701e 69 AkmECompass* compass;
masahikofukasawa 0:7a00359e701e 70 InterruptIn* drdy;
masahikofukasawa 9:6fa3e7b17c27 71 AkmECompass::OperationMode mode;
masahikofukasawa 9:6fa3e7b17c27 72 AkmECompass::Nsf nsf;
masahikofukasawa 19:8dcc4f323bdc 73 AkmECompass::Sdr sdr;
masahikofukasawa 0:7a00359e701e 74 };
masahikofukasawa 0:7a00359e701e 75
masahikofukasawa 0:7a00359e701e 76 #endif