46 psi.
debug(
"WARNING: Attempt to write to invalid EPROM address: %X",address);
48 write_array[0] = address / 256;
49 write_array[1] = address % 256;
50 write_array[2] = data;
51 primary_i2c.write(EEPROM_ADDRESS, write_array, 3,
false);
64 char address_array [2];
65 address_array[0] = address / 256;
66 address_array[1] = address % 256;
68 primary_i2c.write(EEPROM_ADDRESS, address_array, 2,
false);
69 primary_i2c.read(EEPROM_ADDRESS, data, 1,
false);
80 primary_i2c.read(EEPROM_ADDRESS, data, 1,
false);
90 char address_array [2] = {255,0};
91 primary_i2c.write(EEPROM_ADDRESS, address_array, 2,
false);
92 primary_i2c.read(EEPROM_ADDRESS, firmware_bytes, 21,
false);
94 if(firmware_bytes[0] == PSI_BYTE) {
96 char firmware_string [8];
97 sprintf(firmware_string,
"%d.%d",firmware_bytes[9],firmware_bytes[10]);
98 firmware_version = atof(firmware_string);
99 char pcb_version_string [8];
100 sprintf(pcb_version_string,
"%d.%d",firmware_bytes[7],firmware_bytes[8]);
101 pcb_version = atof(pcb_version_string);
102 char serial_number_string [8];
103 sprintf(serial_number_string,
"%d.%d",firmware_bytes[5],firmware_bytes[6]);
104 serial_number = atof(serial_number_string);
105 has_compass = firmware_bytes[11];
106 has_side_ir = firmware_bytes[12];
107 has_base_ir = firmware_bytes[13];
108 has_base_colour_sensor= firmware_bytes[14];
109 has_top_colour_sensor= firmware_bytes[15];
110 has_wheel_encoders= firmware_bytes[16];
111 has_audio_pic= firmware_bytes[17];
112 has_ultrasonic_sensor= firmware_bytes[18];
113 has_temperature_sensor= firmware_bytes[19];
114 has_recharging_circuit= firmware_bytes[20];
115 has_433_radio= firmware_bytes[21];
116 if(firmware_version > 1.0) {
117 motor_calibration_set = firmware_bytes[22];
118 if(motor_calibration_set == 1) {
119 left_motor_calibration_value = (float) firmware_bytes[23] * 65536;
120 left_motor_calibration_value += ((float) firmware_bytes[24] * 256);
121 left_motor_calibration_value += firmware_bytes[25];
122 left_motor_calibration_value /= 16777216;
123 right_motor_calibration_value = (float) firmware_bytes[26] * 65536;
124 right_motor_calibration_value += ((float) firmware_bytes[27] * 256);
125 right_motor_calibration_value += firmware_bytes[28];
126 right_motor_calibration_value /= 16777216;
128 }
else motor_calibration_set = 0;
void write_eeprom_byte(int address, char data)
char read_eeprom_byte(int address)
char read_next_eeprom_byte(void)
void debug(const char *format,...)