//
//  LTC2439.hpp
//  libLTC
//
//  Created by Tim THUREL on 04/03/2020.
//  Copyright © 2020 Tim THUREL. All rights reserved.
//




/*! \mainpage Guide de  démarrage
*
* \section intro_sec Introduction
*
* Cette librairie sert à dialoguer avec un LTC2439. Elle donne la valeur binaire renvoyer par l'ADC attention cette valeur peut être negative si Vcom > Vref-
*
* Elle fonctionne sur arduino, attention de bien utiliser une arduino en 3.3V car le LTC2439 ne fonctionne qu'en 3.3V
*
* Cette librairie à été testé sur un ATmega328P
*/

#ifndef LTC2439.h
#define LTC2439.h

#include <stdint.h>
#include "SPI.h"
#include <Arduino.h>

#define DEBUG

//#define ARDUINO

#ifdef ARDUINO

static bool toggle = 0;
static int pinF0;
#endif

/*! \class LTC  LTC2439.h  <LTC2439.h>
*  \brief  Classe utilisé pour la librairie LTC2439
*/
class LTC
{
public:
	LTC(int CSpin);
    /*! \fn LTC(int CSpin);
    *  \param CSpin Le numéro de pin de CS de l'ADC.
    */
	LTC(int CSpin, int SDOpin);
    /*! \fn LTC(int CSpin, int SDOpin);
    *  \param CSpin Le numéro de pin de CS de l'ADC.
    *  \param SDOpin Le numéro de pin du SDO de l'ADC.
    */
    LTC(int CSpin, int SDOpin, int F0pin);
    /*! \fn LTC(int CSpin, int SDOpin, int F0pin);
    *  \param CSpin Le numéro de pin de CS de l'ADC.
    *  \param SDOpin Le numéro de pin du SDO de l'ADC.
    *  \param F0pin Le numéro de pin du F0 de l'ADC (Attention cette fonctionnalité n'est pas utilisée dans le projet, elle est remplacée par un NE555)
    */
    long readValue(int channel); // renvoie la valeur du channel en cours
    
    /*! \fn long readValue(int channel);
    *  \param channel Le canal ou vous voulez lire la valeur.
    *  \return La valeur du canal de l'ADC dans un long.
    */
    
    #ifdef ARDUINO
    void startTimer(int frequency);
    #endif

private:
    int selectPin,pinConv;
    int tableChanel[16]{0,8,1,9,2,10,3,11,4,12,5,13,6,14,7,15}; // tableau des Pins
};



#endif /* LTC2439_hpp */
