diff --git a/lib/maxim/MAX77650-Arduino-Library/MAX77650-Arduino-Library.c b/lib/maxim/MAX77650-Arduino-Library/MAX77650-Arduino-Library.c
index 967a2d57c4ca2efbde3ad03381312a68263ab269..b1273176a8fa9f762695655a5b275a19052b3b91 100644
--- a/lib/maxim/MAX77650-Arduino-Library/MAX77650-Arduino-Library.c
+++ b/lib/maxim/MAX77650-Arduino-Library/MAX77650-Arduino-Library.c
@@ -35,8 +35,10 @@
 **********************************************************************/
 
 
-#include <MAX77650-Arduino-Library.h>
-
+#include "MAX77650-Arduino-Library.h"
+#include "i2c.h"
+#include <stdint.h>
+#include <stdbool.h>
 
 
 /**********************************************************************
@@ -61,34 +63,29 @@
 *https://www.maximintegrated.com/en/app-notes/index.mvp/id/6428
 **********************************************************************/
 
-int MAX77650_read_register(int ADDR){
-#if 0
-    int retval = -1;
-    Wire.beginTransmission(MAX77650_ADDR);
-    Wire.write(ADDR);
-    Wire.endTransmission();
-    Wire.requestFrom(MAX77650_ADDR,1);
-    if (Wire.available()<=1)
-        retval = (Wire.read());
-#endif
-}
-
-uint8_t MAX77650_write_register(int ADDR, int data){
-#if 0
-    int retval = -1;
-    Wire.beginTransmission(MAX77650_ADDR);
-    Wire.write(ADDR);
-    Wire.write(data);
-    Wire.endTransmission();
-
-    Wire.beginTransmission(MAX77650_ADDR);
-    Wire.write(ADDR);
-    Wire.write(data);
-    Wire.endTransmission();
-#endif
-}
-
-bool MAX77650_getDIDM(void){
+#define I2C_DEVICE	    MXC_I2C1_BUS0
+
+uint8_t MAX77650_read_register(uint8_t ADDR){
+    //printf("MAX77650_read_register 0x%02x\n", ADDR);
+    if(I2C_MasterWrite(I2C_DEVICE, MAX77650_ADDR << 1, &ADDR, 1, 1) == 1) {
+        uint8_t data;
+        I2C_MasterRead(I2C_DEVICE, MAX77650_ADDR << 1, &data, 1, 0);
+        return data;
+    }
+    return 0;
+}
+
+uint8_t MAX77650_write_register(uint8_t ADDR, uint8_t data){
+    uint8_t buf[2];
+
+    //printf("MAX77650_write_register 0x%02x 0x%02x\n", ADDR, data);
+    buf[0] = ADDR;
+    buf[1] = data;
+
+    return I2C_MasterWrite(I2C_DEVICE, MAX77650_ADDR << 1, buf, 2, 0);
+}
+
+uint8_t MAX77650_getDIDM(void){
   return ((MAX77650_read_register(MAX77650_STAT_GLBL_ADDR) >> 6) & 0b00000011);
 }
 
diff --git a/lib/maxim/MAX77650-Arduino-Library/MAX77650-Arduino-Library.h b/lib/maxim/MAX77650-Arduino-Library/MAX77650-Arduino-Library.h
index 2ceb38bda02b71197c32cb0417184bae2f6f0700..00e529a13e69c04c02959f35437c91814b018349 100644
--- a/lib/maxim/MAX77650-Arduino-Library/MAX77650-Arduino-Library.h
+++ b/lib/maxim/MAX77650-Arduino-Library/MAX77650-Arduino-Library.h
@@ -46,6 +46,9 @@
 #ifndef MAX77650_H
 #define MAX77650_H
 
+#include <stdint.h>
+#include <stdbool.h>
+
 /**********************************************************************
 *@brief MAX77650 - The MAX77650/MAX77651 provide highly-integrated battery charging and
 *power supply solutions for low-power wearable applications where size and efficiency
@@ -117,12 +120,11 @@
 #define MAX77650_CNFG_LED_TOP_ADDR 0x46  //LED Configuration Register; Reset Value 0x0D; Read/Write
 //***** End MAX77650 Register Definitions *****
 
-bool MAX77650_init(void);
-int MAX77650_read_register(int);
-uint8_t MAX77650_write_register(int, int);
+uint8_t MAX77650_read_register(uint8_t);
+uint8_t MAX77650_write_register(uint8_t, uint8_t);
 
 //Status Register (STAT_GLBL) related reads
-bool MAX77650_getDIDM(void); //Returns Part Number; Return Value: 1=MAX77650; 2=MAX77651; -1=error reading DeviceID
+uint8_t MAX77650_getDIDM(void); //Returns Part Number; Return Value: 1=MAX77650; 2=MAX77651; -1=error reading DeviceID
 bool MAX77650_getLDO_DropoutDetector(void); //Returns whether the LDO is in Dropout or not; Return Value: 0=LDO is not in dropout; 1=LDO is in dropout
 bool MAX77650_getThermalAlarm1(void); //Returns Thermal Alarm (TJA1 limit); Return Value: 0=Tj<TJA1; 1=Tj>TJA1
 bool MAX77650_getThermalAlarm2(void); //Returns Therma2 Alarm (TJA2 limit); Return Value: 0=Tj<TJA2; 1=Tj>TJA2