diff --git a/afsk/main.c b/afsk/main.c index 258e09cb..9b5e644a 100644 --- a/afsk/main.c +++ b/afsk/main.c @@ -72,7 +72,7 @@ int upper_digit(int number); int lower_digit(int number); int charging = 0; -uint16_t x_config = (0x2000 | 0x1800 | 0x0180 | 0x0018 | 0x0007 ); +//uint16_t x_config = (0x2000 | 0x1800 | 0x0180 | 0x0018 | 0x0007 ); struct SensorConfig { int fd; @@ -137,10 +137,17 @@ struct SensorData read_sensor_data(struct SensorConfig sensor) { * @param milliAmps The mA configuration, either 400mA or 2A are supported. * @return struct SensorConfig A struct that contains the configuraton of the sensor. */ -struct SensorConfig config_sensor(int sensor, int milliAmps) { +//struct SensorConfig config_sensor(int sensor, int milliAmps) { +struct SensorConfig config_sensor(char *bus, int address, int milliAmps) { struct SensorConfig data; - data.fd = sensor; + if (access(bus, W_OK | R_OK) < 0) { // Test if I2C Bus is missing + data.fd = OFF; + return (data); + } + + data.fd = wiringPiI2CSetupInterface(bus, address); + data.config = INA219_CONFIG_BVOLTAGERANGE_32V | INA219_CONFIG_GAIN_1_40MV | INA219_CONFIG_BADCRES_12BIT | @@ -198,17 +205,27 @@ int main(int argc, char *argv[]) { #ifdef DEBUG_LOGGING fprintf(stderr,"tempSensor: %d \n",tempSensor); #endif - + + sensor[PLUS_X] = config_sensor("/dev/i2c-1", 0x40, 400); + sensor[PLUS_Y] = config_sensor("/dev/i2c-1", 0x41, 400); + sensor[PLUS_Z] = config_sensor("/dev/i2c-1", 0x44, 400); + sensor[BAT] = config_sensor("/dev/i2c-1", 0x45, 400); + sensor[BUS] = config_sensor("/dev/i2c-1", 0x4a, 2400); + sensor[MINUS_X] = config_sensor("/dev/i2c-0", 0x40, 400); + sensor[MINUS_Y] = config_sensor("/dev/i2c-0", 0x41, 400); + sensor[MINUS_Z] = config_sensor("/dev/i2c-0", 0x44, 400); + +/* int test; if (((test = open("/dev/i2c-1", O_RDWR))) > 0) // Test if I2C Bus 1 is present { - close(test); + close(test); sensor[PLUS_X] = config_sensor(wiringPiI2CSetupInterface("/dev/i2c-1", 0x40), 400); sensor[PLUS_Y] = config_sensor(wiringPiI2CSetupInterface("/dev/i2c-1", 0x41), 400); sensor[PLUS_Z] = config_sensor(wiringPiI2CSetupInterface("/dev/i2c-1", 0x44), 400); sensor[BAT] = config_sensor(wiringPiI2CSetupInterface("/dev/i2c-1", 0x45), 400); sensor[BUS] = config_sensor(wiringPiI2CSetupInterface("/dev/i2c-1", 0x4a), 2400); - } else +} else { printf("ERROR: /dev/i2c-1 not present \n"); sensor[PLUS_X] = config_sensor(OFF, 0); @@ -223,7 +240,6 @@ int main(int argc, char *argv[]) { sensor[MINUS_X] = config_sensor(wiringPiI2CSetupInterface("/dev/i2c-0", 0x40), 400); sensor[MINUS_Y] = config_sensor(wiringPiI2CSetupInterface("/dev/i2c-0", 0x41), 400); sensor[MINUS_Z] = config_sensor(wiringPiI2CSetupInterface("/dev/i2c-0", 0x44), 400); - } else { printf("ERROR: /dev/i2c-0 not present \n"); @@ -231,7 +247,8 @@ int main(int argc, char *argv[]) { sensor[MINUS_Y] = config_sensor(OFF, 0); sensor[MINUS_Z] = config_sensor(OFF, 0); } - #ifdef DEBUG_LOGGING +*/ +#ifdef DEBUG_LOGGING printf("Sensor[0] config %d %d %d %d %d\n", sensor[0].fd, sensor[0].config, sensor[0].calValue, sensor[0].currentDivider, sensor[0].powerMultiplier); printf("Sensor[BUS] config %d %d %d %d %d\n",