C++ Library for the PsiSwarm Robot - Version 0.8
Dependents: PsiSwarm_V8_Blank_CPP Autonomia_RndmWlk
Fork of PsiSwarmV7_CPP by
Diff: eprom.cpp
- Revision:
- 8:6c92789d5f87
- Parent:
- 6:b340a527add9
- Child:
- 12:878c6e9d9e60
--- a/eprom.cpp Sun Oct 16 11:11:21 2016 +0000 +++ b/eprom.cpp Sun Oct 16 12:54:33 2016 +0000 @@ -1,11 +1,11 @@ /** University of York Robotics Laboratory PsiSwarm Library: Eprom Functions Source File - * + * * Copyright 2016 University of York * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and limitations under the License. * * File: eprom.cpp @@ -13,7 +13,7 @@ * (C) Dept. Electronics & Computer Science, University of York * James Hilder, Alan Millard, Alexander Horsfield, Homero Elizondo, Jon Timmis * - * PsiSwarm Library Version: 0.7 + * PsiSwarm Library Version: 0.8 * * October 2016 * @@ -25,8 +25,8 @@ * * int main() { * init(); - * write_eeprom_byte(0,0xDD); //Writes byte 0xDD in EPROM address 0 - * char c = read_eeprom_byte(0); //c will hold 0xDD + * eprom.write_eeprom_byte(0,0xDD); //Writes byte 0xDD in EPROM address 0 + * char c = eprom.read_eeprom_byte(0); //c will hold 0xDD * //Valid address range is from 0 to 65279 * } * @endcode @@ -39,7 +39,7 @@ * @param address The address to store the data, range 0-65279 * @param data The character to store */ -void write_eeprom_byte ( int address, char data ) +void Eprom::write_eeprom_byte ( int address, char data ) { char write_array[3]; if(address > 65279) { @@ -59,7 +59,7 @@ * @param address The address to read from, range 0-65279 * @return The character stored at address */ -char read_eeprom_byte ( int address ) +char Eprom::read_eeprom_byte ( int address ) { char address_array [2]; address_array[0] = address / 256; @@ -74,7 +74,7 @@ * * @return The character stored at address after the previous one read from */ -char read_next_eeprom_byte () +char Eprom::read_next_eeprom_byte () { char data [1]; primary_i2c.read(EEPROM_ADDRESS, data, 1, false); @@ -85,7 +85,7 @@ * * @return 1 if a valid firmware is read, 0 otherwise */ -char read_firmware () +char Eprom::read_firmware () { char address_array [2] = {255,0}; primary_i2c.write(EEPROM_ADDRESS, address_array, 2, false); @@ -113,18 +113,18 @@ has_temperature_sensor= firmware_bytes[19]; has_recharging_circuit= firmware_bytes[20]; has_433_radio= firmware_bytes[21]; - if(firmware_version > 1.0){ - motor_calibration_set = firmware_bytes[22]; - if(motor_calibration_set == 1){ - left_motor_calibration_value = (float) firmware_bytes[23] * 65536; - left_motor_calibration_value += ((float) firmware_bytes[24] * 256); - left_motor_calibration_value += firmware_bytes[25]; - left_motor_calibration_value /= 16777216; - right_motor_calibration_value = (float) firmware_bytes[26] * 65536; - right_motor_calibration_value += ((float) firmware_bytes[27] * 256); - right_motor_calibration_value += firmware_bytes[28]; - right_motor_calibration_value /= 16777216; - } + if(firmware_version > 1.0) { + motor_calibration_set = firmware_bytes[22]; + if(motor_calibration_set == 1) { + left_motor_calibration_value = (float) firmware_bytes[23] * 65536; + left_motor_calibration_value += ((float) firmware_bytes[24] * 256); + left_motor_calibration_value += firmware_bytes[25]; + left_motor_calibration_value /= 16777216; + right_motor_calibration_value = (float) firmware_bytes[26] * 65536; + right_motor_calibration_value += ((float) firmware_bytes[27] * 256); + right_motor_calibration_value += firmware_bytes[28]; + right_motor_calibration_value /= 16777216; + } } else motor_calibration_set = 0; return 1; }