Sog Yang / AS7000
Committer:
sog_yang
Date:
Sat May 06 00:56:47 2017 +0000
Revision:
1:510ee396d140
Parent:
0:aa97de8e628a
Child:
2:447946334c29
Add API Documents.

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