#ifndef CHAVIREMENT_H
#include "chavirement.h" 
#endif

#include "Driver_GPIO.h"
#include "Driver_SPI.h"
#include "bordage.h"

int device_id = 0;

char lire(char address) {
	//lit les données à l'adresse address
	// couche protocolaire : bit MSB à 1 pour mode R
	//on laisse MB par défaut à 0
	char result = 0;
	MyGPIO_Reset(GPIOA,8);
	SPI_send( SPI1, (address | 1 << 7));
	result =  SPI_rcv(SPI1);
	while(SPI1->SR & SPI_SR_BSY);
	MyGPIO_Set(GPIOA,8);
	return result;
}


void ecrire(char address, char data) {
	MyGPIO_Reset(GPIOA,8);
	SPI_send(SPI1, address) ;
	SPI_send(SPI1, data);
	while(SPI1->SR & SPI_SR_BSY);
	MyGPIO_Set(GPIOA,8);
}


void chavirement_init(void){
	//initialiser le SPI après init GPIO (fait dans le main)
	
	//init matser spi1
	SPI_init_master(SPI1) ;
	
	//activer measure du power_ctl
	ecrire(0x2D, 1<<3);	
	device_id = (int) lire(0x0);

	
}


uint16_t chavirement_handler(void) {
	uint8_t lsb = lire(0x36);
	uint8_t msb = lire(0x37);
	int16_t value = (int16_t) ((msb << 8) + lsb);

	if (value > 221) {
		//appel fonction
		Roulis_Handler();
	}
	return value;
}
