projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altosui: Adjust max log setting for storage block size
[fw/altos]
/
altoslib
/
AltosHexfile.java
diff --git
a/altoslib/AltosHexfile.java
b/altoslib/AltosHexfile.java
index f2ab4bead5c3883dd8cd1e16d5020b8cf63eb484..14f660a0bbcb0c4d38f406d31d2029d3fea3c711 100644
(file)
--- a/
altoslib/AltosHexfile.java
+++ b/
altoslib/AltosHexfile.java
@@
-16,7
+16,7
@@
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
-package org.altusmetrum.altoslib_1
2
;
+package org.altusmetrum.altoslib_1
4
;
import java.io.*;
import java.util.LinkedList;
import java.io.*;
import java.util.LinkedList;
@@
-295,15
+295,20
@@
public class AltosHexfile {
return -1;
try {
return -1;
try {
- /* Walk the descriptors looking for the device */
+ /* The address of this has moved depending on
+ * padding in the linker script. Look forward
+ * and backwards two bytes to see if we can find it
+ */
a = usb_descriptors.address;
a = usb_descriptors.address;
- while (get_u8(a+1) != AO_USB_DESC_DEVICE) {
- int delta = get_u8(a);
- a += delta;
- if (delta == 0 || a >= max_address)
- return -1;
- }
- return a;
+
+ if (get_u8(a) == 0x12 && get_u8(a+1) == AO_USB_DESC_DEVICE)
+ return a;
+ else if (get_u8(a+1) == 0x12 && get_u8(a+3) == AO_USB_DESC_DEVICE)
+ return a + 2;
+ else if (get_u8(a-2) == 0x12 && get_u8(a-1) == AO_USB_DESC_DEVICE)
+ return a - 2;
+
+ return -1;
} catch (ArrayIndexOutOfBoundsException ae) {
return -1;
}
} catch (ArrayIndexOutOfBoundsException ae) {
return -1;
}
@@
-354,11
+359,6
@@
public class AltosHexfile {
int product_len = get_u8(a);
int product_len = get_u8(a);
- System.out.printf("Product is at %x length %d\n", a, product_len);
-
- for (int i = 0; i < product_len; i++)
- System.out.printf(" %2d: %02x\n", i, get_u8(a+i));
-
if (product_len <= 0)
return null;
if (product_len <= 0)
return null;
@@
-367,12
+367,11
@@
public class AltosHexfile {
for (int i = 0; i < product_len - 2; i += 2) {
int c = get_u16(a + 2 + i);
for (int i = 0; i < product_len - 2; i += 2) {
int c = get_u16(a + 2 + i);
- System.out.printf("character %x\n", c);
-
product += Character.toString((char) c);
}
product += Character.toString((char) c);
}
- System.out.printf("product %s\n", product);
+ if (AltosLink.debug)
+ System.out.printf("product %s\n", product);
return product;
}
return product;
}