Super Vision / Mbed 2 deprecated sv_usb_firmware

Dependencies:   MODSERIAL USBDevice_for_Rev_C_HW mbed

Fork of mbed_sv_firmware_with_init by Bob Recny

Revision:
17:1e704604e1ac
Parent:
16:b6230e4d0ed8
Child:
18:d128c7020292
--- a/main.cpp	Wed Feb 04 02:33:11 2015 +0000
+++ b/main.cpp	Sun Mar 01 02:53:23 2015 +0000
@@ -116,12 +116,13 @@
     rfid_int = 0;                                                   // RFID FE power control (active high)
     rfid_isp = 0;                                                   // RFID FE In-System Programming (active high)
     rfid_rst = 1;                                                   // RFID FE Reset (active high)
-    rfid_pwr = 1;                                                   // RFID power switch on USB board (active high for prototype 1, low for all others)
+//    rfid_pwr = 1;                                                   // RFID power switch on USB board (active high for prototype 1)
+    rfid_pwr = 0;                                                   // RFID power switch on USB board (active low for all others)
     wait(0.25);                                                     // wait 250ms before...
     rfid_rst = 0;                                                   // ... taking RFID out of reset
     wait(0.25);
     
-  while(!uart.readable())                                           // wait for RESET message from RFID
+    while(!uart.readable())                                           // wait for RESET message from RFID
     {
         led_err.write(LEDON);                                       // flash LED until it arrives
         wait(0.1);
@@ -215,13 +216,12 @@
 int rfid_rd(void)
 {
     int rfid_len = 0;
-    
+
     led_com.write(LEDON);
     for (i = 0; i < (RFIDLENLOW); i++)                              // Get first part of message to find out total count
     {
         uart_buffer_rx[i] = uart.getc();                            // get a byte from rfid
     }
-    
     rfid_len = ((uart_buffer_rx[i-2]<<8) + (uart_buffer_rx[i-1]));  // location of message length for RFID
 
     for (i = RFIDLENLOW; i < (RFIDLENLOW + rfid_len + 3); i++)
@@ -440,9 +440,9 @@
 int eeprom_msg_wr()                                                 // write proximity I2C register
 {
     int i2c_err;
-    i2c_err = i2c.write((EEPROM | i2c_buffer[3]), &i2c_buffer[4], i2c_buffer[2] + 1, 0);  
+    i2c_err = i2c.write((EEPROM | (i2c_buffer[3] << 1 )), &i2c_buffer[4], i2c_buffer[2] + 1, 0);  
                                                                     // I2C Address & block select, pointer to buffer, number of bytes (for address + data), stop at end.
-    while (!i2c.write(EEPROM | i2c_buffer[3]));                     // wait until write is done (EEPROM will ACK = 0 for single byte i2c.write)
+    while ( i2c.write(EEPROM | (i2c_buffer[3] << 1 )));             // wait until write is done (EEPROM will ACK = 0 for single byte i2c.write)
     return i2c_err;                                                 // 0 = ACK received, 1 = NAK/failure
 }
     
@@ -483,14 +483,13 @@
  int eeprom_msg_rd()
 {
     int i2c_err;
-    i2c_err = i2c.write((EEPROM | i2c_buffer[3]), &i2c_buffer[4], 1, 1); 
+    i2c_err = i2c.write((EEPROM | (i2c_buffer[3] << 1)), &i2c_buffer[4], 1, 1); 
                                                                     // I2C Address & block select, pointer to buffer (just the index), index, number of bytes (for address + data), no stop at end.
-    i2c_err |= i2c.read((EEPROM || i2c_buffer[3]), &i2c_buffer[5], i2c_buffer[2], 0);   
+    i2c_err |= i2c.read((EEPROM | (i2c_buffer[3] << 1)), &i2c_buffer[5], i2c_buffer[2], 0);   
                                                                     // I2C Address & block select, pointer to buffer (just the data), number of data bytes, stop at end.
     return i2c_err;                                                 // 0 = ACK received, 1 = NAK/failure
 }
 
-
 /**
  * @name    main
  * @brief   main firmware loop
@@ -508,7 +507,6 @@
     while(1)
     {
         led_com.write(led_com_state);                               // turn off communication LED unless it was specifically turned on by GPIO command
-
         if (prox_irq_state == 1)                                    // process the proximity interrupt 
         {
             prox_irq_state = 0;
@@ -538,7 +536,6 @@
             }
             cdc.writeBlock(cdc_buffer_tx, (em_pos + 2));
         }                                         
-        
         if (usb_irq_state == 1)                                     // message available from PC
         {
             led_com.write(LEDON);                                   // Message received - turn on LED
@@ -584,7 +581,7 @@
                     else if (i2c_buffer[1] == 0)                    // I2C write = 0
                         status = prox_msg_wr();                     // send buffer to proximity sensor and get response
 
-                    if (!status) led_err.write(LEDON);
+                    if (status) led_err.write(LEDON);
             
                     em_pos = 0;
                     for (i = 0; i < sizeof(cdc_buffer_tx); i++)
@@ -650,7 +647,7 @@
                     else if (i2c_buffer[1] == 0)                    // I2C write = 0
                         status = eeprom_msg_wr();                   // send buffer to proximity sensor and get response
 
-                    if (!status) led_err.write(LEDON);
+                    if (status) led_err.write(LEDON);
             
                     em_pos = 0;
                     for (i = 0; i < sizeof(cdc_buffer_tx); i++)
@@ -670,6 +667,7 @@
                     cdc.writeBlock(cdc_buffer_tx, (em_pos + 2));
                     led_com.write(LEDOFF);
                     break;
+                    
                 default:
                     led_err.write(LEDON);
                     while(1);