uint8_t QuadFC_i2cWrite(QuadFC_I2C_t *i2c_data, uint8_t busIndex, TickType_t blockTimeMs) { if(busIndex > (sizeof(twi_instances)/sizeof(twi_instances[0]))) { return 0; } if(!twi_Init[busIndex]) { if(!Init_Twi(busIndex)) { return 0; } } TickType_t blockTimeTicks = (blockTimeMs / portTICK_PERIOD_MS); status_code_t twi_status = 0; tmp_twi.addr_length = i2c_data->internalAddrLength; memcpy(tmp_twi.addr, i2c_data->internalAddr, i2c_data->internalAddrLength); tmp_twi.buffer = i2c_data->buffer; tmp_twi.length = i2c_data->bufferLength; tmp_twi.chip = i2c_data->slaveAddress; twi_status = freertos_twi_write_packet( freeRTOS_twi[busIndex], &tmp_twi, blockTimeTicks ); if (twi_status != STATUS_OK) { // TODO Led_Set(led_error_TWI); return 0; } return 1; }
return result; } status_code_t itg_write(ITG_Addr_Dev itg_addr, uint8_t value, ITG_Addr_Reg itg_reg){ twi_packet_t tx = { .addr[0] = ((uint8_t) itg_reg), .addr_length = 1, .buffer = &value, .length = 1, .chip = ((uint8_t) itg_addr) }; status_code_t result = STATUS_ERR_TIMEOUT; result = freertos_twi_write_packet(freertos_twi, &tx, TWI_BLOCK_TIME); return result; } status_code_t itg_read (ITG_Addr_Dev itg_addr, uint8_t *value, ITG_Addr_Reg itg_reg, uint8_t len){ twi_packet_t rx = { .addr[0] = ((uint8_t) itg_reg), .addr_length = 1, .buffer = value, .length = len, .chip = ((uint8_t) itg_addr) }; status_code_t result = STATUS_ERR_TIMEOUT;