Exemplo n.º 1
0
void aw_fel_get_version(libusb_device_handle *usb)
{
	struct aw_fel_version {
		char signature[8];
		uint32_t soc_id;	/* 0x00162300 */
		uint32_t unknown_0a;	/* 1 */
		uint16_t protocol;	/* 1 */
		uint8_t  unknown_12;	/* 0x44 */
		uint8_t  unknown_13;	/* 0x08 */
		uint32_t scratchpad;	/* 0x7e00 */
		uint32_t pad[2];	/* unused */
	} __attribute__((packed)) buf;

	aw_send_fel_request(usb, AW_FEL_VERSION, 0, 0);
	aw_usb_read(usb, &buf, sizeof(buf));
	aw_read_fel_status(usb);

	buf.soc_id = le32toh(buf.soc_id);
	buf.unknown_0a = le32toh(buf.unknown_0a);
	buf.protocol = le32toh(buf.protocol);
	buf.scratchpad = le16toh(buf.scratchpad);
	buf.pad[0] = le32toh(buf.pad[0]);
	buf.pad[1] = le32toh(buf.pad[1]);

	const char *soc_name="unknown";
	switch ((buf.soc_id >> 8) & 0xFFFF) {
	case 0x1623: soc_name="A10";break;
	case 0x1625: soc_name="A13";break;
	case 0x1633: soc_name="A31";break;
	case 0x1651: soc_name="A20";break;
	}

	printf("%.8s soc=%08x(%s) %08x ver=%04x %02x %02x scratchpad=%08x %08x %08x\n", buf.signature, buf.soc_id, soc_name, buf.unknown_0a, buf.protocol, buf.unknown_12, buf.unknown_13, buf.scratchpad, buf.pad[0], buf.pad[1]);
}
Exemplo n.º 2
0
void aw_fel_get_version(libusb_device_handle *usb)
{
	struct aw_fel_version {
		char signature[8];
		uint32_t unknown_08;	/* 0x00162300 */
		uint32_t unknown_0a;	/* 1 */
		uint16_t protocol;	/* 1 */
		uint8_t  unknown_12;	/* 0x44 */
		uint8_t  unknown_13;	/* 0x08 */
		uint32_t scratchpad;	/* 0x7e00 */
		uint32_t pad[2];	/* unused */
	} __attribute__((packed)) buf;

	aw_send_fel_request(usb, AW_FEL_VERSION, 0, 0);
	aw_usb_read(usb, &buf, sizeof(buf));
	aw_read_fel_status(usb);

	buf.unknown_08 = le32toh(buf.unknown_08);
	buf.unknown_0a = le32toh(buf.unknown_0a);
	buf.protocol = le32toh(buf.protocol);
	buf.scratchpad = le16toh(buf.scratchpad);
	buf.pad[0] = le32toh(buf.pad[0]);
	buf.pad[1] = le32toh(buf.pad[1]);

	printf("%.8s %08x %08x ver=%04x %02x %02x scratchpad=%08x %08x %08x\n", buf.signature, buf.unknown_08, buf.unknown_0a, buf.protocol, buf.unknown_12, buf.unknown_13, buf.scratchpad, buf.pad[0], buf.pad[1]);
}
Exemplo n.º 3
0
void aw_fel_get_version(libusb_device_handle *usb)
{
	struct aw_fel_version {
		char signature[8];
		uint16_t unknown1;
		uint16_t unknown2;
		uint32_t unknown3;
		uint16_t protocol;
		uint16_t unknown4;
		uint16_t unknown5;
		uint16_t unknown6;
		uint16_t unknown7;
		uint16_t unknown8;
		uint16_t unknown9;
		uint16_t unknown10;
	} __attribute__((packed)) buf;

	aw_send_fel_request(usb, AW_FEL_VERSION, 0, 0);
	aw_usb_read(usb, &buf, sizeof(buf));
	aw_read_fel_status(usb);

	buf.unknown1 = le16toh(buf.unknown1);
	buf.unknown2 = le16toh(buf.unknown2);
	buf.unknown3 = le16toh(buf.unknown3);
	buf.protocol = le32toh(buf.protocol);
	buf.unknown4 = le16toh(buf.unknown4);
	buf.unknown5 = le16toh(buf.unknown5);
	buf.unknown6 = le16toh(buf.unknown6);
	buf.unknown7 = le16toh(buf.unknown7);
	buf.unknown8 = le16toh(buf.unknown8);
	buf.unknown9 = le16toh(buf.unknown9);
	buf.unknown10 = le16toh(buf.unknown10);

	printf("%.8s %04x %04x %08x ver=%04x %04x %04x %04x %04x %04x %04x %04x\n", buf.signature, le16toh(buf.unknown1), le16toh(buf.unknown2), le16toh(buf.unknown3), buf.protocol, buf.unknown4, buf.unknown5, buf.unknown6, buf.unknown7, buf.unknown8, buf.unknown9, buf.unknown10);
}
Exemplo n.º 4
0
void aw_fel_read(libusb_device_handle *usb, uint32_t offset, void *buf, size_t len)
{
	aw_send_fel_request(usb, AW_FEL_1_READ, offset, len);
	aw_usb_read(usb, buf, len);
	aw_read_fel_status(usb);
}
Exemplo n.º 5
0
void aw_read_fel_status(libusb_device_handle *usb)
{
	char buf[8];
	aw_usb_read(usb, &buf, sizeof(buf));
}