Sog Yang / AS7000
Committer:
sog_yang
Date:
Sun Apr 23 01:04:47 2017 +0000
Revision:
0:aa97de8e628a
Child:
1:510ee396d140
AS7000 ARM mBedOS C++ Driver

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sog_yang 0:aa97de8e628a 1 #ifndef AS7000_H
sog_yang 0:aa97de8e628a 2 #define AS7000_H
sog_yang 0:aa97de8e628a 3
sog_yang 0:aa97de8e628a 4 #include "mbed.h"
sog_yang 0:aa97de8e628a 5 //
sog_yang 0:aa97de8e628a 6 #define AS7000Address 0x60
sog_yang 0:aa97de8e628a 7 //Register definitions
sog_yang 0:aa97de8e628a 8 #define AS7000_STARTUP 0x04 //4
sog_yang 0:aa97de8e628a 9 #define HR_ONLY 0x08 //8
sog_yang 0:aa97de8e628a 10 #define HR_ONLY_LEN 0x07 //7
sog_yang 0:aa97de8e628a 11 #define HR_REG 0x12 //18
sog_yang 0:aa97de8e628a 12 #define HR_LEN 21
sog_yang 0:aa97de8e628a 13
sog_yang 0:aa97de8e628a 14 typedef struct{
sog_yang 0:aa97de8e628a 15 uint8_t transaction_id;
sog_yang 0:aa97de8e628a 16 uint8_t status;
sog_yang 0:aa97de8e628a 17 uint8_t hreat_rate;
sog_yang 0:aa97de8e628a 18 uint8_t signal_QA;
sog_yang 0:aa97de8e628a 19 uint16_t LED_current;
sog_yang 0:aa97de8e628a 20 uint8_t SYNC;
sog_yang 0:aa97de8e628a 21 uint8_t startup_flag;
sog_yang 0:aa97de8e628a 22 bool contact_detected;
sog_yang 0:aa97de8e628a 23 }as7000_t;
sog_yang 0:aa97de8e628a 24
sog_yang 0:aa97de8e628a 25
sog_yang 0:aa97de8e628a 26
sog_yang 0:aa97de8e628a 27
sog_yang 0:aa97de8e628a 28 /** Class for operating Bosch BNO055 sensor over I2C **/
sog_yang 0:aa97de8e628a 29 class AS7000
sog_yang 0:aa97de8e628a 30 {
sog_yang 0:aa97de8e628a 31 public:
sog_yang 0:aa97de8e628a 32
sog_yang 0:aa97de8e628a 33 /** Create BNO055 instance **/
sog_yang 0:aa97de8e628a 34 AS7000(PinName SDA, PinName SCL);
sog_yang 0:aa97de8e628a 35
sog_yang 0:aa97de8e628a 36 void gpio_init(void);
sog_yang 0:aa97de8e628a 37 void enable (void);
sog_yang 0:aa97de8e628a 38 void startup (void);
sog_yang 0:aa97de8e628a 39 void hr_only (void);
sog_yang 0:aa97de8e628a 40 void update (void);
sog_yang 0:aa97de8e628a 41 as7000_t hrm;
sog_yang 0:aa97de8e628a 42
sog_yang 0:aa97de8e628a 43
sog_yang 0:aa97de8e628a 44 private:
sog_yang 0:aa97de8e628a 45 I2C _i2c;
sog_yang 0:aa97de8e628a 46 char rx,tx[2],address; //I2C variables
sog_yang 0:aa97de8e628a 47 char rawdata[22]; //Temporary array for input data values
sog_yang 0:aa97de8e628a 48 char hreat_rate;
sog_yang 0:aa97de8e628a 49 char startup_flag;
sog_yang 0:aa97de8e628a 50
sog_yang 0:aa97de8e628a 51 void readchar(char location){
sog_yang 0:aa97de8e628a 52 tx[0] = location;
sog_yang 0:aa97de8e628a 53 _i2c.write(address,tx,1,true);
sog_yang 0:aa97de8e628a 54 _i2c.read(address,&rx,1,false);
sog_yang 0:aa97de8e628a 55 }
sog_yang 0:aa97de8e628a 56
sog_yang 0:aa97de8e628a 57 void writechar(char location, char value){
sog_yang 0:aa97de8e628a 58 tx[0] = location;
sog_yang 0:aa97de8e628a 59 tx[1] = value;
sog_yang 0:aa97de8e628a 60 _i2c.write(address,tx,2);
sog_yang 0:aa97de8e628a 61 }
sog_yang 0:aa97de8e628a 62 };
sog_yang 0:aa97de8e628a 63 #endif