Modified for compatibility with Rev.E. hardware

Fork of AkmSensor by AKM Development Platform

Committer:
masahikofukasawa
Date:
Fri Mar 17 23:29:20 2017 +0000
Revision:
29:b488d2c89fba
Parent:
27:41aa9fb23a2f
Child:
34:1ea3357c8d9a
Modified for multi sensor demo.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
masahikofukasawa 0:7a00359e701e 1 #ifndef AKMSENSOR_H
masahikofukasawa 0:7a00359e701e 2 #define AKMSENSOR_H
masahikofukasawa 0:7a00359e701e 3
masahikofukasawa 0:7a00359e701e 4 #include "mbed.h"
masahikofukasawa 0:7a00359e701e 5 #include "Message.h"
masahikofukasawa 29:b488d2c89fba 6 //#include "debug.h"
masahikofukasawa 0:7a00359e701e 7
masahikofukasawa 0:7a00359e701e 8 // SPI
masahikofukasawa 0:7a00359e701e 9 #define SPI_SCK P0_8 //SPI, SCK
masahikofukasawa 0:7a00359e701e 10 #define SPI_MISO P0_9 //SPI, MISO
masahikofukasawa 0:7a00359e701e 11 #define SPI_MOSI P0_10 //SPI, MOSI
masahikofukasawa 4:af13b985c689 12 #define SPI_CS P0_11 //SPI, CS
masahikofukasawa 7:e269411568c9 13 #define SPI_DRDY P0_7 //SPI, DRDY
masahikofukasawa 0:7a00359e701e 14
masahikofukasawa 0:7a00359e701e 15 // I2C
masahikofukasawa 0:7a00359e701e 16 #define I2C_SCL P0_8 //I2C, SCL
masahikofukasawa 0:7a00359e701e 17 #define I2C_SDA P0_10 //I2C, SDA
masahikofukasawa 0:7a00359e701e 18
masahikofukasawa 0:7a00359e701e 19 // Digital Port
masahikofukasawa 0:7a00359e701e 20 #define DIGITAL_D0 P0_11
masahikofukasawa 0:7a00359e701e 21 #define DIGITAL_D1 P0_9
masahikofukasawa 0:7a00359e701e 22
masahikofukasawa 0:7a00359e701e 23 // DRDY Port
masahikofukasawa 7:e269411568c9 24 #define I2C_DRDY P0_11
masahikofukasawa 0:7a00359e701e 25
masahikofukasawa 0:7a00359e701e 26 // Analog In
masahikofukasawa 0:7a00359e701e 27 #define ANALOG_IN_PIN P0_5 //P05
masahikofukasawa 0:7a00359e701e 28
masahikofukasawa 0:7a00359e701e 29 #define I2C_SPEED_100KHZ 100000
masahikofukasawa 0:7a00359e701e 30 #define I2C_SPEED_400KHZ 400000
masahikofukasawa 0:7a00359e701e 31
masahikofukasawa 11:cef8dc1cf010 32 #define SENSOR_SAMPLING_RATE 0.1 // 10Hz
masahikofukasawa 0:7a00359e701e 33
masahikofukasawa 0:7a00359e701e 34 class AkmSensor
masahikofukasawa 0:7a00359e701e 35 {
masahikofukasawa 0:7a00359e701e 36
masahikofukasawa 0:7a00359e701e 37 public:
masahikofukasawa 0:7a00359e701e 38 typedef enum {
masahikofukasawa 0:7a00359e701e 39 SUCCESS = 0,
masahikofukasawa 0:7a00359e701e 40 ERROR,
masahikofukasawa 0:7a00359e701e 41 } Status;
masahikofukasawa 0:7a00359e701e 42
masahikofukasawa 0:7a00359e701e 43 typedef enum {
masahikofukasawa 0:7a00359e701e 44 AKM_PRIMARY_ID_AKD_SPI = 0x0,
masahikofukasawa 0:7a00359e701e 45 AKM_PRIMARY_ID_UNIPOLAR = 0x1,
masahikofukasawa 0:7a00359e701e 46 AKM_PRIMARY_ID_OMNIPOLAR = 0x2,
masahikofukasawa 0:7a00359e701e 47 AKM_PRIMARY_ID_LATCH = 0x3,
masahikofukasawa 0:7a00359e701e 48 AKM_PRIMARY_ID_DUAL_OUTPUT = 0x4,
masahikofukasawa 0:7a00359e701e 49 AKM_PRIMARY_ID_ONECHIP_ENCODER = 0x5,
masahikofukasawa 0:7a00359e701e 50 AKM_PRIMARY_ID_TBD1 = 0x6,
masahikofukasawa 0:7a00359e701e 51 AKM_PRIMARY_ID_TBD2 = 0x7,
masahikofukasawa 27:41aa9fb23a2f 52 AKM_PRIMARY_ID_DEMO = 0x8,
masahikofukasawa 0:7a00359e701e 53 AKM_PRIMARY_ID_CURRENT_SENSOR = 0x9,
masahikofukasawa 0:7a00359e701e 54 AKM_PRIMARY_ID_MISC_ANALOG = 0xA,
masahikofukasawa 0:7a00359e701e 55 AKM_PRIMARY_ID_LINEAR_SENSOR = 0xB,
masahikofukasawa 4:af13b985c689 56 AKM_PRIMARY_ID_TBD3 = 0xC,
masahikofukasawa 4:af13b985c689 57 AKM_PRIMARY_ID_IR_SENSOR = 0xD,
masahikofukasawa 0:7a00359e701e 58 AKM_PRIMARY_ID_ANGLE_SENSOR = 0xE,
masahikofukasawa 0:7a00359e701e 59 AKM_PRIMARY_ID_AKD_I2C = 0xF,
masahikofukasawa 0:7a00359e701e 60 } SensorPrimaryId;
masahikofukasawa 0:7a00359e701e 61
masahikofukasawa 27:41aa9fb23a2f 62 virtual ~AkmSensor(){};
masahikofukasawa 0:7a00359e701e 63 virtual Status init(const uint8_t id, const uint8_t subid) = 0;
masahikofukasawa 0:7a00359e701e 64 virtual Status startSensor() = 0;
masahikofukasawa 0:7a00359e701e 65 virtual Status startSensor(const float sec) = 0;
masahikofukasawa 0:7a00359e701e 66 virtual Status stopSensor() = 0;
masahikofukasawa 0:7a00359e701e 67 virtual Status readSensorData(Message* msg) = 0;
masahikofukasawa 0:7a00359e701e 68 virtual Status requestCommand(Message* in, Message* out) = 0;
masahikofukasawa 27:41aa9fb23a2f 69
masahikofukasawa 29:b488d2c89fba 70 virtual void setEvent(){
masahikofukasawa 29:b488d2c89fba 71 // MSG("#setEvent called.\r\n");
masahikofukasawa 29:b488d2c89fba 72 event = true;
masahikofukasawa 29:b488d2c89fba 73 }
masahikofukasawa 29:b488d2c89fba 74
masahikofukasawa 29:b488d2c89fba 75 void clearEvent(){
masahikofukasawa 29:b488d2c89fba 76 // MSG("#clearEvent called.\r\n");
masahikofukasawa 29:b488d2c89fba 77 event = false;
masahikofukasawa 29:b488d2c89fba 78 }
masahikofukasawa 29:b488d2c89fba 79
masahikofukasawa 27:41aa9fb23a2f 80 bool isEvent(){
masahikofukasawa 27:41aa9fb23a2f 81 return event;
masahikofukasawa 27:41aa9fb23a2f 82 }
masahikofukasawa 27:41aa9fb23a2f 83
masahikofukasawa 27:41aa9fb23a2f 84 char* getSensorName(){
masahikofukasawa 27:41aa9fb23a2f 85 return sensorName;
masahikofukasawa 27:41aa9fb23a2f 86 };
masahikofukasawa 27:41aa9fb23a2f 87
masahikofukasawa 27:41aa9fb23a2f 88 int getPrimaryId(){
masahikofukasawa 27:41aa9fb23a2f 89 return primaryId;
masahikofukasawa 27:41aa9fb23a2f 90 };
masahikofukasawa 27:41aa9fb23a2f 91
masahikofukasawa 27:41aa9fb23a2f 92 int getSecondaryId(){
masahikofukasawa 27:41aa9fb23a2f 93 return subId;
masahikofukasawa 27:41aa9fb23a2f 94 };
masahikofukasawa 0:7a00359e701e 95
masahikofukasawa 29:b488d2c89fba 96 private:
masahikofukasawa 29:b488d2c89fba 97 bool event;
masahikofukasawa 29:b488d2c89fba 98
masahikofukasawa 27:41aa9fb23a2f 99 protected:
masahikofukasawa 27:41aa9fb23a2f 100 uint8_t primaryId;
masahikofukasawa 27:41aa9fb23a2f 101 uint8_t subId;
masahikofukasawa 27:41aa9fb23a2f 102 char* sensorName;
masahikofukasawa 27:41aa9fb23a2f 103
masahikofukasawa 27:41aa9fb23a2f 104 AkmSensor(){
masahikofukasawa 27:41aa9fb23a2f 105 event = false;
masahikofukasawa 27:41aa9fb23a2f 106 primaryId = 0;
masahikofukasawa 27:41aa9fb23a2f 107 subId = 0;
masahikofukasawa 27:41aa9fb23a2f 108 sensorName = "";
masahikofukasawa 27:41aa9fb23a2f 109 };
masahikofukasawa 0:7a00359e701e 110 };
masahikofukasawa 0:7a00359e701e 111
masahikofukasawa 0:7a00359e701e 112 #endif