fork of library for MAX14661 16:2 mux
Fork of max14661 by
Diff: max14661.cpp
- Revision:
- 12:f14ce75c0661
- Parent:
- 11:d3971b4fbdd8
diff -r d3971b4fbdd8 -r f14ce75c0661 max14661.cpp --- a/max14661.cpp Tue Sep 29 23:06:01 2015 +0000 +++ b/max14661.cpp Tue Mar 29 00:58:54 2016 +0000 @@ -1,22 +1,4 @@ /******************************************************************//** -* @file max14661.cpp -* -* @author Justin Jordan -* -* @version 1.0 -* -* Started: 11NOV14 -* -* Updated: -* 29SEP15 - added second constructor that uses pointer to I2C bus -* - added destructor -* - removed redundant comments, see 'DRY' methodology -* -* @brief Source file for MAX14661 class -* -*********************************************************************** -* -* @copyright * Copyright (C) 2015 Maxim Integrated Products, Inc., All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -53,37 +35,31 @@ //********************************************************************* -Max14661::Max14661(I2C *i2c_bus, max14661_i2c_adrs_t i2c_adrs): _p_i2c(i2c_bus) +Max14661::Max14661(PinName sda, PinName scl, max14661_i2c_adrs_t i2c_adrs) +:_i2c(new I2C(sda, scl)), _i2c_owner(true), _w_adrs(i2c_adrs << 1), _r_adrs((i2c_adrs << 1) | 1) { - _i2c_owner = false; - - _r_adrs = ((i2c_adrs << 1) | 1); - _w_adrs = (i2c_adrs << 1); + } //********************************************************************* -Max14661::Max14661(PinName sda, PinName scl, max14661_i2c_adrs_t i2c_adrs) +Max14661::Max14661(I2C & i2c_bus, max14661_i2c_adrs_t i2c_adrs) +:_i2c(&i2c_bus), _i2c_owner(false), _w_adrs(i2c_adrs << 1), _r_adrs((i2c_adrs << 1) | 1) { - _p_i2c = new I2C(sda, scl); - _i2c_owner = true; - - _r_adrs = ((i2c_adrs << 1) | 1); - _w_adrs = (i2c_adrs << 1); } //********************************************************************* Max14661::~Max14661() { - if(_i2c_owner) + if(_i2c_owner) { - delete _p_i2c; + delete _i2c; } } -/*********************************************************************/ +//********************************************************************* uint16_t Max14661::wrt_cmd_registers(max14661_cmds_t cmdA, max14661_cmds_t cmdB) { @@ -96,13 +72,13 @@ data[data_length++] = cmdA; data[data_length++] = cmdB; - rtn_val = _p_i2c->write(_w_adrs,(const char*) data, data_length); + rtn_val = _i2c->write(_w_adrs,(const char*) data, data_length); return(rtn_val); } -/*********************************************************************/ +//********************************************************************* uint16_t Max14661::wrt_shadow_registers(uint16_t bankA, uint16_t bankB) { uint8_t data[5]; @@ -115,13 +91,13 @@ data[data_length++] = (bankB & 0x00FF); data[data_length++] = ((bankB >> 8) & 0x00FF); - rtn_val = _p_i2c->write(_w_adrs,(const char*) data, data_length); + rtn_val = _i2c->write(_w_adrs,(const char*) data, data_length); return(rtn_val); } -/*********************************************************************/ +//********************************************************************* uint16_t Max14661::wrt_dir_registers(uint16_t bankA, uint16_t bankB) { uint8_t data[5]; @@ -134,13 +110,13 @@ data[data_length++] = (bankB & 0x00FF); data[data_length++] = ((bankB >> 8) & 0x00FF); - rtn_val = _p_i2c->write(_w_adrs,(const char*) data, data_length); + rtn_val = _i2c->write(_w_adrs,(const char*) data, data_length); return(rtn_val); } -/*********************************************************************/ +//********************************************************************* uint16_t Max14661::set_switches(uint16_t bankA, uint16_t bankB) { uint8_t data[7]; @@ -155,42 +131,42 @@ data[data_length++] = COPY_SHADOW; data[data_length++] = COPY_SHADOW; - rtn_val = _p_i2c->write(_w_adrs,(const char*) data, data_length); + rtn_val = _i2c->write(_w_adrs,(const char*) data, data_length); return(rtn_val); } -/*********************************************************************/ +//********************************************************************* uint16_t Max14661::rd_dir_registers(uint8_t* data) { uint16_t rtn_val = 1; data[0] = DIR0; - rtn_val = _p_i2c->write(_w_adrs,(const char*) data, 1); + rtn_val = _i2c->write(_w_adrs,(const char*) data, 1); if(!rtn_val) { - rtn_val = _p_i2c->read(_r_adrs,(char*) data, 4); + rtn_val = _i2c->read(_r_adrs,(char*) data, 4); } return(rtn_val); } -/*********************************************************************/ +//********************************************************************* uint16_t Max14661::rd_shadow_registers(uint8_t* data) { uint16_t rtn_val = 1; data[0] = SHDW0; - rtn_val = _p_i2c->write(_w_adrs,(const char*) data, 1); + rtn_val = _i2c->write(_w_adrs,(const char*) data, 1); if(!rtn_val) { - rtn_val = _p_i2c->read(_r_adrs,(char*) data, 4); + rtn_val = _i2c->read(_r_adrs,(char*) data, 4); } return(rtn_val);