ft. button press reset

Dependencies:   mbed

Fork of BeaconDemo_RobotCode by Science Memeseum

Revision:
1:f6356cf1cefc
Parent:
0:8a5497a2e366
Child:
2:a6214fd156ff
diff -r 8a5497a2e366 -r f6356cf1cefc PsiSwarm/eprom.cpp
--- a/PsiSwarm/eprom.cpp	Sat Oct 03 22:48:50 2015 +0000
+++ b/PsiSwarm/eprom.cpp	Sat Oct 03 23:09:10 2015 +0000
@@ -1,9 +1,9 @@
 /** University of York Robotics Laboratory PsiSwarm Library: Eprom Functions Source File
- * 
+ *
  * File: eprom.cpp
  *
  * (C) Dr James Hilder, Dept. Electronics & Computer Science, University of York
- * 
+ *
  * PsiSwarm Library Version: 0.2, October 2015
  *
  * Functions for accessing the 64Kb EPROM chip and reading the reserved firmware block
@@ -11,7 +11,7 @@
  * Example:
  * @code
  * #include "psiswarm.h"
- * 
+ *
  * int main() {
  *     init();
  *     write_eeprom_byte(0,0xDD);    //Writes byte 0xDD in EPROM address 0
@@ -20,34 +20,36 @@
  * }
  * @endcode
  */
- 
-#include "psiswarm.h" 
+
+#include "psiswarm.h"
 
 /** Write a single byte to the EPROM
  *
  * @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 write_eeprom_byte ( int address, char data )
+{
     char write_array[3];
-    if(address > 65279){
-        debug("WARNING: Attempt to write to invalid EPROM address: %X",address);   
-    }else{
-    write_array[0] = address / 256;
-    write_array[1] = address % 256;
-    write_array[2] = data;
-    primary_i2c.write(EEPROM_ADDRESS, write_array, 3, false);
-    //Takes 5ms to write a page: ideally this could be done with a timer or RTOS
-    wait(0.005);
+    if(address > 65279) {
+        debug("WARNING: Attempt to write to invalid EPROM address: %X",address);
+    } else {
+        write_array[0] = address / 256;
+        write_array[1] = address % 256;
+        write_array[2] = data;
+        primary_i2c.write(EEPROM_ADDRESS, write_array, 3, false);
+        //Takes 5ms to write a page: ideally this could be done with a timer or RTOS
+        wait(0.005);
     }
 }
-   
+
 /** Read a single byte from the EPROM
  *
  * @param address The address to read from, range 0-65279
  * @return The character stored at address
- */    
-char read_eeprom_byte ( int address ){
+ */
+char read_eeprom_byte ( int address )
+{
     char address_array [2];
     address_array[0] = address / 256;
     address_array[1] = address % 256;
@@ -61,7 +63,8 @@
  *
  * @return The character stored at address after the previous one read from
  */
-char read_next_eeprom_byte (){
+char read_next_eeprom_byte ()
+{
     char data [1];
     primary_i2c.read(EEPROM_ADDRESS, data, 1, false);
     return data [0];
@@ -71,10 +74,18 @@
  *
  * @return 1 if a valid firmware is read, 0 otherwise
  */
-char read_firmware (){
+char read_firmware ()
+{
     char address_array [2] = {255,0};
     primary_i2c.write(EEPROM_ADDRESS, address_array, 2, false);
-    primary_i2c.read(EEPROM_ADDRESS, firmware_bytes, 20, false);   
-    if(firmware_bytes[0] == PSI_BYTE) return 1;
+    primary_i2c.read(EEPROM_ADDRESS, firmware_bytes, 20, false);
+
+    if(firmware_bytes[0] == PSI_BYTE) {
+        // Parse firmware
+        char firmware_string [8];
+        sprintf(firmware_string,"%d.%d",firmware_bytes[9],firmware_bytes[10]);
+        firmware_version = atof(firmware_string);
+        return 1;
+    }
     return 0;
 }
\ No newline at end of file