Merge pull request #387 from flixr/i2c_convenience_functions

[i2c] replace convenience macros with functions
This commit is contained in:
Gautier Hattenberger
2013-03-04 23:54:37 -08:00
38 changed files with 151 additions and 133 deletions
+3 -3
View File
@@ -17,7 +17,7 @@ static inline void bmp085_write_reg(uint8_t addr, uint8_t value)
baro_trans.buf[0] = addr;
baro_trans.buf[1] = value;
I2CTransmit(i2c2, baro_trans, BMP085_ADDR, 2);
i2c_transmit(&i2c2, &baro_trans, BMP085_ADDR, 2);
// FIXME, no while loops without timeout!!
while (baro_trans.status == I2CTransPending || baro_trans.status == I2CTransRunning);
@@ -26,7 +26,7 @@ static inline void bmp085_write_reg(uint8_t addr, uint8_t value)
static inline void bmp085_read_reg16(uint8_t addr)
{
baro_trans.buf[0] = addr;
I2CTransceive(i2c2, baro_trans, BMP085_ADDR, 1, 2);
i2c_transceive(&i2c2, &baro_trans, BMP085_ADDR, 1, 2);
}
static inline int16_t bmp085_read_reg16_blocking(uint8_t addr, uint32_t timeout)
@@ -49,7 +49,7 @@ static inline int16_t bmp085_read_reg16_blocking(uint8_t addr, uint32_t timeout)
static inline void bmp085_read_reg24(uint8_t addr)
{
baro_trans.buf[0] = addr;
I2CTransceive(i2c2, baro_trans, BMP085_ADDR, 1, 3);
i2c_transceive(&i2c2, &baro_trans, BMP085_ADDR, 1, 3);
}
static void bmp085_baro_read_calibration(void)
+7 -7
View File
@@ -62,7 +62,7 @@ void baro_periodic(void) {
/* start D1 conversion */
ms5611_status = MS5611_CONV_D1;
ms5611_trans.buf[0] = MS5611_START_CONV_D1;
I2CTransmit(MS5611_I2C_DEV, ms5611_trans, MS5611_SLAVE_ADDR, 1);
i2c_transmit(&MS5611_I2C_DEV, &ms5611_trans, MS5611_SLAVE_ADDR, 1);
#ifdef DEBUG
RunOnceEvery(60, { DOWNLINK_SEND_MS5611_COEFF(DefaultChannel, DefaultDevice,
&ms5611_c[0], &ms5611_c[1], &ms5611_c[2], &ms5611_c[3],
@@ -77,7 +77,7 @@ void baro_periodic(void) {
/* read D1 adc */
ms5611_status = MS5611_ADC_D1;
ms5611_trans.buf[0] = MS5611_ADC_READ;
I2CTransceive(MS5611_I2C_DEV, ms5611_trans, MS5611_SLAVE_ADDR, 1, 3);
i2c_transceive(&MS5611_I2C_DEV, &ms5611_trans, MS5611_SLAVE_ADDR, 1, 3);
}
else if (ms5611_status == MS5611_CONV_D2) {
/* assume D2 conversion is done */
@@ -87,19 +87,19 @@ void baro_periodic(void) {
/* read D2 adc */
ms5611_status = MS5611_ADC_D2;
ms5611_trans.buf[0] = MS5611_ADC_READ;
I2CTransceive(MS5611_I2C_DEV, ms5611_trans, MS5611_SLAVE_ADDR, 1, 3);
i2c_transceive(&MS5611_I2C_DEV, &ms5611_trans, MS5611_SLAVE_ADDR, 1, 3);
}
else if (ms5611_status == MS5611_UNINIT) {
/* reset sensor */
ms5611_status = MS5611_RESET;
ms5611_trans.buf[0] = MS5611_SOFT_RESET;
I2CTransmit(MS5611_I2C_DEV, ms5611_trans, MS5611_SLAVE_ADDR, 1);
i2c_transmit(&MS5611_I2C_DEV, &ms5611_trans, MS5611_SLAVE_ADDR, 1);
}
else if (ms5611_status == MS5611_RESET_OK) {
/* start getting prom data */
ms5611_status = MS5611_PROM;
ms5611_trans.buf[0] = MS5611_PROM_READ | (prom_cnt << 1);
I2CTransceive(MS5611_I2C_DEV, ms5611_trans, MS5611_SLAVE_ADDR, 1, 2);
i2c_transceive(&MS5611_I2C_DEV, &ms5611_trans, MS5611_SLAVE_ADDR, 1, 2);
}
}
}
@@ -122,7 +122,7 @@ void baro_event(void (*b_abs_handler)(void), void (*b_diff_handler)(void)){
if (prom_cnt < PROM_NB) {//8 bytes at PROM
/* get next prom data */
ms5611_trans.buf[0] = MS5611_PROM_READ | (prom_cnt << 1);
I2CTransceive(MS5611_I2C_DEV, ms5611_trans, MS5611_SLAVE_ADDR, 1, 2);
i2c_transceive(&MS5611_I2C_DEV, &ms5611_trans, MS5611_SLAVE_ADDR, 1, 2);
}
else {
/* done reading prom */
@@ -147,7 +147,7 @@ void baro_event(void (*b_abs_handler)(void), void (*b_diff_handler)(void)){
/* start D2 conversion */
ms5611_status = MS5611_CONV_D2;
ms5611_trans.buf[0] = MS5611_START_CONV_D2;
I2CTransmit(MS5611_I2C_DEV, ms5611_trans, MS5611_SLAVE_ADDR, 1);
i2c_transmit(&MS5611_I2C_DEV, &ms5611_trans, MS5611_SLAVE_ADDR, 1);
break;
case MS5611_ADC_D2: {
+29
View File
@@ -69,3 +69,32 @@ void i2c_init(struct i2c_periph* p) {
}
void i2c_transmit(struct i2c_periph* p, struct i2c_transaction* t,
uint8_t s_addr, uint8_t len)
{
t->type = I2CTransTx;
t->slave_addr = s_addr;
t->len_w = len;
t->len_r = 0;
i2c_submit(p, t);
}
void i2c_receive(struct i2c_periph* p, struct i2c_transaction* t,
uint8_t s_addr, uint16_t len)
{
t->type = I2CTransRx;
t->slave_addr = s_addr;
t->len_w = 0;
t->len_r = len;
i2c_submit(p, t);
}
void i2c_transceive(struct i2c_periph* p, struct i2c_transaction* t,
uint8_t s_addr, uint8_t len_w, uint16_t len_r)
{
t->type = I2CTransTxRx;
t->slave_addr = s_addr;
t->len_w = len_w;
t->len_r = len_r;
i2c_submit(p, t);
}
+11 -22
View File
@@ -172,30 +172,19 @@ extern bool_t i2c_submit(struct i2c_periph* p, struct i2c_transaction* t);
extern void i2c_setbitrate(struct i2c_periph* p, int bitrate);
extern void i2c_event(void);
/*
* Convenience functions.
* Usually these are preferred over i2c_submit,
* as they explicitly set the transaction type again.
*/
extern void i2c_transmit(struct i2c_periph* p, struct i2c_transaction* t,
uint8_t s_addr, uint8_t len);
#define I2CReceive(_p, _t, _s_addr, _len) { \
_t.type = I2CTransRx; \
_t.slave_addr = _s_addr; \
_t.len_r = _len; \
_t.len_w = 0; \
i2c_submit(&(_p),&(_t)); \
}
extern void i2c_receive(struct i2c_periph* p, struct i2c_transaction* t,
uint8_t s_addr, uint16_t len);
#define I2CTransmit(_p, _t, _s_addr, _len) { \
_t.type = I2CTransTx; \
_t.slave_addr = _s_addr; \
_t.len_r = 0; \
_t.len_w = _len; \
i2c_submit(&(_p),&(_t)); \
}
#define I2CTransceive(_p, _t, _s_addr, _len_w, _len_r) { \
_t.type = I2CTransTxRx; \
_t.slave_addr = _s_addr; \
_t.len_r = _len_r; \
_t.len_w = _len_w; \
i2c_submit(&(_p),&(_t)); \
}
extern void i2c_transceive(struct i2c_periph* p, struct i2c_transaction* t,
uint8_t s_addr, uint8_t len_w, uint16_t len_r);
/** @}*/
/** @}*/
+3 -3
View File
@@ -91,7 +91,7 @@ static void MPPT_ask( void ) {
}
mppt_trans.buf[0] = data_index;
I2CTransmit(i2c0, mppt_trans, MPPT_SLAVE_ADDR, 1);
i2c_transmit(&i2c0, &mppt_trans, MPPT_SLAVE_ADDR, 1);
MPPT_status = MPPT_STATUS_ASKING;
}
@@ -105,7 +105,7 @@ void MPPT_periodic( void ) {
mppt_trans.buf[0] = MPPT_MODE_ADDR;
mppt_trans.buf[1] = 0;
mppt_trans.buf[2] = MPPT_mode;
I2CTransmit(i2c0, mppt_trans, MPPT_SLAVE_ADDR, 3);
i2c_transmit(&i2c0, &mppt_trans, MPPT_SLAVE_ADDR, 3);
MPPT_mode = 0;
MPPT_status = MPPT_STATUS_WRITING;
} else {
@@ -119,7 +119,7 @@ void MPPT_periodic( void ) {
case MPPT_STATUS_ASKING:
/* The slave should send 2 bytes */
I2CReceive(i2c0, mppt_trans, MPPT_SLAVE_ADDR, 2);
i2c_receive(&i2c0, &mppt_trans, MPPT_SLAVE_ADDR, 2);
MPPT_status = MPPT_STATUS_READING;
break;
+2 -2
View File
@@ -83,7 +83,7 @@ void generic_com_periodic( void ) {
com_trans.buf[20] = pprz_mode;
com_trans.buf[21] = nav_block;
FillBufWith16bit(com_trans.buf, 22, autopilot_flight_time);
I2CTransmit(GENERIC_COM_I2C_DEV, com_trans, GENERIC_COM_SLAVE_ADDR, NB_DATA);
i2c_transmit(&GENERIC_COM_I2C_DEV, &com_trans, GENERIC_COM_SLAVE_ADDR, NB_DATA);
}
@@ -102,6 +102,6 @@ void start_com( void ) {
void stop_com( void ) {
active_com = FALSE;
com_trans.buf[0] = active_com;
I2CTransmit(GENERIC_COM_I2C_DEV, com_trans, GENERIC_COM_SLAVE_ADDR, 1);
i2c_transmit(&GENERIC_COM_I2C_DEV, &com_trans, GENERIC_COM_SLAVE_ADDR, 1);
}
@@ -85,7 +85,7 @@ void atmega_i2c_cam_ctrl_send(uint8_t cmd)
// Send Command
atmega_i2c_cam_ctrl_trans.buf[0] = cmd;
I2CTransceive(ATMEGA_I2C_DEV, atmega_i2c_cam_ctrl_trans, ATMEGA_SLAVE_ADDR, 1, 1);
i2c_transceive(&ATMEGA_I2C_DEV, &atmega_i2c_cam_ctrl_trans, ATMEGA_SLAVE_ADDR, 1, 1);
if (cmd == DC_SHOOT)
{
+3 -3
View File
@@ -135,7 +135,7 @@ void ArduIMU_periodicGPS( void ) {
ardu_gps_trans.buf[26] = (uint8_t) (GPS_Data[6] >>8);
ardu_gps_trans.buf[27] = (uint8_t) (GPS_Data[6] >>16);
ardu_gps_trans.buf[28] = (uint8_t) (GPS_Data[6] >>24);
I2CTransmit(ARDUIMU_I2C_DEV, ardu_gps_trans, ArduIMU_SLAVE_ADDR, 28);
i2c_transmit(&ARDUIMU_I2C_DEV, &ardu_gps_trans, ArduIMU_SLAVE_ADDR, 28);
gps_daten_versendet_msg1 = TRUE;
messageNr =1;
@@ -156,7 +156,7 @@ void ArduIMU_periodicGPS( void ) {
ardu_gps_trans.buf[11] = GPS_Data[9]; //status flags
ardu_gps_trans.buf[12] = GPS_Data[10]; //sol gps fix
ardu_gps_trans.buf[13] = GPS_Data[11]; //sol flags
I2CTransmit(ARDUIMU_I2C_DEV, ardu_gps_trans, ArduIMU_SLAVE_ADDR, 13);
i2c_transmit(&ARDUIMU_I2C_DEV, &ardu_gps_trans, ArduIMU_SLAVE_ADDR, 13);
gps_daten_versendet_msg2 = TRUE;
messageNr = 0;
@@ -172,7 +172,7 @@ void ArduIMU_periodic( void ) {
if (imu_daten_angefordert == TRUE) {
IMU_Daten_verarbeiten();
}
I2CReceive(ARDUIMU_I2C_DEV, ardu_ins_trans, ArduIMU_SLAVE_ADDR, 12);
i2c_receive(&ARDUIMU_I2C_DEV, &ardu_ins_trans, ArduIMU_SLAVE_ADDR, 12);
imu_daten_angefordert = TRUE;
/*
+2 -2
View File
@@ -132,7 +132,7 @@ void ArduIMU_periodicGPS( void ) {
ardu_gps_trans.buf[12] = gps.fix; // status gps fix
ardu_gps_trans.buf[13] = (uint8_t)arduimu_calibrate_neutrals; // calibration flag
ardu_gps_trans.buf[14] = (uint8_t)high_accel_flag; // high acceleration flag (disable accelerometers in the arduimu filter)
I2CTransmit(ARDUIMU_I2C_DEV, ardu_gps_trans, ArduIMU_SLAVE_ADDR, 15);
i2c_transmit(&ARDUIMU_I2C_DEV, &ardu_gps_trans, ArduIMU_SLAVE_ADDR, 15);
// Reset calibration flag
if (arduimu_calibrate_neutrals) arduimu_calibrate_neutrals = FALSE;
@@ -142,7 +142,7 @@ void ArduIMU_periodic( void ) {
//Frequence defined in conf/modules/ins_arduimu.xml
if (ardu_ins_trans.status == I2CTransDone) {
I2CReceive(ARDUIMU_I2C_DEV, ardu_ins_trans, ArduIMU_SLAVE_ADDR, NB_DATA*2);
i2c_receive(&ARDUIMU_I2C_DEV, &ardu_ins_trans, ArduIMU_SLAVE_ADDR, NB_DATA*2);
}
}
+1 -1
View File
@@ -51,7 +51,7 @@ void charge_sens_init( void ) {
}
void charge_sens_periodic( void ) {
I2CReceive(CHARGE_SENS_DEV, charge_trans, CHARGE_SENS_I2C_ADDR, 2);
i2c_receive(&CHARGE_SENS_DEV, &charge_trans, CHARGE_SENS_I2C_ADDR, 2);
}
void charge_sens_event( void ) {
+1 -1
View File
@@ -57,7 +57,7 @@ void dust_gp2y_init( void ) {
void dust_gp2y_periodic( void ) {
if (dust_gp2y_status == DUST_GP2Y_IDLE) {
I2CReceive(GP2Y_I2C_DEV, gp2y_trans, GP2Y_SLAVE_ADDR, 2);
i2c_receive(&GP2Y_I2C_DEV, &gp2y_trans, GP2Y_SLAVE_ADDR, 2);
}
else if (dust_gp2y_status == DUST_GP2Y_UNINIT && sys_time.nb_sec > 1) {
dust_gp2y_status = DUST_GP2Y_IDLE;
+1 -1
View File
@@ -49,7 +49,7 @@ void geiger_counter_init( void ) {
}
void geiger_counter_periodic( void ) {
I2CReceive(GEIGER_CNT_DEV, geiger_trans, GEIGER_CNT_I2C_ADDR, 10);
i2c_receive(&GEIGER_CNT_DEV, &geiger_trans, GEIGER_CNT_I2C_ADDR, 10);
}
void geiger_counter_event( void ) {
+1 -1
View File
@@ -60,7 +60,7 @@ void dpicco_init( void ) {
void dpicco_periodic( void ) {
/* init read */
I2CReceive(DPICCO_I2C_DEV, dpicco_trans, DPICCO_SLAVE_ADDR, 4);
i2c_receive(&DPICCO_I2C_DEV, &dpicco_trans, DPICCO_SLAVE_ADDR, 4);
}
void dpicco_event( void ) {
+2 -2
View File
@@ -59,7 +59,7 @@ void humid_htm_init(void) {
void humid_htm_start( void ) {
if (sys_time.nb_sec > 1) {
/* measurement request: wake up sensor, sample temperature/humidity */
I2CTransmit(HTM_I2C_DEV, htm_trans, HTM_SLAVE_ADDR, 0);
i2c_transmit(&HTM_I2C_DEV, &htm_trans, HTM_SLAVE_ADDR, 0);
htm_status = HTM_MR;
}
}
@@ -69,7 +69,7 @@ void humid_htm_read( void ) {
if (htm_status == HTM_MR_OK) {
/* read humid and temp*/
htm_status = HTM_READ_DATA;
I2CReceive(HTM_I2C_DEV, htm_trans, HTM_SLAVE_ADDR, 4);
i2c_receive(&HTM_I2C_DEV, &htm_trans, HTM_SLAVE_ADDR, 4);
}
}
+5 -5
View File
@@ -58,7 +58,7 @@ void writePCAP01_SRAM(uint8_t data, uint16_t s_add)
pcap01_trans.buf[0] = 0x90+(unsigned char)(s_add>>8);
pcap01_trans.buf[1] = (unsigned char)(s_add);
pcap01_trans.buf[2] = data;
I2CTransmit(PCAP01_I2C_DEV, pcap01_trans, PCAP01_ADDR, 3);
i2c_transmit(&PCAP01_I2C_DEV, &pcap01_trans, PCAP01_ADDR, 3);
}
uint8_t readPCAP01_SRAM(uint16_t s_add)
@@ -67,7 +67,7 @@ uint8_t readPCAP01_SRAM(uint16_t s_add)
pcap01_trans.buf[0] = 0x10+(unsigned char)(s_add>>8);
pcap01_trans.buf[1] = (unsigned char)(s_add);
I2CTransceive(PCAP01_I2C_DEV, pcap01_trans, PCAP01_ADDR, 2, 1);
i2c_transceive(&PCAP01_I2C_DEV, &pcap01_trans, PCAP01_ADDR, 2, 1);
while (pcap01_trans.status == I2CTransPending);
return pcap01_trans.buf[0];
@@ -93,7 +93,7 @@ uint8_t readPCAP01_SRAM(uint16_t s_add)
pcap01_trans.buf[1] = 0;
pcap01_trans.buf[2] = 0;
pcap01_trans.buf[3] = 0;
I2CTransmit(PCAP01_I2C_DEV, pcap01_trans, PCAP01_ADDR, 4);
i2c_transmit(&PCAP01_I2C_DEV, &pcap01_trans, PCAP01_ADDR, 4);
}
void pcap01writeRegister(uint8_t reg,uint32_t value)
@@ -104,7 +104,7 @@ uint8_t readPCAP01_SRAM(uint16_t s_add)
pcap01_trans.buf[1] = (unsigned char) (value>>16);
pcap01_trans.buf[2] = (unsigned char) (value>>8);
pcap01_trans.buf[3] = (unsigned char) (value);
I2CTransmit(PCAP01_I2C_DEV, pcap01_trans, PCAP01_ADDR, 4);
i2c_transmit(&PCAP01_I2C_DEV, &pcap01_trans, PCAP01_ADDR, 4);
}
#ifdef PCAP01_LOAD_FIRMWARE
@@ -190,7 +190,7 @@ void pcap01readRegister(uint8_t reg)
{
uint16_t byte1 = 0x40 | reg;
pcap01_trans.buf[0] = byte1;
I2CTransceive(PCAP01_I2C_DEV, pcap01_trans, PCAP01_ADDR, 1, 3);
i2c_transceive(&PCAP01_I2C_DEV, &pcap01_trans, PCAP01_ADDR, 1, 3);
}
/**
+7 -7
View File
@@ -79,7 +79,7 @@ void humid_sht_periodic_i2c( void ) {
/* do soft reset, then wait at least 15ms */
sht_status = SHT2_RESET;
sht_trans.buf[0] = SHT2_SOFT_RESET;
I2CTransmit(SHT_I2C_DEV, sht_trans, SHT_SLAVE_ADDR, 1);
i2c_transmit(&SHT_I2C_DEV, &sht_trans, SHT_SLAVE_ADDR, 1);
break;
case SHT2_SERIAL:
@@ -87,7 +87,7 @@ void humid_sht_periodic_i2c( void ) {
sht_status = SHT2_SERIAL1;
sht_trans.buf[0] = 0xFA;
sht_trans.buf[1] = 0x0F;
I2CTransceive(SHT_I2C_DEV, sht_trans, SHT_SLAVE_ADDR, 2, 8);
i2c_transceive(&SHT_I2C_DEV, &sht_trans, SHT_SLAVE_ADDR, 2, 8);
break;
case SHT2_SERIAL1:
@@ -98,7 +98,7 @@ void humid_sht_periodic_i2c( void ) {
/* trigger temp measurement, no master hold */
sht_trans.buf[0] = SHT2_TRIGGER_TEMP;
sht_status = SHT2_TRIG_TEMP;
I2CTransmit(SHT_I2C_DEV, sht_trans, SHT_SLAVE_ADDR, 1);
i2c_transmit(&SHT_I2C_DEV, &sht_trans, SHT_SLAVE_ADDR, 1);
/* send serial number every 30 seconds */
RunOnceEvery((4*30), DOWNLINK_SEND_SHT_I2C_SERIAL(DefaultChannel, DefaultDevice, &sht_serial1, &sht_serial2));
break;
@@ -110,7 +110,7 @@ void humid_sht_p_temp( void ) {
if (sht_status == SHT2_GET_TEMP) {
/* get temp */
sht_status = SHT2_READ_TEMP;
I2CReceive(SHT_I2C_DEV, sht_trans, SHT_SLAVE_ADDR, 3);
i2c_receive(&SHT_I2C_DEV, &sht_trans, SHT_SLAVE_ADDR, 3);
}
}
@@ -119,7 +119,7 @@ void humid_sht_p_humid( void ) {
if (sht_status == SHT2_GET_HUMID) {
/* read humid */
sht_status = SHT2_READ_HUMID;
I2CReceive(SHT_I2C_DEV, sht_trans, SHT_SLAVE_ADDR, 3);
i2c_receive(&SHT_I2C_DEV, &sht_trans, SHT_SLAVE_ADDR, 3);
}
}
@@ -140,7 +140,7 @@ void humid_sht_event_i2c( void ) {
/* trigger humid measurement, no master hold */
sht_trans.buf[0] = SHT2_TRIGGER_HUMID;
sht_status = SHT2_TRIG_HUMID;
I2CTransmit(SHT_I2C_DEV, sht_trans, SHT_SLAVE_ADDR, 1);
i2c_transmit(&SHT_I2C_DEV, &sht_trans, SHT_SLAVE_ADDR, 1);
}
else {
/* checksum error, restart */
@@ -184,7 +184,7 @@ void humid_sht_event_i2c( void ) {
sht_status = SHT2_SERIAL2;
sht_trans.buf[0] = 0xFC;
sht_trans.buf[1] = 0xC9;
I2CTransceive(SHT_I2C_DEV, sht_trans, SHT_SLAVE_ADDR, 2, 6);
i2c_transceive(&SHT_I2C_DEV, &sht_trans, SHT_SLAVE_ADDR, 2, 6);
break;
case SHT2_SERIAL2:
+6 -6
View File
@@ -71,14 +71,14 @@ void ir_mlx_periodic( void ) {
if (ir_mlx_status >= IR_MLX_IDLE) {
/* start two byte case temperature */
mlx_trans.buf[0] = MLX90614_TA;
I2CTransceive(MLX_I2C_DEV, mlx_trans, MLX90614_ADDR, 1, 2);
i2c_transceive(&MLX_I2C_DEV, &mlx_trans, MLX90614_ADDR, 1, 2);
ir_mlx_status = IR_MLX_RD_CASE_TEMP;
/* send serial number every 30 seconds */
RunOnceEvery((8*30), DOWNLINK_SEND_MLX_SERIAL(DefaultChannel, DefaultDevice, &ir_mlx_id_01, &ir_mlx_id_23));
} else if (ir_mlx_status == IR_MLX_UNINIT) {
/* start two byte ID 0 */
mlx_trans.buf[0] = MLX90614_ID_0;
I2CTransceive(MLX_I2C_DEV, mlx_trans, MLX90614_ADDR, 1, 2);
i2c_transceive(&MLX_I2C_DEV, &mlx_trans, MLX90614_ADDR, 1, 2);
ir_mlx_status = IR_MLX_RD_ID_0;
}
}
@@ -94,7 +94,7 @@ void ir_mlx_event( void ) {
ir_mlx_id_01 |= mlx_trans.buf[1] << 8;
/* start two byte ID 1 */
mlx_trans.buf[0] = MLX90614_ID_1;
I2CTransceive(MLX_I2C_DEV, mlx_trans, MLX90614_ADDR, 1, 2);
i2c_transceive(&MLX_I2C_DEV, &mlx_trans, MLX90614_ADDR, 1, 2);
ir_mlx_status = IR_MLX_RD_ID_1;
break;
@@ -104,7 +104,7 @@ void ir_mlx_event( void ) {
ir_mlx_id_01 |= mlx_trans.buf[1] << 24;
/* start two byte ID 2 */
mlx_trans.buf[0] = MLX90614_ID_2;
I2CTransceive(MLX_I2C_DEV, mlx_trans, MLX90614_ADDR, 1, 2);
i2c_transceive(&MLX_I2C_DEV, &mlx_trans, MLX90614_ADDR, 1, 2);
ir_mlx_status = IR_MLX_RD_ID_2;
break;
@@ -114,7 +114,7 @@ void ir_mlx_event( void ) {
ir_mlx_id_23 |= mlx_trans.buf[1] << 8;
/* start two byte ID 3 */
mlx_trans.buf[0] = MLX90614_ID_3;
I2CTransceive(MLX_I2C_DEV, mlx_trans, MLX90614_ADDR, 1, 2);
i2c_transceive(&MLX_I2C_DEV, &mlx_trans, MLX90614_ADDR, 1, 2);
ir_mlx_status = IR_MLX_RD_ID_3;
break;
@@ -135,7 +135,7 @@ void ir_mlx_event( void ) {
/* start two byte obj temperature */
mlx_trans.buf[0] = MLX90614_TOBJ;
I2CTransceive(MLX_I2C_DEV, mlx_trans, MLX90614_ADDR, 1, 2);
i2c_transceive(&MLX_I2C_DEV, &mlx_trans, MLX90614_ADDR, 1, 2);
ir_mlx_status = IR_MLX_RD_OBJ_TEMP;
break;
+1 -1
View File
@@ -58,7 +58,7 @@ void lm75_init(void) {
void lm75_periodic( void ) {
lm75_trans.buf[0] = LM75_TEMP_REG;
I2CTransceive(LM75_I2C_DEV, lm75_trans, LM75_SLAVE_ADDR, 1, 2);
i2c_transceive(&LM75_I2C_DEV, &lm75_trans, LM75_SLAVE_ADDR, 1, 2);
}
void lm75_event( void ) {
+1 -1
View File
@@ -55,7 +55,7 @@ void temod_init(void) {
}
void temod_periodic( void ) {
I2CReceive(TEMOD_I2C_DEV, tmd_trans, TEMOD_SLAVE_ADDR, 2);
i2c_receive(&TEMOD_I2C_DEV, &tmd_trans, TEMOD_SLAVE_ADDR, 2);
}
void temod_event( void ) {
+2 -2
View File
@@ -69,12 +69,12 @@ void tmp102_init(void) {
tmp_trans.buf[0] = TMP102_CONF_REG;
tmp_trans.buf[1] = TMP102_CONF1;
tmp_trans.buf[2] = TMP102_CONF2;
I2CTransmit(TMP_I2C_DEV, tmp_trans, TMP102_SLAVE_ADDR, 3);
i2c_transmit(&TMP_I2C_DEV, &tmp_trans, TMP102_SLAVE_ADDR, 3);
}
void tmp102_periodic( void ) {
tmp_trans.buf[0] = TMP102_TEMP_REG;
I2CTransceive(TMP_I2C_DEV, tmp_trans, TMP102_SLAVE_ADDR, 1, 2);
i2c_transceive(&TMP_I2C_DEV, &tmp_trans, TMP102_SLAVE_ADDR, 1, 2);
tmp_meas_started = TRUE;
}
+5 -5
View File
@@ -64,7 +64,7 @@ void wind_gfi_periodic( void ) {
pcf_trans.buf[0] = 0xFF;
pcf_trans.buf[1] = 0xBF;
pcf_status = PCF_SET_OE_LSB;
I2CTransmit(PCF_I2C_DEV, pcf_trans, PCF_SLAVE_ADDR, 2);
i2c_transmit(&PCF_I2C_DEV, &pcf_trans, PCF_SLAVE_ADDR, 2);
}
void wind_gfi_event( void ) {
@@ -72,7 +72,7 @@ void wind_gfi_event( void ) {
if (pcf_status == PCF_SET_OE_LSB) {
pcf_status = PCF_READ_LSB;
I2CReceive(PCF_I2C_DEV, pcf_trans, PCF_SLAVE_ADDR, 2);
i2c_receive(&PCF_I2C_DEV, &pcf_trans, PCF_SLAVE_ADDR, 2);
}
else if (pcf_status == PCF_READ_LSB) {
/* read lower byte direction info */
@@ -82,11 +82,11 @@ void wind_gfi_event( void ) {
pcf_trans.buf[0] = 0xFF;
pcf_trans.buf[1] = 0x3F;
pcf_status = PCF_SET_OE_MSB;
I2CTransmit(PCF_I2C_DEV, pcf_trans, PCF_SLAVE_ADDR, 2);
i2c_transmit(&PCF_I2C_DEV, &pcf_trans, PCF_SLAVE_ADDR, 2);
}
else if (pcf_status == PCF_SET_OE_MSB) {
pcf_status = PCF_READ_MSB;
I2CReceive(PCF_I2C_DEV, pcf_trans, PCF_SLAVE_ADDR, 2);
i2c_receive(&PCF_I2C_DEV, &pcf_trans, PCF_SLAVE_ADDR, 2);
}
else if (pcf_status == PCF_READ_MSB) {
float fpcf_direction;
@@ -98,7 +98,7 @@ void wind_gfi_event( void ) {
pcf_trans.buf[0] = 0xFF;
pcf_trans.buf[1] = 0xFF;
pcf_status = PCF_IDLE;
I2CTransmit(PCF_I2C_DEV, pcf_trans, PCF_SLAVE_ADDR, 2);
i2c_transmit(&PCF_I2C_DEV, &pcf_trans, PCF_SLAVE_ADDR, 2);
/* 2048 digits per 360 degrees */
fpcf_direction = fmod((pcf_direction * (360./2048.)) + ZERO_OFFSET_DEGREES, 360.);
+2 -2
View File
@@ -99,9 +99,9 @@ void airspeed_amsys_read_periodic( void ) {
#ifndef SITL
if (airspeed_amsys_i2c_trans.status == I2CTransDone)
#ifndef MEASURE_AMSYS_TEMPERATURE
I2CReceive(AIRSPEED_AMSYS_I2C_DEV, airspeed_amsys_i2c_trans, AIRSPEED_AMSYS_ADDR, 2);
i2c_receive(&AIRSPEED_AMSYS_I2C_DEV, &airspeed_amsys_i2c_trans, AIRSPEED_AMSYS_ADDR, 2);
#else
I2CReceive(AIRSPEED_AMSYS_I2C_DEV, airspeed_amsys_i2c_trans, AIRSPEED_AMSYS_ADDR, 4);
i2c_receive(&AIRSPEED_AMSYS_I2C_DEV, &airspeed_amsys_i2c_trans, AIRSPEED_AMSYS_ADDR, 4);
#endif
#else // SITL
+1 -1
View File
@@ -110,7 +110,7 @@ void airspeed_ets_init( void ) {
void airspeed_ets_read_periodic( void ) {
#ifndef SITL
if (airspeed_ets_i2c_trans.status == I2CTransDone)
I2CReceive(AIRSPEED_ETS_I2C_DEV, airspeed_ets_i2c_trans, AIRSPEED_ETS_ADDR, 2);
i2c_receive(&AIRSPEED_ETS_I2C_DEV, &airspeed_ets_i2c_trans, AIRSPEED_ETS_ADDR, 2);
#else // SITL
extern float sim_air_speed;
stateSetAirspeed_f(&sim_air_speed);
+6 -6
View File
@@ -57,12 +57,12 @@ void srf08_init(void)
srf_trans.buf[0] = 0x00;
srf_trans.buf[1] = 0x51;
I2CTransmit(SRF08_I2C_DEV, srf_trans, SRF08_UNIT_0, 2);
i2c_transmit(&SRF08_I2C_DEV, &srf_trans, SRF08_UNIT_0, 2);
/** Setting the gain to the minimun value (to avoid echos ?) */
srf_trans.buf[0] = SRF08_SET_GAIN;
srf_trans.buf[1] = SRF08_MIN_GAIN;
I2CTransmit(SRF08_I2C_DEV, srf_trans, SRF08_UNIT_0, 2);
i2c_transmit(&SRF08_I2C_DEV, &srf_trans, SRF08_UNIT_0, 2);
return;
}
@@ -72,7 +72,7 @@ void srf08_initiate_ranging(void) {
LED_ON(2);
srf_trans.buf[0] = SRF08_COMMAND;
srf_trans.buf[1] = SRF08_CENTIMETERS;
I2CTransmit(SRF08_I2C_DEV, srf_trans, SRF08_UNIT_0, 2);
i2c_transmit(&SRF08_I2C_DEV, &srf_trans, SRF08_UNIT_0, 2);
}
/** Ask the value to the device */
@@ -80,13 +80,13 @@ void srf08_receive(void) {
LED_OFF(2);
srf_trans.buf[0] = SRF08_ECHO_1;
srf08_received = TRUE;
I2CTransmit(SRF08_I2C_DEV, srf_trans, SRF08_UNIT_0, 1);
i2c_transmit(&SRF08_I2C_DEV, &srf_trans, SRF08_UNIT_0, 1);
}
/** Read values on the bus */
void srf08_read(void) {
srf08_got = TRUE;
I2CReceive(SRF08_I2C_DEV, srf_trans, SRF08_UNIT_0, 2);
i2c_receive(&SRF08_I2C_DEV, &srf_trans, SRF08_UNIT_0, 2);
}
/** Copy the I2C buffer */
@@ -121,7 +121,7 @@ uint32_t srf08_read_register(uint8_t srf08_register)
else
cnt = 1;
I2CTransceive(SRF08_I2C_DEV, srf_trans, SRF08_UNIT_0, 1, cnt);
i2c_transceive(&SRF08_I2C_DEV, &srf_trans, SRF08_UNIT_0, 1, cnt);
/* get high byte msb first */
if(srf08_register>=2) {
+2 -2
View File
@@ -119,9 +119,9 @@ void baro_amsys_read_periodic( void ) {
#ifndef SITL
if (baro_amsys_i2c_trans.status == I2CTransDone){
#ifndef MEASURE_AMSYS_TEMPERATURE
I2CReceive(BARO_AMSYS_I2C_DEV, baro_amsys_i2c_trans, BARO_AMSYS_ADDR, 2);
i2c_receive(&BARO_AMSYS_I2C_DEV, &baro_amsys_i2c_trans, BARO_AMSYS_ADDR, 2);
#else
I2CReceive(BARO_AMSYS_I2C_DEV, baro_amsys_i2c_trans, BARO_AMSYS_ADDR, 4);
i2c_receive(&BARO_AMSYS_I2C_DEV, &baro_amsys_i2c_trans, BARO_AMSYS_ADDR, 4);
#endif
}
#else // SITL
+6 -6
View File
@@ -98,7 +98,7 @@ void baro_bmp_init( void ) {
baro_bmp_cnt = BARO_BMP_OFFSET_NBSAMPLES_INIT + BARO_BMP_OFFSET_NBSAMPLES_AVRG;
/* read calibration values */
bmp_trans.buf[0] = BMP085_EEPROM_AC1;
I2CTransceive(BMP_I2C_DEV, bmp_trans, BMP085_SLAVE_ADDR, 1, 22);
i2c_transceive(&BMP_I2C_DEV, &bmp_trans, BMP085_SLAVE_ADDR, 1, 22);
}
void baro_bmp_periodic( void ) {
@@ -107,19 +107,19 @@ void baro_bmp_periodic( void ) {
/* start temp measurement (once) */
bmp_trans.buf[0] = BMP085_CTRL_REG;
bmp_trans.buf[1] = BMP085_START_TEMP;
I2CTransmit(BMP_I2C_DEV, bmp_trans, BMP085_SLAVE_ADDR, 2);
i2c_transmit(&BMP_I2C_DEV, &bmp_trans, BMP085_SLAVE_ADDR, 2);
baro_bmp_status = BARO_BMP_START_TEMP;
}
else if (baro_bmp_status == BARO_BMP_START_TEMP) {
/* read temp measurement */
bmp_trans.buf[0] = BMP085_DAT_MSB;
I2CTransceive(BMP_I2C_DEV, bmp_trans, BMP085_SLAVE_ADDR, 1, 2);
i2c_transceive(&BMP_I2C_DEV, &bmp_trans, BMP085_SLAVE_ADDR, 1, 2);
baro_bmp_status = BARO_BMP_READ_TEMP;
}
else if (baro_bmp_status == BARO_BMP_START_PRESS) {
/* read press measurement */
bmp_trans.buf[0] = BMP085_DAT_MSB;
I2CTransceive(BMP_I2C_DEV, bmp_trans, BMP085_SLAVE_ADDR, 1, 3);
i2c_transceive(&BMP_I2C_DEV, &bmp_trans, BMP085_SLAVE_ADDR, 1, 3);
baro_bmp_status = BARO_BMP_READ_PRESS;
}
#else // SITL
@@ -155,7 +155,7 @@ void baro_bmp_event( void ) {
/* start high res pressure measurement */
bmp_trans.buf[0] = BMP085_CTRL_REG;
bmp_trans.buf[1] = BMP085_START_P3;
I2CTransmit(BMP_I2C_DEV, bmp_trans, BMP085_SLAVE_ADDR, 2);
i2c_transmit(&BMP_I2C_DEV, &bmp_trans, BMP085_SLAVE_ADDR, 2);
baro_bmp_status = BARO_BMP_START_PRESS;
}
else if (baro_bmp_status == BARO_BMP_READ_PRESS) {
@@ -171,7 +171,7 @@ void baro_bmp_event( void ) {
/* start temp measurement */
bmp_trans.buf[0] = BMP085_CTRL_REG;
bmp_trans.buf[1] = BMP085_START_TEMP;
I2CTransmit(BMP_I2C_DEV, bmp_trans, BMP085_SLAVE_ADDR, 2);
i2c_transmit(&BMP_I2C_DEV, &bmp_trans, BMP085_SLAVE_ADDR, 2);
baro_bmp_status = BARO_BMP_START_TEMP;
/* compensate temperature */
+1 -1
View File
@@ -111,7 +111,7 @@ void baro_ets_read_periodic( void ) {
// Initiate next read
#ifndef SITL
if (baro_ets_i2c_trans.status == I2CTransDone)
I2CReceive(BARO_ETS_I2C_DEV, baro_ets_i2c_trans, BARO_ETS_ADDR, 2);
i2c_receive(&BARO_ETS_I2C_DEV, &baro_ets_i2c_trans, BARO_ETS_ADDR, 2);
#else // SITL
/* fake an offset so sim works for under hmsl as well */
if (!baro_ets_offset_init) {
+1 -1
View File
@@ -60,7 +60,7 @@ void baro_hca_init( void ) {
void baro_hca_read_periodic( void ) {
if (baro_hca_i2c_trans.status == I2CTransDone){
I2CReceive(BARO_HCA_I2C_DEV, baro_hca_i2c_trans, BARO_HCA_ADDR, 2);
i2c_receive(&BARO_HCA_I2C_DEV, &baro_hca_i2c_trans, BARO_HCA_ADDR, 2);
}
}
@@ -93,7 +93,7 @@ void baro_ms5611_periodic( void ) {
/* start D1 conversion */
ms5611_status = MS5611_CONV_D1;
ms5611_trans.buf[0] = MS5611_START_CONV_D1;
I2CTransmit(MS5611_I2C_DEV, ms5611_trans, MS5611_SLAVE_ADDR, 1);
i2c_transmit(&MS5611_I2C_DEV, &ms5611_trans, MS5611_SLAVE_ADDR, 1);
RunOnceEvery((4*30), DOWNLINK_SEND_MS5611_COEFF(DefaultChannel, DefaultDevice,
&ms5611_c[0], &ms5611_c[1], &ms5611_c[2], &ms5611_c[3],
&ms5611_c[4], &ms5611_c[5], &ms5611_c[6], &ms5611_c[7]));
@@ -102,13 +102,13 @@ void baro_ms5611_periodic( void ) {
/* reset sensor */
ms5611_status = MS5611_RESET;
ms5611_trans.buf[0] = MS5611_SOFT_RESET;
I2CTransmit(MS5611_I2C_DEV, ms5611_trans, MS5611_SLAVE_ADDR, 1);
i2c_transmit(&MS5611_I2C_DEV, &ms5611_trans, MS5611_SLAVE_ADDR, 1);
}
else if (ms5611_status == MS5611_RESET_OK) {
/* start getting prom data */
ms5611_status = MS5611_PROM;
ms5611_trans.buf[0] = MS5611_PROM_READ | (prom_cnt << 1);
I2CTransceive(MS5611_I2C_DEV, ms5611_trans, MS5611_SLAVE_ADDR, 1, 2);
i2c_transceive(&MS5611_I2C_DEV, &ms5611_trans, MS5611_SLAVE_ADDR, 1, 2);
}
}
}
@@ -119,7 +119,7 @@ void baro_ms5611_d1( void ) {
/* read D1 adc */
ms5611_status = MS5611_ADC_D1;
ms5611_trans.buf[0] = MS5611_ADC_READ;
I2CTransceive(MS5611_I2C_DEV, ms5611_trans, MS5611_SLAVE_ADDR, 1, 3);
i2c_transceive(&MS5611_I2C_DEV, &ms5611_trans, MS5611_SLAVE_ADDR, 1, 3);
}
}
}
@@ -130,7 +130,7 @@ void baro_ms5611_d2( void ) {
/* read D2 adc */
ms5611_status = MS5611_ADC_D2;
ms5611_trans.buf[0] = MS5611_ADC_READ;
I2CTransceive(MS5611_I2C_DEV, ms5611_trans, MS5611_SLAVE_ADDR, 1, 3);
i2c_transceive(&MS5611_I2C_DEV, &ms5611_trans, MS5611_SLAVE_ADDR, 1, 3);
}
}
}
@@ -150,7 +150,7 @@ void baro_ms5611_event( void ) {
if (prom_cnt < PROM_NB) {
/* get next prom data */
ms5611_trans.buf[0] = MS5611_PROM_READ | (prom_cnt << 1);
I2CTransceive(MS5611_I2C_DEV, ms5611_trans, MS5611_SLAVE_ADDR, 1, 2);
i2c_transceive(&MS5611_I2C_DEV, &ms5611_trans, MS5611_SLAVE_ADDR, 1, 2);
}
else {
/* done reading prom */
@@ -182,7 +182,7 @@ void baro_ms5611_event( void ) {
/* start D2 conversion */
ms5611_status = MS5611_CONV_D2;
ms5611_trans.buf[0] = MS5611_START_CONV_D2;
I2CTransmit(MS5611_I2C_DEV, ms5611_trans, MS5611_SLAVE_ADDR, 1);
i2c_transmit(&MS5611_I2C_DEV, &ms5611_trans, MS5611_SLAVE_ADDR, 1);
break;
case MS5611_CONV_D2:
+4 -4
View File
@@ -39,7 +39,7 @@ static void baro_scp_start_high_res_measurement(void) {
/* switch to high resolution */
scp_trans.buf[0] = SCP1000_OPERATION;
scp_trans.buf[1] = SCP1000_HIGH_RES;
I2CTransmit(SCP_I2C_DEV, scp_trans, SCP1000_SLAVE_ADDR, 2);
i2c_transmit(&SCP_I2C_DEV, &scp_trans, SCP1000_SLAVE_ADDR, 2);
}
void baro_scp_init( void ) {
@@ -57,7 +57,7 @@ void baro_scp_periodic( void ) {
/* init: start two byte temperature */
scp_trans.buf[0] = SCP1000_TEMPOUT;
baro_scp_status = BARO_SCP_RD_TEMP;
I2CTransceive(SCP_I2C_DEV, scp_trans, SCP1000_SLAVE_ADDR, 1, 2);
i2c_transceive(&SCP_I2C_DEV, &scp_trans, SCP1000_SLAVE_ADDR, 1, 2);
}
}
@@ -78,7 +78,7 @@ void baro_scp_event( void ) {
/* start one byte msb pressure */
scp_trans.buf[0] = SCP1000_DATARD8;
baro_scp_status = BARO_SCP_RD_PRESS_0;
I2CTransceive(SCP_I2C_DEV, scp_trans, SCP1000_SLAVE_ADDR, 1, 1);
i2c_transceive(&SCP_I2C_DEV, &scp_trans, SCP1000_SLAVE_ADDR, 1, 1);
}
else if (baro_scp_status == BARO_SCP_RD_PRESS_0) {
@@ -89,7 +89,7 @@ void baro_scp_event( void ) {
/* start two byte lsb pressure */
scp_trans.buf[0] = SCP1000_DATARD16;
baro_scp_status = BARO_SCP_RD_PRESS_1;
I2CTransceive(SCP_I2C_DEV, scp_trans, SCP1000_SLAVE_ADDR, 1, 2);
i2c_transceive(&SCP_I2C_DEV, &scp_trans, SCP1000_SLAVE_ADDR, 1, 2);
}
else if (baro_scp_status == BARO_SCP_RD_PRESS_1) {
+1 -1
View File
@@ -57,7 +57,7 @@ void ezcurrent_init( void ) {
void ezcurrent_read_periodic( void ) {
if (ezcurrent_i2c_trans.status == I2CTransDone) {
I2CReceive(EZCURRENT_I2C_DEV, ezcurrent_i2c_trans, ezcurrent_i2c_trans.slave_addr, 10);
i2c_receive(&EZCURRENT_I2C_DEV, &ezcurrent_i2c_trans, ezcurrent_i2c_trans.slave_addr, 10);
}
}
+7 -7
View File
@@ -70,7 +70,7 @@ void imu_impl_init(void)
// -switch to gyroX clock
aspirin2_mpu60x0.buf[0] = MPU60X0_REG_PWR_MGMT_1;
aspirin2_mpu60x0.buf[1] = 0x01;
I2CTransmit(PPZUAVIMU_I2C_DEV, aspirin2_mpu60x0, MPU60X0_ADDR, 2);
i2c_transmit(&PPZUAVIMU_I2C_DEV, &aspirin2_mpu60x0, MPU60X0_ADDR, 2);
while(aspirin2_mpu60x0.status == I2CTransPending);
// MPU60X0_REG_PWR_MGMT_2: Nothing should be in standby: default OK
@@ -90,28 +90,28 @@ void imu_impl_init(void)
#endif
aspirin2_mpu60x0.buf[0] = MPU60X0_REG_CONFIG;
aspirin2_mpu60x0.buf[1] = (2 << 3) | (3 << 0);
I2CTransmit(PPZUAVIMU_I2C_DEV, aspirin2_mpu60x0, MPU60X0_ADDR, 2);
i2c_transmit(&PPZUAVIMU_I2C_DEV, &aspirin2_mpu60x0, MPU60X0_ADDR, 2);
while(aspirin2_mpu60x0.status == I2CTransPending);
// MPU60X0_REG_SMPLRT_DIV
// -100Hz output = 1kHz / (9 + 1)
aspirin2_mpu60x0.buf[0] = MPU60X0_REG_SMPLRT_DIV;
aspirin2_mpu60x0.buf[1] = 9;
I2CTransmit(PPZUAVIMU_I2C_DEV, aspirin2_mpu60x0, MPU60X0_ADDR, 2);
i2c_transmit(&PPZUAVIMU_I2C_DEV, &aspirin2_mpu60x0, MPU60X0_ADDR, 2);
while(aspirin2_mpu60x0.status == I2CTransPending);
// MPU60X0_REG_GYRO_CONFIG
// -2000deg/sec
aspirin2_mpu60x0.buf[0] = MPU60X0_REG_GYRO_CONFIG;
aspirin2_mpu60x0.buf[1] = (3<<3);
I2CTransmit(PPZUAVIMU_I2C_DEV, aspirin2_mpu60x0, MPU60X0_ADDR, 2);
i2c_transmit(&PPZUAVIMU_I2C_DEV, &aspirin2_mpu60x0, MPU60X0_ADDR, 2);
while(aspirin2_mpu60x0.status == I2CTransPending);
// MPU60X0_REG_ACCEL_CONFIG
// 16g, no HPFL
aspirin2_mpu60x0.buf[0] = MPU60X0_REG_ACCEL_CONFIG;
aspirin2_mpu60x0.buf[1] = (3<<3);
I2CTransmit(PPZUAVIMU_I2C_DEV, aspirin2_mpu60x0, MPU60X0_ADDR, 2);
i2c_transmit(&PPZUAVIMU_I2C_DEV, &aspirin2_mpu60x0, MPU60X0_ADDR, 2);
while(aspirin2_mpu60x0.status == I2CTransPending);
@@ -157,12 +157,12 @@ void imu_periodic( void )
{
// Start reading the latest gyroscope data
aspirin2_mpu60x0.buf[0] = MPU60X0_REG_INT_STATUS;
I2CTransceive(PPZUAVIMU_I2C_DEV, aspirin2_mpu60x0, MPU60X0_ADDR, 1, 21);
i2c_transceive(&PPZUAVIMU_I2C_DEV, &aspirin2_mpu60x0, MPU60X0_ADDR, 1, 21);
/*
// Start reading the latest accelerometer data
ppzuavimu_adxl345.buf[0] = ADXL345_REG_DATA_X0;
I2CTransceive(PPZUAVIMU_I2C_DEV, ppzuavimu_adxl345, ADXL345_ADDR, 1, 6);
i2c_transceive(&PPZUAVIMU_I2C_DEV, &ppzuavimu_adxl345, ADXL345_ADDR, 1, 6);
*/
// Start reading the latest magnetometer data
#if PERIODIC_FREQUENCY > 60
@@ -96,7 +96,7 @@ void pbn_periodic( void ) {
// Initiate next read
pbn_trans.buf[0] = 0;
I2CTransceive(PBN_I2C_DEV, pbn_trans, PBN_I2C_ADDR, 1, 4);
i2c_transceive(&PBN_I2C_DEV, &pbn_trans, PBN_I2C_ADDR, 1, 4);
}
+3 -3
View File
@@ -41,7 +41,7 @@ void ads1114_init( void ) {
ads1114_1.trans.buf[0] = ADS1114_POINTER_CONFIG_REG;
ads1114_1.trans.buf[1] = ADS1114_1_CONFIG_MSB;
ads1114_1.trans.buf[2] = ADS1114_1_CONFIG_LSB;
I2CTransmit(ADS1114_I2C_DEV, ads1114_1.trans, ADS1114_1_I2C_ADDR, 3);
i2c_transmit(&ADS1114_I2C_DEV, &ads1114_1.trans, ADS1114_1_I2C_ADDR, 3);
ads1114_1.config_done = FALSE;
ads1114_1.data_available = FALSE;
#endif
@@ -52,7 +52,7 @@ void ads1114_init( void ) {
ads1114_2.trans.buf[0] = ADS1114_POINTER_CONFIG_REG;
ads1114_2.trans.buf[1] = ADS1114_2_CONFIG_MSB;
ads1114_2.trans.buf[2] = ADS1114_2_CONFIG_LSB;
I2CTransmit(ADS1114_I2C_DEV, ads1114_2.trans, ADS1114_2_I2C_ADDR, 3);
i2c_transmit(&ADS1114_I2C_DEV, &ads1114_2.trans, ADS1114_2_I2C_ADDR, 3);
ads1114_2.config_done = FALSE;
ads1114_2.data_available = FALSE;
#endif
@@ -64,7 +64,7 @@ void ads1114_read( struct ads1114_periph * p ) {
// start new reading when previous is done (and read if success)
if (p->config_done && p->trans.status == I2CTransDone) {
p->trans.buf[0] = ADS1114_POINTER_CONV_REG;
I2CTransceive(ADS1114_I2C_DEV, p->trans, p->i2c_addr, 1, 2);
i2c_transceive(&ADS1114_I2C_DEV, &(p->trans), p->i2c_addr, 1, 2);
}
}
+4 -4
View File
@@ -66,13 +66,13 @@ static void mpl3115_send_config(void)
case MPL_CONF_PT_DATA:
mpl3115_trans.buf[0] = MPL3115_REG_PT_DATA_CFG;
mpl3115_trans.buf[1] = MPL3115_PT_DATA_CFG;
I2CTransmit(MPL3115_I2C_DEV, mpl3115_trans, MPL3115_I2C_ADDR, 2);
i2c_transmit(&MPL3115_I2C_DEV, &mpl3115_trans, MPL3115_I2C_ADDR, 2);
mpl3115_init_status++;
break;
case MPL_CONF_CTRL1:
mpl3115_trans.buf[0] = MPL3115_REG_CTRL_REG1;
mpl3115_trans.buf[1] = MPL3115_CTRL_REG1;
I2CTransmit(MPL3115_I2C_DEV, mpl3115_trans, MPL3115_I2C_ADDR, 2);
i2c_transmit(&MPL3115_I2C_DEV, &mpl3115_trans, MPL3115_I2C_ADDR, 2);
mpl3115_init_status++;
break;
case MPL_CONF_DONE:
@@ -101,11 +101,11 @@ void mpl3115_read(void)
// ask for a reading and then prepare next conversion
if (mpl3115_initialized && mpl3115_trans.status == I2CTransDone) {
mpl3115_trans.buf[0] = MPL3115_REG_STATUS;
I2CTransceive(MPL3115_I2C_DEV, mpl3115_trans, MPL3115_I2C_ADDR, 1, 6);
i2c_transceive(&MPL3115_I2C_DEV, &mpl3115_trans, MPL3115_I2C_ADDR, 1, 6);
if (mpl3115_req_trans.status == I2CTransDone) {
mpl3115_req_trans.buf[0] = MPL3115_REG_CTRL_REG1;
mpl3115_req_trans.buf[1] = MPL3115_CTRL_REG1 | MPL3115_OST_BIT;
I2CTransmit(MPL3115_I2C_DEV, mpl3115_req_trans, MPL3115_I2C_ADDR, 2);
i2c_transmit(&MPL3115_I2C_DEV, &mpl3115_req_trans, MPL3115_I2C_ADDR, 2);
}
}
}
@@ -120,7 +120,7 @@ void actuators_asctec_set(bool_t motors_on) {
}
actuators_asctec.cmd = NONE;
I2CTransmit(ACTUATORS_ASCTEC_DEVICE, actuators_asctec.i2c_trans,
i2c_transmit(&ACTUATORS_ASCTEC_DEVICE, &actuators_asctec.i2c_trans,
ACTUATORS_ASCTEC_SLAVE_ADDR, 4);
}
@@ -52,6 +52,6 @@ void actuators_mkk_set(void) {
actuators_mkk.trans[i].buf[0] = 0;
#endif
I2CTransmit(ACTUATORS_MKK_DEVICE, actuators_mkk.trans[i], actuators_addr[i], 1);
i2c_transmit(&ACTUATORS_MKK_DEVICE, &actuators_mkk.trans[i], actuators_addr[i], 1);
}
}
@@ -100,11 +100,11 @@ void infrared_i2c_update( void ) {
if (irh_trans.status == I2CTransDone && ir_i2c_hor_status == IR_I2C_IDLE) {
if (ValidConfWord(ir_i2c_conf_word) && !ir_i2c_conf_hor_done) {
irh_trans.buf[0] = ir_i2c_conf_word | IR_HOR_OC_BIT | IR_START_CONV ;
I2CTransmit(i2c0, irh_trans, IR_HOR_I2C_ADDR, 1);
i2c_transmit(&i2c0, &irh_trans, IR_HOR_I2C_ADDR, 1);
ir_i2c_hor_status = IR_I2C_CONFIGURE_HOR;
} else {
// Read next values
I2CReceive(i2c0, irh_trans, IR_HOR_I2C_ADDR, 3);
i2c_receive(&i2c0, &irh_trans, IR_HOR_I2C_ADDR, 3);
ir_i2c_data_hor_available = FALSE;
ir_i2c_hor_status = IR_I2C_READ_IR1;
}
@@ -113,10 +113,10 @@ void infrared_i2c_update( void ) {
if (irv_trans.status == I2CTransDone) {
if (ValidConfWord(ir_i2c_conf_word) && !ir_i2c_conf_ver_done) {
irv_trans.buf[0] = ir_i2c_conf_word | IR_VER_OC_BIT;
I2CTransmit(i2c0, irv_trans, IR_VER_I2C_ADDR, 1);
i2c_transmit(&i2c0, &irv_trans, IR_VER_I2C_ADDR, 1);
} else {
// Read next values
I2CReceive(i2c0, irv_trans, IR_VER_I2C_ADDR, 2);
i2c_receive(&i2c0, &irv_trans, IR_VER_I2C_ADDR, 2);
ir_i2c_data_ver_available = FALSE;
}
}
@@ -133,7 +133,7 @@ void infrared_i2c_hor_event( void ) {
break;
case IR_I2C_READ_IR1 :
if (bit_is_set(irh_trans.buf[2],7)) {
I2CReceive(i2c0, irh_trans, IR_HOR_I2C_ADDR, 3);
i2c_receive(&i2c0, &irh_trans, IR_HOR_I2C_ADDR, 3);
break;
}
// Read IR1 value
@@ -142,18 +142,18 @@ void infrared_i2c_hor_event( void ) {
ir_i2c.ir1 = FilterIR(ir_i2c.ir1, ir1);
// Select IR2 channel
irh_trans.buf[0] = IR_HOR_I2C_SELECT_IR2 | IR_HOR_OC_BIT | ir_i2c_conf_word | IR_START_CONV;
I2CTransmit(i2c0, irh_trans, IR_HOR_I2C_ADDR, 1);
i2c_transmit(&i2c0, &irh_trans, IR_HOR_I2C_ADDR, 1);
ir_i2c_hor_status = IR_I2C_IR2_SELECTED;
break;
case IR_I2C_IR2_SELECTED :
// IR2 selected, asking for IR2 value
I2CReceive(i2c0, irh_trans, IR_HOR_I2C_ADDR, 3);
i2c_receive(&i2c0, &irh_trans, IR_HOR_I2C_ADDR, 3);
ir_i2c_hor_status = IR_I2C_READ_IR2;
break;
case IR_I2C_READ_IR2 :
// Read IR2 value
if (bit_is_set(irh_trans.buf[2],7)) {
I2CReceive(i2c0, irh_trans, IR_HOR_I2C_ADDR, 3);
i2c_receive(&i2c0, &irh_trans, IR_HOR_I2C_ADDR, 3);
break;
}
int16_t ir2 = (irh_trans.buf[0]<<8) | irh_trans.buf[1];
@@ -170,7 +170,7 @@ void infrared_i2c_hor_event( void ) {
#endif
// Select IR1 channel
irh_trans.buf[0] = IR_HOR_I2C_SELECT_IR1 | IR_HOR_OC_BIT | ir_i2c_conf_word | IR_START_CONV;
I2CTransmit(i2c0, irh_trans, IR_HOR_I2C_ADDR, 1);
i2c_transmit(&i2c0, &irh_trans, IR_HOR_I2C_ADDR, 1);
ir_i2c_hor_status = IR_I2C_IR1_SELECTED;
break;
case IR_I2C_IR1_SELECTED :