OB1203 basic mbed driver

Dependents:   OB1203_IDT

Revision:
5:527556d05aa8
Parent:
4:f25ca600a0e6
Child:
6:337ee64ca7ab
--- a/OB1203.cpp	Mon May 14 16:57:51 2018 +0000
+++ b/OB1203.cpp	Mon May 14 18:49:02 2018 +0000
@@ -68,7 +68,35 @@
 {
     int status_reg_vals;
     status_reg_vals = get_status();
-    return ((status_reg_vals & 0x10)>>8) || (status_reg_vals & 0x01);
+    return ((status_reg_vals & 0x0100)>>8) || (status_reg_vals & 0x0091);
+}
+
+bool OB1203::lsIsNew()
+{
+    int status_reg_vals;
+    status_reg_vals = get_status();
+    return ((status_reg_vals & 0x0100)>>8);
+}
+
+bool OB1203::psIsNew()
+{
+    int status_reg_vals;
+    status_reg_vals = get_status();
+    return (status_reg_vals & 0x0001);
+}
+
+bool OB1203::tempIsNew()
+{
+    int status_reg_vals;
+    status_reg_vals = get_status();
+    return (status_reg_vals & 0x0080);
+}
+
+bool OB1203::bioIsNew()
+{
+    int status_reg_vals;
+    status_reg_vals = get_status();
+    return (status_reg_vals & 0x0010);
 }
 
 void OB1203::setMainConfig()
@@ -76,7 +104,7 @@
     char writeData[2];
     writeData[0] = ls_sai | ls_mode | ls_en; //MAIN_CTRL_0
     writeData[1] = temp_en | ps_sai_en | ppg_ps_mode | ppg_ps_en; //MAIN_CTRL_1
-    pc.printf("main config 1 to write %02x\r\n",writeData[1]);
+//    pc.printf("main config 1 to write %02x\r\n",writeData[1]);
     writeBlock(OB1203_ADDR,REG_MAIN_CTRL_0,writeData,2); 
 }
 
@@ -291,15 +319,16 @@
 
 char OB1203::get_ls_data(uint32_t *data)
 {  
-    char byte_data[19];
+    char byte_data[21];
     readBlock(OB1203_ADDR,REG_STATUS_0,byte_data,19);  
     #ifdef DEBUG
-        pc.printf("%02x %02x  %02x %02x  %02x %02x %02x  %02x %02x %02x  %02x %02x %02x  %02x %02x  %02x %02x %02x %02x\r\n",
+        pc.printf("%02x %02x  %02x %02x  %02x %02x %02x  %02x %02x %02x  %02x %02x %02x  %02x %02x  %02x %02x %02x %02x %02x $02x\r\n",
         byte_data[0],byte_data[1],byte_data[2],byte_data[3],
         byte_data[4],byte_data[5],byte_data[6],byte_data[7],
         byte_data[8],byte_data[9],byte_data[10],byte_data[11],
         byte_data[12],byte_data[13],byte_data[14],byte_data[15],
-        byte_data[16],byte_data[17],byte_data[18]);
+        byte_data[16],byte_data[17],byte_data[18]),
+        byte_data[19],byte_data[20];
     #endif
      
 
@@ -309,7 +338,7 @@
     data[3] = bytes2uint32(byte_data,10); //b
     data[4] = bytes2uint32(byte_data,13); //r
     data[5] = bytes2uint32(byte_data,16); //c
-
+    data[6] = ((uint32_t)byte_data[19])<<8 | ((uint32_t)byte_data[20]); //temp data
     return ( (byte_data[0] & LS_NEW_DATA) == 0x01 ? 1 : 0); //return 1 if new data or 0 if old data
 }