initial commit, reads dev id
MAX8614X.cpp
- Committer:
- phonemacro
- Date:
- 2018-08-16
- Revision:
- 4:6ec3bc44f055
- Parent:
- 2:11e0b5b86e1e
- Child:
- 5:1f7b8cb07e26
File content as of revision 4:6ec3bc44f055:
/******************************************************************************* * Author: Ihsan Mert Ozcelik, Ihsan.Ozcelik@maximintegrated.com * Copyright (C) 2017 Maxim Integrated Products, Inc., All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * * Except as contained in this notice, the name of Maxim Integrated * Products, Inc. shall not be used except as stated in the Maxim Integrated * Products, Inc. Branding Policy. * * The mere transfer of this software does not imply any licenses * of trade secrets, proprietary technology, copyrights, patents, * trademarks, maskwork rights, or any other form of intellectual * property whatsoever. Maxim Integrated Products, Inc. retains all * ownership rights. ******************************************************************************* */ #include "MAX8614X.h" #define pr_err(fmt, args...) if(1) printf(fmt " (%s:%d)\n", ##args, __func__, __LINE__) #define pr_info(fmt, args...) if(1) printf(fmt " (%s:%d)\n", ##args, __func__, __LINE__) #define pr_debug(fmt, args...) if(0) printf(fmt " (%s:%d)\n", ##args, __func__, __LINE__) #define ARRAY_SIZE(array) (sizeof(array)/sizeof(array[0])) MAX8614X::MAX8614X(SPI &spiBus, DigitalOut &cs, PinName pin) :m_ir(pin), m_spiBus(spiBus), m_cs(cs) { m_cs = 1; } int MAX8614X::init() { int ret = RTN_NO_ERROR; m_ir.mode(PullUp); m_ir.fall(Callback<void()>(this, &MAX8614X::irq_handler)); return ret; } int MAX8614X::readRegister(uint8_t reg, uint8_t *data, int len) { m_cs = 0; m_spiBus.write(reg); m_spiBus.write(0x80); int i = 0; for(; i < len; i++) { /*TODO: make len unsigned*/ data[i] = m_spiBus.write(0x00); } m_cs = 1; return 0; /*TODO: handle error cases*/ } int MAX8614X::writeRegister(uint8_t reg, const uint8_t data) { m_cs = 0; m_spiBus.write(reg); m_spiBus.write(0x00); m_spiBus.write(data); m_cs = 1; return 0; /*TODO: handle error cases*/ } int MAX8614X::writeBlock(const RegisterMap reg_block[], unsigned int size) { unsigned int i; int ret = 0; for (i = 0; i < size; i++) { ret = writeRegister((Registers) reg_block[i].addr, reg_block[i].val); if (ret < 0) { pr_err("writeRegister failed. ret: %d", ret); return ret; } } return ret; } void MAX8614X::irq_handler(void) { int ret; int_status_t status; ret = readRegister(MAX8614X_INT_STATUS1_REG, status.val, 2); if (ret < 0) { printf("readRegister failed. ret: %d", ret); } printf("Status reg: %X %X \n\r", status.val[0], status.val[1]); if (status.sha_done) { shaComplete = true; printf("sha interrupt\n\r"); } } bool MAX8614X::isShaComplete(void) { return shaComplete; } void MAX8614X::clearShaComplete(void) { shaComplete = false; } MAX8614X::~MAX8614X(void) { //empty block }