//*****************************************************************************
//
// Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
//
//  Redistributions of source code must retain the above copyright
//  notice, this list of conditions and the following disclaimer.
//
//  Redistributions in binary form must reproduce the above copyright
//  notice, this list of conditions and the following disclaimer in the
//  documentation and/or other materials provided with the
//  distribution.
//
//  Neither the name of Texas Instruments Incorporated nor the names of
//  its contributors may be used to endorse or promote products derived
//  from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
//
//****************************************************************************

//************************MODIFICATON INFORMATION*****************************
//Modified from original source located at:
// https://e2e.ti.com/support/microcontrollers/msp430/f/166/p/472504/1701554#1701554
//
//Modified by Reid Kersey, CEO, Sniffer GPS - 6/7/2017
//  sniffergps.com
//  reid@sniffergps.com
//  678-209-2215
//
//Updates:
//Changed EUSCI_Bx_MODULE to EUSCI_Bx_BASE
//Changed from using B1 to allowing use of any Bx Module
//Added function description comments

//Feel free to contact me about modifications to this code or questions about usage,
//however I am not the original author. Credit goes to DavidL https://e2e.ti.com/members/2005340
#ifndef _I2C_DRIVER_H_
#define _I2C_DRIVER_H_

    //****************************************************************************
    //
    // Types
    //
    //****************************************************************************
    typedef enum {
        eUSCI_IDLE = 0,
        eUSCI_SUCCESS = 0,
        eUSCI_BUSY = 1,
        eUSCI_NACK = 2,
        eUSCI_STOP,
        eUSCI_START
    } eUSCI_status;

    //*****************************************************************************
    //
    // Definitions
    //
    //*****************************************************************************

    //*****************************************************************************
    //
    // Exported variables
    //
    //*****************************************************************************

    //*****************************************************************************
    //
    // Exported prototypes
    //
    //*****************************************************************************
    extern void initI2C(int module);
    extern bool writeI2C(int module, uint8_t ui8Addr, uint8_t ui8Reg, uint8_t *Data, uint8_t ui8ByteCount);
    extern bool readI2C(int module, uint8_t ui8Addr, uint8_t ui8Reg, uint8_t *Data, uint8_t ui8ByteCount);
    extern bool readBurstI2C(int module, uint8_t ui8Addr, uint8_t ui8Reg, uint8_t *Data, uint32_t ui32ByteCount);

    #endif /* _I2C_DRIVER_H_ */
