Attached is a patch to support the Harmony 700.
Signed-Off-By: Stephen Warren <swar...@wwwdotorg.org>
Note: The new prep_config/finish_config functions are technically
required to match the Windows software. However, during my testing, I
forgot to update congruity to call those functions, and everything
worked as expected. Should I just rip those new functions out? That
would significantly reduce the size of the patch, and remove the need to
release a new congruity version too.
I've tested the following from congruity using downloads from the website:
* Check connectivity
* Update configuration
* Learn IR
? install
? concordance/.deps
? concordance/.libs
? concordance/Makefile
? concordance/Makefile.in
? concordance/aclocal.m4
? concordance/autom4te.cache
? concordance/concordance
? concordance/config.h
? concordance/config.h.in
? concordance/config.log
? concordance/config.status
? concordance/configure
? concordance/libtool
? concordance/ltmain.sh
? concordance/stamp-h1
? consnoop/consnoop
? libconcord/.deps
? libconcord/.libconcord.cpp.swp
? libconcord/.libs
? libconcord/.remote.cpp.swp
? libconcord/.remote.h.swp
? libconcord/.remote_info.h.swp
? libconcord/Makefile
? libconcord/Makefile.in
? libconcord/aclocal.m4
? libconcord/autom4te.cache
? libconcord/binaryfile.lo
? libconcord/config.guess
? libconcord/config.h
? libconcord/config.h.in
? libconcord/config.log
? libconcord/config.status
? libconcord/config.sub
? libconcord/configure
? libconcord/depcomp
? libconcord/install-sh
? libconcord/libconcord.la
? libconcord/libconcord.lo
? libconcord/libtool
? libconcord/libusbhid.lo
? libconcord/ltmain.sh
? libconcord/missing
? libconcord/remote.lo
? libconcord/remote_z.lo
? libconcord/stamp-h1
? libconcord/usblan.lo
? libconcord/web.lo
? libconcord/bindings/python/libconcord.pyc
Index: concordance/concordance.c
===================================================================
RCS file: /cvsroot/concordance/concordance/concordance/concordance.c,v
retrieving revision 1.39
diff -u -p -r1.39 concordance.c
--- concordance/concordance.c 5 Jul 2009 13:46:56 -0000 1.39
+++ concordance/concordance.c 22 Jul 2010 01:26:12 -0000
@@ -467,6 +467,11 @@ int upload_config(uint8_t *data, uint32_
post_preconfig(data, size);
}
+ printf("Preparing Update: ");
+ if ((err = prep_config())) {
+ return err;
+ }
+ printf(" done\n");
/*
* We must invalidate flash before we erase and write so that
* nothing will attempt to reference it while we're working.
@@ -500,6 +505,12 @@ int upload_config(uint8_t *data, uint32_
}
printf(" done\n");
+ printf("Finalizing Update: ");
+ if ((err = finish_config())) {
+ return err;
+ }
+ printf(" done\n");
+
if ((*options).noreset) {
return 0;
}
Index: libconcord/libconcord.cpp
===================================================================
RCS file: /cvsroot/concordance/concordance/libconcord/libconcord.cpp,v
retrieving revision 1.41
diff -u -p -r1.41 libconcord.cpp
--- libconcord/libconcord.cpp 20 May 2009 19:46:09 -0000 1.41
+++ libconcord/libconcord.cpp 22 Jul 2010 01:26:12 -0000
@@ -880,6 +880,36 @@ int verify_remote_config(uint8_t *in, ui
return 0;
}
+int prep_config()
+{
+ int err = 0;
+
+ if (ri.architecture != 14) {
+ return 0;
+ }
+
+ if ((err = rmt->PrepConfig())) {
+ return LC_ERROR;
+ }
+
+ return 0;
+}
+
+int finish_config()
+{
+ int err = 0;
+
+ if (ri.architecture != 14) {
+ return 0;
+ }
+
+ if ((err = rmt->FinishConfig())) {
+ return LC_ERROR;
+ }
+
+ return 0;
+}
+
int erase_config(uint32_t size, lc_callback cb, void *cb_arg)
{
int err = 0;
Index: libconcord/libconcord.h
===================================================================
RCS file: /cvsroot/concordance/concordance/libconcord/libconcord.h,v
retrieving revision 1.21
diff -u -p -r1.21 libconcord.h
--- libconcord/libconcord.h 14 Oct 2008 19:35:01 -0000 1.21
+++ libconcord/libconcord.h 22 Jul 2010 01:26:12 -0000
@@ -275,6 +275,15 @@ int write_config_to_file(uint8_t *in, ui
int verify_remote_config(uint8_t *in, uint32_t size, lc_callback cb,
void *cb_arg);
/*
+ * Preps the remote for a config upgrade
+ */
+int prep_config();
+/*
+ * Tells the remote the config upgrade was successful and that it should
+ * use the new config upon next reboot.
+ */
+int finish_config();
+/*
* Flash can be changed to 0, but not back to 1, so you must erase the
* flash (to 1) in order to write the flash.
*/
Index: libconcord/remote.cpp
===================================================================
RCS file: /cvsroot/concordance/concordance/libconcord/remote.cpp,v
retrieving revision 1.39
diff -u -p -r1.39 remote.cpp
--- libconcord/remote.cpp 11 Feb 2009 20:00:13 -0000 1.39
+++ libconcord/remote.cpp 22 Jul 2010 01:26:12 -0000
@@ -103,7 +103,7 @@ int CRemote::GetIdentity(TRemoteInfo &ri
const unsigned int rx_len = rsp[0] & 0x0F;
if ((rsp[0] & 0xF0) != RESPONSE_VERSION_DATA ||
- (rx_len != 7 && rx_len != 5)) {
+ (rx_len != 5 && rx_len != 7 && rx_len != 8)) {
debug("Bogus ident response: %02X", rsp[1]);
return LC_ERROR_INVALID_DATA_FROM_REMOTE;
}
@@ -117,7 +117,7 @@ int CRemote::GetIdentity(TRemoteInfo &ri
ri.architecture = rx_len < 6 ? 2 : rsp[5] >> 4;
ri.fw_type = rx_len < 6 ? 0 : rsp[5] & 0x0F;
ri.skin = rx_len < 6 ? 2 : rsp[6];
- ri.protocol = rx_len < 7 ? 0 : rsp[7];
+ ri.protocol = rx_len < 7 ? 0 : ((rx_len < 8) ? rsp[7] :
ri.architecture);
setup_ri_pointers(ri);
@@ -156,12 +156,20 @@ int CRemote::GetIdentity(TRemoteInfo &ri
}
// read serial (see specs/protocol.txt for details)
- if ((err = (ri.architecture == 2)
- // The old 745 stores the serial number in EEPROM
- ? ReadMiscByte(FLASH_EEPROM_ADDR, FLASH_SIZE,
- COMMAND_MISC_EEPROM, rsp)
- // All newer models store it in Flash
- : ReadFlash(FLASH_SERIAL_ADDR, 48, rsp, ri.protocol))) {
+ switch (ri.arch->serial_location) {
+ case SERIAL_LOCATION_EEPROM:
+ err = ReadMiscByte(ri.arch->serial_address, SERIAL_SIZE,
+ COMMAND_MISC_EEPROM, rsp);
+ break;
+ case SERIAL_LOCATION_FLASH:
+ err = ReadFlash(ri.arch->serial_address, SERIAL_SIZE, rsp,
+ ri.protocol);
+ break;
+ default:
+ debug("Invalid TArchInfo\n");
+ return LC_ERROR_READ;
+ }
+ if (err) {
debug("Couldn't read serial\n");
return LC_ERROR_READ;
}
@@ -344,6 +352,37 @@ int CRemote::EraseFlash(uint32_t addr, u
return err;
}
+int CRemote::PrepConfig()
+{
+ int err;
+ uint8_t data_zero[1] = { 0x00 };
+
+ if ((err = WriteMiscByte(0x02, 1, COMMAND_MISC_RESTART_CONFIG,
data_zero))) {
+ return err;
+ }
+ if ((err = WriteMiscByte(0x05, 1, COMMAND_MISC_RESTART_CONFIG,
data_zero))) {
+ return err;
+ }
+
+ return 0;
+}
+
+int CRemote::FinishConfig()
+{
+ int err;
+ uint8_t data_one[1] = { 0x01 };
+ uint8_t data_zero[1] = { 0x00 };
+
+ if ((err = WriteMiscByte(0x03, 1, COMMAND_MISC_RESTART_CONFIG,
data_one))) {
+ return err;
+ }
+ if ((err = WriteMiscByte(0x06, 1, COMMAND_MISC_RESTART_CONFIG,
data_zero))) {
+ return err;
+ }
+
+ return 0;
+}
+
int CRemote::RestartConfig()
{
uint8_t data[1] = { 0x00 };
Index: libconcord/remote.h
===================================================================
RCS file: /cvsroot/concordance/concordance/libconcord/remote.h,v
retrieving revision 1.19
diff -u -p -r1.19 remote.h
--- libconcord/remote.h 14 Oct 2008 19:35:01 -0000 1.19
+++ libconcord/remote.h 22 Jul 2010 01:26:13 -0000
@@ -24,9 +24,7 @@
#ifndef REMOTE_H
#define REMOTE_H
-#define FLASH_EEPROM_ADDR 0x10
-#define FLASH_SERIAL_ADDR 0x000110
-#define FLASH_SIZE 48
+#define SERIAL_SIZE 48
/*
* limits for IR signal learning, stop when any is reached:
* timeouts in milliseconds, length in number of mark/space durations
@@ -74,7 +72,11 @@ struct TFlash {
const char *part;
};
+#define SERIAL_LOCATION_EEPROM 1
+#define SERIAL_LOCATION_FLASH 2
struct TArchInfo {
+ int serial_location;
+ uint32_t serial_address;
uint32_t flash_base;
uint32_t firmware_base;
uint32_t config_base;
@@ -149,6 +151,8 @@ public:
lc_callback cb=NULL, void *cb_arg=NULL)=0;
virtual int WriteRam(uint32_t addr, const uint32_t len, uint8_t *wr)=0;
virtual int ReadRam(uint32_t addr, const uint32_t len, uint8_t *rd)=0;
+ virtual int PrepConfig()=0;
+ virtual int FinishConfig()=0;
virtual int RestartConfig()=0;
virtual int GetTime(const TRemoteInfo &ri, THarmonyTime &ht)=0;
@@ -188,6 +192,8 @@ public:
void *cb_arg=NULL);
int WriteRam(uint32_t addr, const uint32_t len, uint8_t *wr);
int ReadRam(uint32_t addr, const uint32_t len, uint8_t *rd);
+ int PrepConfig();
+ int FinishConfig();
int RestartConfig();
int GetTime(const TRemoteInfo &ri, THarmonyTime &ht);
@@ -230,6 +236,8 @@ public:
void *cb_arg=NULL);
int WriteRam(uint32_t addr, const uint32_t len, uint8_t *wr);
int ReadRam(uint32_t addr, const uint32_t len, uint8_t *rd);
+ int PrepConfig();
+ int FinishConfig();
int RestartConfig();
int GetTime(const TRemoteInfo &ri, THarmonyTime &ht);
Index: libconcord/remote_info.h
===================================================================
RCS file: /cvsroot/concordance/concordance/libconcord/remote_info.h,v
retrieving revision 1.10
diff -u -p -r1.10 remote_info.h
--- libconcord/remote_info.h 6 Oct 2008 21:01:18 -0000 1.10
+++ libconcord/remote_info.h 22 Jul 2010 01:26:13 -0000
@@ -84,7 +84,20 @@ static const TModel ModelList[]={
{ MFG_HAR, "Harmony 670", NULL },
// 50
{ MFG_COOL, "Harmony 552", "Mocha Grande" },
{ MFG_HAR, "Harmony 1000i", "Cognac" },
- { MFG_UNK, "Unknown", NULL }
+ { MFG_UNK, "Unknown", NULL },
+ { MFG_UNK, "Unknown", NULL },
+ { MFG_UNK, "Unknown", NULL },
+ { MFG_UNK, "Unknown", NULL },
+ { MFG_UNK, "Unknown", NULL },
+ { MFG_UNK, "Unknown", NULL },
+ { MFG_UNK, "Unknown", NULL },
+ { MFG_UNK, "Unknown", NULL },
// 60
+ { MFG_UNK, "Unknown", NULL },
+ { MFG_UNK, "Unknown", NULL },
+ { MFG_UNK, "Unknown", NULL },
+ { MFG_UNK, "Unknown", NULL },
+ { MFG_UNK, "Unknown", NULL },
+ { MFG_HAR, "Harmony 700", "Molson" }
};
static const unsigned int max_model=sizeof(ModelList)/sizeof(TModel)-1;
@@ -110,39 +123,300 @@ static const uint32_t sectors3[]={ 0x010
static const uint32_t sectors4[]={ 0x010000, 0x020000, 0x030000, 0x040000,
0x050000,
0x060000, 0x070000, 0x080000, 0 };
+// 1c:15 EON F16-100HIP (Uniform Sectors)
+// Manufacturer 1c, flash 15. But, firmware returns these swapped
+static const uint32_t sectors5[]={
+ 0x010000, 0x020000, 0x030000, 0x040000, 0x050000, 0x060000, 0x070000,
0x080000,
+ 0x090000, 0x0a0000, 0x0b0000, 0x0c0000, 0x0d0000, 0x0e0000, 0x0f0000,
0x100000,
+ 0x110000, 0x120000, 0x130000, 0x140000, 0x150000, 0x160000, 0x170000,
0x180000,
+ 0x190000, 0x1a0000, 0x1b0000, 0x1c0000, 0x1d0000, 0x1e0000, 0x1f0000,
0x200000,
+ 0x210000, 0x220000, 0x230000, 0x240000, 0x250000, 0x260000, 0x270000,
0x280000,
+ 0x290000, 0x2a0000, 0x2b0000, 0x2c0000, 0x2d0000, 0x2e0000, 0x2f0000,
0x300000,
+ 0x310000, 0x320000, 0x330000, 0x340000, 0x350000, 0x360000, 0x370000,
0x380000,
+ 0x390000, 0x3a0000, 0x3b0000, 0x3c0000, 0x1d0000, 0x3e0000, 0x3f0000,
0x400000,
+ 0 };
+
static const TFlash FlashList[]={
{ 0x01, 0x37, 1024, 8, sectors1, "AMD
Am29LV008B" },
{ 0x01, 0x49, 2048, 16, sectors2, "AMD
Am29LV160BB" },
{ 0x01, 0x4C, 2048, 8, sectors2, "AMD
Am29LV116DB" },
+ { 0x15, 0x1C, 4096, 8, sectors5, "EON
F16-100HIP" },
{ 0xFF, 0x11, 256, 1, sectors3, "25F020" },
{ 0xFF, 0x12, 512, 1, sectors4, "25F040" } ,
{ 0, 0, 0, 0, NULL,
"" }
};
-static const TArchInfo ArchList[11]={
-// fl_base, fw_base, config_base, fw_up_base, fw_4847_off,
cookie, ck_sz, endvec, micro, fl_sz, ram_sz, ee_sz, usb
-// 0
- { 0, 0, 0, 0, 0,
0, 0, 0, "", 0, 0, 0, "" },
-// 1
- { 0, 0, 0, 0, 0,
0, 0, 0, "", 0, 0, 0, "" },
-// 2 - 745
- { 0x000000, 0, 0x006000, 0, 0,
0x03A5, 2, 2, "PIC16LF877", 8, 368, 256,
"USBN9603" },
-// 3 - 748, 768
- { 0x000000, 0x010000, 0x020000, 0x020000, 2,
0x0369, 2, 2, "PIC18LC801", 0, 1536, 0,
"USBN9604" },
-// 4
- { 0, 0, 0, 0, 0,
0, 0, 0, "", 0, 0, 0, "" },
-// 5
- { 0, 0, 0, 0, 0,
0, 0, 0, "", 0, 0, 0, "" },
-// 6
- { 0, 0, 0, 0, 0,
0, 0, 0, "", 0, 0, 0, "" },
-// 7 - 6xx
- { 0x000000, 0x010000, 0x020000, 0x020000, 2,
0x4D424D42, 4, 5, "PIC18LC801", 0, 1536, 0,
"USBN9604" },
-// 8 - 880
- { 0x000000, 0x010000, 0x020000, 0x1D0000, 4,
0x50545054, 4, 4, "PIC18LC801", 0, 1536, 0,
"USBN9604" },
-// 9 - 360, 52x, 55x
- { 0x800000, 0x810000, 0x820000, 0x810000, 4,
0x4D434841, 4, 4, "PIC18LF4550", 16, 2048, 256,
"Internal" },
-// 10 - 890
- { 0x000000, 0x010000, 0x020000, 0, 0,
0x1, /*hack*/ 4, 4, "PIC18LC801", 0, 1536, 0,
"USBN9604" },
+static const TArchInfo ArchList[]={
+ /* arch 0 */
+ {
+ 0, // serial_location
+ 0, // serial_address
+ 0, // flash_base
+ 0, // firmware_base
+ 0, // config_base
+ 0, // firmware_update_base
+ 0, // firmware_4847_offset
+ 0, // cookie
+ 0, // cookie_size
+ 0, // end_vector
+ "", // micro
+ 0, // flash_size
+ 0, // ram_size
+ 0, // eeprom_size
+ "", // usb
+ },
+ /* arch 1 */
+ {
+ 0, // serial_location
+ 0, // serial_address
+ 0, // flash_base
+ 0, // firmware_base
+ 0, // config_base
+ 0, // firmware_update_base
+ 0, // firmware_4847_offset
+ 0, // cookie
+ 0, // cookie_size
+ 0, // end_vector
+ "", // micro
+ 0, // flash_size
+ 0, // ram_size
+ 0, // eeprom_size
+ "", // usb
+ },
+ /* arch 2: 745 */
+ {
+ SERIAL_LOCATION_EEPROM, // serial_location
+ 0x10, // serial_address
+ 0x000000, // flash_base
+ 0, // firmware_base
+ 0x006000, // config_base
+ 0, // firmware_update_base
+ 0, // firmware_4847_offset
+ 0x03A5, // cookie
+ 2, // cookie_size
+ 2, // end_vector
+ "PIC16LF877", // micro
+ 8, // flash_size
+ 368, // ram_size
+ 256, // eeprom_size
+ "USBN9603", // usb
+ },
+ /* arch 3: 748, 768 */
+ {
+ SERIAL_LOCATION_FLASH, // serial_location
+ 0x000110, // serial_address
+ 0x000000, // flash_base
+ 0x010000, // firmware_base
+ 0x020000, // config_base
+ 0x020000, // firmware_update_base
+ 2, // firmware_4847_offset
+ 0x0369, // cookie
+ 2, // cookie_size
+ 2, // end_vector
+ "PIC18LC801", // micro
+ 0, // flash_size
+ 1536, // ram_size
+ 0, // eeprom_size
+ "USBN9604", // usb
+ },
+ /* arch 4 */
+ {
+ 0, // serial_location
+ 0, // serial_address
+ 0, // flash_base
+ 0, // firmware_base
+ 0, // config_base
+ 0, // firmware_update_base
+ 0, // firmware_4847_offset
+ 0, // cookie
+ 0, // cookie_size
+ 0, // end_vector
+ "", // micro
+ 0, // flash_size
+ 0, // ram_size
+ 0, // eeprom_size
+ "", // usb
+ },
+ /* arch 5 */
+ {
+ 0, // serial_location
+ 0, // serial_address
+ 0, // flash_base
+ 0, // firmware_base
+ 0, // config_base
+ 0, // firmware_update_base
+ 0, // firmware_4847_offset
+ 0, // cookie
+ 0, // cookie_size
+ 0, // end_vector
+ "", // micro
+ 0, // flash_size
+ 0, // ram_size
+ 0, // eeprom_size
+ "", // usb
+ },
+ /* arch 6 */
+ {
+ 0, // serial_location
+ 0, // serial_address
+ 0, // flash_base
+ 0, // firmware_base
+ 0, // config_base
+ 0, // firmware_update_base
+ 0, // firmware_4847_offset
+ 0, // cookie
+ 0, // cookie_size
+ 0, // end_vector
+ "", // micro
+ 0, // flash_size
+ 0, // ram_size
+ 0, // eeprom_size
+ "", // usb
+ },
+ /* arch 7: 6xx */
+ {
+ SERIAL_LOCATION_FLASH, // serial_location
+ 0x000110, // serial_address
+ 0x000000, // flash_base
+ 0x010000, // firmware_base
+ 0x020000, // config_base
+ 0x020000, // firmware_update_base
+ 2, // firmware_4847_offset
+ 0x4D424D42, // cookie
+ 4, // cookie_size
+ 5, // end_vector
+ "PIC18LC801", // micro
+ 0, // flash_size
+ 1536, // ram_size
+ 0, // eeprom_size
+ "USBN9604", // usb
+ },
+ /* arch 8: 880 */
+ {
+ SERIAL_LOCATION_FLASH, // serial_location
+ 0x000110, // serial_address
+ 0x000000, // flash_base
+ 0x010000, // firmware_base
+ 0x020000, // config_base
+ 0x1D0000, // firmware_update_base
+ 2, // firmware_4847_offset
+ 0x50545054, // cookie
+ 4, // cookie_size
+ 5, // end_vector
+ "PIC18LC801", // micro
+ 0, // flash_size
+ 1536, // ram_size
+ 0, // eeprom_size
+ "USBN9604", // usb
+ },
+ /* arch 9: 360, 52x, 55x */
+ {
+ SERIAL_LOCATION_FLASH, // serial_location
+ 0x000110, // serial_address
+ 0x000000, // flash_base
+ 0x810000, // firmware_base
+ 0x820000, // config_base
+ 0x810000, // firmware_update_base
+ 2, // firmware_4847_offset
+ 0x4D434841, // cookie
+ 4, // cookie_size
+ 4, // end_vector
+ "PIC18LF4550", // micro
+ 0, // flash_size
+ 2048, // ram_size
+ 256, // eeprom_size
+ "Internal", // usb
+ },
+ /* arch 10: 890 */
+ {
+ SERIAL_LOCATION_FLASH, // serial_location
+ 0x000110, // serial_address
+ 0x000000, // flash_base
+ 0x010000, // firmware_base
+ 0x020000, // config_base
+ 0, // firmware_update_base
+ 0, // firmware_4847_offset
+ 0x1, /* hack */ // cookie
+ 4, // cookie_size
+ 4, // end_vector
+ "PIC18LC801", // micro
+ 0, // flash_size
+ 1536, // ram_size
+ 0, // eeprom_size
+ "USBN9604", // usb
+ },
+ /* arch 11 */
+ {
+ 0, // serial_location
+ 0, // serial_address
+ 0, // flash_base
+ 0, // firmware_base
+ 0, // config_base
+ 0, // firmware_update_base
+ 0, // firmware_4847_offset
+ 0, // cookie
+ 0, // cookie_size
+ 0, // end_vector
+ "", // micro
+ 0, // flash_size
+ 0, // ram_size
+ 0, // eeprom_size
+ "", // usb
+ },
+ /* arch 12 */
+ {
+ 0, // serial_location
+ 0, // serial_address
+ 0, // flash_base
+ 0, // firmware_base
+ 0, // config_base
+ 0, // firmware_update_base
+ 0, // firmware_4847_offset
+ 0, // cookie
+ 0, // cookie_size
+ 0, // end_vector
+ "", // micro
+ 0, // flash_size
+ 0, // ram_size
+ 0, // eeprom_size
+ "", // usb
+ },
+ /* arch 13 */
+ {
+ 0, // serial_location
+ 0, // serial_address
+ 0, // flash_base
+ 0, // firmware_base
+ 0, // config_base
+ 0, // firmware_update_base
+ 0, // firmware_4847_offset
+ 0, // cookie
+ 0, // cookie_size
+ 0, // end_vector
+ "", // micro
+ 0, // flash_size
+ 0, // ram_size
+ 0, // eeprom_size
+ "", // usb
+ },
+ /* arch 14: 700 */
+ {
+ SERIAL_LOCATION_FLASH, // serial_location
+ 0xfff400, // serial_address
+ 0x000000, // flash_base
+ 0x000000, // firmware_base (0x010000 but
not yet supported)
+ 0x030000, // config_base
+ 0, // firmware_update_base
+ 8, // firmware_4847_offset
+ 0x4D505347, // cookie
+ 4, // cookie_size
+ 4, // end_vector
+ "PIC18F67J50", // micro
+ 0, // flash_size
+ 0, // ram_size
+ 0, // eeprom_size
+ "Internal", // usb
+ }
};
#endif
Index: libconcord/remote_z.cpp
===================================================================
RCS file: /cvsroot/concordance/concordance/libconcord/remote_z.cpp,v
retrieving revision 1.23
diff -u -p -r1.23 remote_z.cpp
--- libconcord/remote_z.cpp 21 Jul 2010 18:37:06 -0000 1.23
+++ libconcord/remote_z.cpp 22 Jul 2010 01:26:13 -0000
@@ -365,6 +365,16 @@ int CRemoteZ_Base::ReadRam(uint32_t addr
return 0;
}
+int CRemoteZ_Base::PrepConfig()
+{
+ return 0;
+}
+
+int CRemoteZ_Base::FinishConfig()
+{
+ return 0;
+}
+
int CRemoteZ_Base::RestartConfig()
{
return 0;
------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
concordance-devel mailing list
concordance-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/concordance-devel