/* STATUS: OK */
#include <p33FJ64MC802.h>
#include <stdio.h>
#include <timer.h>
#include "../../../drivers/delay.h"
#include "../../../../drivers/drvI2C.h"
#include "../../../../drivers/drvUART.h"
#include "../driverHMC5883L/drvHMC5883L.h"

//config oscillateur
_FOSCSEL(FNOSC_PRIPLL);					// Choix du oscillateur + PLL
_FOSC(FCKSM_CSDCMD & OSCIOFNC_OFF  & POSCMD_XT);	// Pas de basculement d'horloge
													// pas de OSC2
													// type d'oscillateur XT
_FWDT(FWDTEN_OFF); // watchdog off;



// create global
unsigned char buffTX[50]={'i','u','t','\n','\0'};
unsigned char buffKOI2C[5]={'K','0','\n','\0'};





//HMC5883L magnetometre;


int main (void)
{
        unsigned char idmagnetometre;
        float angle;

        int I2C_OK;
	    InitClockNoSwitch() ; // config PLL
        InitPORT_AND_PIN(); // init broche remapable        
        


        InitUART1();
        InitI2C1();
        InitHMC5883L();
		idmagnetometre =GetWhoAmIHMC5883L(); 
        sprintf(buffTX,"id=%x \n\r",idmagnetometre);
        UART_puts(buffTX);
        
		// la fonction calibrateHMC5883L demarre une boucle de 40sec
		// pendant laquelle il faut tourner la carte
		// les résulats sont envoyés par liaison série (module Xbee)
		calibrateHMC5883L();
		
		// résultats obtenus à La GARDE X:55 et Y:60

		// SetValueMagOffsetXY utilisé pour compenser l'offset donné par la calibration
        //SetValueMagOffsetXY(55,60); // valeur x et y obtenu lors de la phase de calibration
       
        

       for(;;)
        {
         
        }
       



}//fin main(void)
