On Wed, 2 Jan 2013, Phil Dibowitz wrote:
Unfortunately, no it cannot. It needs to be able to store/act on that
information, and it can't do that without its pointer.
Did you have any further thoughts on this? I suppose we could just add
another pointer argument to the callback?
Also, any comments on any of my other patches? :-)
Yeah, I think we should just add another callback. It sucks, but I think it's
the cleanest solution.
Add another callback? You mean like add a separate callback function, but
just for announcing the stages?
No, I meant another argument, sorry.
As in the attached?
Comments?
Add a stages parameter to the callback definition to pass an array of the
stages that will be performed for a given operation file and remote. At the
moment, the stages are provided only for config updates (pure HID & Zwave) and
firmware updates (pure HID).
Index: concordance/concordance.c
===================================================================
RCS file: /cvsroot/concordance/concordance/concordance/concordance.c,v
retrieving revision 1.41.2.22
diff -u -p -r1.41.2.22 concordance.c
--- concordance/concordance.c 28 Mar 2012 00:10:29 -0000 1.41.2.22
+++ concordance/concordance.c 4 Jan 2013 03:48:45 -0000
@@ -166,9 +166,11 @@ void print_stage_name(int stage_id)
* total => the number 'curr' is trying to reach
* counter_type => what 'curr' represents (bytes, percent, etc.)
* arg => an extra value we can ask libconcord to pass us.
+ * stages => the array of stages that will be performed
*/
void cb_print_percent_status(uint32_t stage_id, uint32_t count, uint32_t curr,
- uint32_t total, uint32_t counter_type, void *arg)
+ uint32_t total, uint32_t counter_type, void *arg,
+ const uint32_t *stages)
{
if (stage_id == LC_CB_STAGE_NUM_STAGES) {
Index: libconcord/libconcord.cpp
===================================================================
RCS file: /cvsroot/concordance/concordance/libconcord/libconcord.cpp,v
retrieving revision 1.42.2.22
diff -u -p -r1.42.2.22 libconcord.cpp
--- libconcord/libconcord.cpp 15 Jul 2012 07:17:08 -0000 1.42.2.22
+++ libconcord/libconcord.cpp 4 Jan 2013 03:48:45 -0000
@@ -590,9 +590,68 @@ int is_fw_update_supported(int direct)
}
void _report_number_of_stages(lc_callback cb, void *cb_arg, int num) {
- cb(LC_CB_STAGE_NUM_STAGES, num, 0, 0, 0, cb_arg);
+ cb(LC_CB_STAGE_NUM_STAGES, num, 0, 0, 0, cb_arg, NULL);
}
+void _report_stages(lc_callback cb, void *cb_arg, int num, const uint32_t
+ *stages)
+{
+ cb(LC_CB_STAGE_NUM_STAGES, num, 0, 0, 0, cb_arg, stages);
+}
+
+static const uint32_t update_configuration_hid_stages[]={
+ LC_CB_STAGE_INITIALIZE_UPDATE,
+ LC_CB_STAGE_INVALIDATE_FLASH,
+ LC_CB_STAGE_ERASE_FLASH,
+ LC_CB_STAGE_WRITE_CONFIG,
+ LC_CB_STAGE_VERIFY_CONFIG,
+ LC_CB_STAGE_RESET,
+};
+static const int update_configuration_hid_num_stages = 6;
+
+static const uint32_t update_configuration_hid_noreset_stages[]={
+ LC_CB_STAGE_INITIALIZE_UPDATE,
+ LC_CB_STAGE_INVALIDATE_FLASH,
+ LC_CB_STAGE_ERASE_FLASH,
+ LC_CB_STAGE_WRITE_CONFIG,
+ LC_CB_STAGE_VERIFY_CONFIG,
+};
+static const int update_configuration_hid_noreset_num_stages = 5;
+
+static const uint32_t update_configuration_zwave_stages[]={
+ LC_CB_STAGE_INITIALIZE_UPDATE,
+ LC_CB_STAGE_WRITE_CONFIG,
+ LC_CB_STAGE_FINALIZE_UPDATE,
+};
+static const int update_configuration_zwave_num_stages = 3;
+
+static const uint32_t update_configuration_usbnet_stages[]={
+ LC_CB_STAGE_INITIALIZE_UPDATE,
+ LC_CB_STAGE_WRITE_CONFIG,
+ LC_CB_STAGE_FINALIZE_UPDATE,
+ LC_CB_STAGE_RESET,
+};
+static const int update_configuration_usbnet_num_stages = 4;
+
+static const uint32_t update_firmware_hid_stages[]={
+ LC_CB_STAGE_INITIALIZE_UPDATE,
+ LC_CB_STAGE_INVALIDATE_FLASH,
+ LC_CB_STAGE_ERASE_FLASH,
+ LC_CB_STAGE_WRITE_FIRMWARE,
+ LC_CB_STAGE_FINALIZE_UPDATE,
+ LC_CB_STAGE_RESET,
+ LC_CB_STAGE_SET_TIME,
+};
+static const int update_firmware_hid_num_stages = 7;
+
+static const uint32_t update_firmware_hid_direct_stages[]={
+ LC_CB_STAGE_INVALIDATE_FLASH,
+ LC_CB_STAGE_ERASE_FLASH,
+ LC_CB_STAGE_WRITE_FIRMWARE,
+ LC_CB_STAGE_RESET,
+ LC_CB_STAGE_SET_TIME,
+};
+static const int update_firmware_hid_direct_num_stages = 5;
/*
* GENERAL REMOTE STUFF
@@ -688,13 +747,15 @@ int reset_remote(lc_callback cb, void *c
{
int err;
if (cb)
- cb(LC_CB_STAGE_RESET, 0, 0, 2, LC_CB_COUNTER_TYPE_STEPS,
cb_arg);
+ cb(LC_CB_STAGE_RESET, 0, 0, 2, LC_CB_COUNTER_TYPE_STEPS,
+ cb_arg, NULL);
if ((err = rmt->Reset(COMMAND_RESET_DEVICE)))
return err;
if (cb)
- cb(LC_CB_STAGE_RESET, 1, 1, 2, LC_CB_COUNTER_TYPE_STEPS,
cb_arg);
+ cb(LC_CB_STAGE_RESET, 1, 1, 2, LC_CB_COUNTER_TYPE_STEPS,
+ cb_arg, NULL);
deinit_concord();
for (int i = 0; i < MAX_WAIT_FOR_BOOT; i++) {
@@ -713,7 +774,8 @@ int reset_remote(lc_callback cb, void *c
return err;
if (cb)
- cb(LC_CB_STAGE_RESET, 2, 2, 2, LC_CB_COUNTER_TYPE_STEPS,
cb_arg);
+ cb(LC_CB_STAGE_RESET, 2, 2, 2, LC_CB_COUNTER_TYPE_STEPS,
+ cb_arg, NULL);
return 0;
}
@@ -738,13 +800,15 @@ int post_preconfig(lc_callback cb, void
{
int err;
if (cb)
- cb(LC_CB_STAGE_HTTP, 0, 0, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(LC_CB_STAGE_HTTP, 0, 0, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg,
+ NULL);
if ((err = Post(of->GetXml(), of->GetXmlSize(), "POSTOPTIONS", ri,
true))) {
return err;
}
if (cb)
- cb(LC_CB_STAGE_HTTP, 1, 1, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(LC_CB_STAGE_HTTP, 1, 1, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg,
+ NULL);
return 0;
}
@@ -752,14 +816,16 @@ int post_postfirmware(lc_callback cb, vo
{
int err;
if (cb)
- cb(LC_CB_STAGE_HTTP, 0, 0, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(LC_CB_STAGE_HTTP, 0, 0, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg,
+ NULL);
if ((err = Post(of->GetXml(), of->GetXmlSize(), "COMPLETEPOSTOPTIONS",
ri,
false)))
return err;
if (cb)
- cb(LC_CB_STAGE_HTTP, 1, 1, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(LC_CB_STAGE_HTTP, 1, 1, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg,
+ NULL);
return 0;
}
@@ -767,14 +833,16 @@ int post_postconfig(lc_callback cb, void
{
int err;
if (cb)
- cb(LC_CB_STAGE_HTTP, 0, 0, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(LC_CB_STAGE_HTTP, 0, 0, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg,
+ NULL);
if ((err = Post(of->GetXml(), of->GetXmlSize(), "COMPLETEPOSTOPTIONS",
ri,
true, false, is_z_remote() ? true : false, NULL, NULL)))
return err;
if (cb)
- cb(LC_CB_STAGE_HTTP, 1, 1, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(LC_CB_STAGE_HTTP, 1, 1, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg,
+ NULL);
return 0;
}
@@ -798,14 +866,16 @@ int post_connect_test_success(lc_callbac
}
if (cb)
- cb(LC_CB_STAGE_HTTP, 0, 0, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(LC_CB_STAGE_HTTP, 0, 0, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg,
+ NULL);
if ((err = Post(of->GetXml(), of->GetXmlSize(), "POSTOPTIONS", ri, true,
add_cookiekeyval)))
return err;
if (cb)
- cb(LC_CB_STAGE_HTTP, 1, 1, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(LC_CB_STAGE_HTTP, 1, 1, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg,
+ NULL);
return 0;
}
@@ -825,7 +895,7 @@ int _set_time(lc_callback cb, void *cb_a
struct tm *lt = localtime(&t);
if (cb)
- cb(cb_stage, 0, 1, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(cb_stage, 0, 1, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
rtime.second = lt->tm_sec;
rtime.minute = lt->tm_min;
@@ -842,7 +912,7 @@ int _set_time(lc_callback cb, void *cb_a
return err;
}
if (cb)
- cb(cb_stage, 1, 2, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(cb_stage, 1, 2, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
return 0;
}
@@ -1077,11 +1147,24 @@ int update_configuration(lc_callback cb,
{
int err;
if (is_z_remote()) {
- _report_number_of_stages(cb, cb_arg, 3);
+ if (is_usbnet_remote())
+ _report_stages(cb, cb_arg,
+ update_configuration_usbnet_num_stages,
+ update_configuration_usbnet_stages);
+ else
+ _report_stages(cb, cb_arg,
+ update_configuration_zwave_num_stages,
+ update_configuration_zwave_stages);
err = _update_configuration_zwave(cb, cb_arg);
} else {
- _report_number_of_stages(cb, cb_arg,
- (noreset) ? 5 : 6);
+ if (noreset)
+ _report_stages(cb, cb_arg,
+ update_configuration_hid_noreset_num_stages,
+ update_configuration_hid_noreset_stages);
+ else
+ _report_stages(cb, cb_arg,
+ update_configuration_hid_num_stages,
+ update_configuration_hid_stages);
err = _update_configuration_hid(cb, cb_arg);
}
@@ -1303,6 +1386,15 @@ int update_firmware(lc_callback cb, void
return LC_ERROR_UNSUPP;
}
+ if (direct)
+ _report_stages(cb, cb_arg,
+ update_firmware_hid_direct_num_stages,
+ update_firmware_hid_direct_stages);
+ else
+ _report_stages(cb, cb_arg,
+ update_firmware_hid_num_stages,
+ update_firmware_hid_stages);
+
if (!direct) {
if ((err = prep_firmware(cb, cb_arg)))
return err;
@@ -1523,7 +1615,8 @@ int post_new_code(char *key_name, char *
string learn_key, learn_seq;
if (cb)
- cb(LC_CB_STAGE_HTTP, 0, 0, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(LC_CB_STAGE_HTTP, 0, 0, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg,
+ NULL);
if (key_name == NULL || encoded_signal == NULL) {
return LC_ERROR_POST; /* cannot do anything without */
@@ -1533,14 +1626,16 @@ int post_new_code(char *key_name, char *
learn_seq = encoded_signal;
if (cb)
- cb(LC_CB_STAGE_HTTP, 1, 1, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(LC_CB_STAGE_HTTP, 1, 1, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg,
+ NULL);
if ((err = Post(of->GetXml(), of->GetXmlSize(), "POSTOPTIONS", ri, true,
false, false, &learn_seq, &learn_key)))
return err;
if (cb)
- cb(LC_CB_STAGE_HTTP, 2, 2, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(LC_CB_STAGE_HTTP, 2, 2, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg,
+ NULL);
return 0;
}
Index: libconcord/libconcord.h
===================================================================
RCS file: /cvsroot/concordance/concordance/libconcord/libconcord.h,v
retrieving revision 1.22.2.16
diff -u -p -r1.22.2.16 libconcord.h
--- libconcord/libconcord.h 22 Oct 2012 00:40:42 -0000 1.22.2.16
+++ libconcord/libconcord.h 4 Jan 2013 03:48:45 -0000
@@ -114,9 +114,12 @@ extern "C" {
* uint32_t counter_type - the type of counter (bytes, steps, etc.)
* void *arg - opaque object you can pass to functions to have them
* pass back to your callback.
+ * const uint32_t* stages - a pointer to the stages that will be
+ * performed for this operation. Only used when
+ * LC_CB_STAGE_NUM_STAGES is the callback stage.
*/
typedef void (*lc_callback)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t,
- void*);
+ void*, const uint32_t*);
/*
* REMOTE INFORMATION ACCESSORS
Index: libconcord/remote.cpp
===================================================================
RCS file: /cvsroot/concordance/concordance/libconcord/remote.cpp,v
retrieving revision 1.40.2.9
diff -u -p -r1.40.2.9 remote.cpp
--- libconcord/remote.cpp 28 Mar 2012 00:10:29 -0000 1.40.2.9
+++ libconcord/remote.cpp 4 Jan 2013 03:48:45 -0000
@@ -145,7 +145,7 @@ int CRemote::GetIdentity(TRemoteInfo &ri
}
if (cb) {
cb(cb_stage, cb_count++, 1, 2,
- LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
}
/*
@@ -193,7 +193,7 @@ int CRemote::GetIdentity(TRemoteInfo &ri
if (cb) {
cb(cb_stage, cb_count++, 2, 2,
- LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
}
make_serial(rsp, ri);
@@ -285,7 +285,7 @@ int CRemote::ReadFlash(uint32_t addr, co
if (cb) {
cb(cb_stage, cb_count++, bytes_read, len,
- LC_CB_COUNTER_TYPE_BYTES, cb_arg);
+ LC_CB_COUNTER_TYPE_BYTES, cb_arg, NULL);
}
} while (err == 0 && addr < end);
@@ -299,13 +299,13 @@ int CRemote::InvalidateFlash(lc_callback
int err;
if (cb)
- cb(lc_stage, 0, 0, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(lc_stage, 0, 0, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
if ((err = HID_WriteReport(ivf)))
return err;
if (cb)
- cb(lc_stage, 1, 1, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(lc_stage, 1, 1, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
uint8_t rsp[68];
if ((err = HID_ReadReport(rsp)))
@@ -317,14 +317,14 @@ int CRemote::InvalidateFlash(lc_callback
}
if (cb)
- cb(lc_stage, 2, 2, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(lc_stage, 2, 2, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
return 0;
}
int CRemote::EraseFlash(uint32_t addr, uint32_t len, const TRemoteInfo &ri,
- lc_callback cb, void *arg, uint32_t cb_stage)
+ lc_callback cb, void *cb_arg, uint32_t cb_stage)
{
const unsigned int *sectors = ri.flash->sectors;
const unsigned int flash_base = ri.arch->flash_base;
@@ -368,7 +368,7 @@ int CRemote::EraseFlash(uint32_t addr, u
if (cb) {
cb(cb_stage, i, i+1, num_sectors,
- LC_CB_COUNTER_TYPE_STEPS, arg);
+ LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
}
debug("erase sector %2i: %06X - %06X", n, sector_begin,
sector_end);
@@ -386,7 +386,7 @@ int CRemote::PrepFirmware(const TRemoteI
uint8_t data[1] = { 0x00 };
if (cb)
- cb(cb_stage, 0, 0, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(cb_stage, 0, 0, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
if (ri.arch->firmware_update_base == ri.arch->firmware_base) {
/*
@@ -400,7 +400,8 @@ int CRemote::PrepFirmware(const TRemoteI
return LC_ERROR;
if (cb)
- cb(cb_stage, 1, 1, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(cb_stage, 1, 1, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg,
+ NULL);
if ((err = WriteFlash(0x200000, 1, data, ri.protocol, NULL,
NULL, 0)))
@@ -415,7 +416,8 @@ int CRemote::PrepFirmware(const TRemoteI
return LC_ERROR_WRITE;
if (cb)
- cb(cb_stage, 1, 1, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(cb_stage, 1, 1, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg,
+ NULL);
if ((err = ReadRam(0, 1, data)))
return LC_ERROR_WRITE;
@@ -423,7 +425,7 @@ int CRemote::PrepFirmware(const TRemoteI
return LC_ERROR_VERIFY;
}
if (cb)
- cb(cb_stage, 2, 2, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(cb_stage, 2, 2, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
return 0;
}
@@ -434,7 +436,7 @@ int CRemote::FinishFirmware(const TRemot
int err = 0;
if (cb)
- cb(cb_stage, 0, 0, 3, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(cb_stage, 0, 0, 3, LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
uint8_t data[1];
if (ri.arch->firmware_update_base == ri.arch->firmware_base) {
@@ -443,7 +445,8 @@ int CRemote::FinishFirmware(const TRemot
NULL, 0)))
return LC_ERROR;
if (cb)
- cb(cb_stage, 1, 1, 3, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(cb_stage, 1, 1, 3, LC_CB_COUNTER_TYPE_STEPS, cb_arg,
+ NULL);
} else {
data[0] = 0x02;
if ((err = WriteRam(0, 1, data))) {
@@ -451,13 +454,15 @@ int CRemote::FinishFirmware(const TRemot
return LC_ERROR_WRITE;
}
if (cb)
- cb(cb_stage, 1, 1, 3, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(cb_stage, 1, 1, 3, LC_CB_COUNTER_TYPE_STEPS, cb_arg,
+ NULL);
if ((err = ReadRam(0, 1, data))) {
debug("Failed to from RAM 0");
return LC_ERROR_WRITE;
}
if (cb)
- cb(cb_stage, 2, 2, 3, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(cb_stage, 2, 2, 3, LC_CB_COUNTER_TYPE_STEPS, cb_arg,
+ NULL);
if (data[0] != 2) {
printf("byte is %d\n", data[0]);
debug("Finalize byte didn't match");
@@ -465,7 +470,7 @@ int CRemote::FinishFirmware(const TRemot
}
}
if (cb)
- cb(cb_stage, 3, 3, 3, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(cb_stage, 3, 3, 3, LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
return 0;
}
@@ -478,28 +483,30 @@ int CRemote::PrepConfig(const TRemoteInf
if (ri.architecture != 14) {
if (cb) {
- cb(cb_stage, 0, 0, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
- cb(cb_stage, 1, 1, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(cb_stage, 0, 0, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg,
+ NULL);
+ cb(cb_stage, 1, 1, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg,
+ NULL);
}
return 0;
}
if (cb)
- cb(cb_stage, 0, 0, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(cb_stage, 0, 0, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
if ((err = WriteMiscByte(0x02, 1, COMMAND_MISC_RESTART_CONFIG,
data_zero))) {
return err;
}
if (cb)
- cb(cb_stage, 1, 1, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(cb_stage, 1, 1, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
if ((err = WriteMiscByte(0x05, 1, COMMAND_MISC_RESTART_CONFIG,
data_zero))) {
return err;
}
if (cb)
- cb(cb_stage, 2, 2, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(cb_stage, 2, 2, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
return 0;
}
@@ -516,21 +523,21 @@ int CRemote::FinishConfig(const TRemoteI
}
if (cb)
- cb(cb_stage, 0, 0, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(cb_stage, 0, 0, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
if ((err = WriteMiscByte(0x03, 1, COMMAND_MISC_RESTART_CONFIG,
data_one))) {
return err;
}
if (cb)
- cb(cb_stage, 1, 1, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(cb_stage, 1, 1, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
if ((err = WriteMiscByte(0x06, 1, COMMAND_MISC_RESTART_CONFIG,
data_zero))) {
return err;
}
if (cb)
- cb(cb_stage, 2, 2, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(cb_stage, 2, 2, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
return 0;
}
@@ -546,7 +553,7 @@ int CRemote::ReadRam(uint32_t addr, cons
}
int CRemote::WriteFlash(uint32_t addr, const uint32_t len, const uint8_t *wr,
- unsigned int protocol, lc_callback cb, void *arg, uint32_t cb_stage)
+ unsigned int protocol, lc_callback cb, void *cb_arg, uint32_t cb_stage)
{
uint32_t cb_count = 0;
const unsigned int max_chunk_len =
@@ -606,7 +613,7 @@ int CRemote::WriteFlash(uint32_t addr, c
if (cb) {
cb(cb_stage, cb_count++, bytes_written, len,
- LC_CB_COUNTER_TYPE_BYTES, arg);
+ LC_CB_COUNTER_TYPE_BYTES, cb_arg, NULL);
}
} while (addr < end);
@@ -765,7 +772,7 @@ int CRemote::SetTime(const TRemoteInfo &
if (cb)
cb(cb_stage, cb_count++, 0, 2, LC_CB_COUNTER_TYPE_STEPS,
- cb_arg);
+ cb_arg, NULL);
if (ri.architecture < 8) {
uint8_t tsv[8];
@@ -779,7 +786,7 @@ int CRemote::SetTime(const TRemoteInfo &
return err;
if (cb)
cb(cb_stage, cb_count++, 1, 3, LC_CB_COUNTER_TYPE_STEPS,
- cb_arg);
+ cb_arg, NULL);
tsv[0] = ht.second;
err = WriteMiscByte(0, 1, COMMAND_MISC_STATE, tsv);
@@ -796,7 +803,7 @@ int CRemote::SetTime(const TRemoteInfo &
return err;
if (cb)
cb(cb_stage, cb_count++, 1, 3, LC_CB_COUNTER_TYPE_STEPS,
- cb_arg);
+ cb_arg, NULL);
tsv[0] = ht.second;
if ((err = WriteMiscWord(0, 1, COMMAND_MISC_STATE, tsv)))
return err;
@@ -811,7 +818,7 @@ int CRemote::SetTime(const TRemoteInfo &
}
if (cb)
cb(cb_stage, cb_count++, 2, 3, LC_CB_COUNTER_TYPE_STEPS,
- cb_arg);
+ cb_arg, NULL);
if (err != 0) {
return err;
@@ -835,7 +842,7 @@ int CRemote::SetTime(const TRemoteInfo &
}
if (cb)
cb(cb_stage, cb_count++, 3, 3, LC_CB_COUNTER_TYPE_STEPS,
- cb_arg);
+ cb_arg, NULL);
return err;
}
@@ -953,7 +960,7 @@ int CRemote::LearnIR(uint32_t *freq, uin
static const uint8_t stop_ir_learn[64] = { COMMAND_STOP_IRCAP };
if (cb) {
- cb(cb_stage, 0, 0, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(cb_stage, 0, 0, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
}
if (HID_WriteReport(start_ir_learn) != 0) {
@@ -1039,7 +1046,7 @@ int CRemote::LearnIR(uint32_t *freq, uin
} while ((rsp[0] & COMMAND_MASK) != RESPONSE_DONE);
if (cb && !err) {
- cb(cb_stage, 1, 1, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(cb_stage, 1, 1, 1, LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
}
return err;
Index: libconcord/remote_z.cpp
===================================================================
RCS file: /cvsroot/concordance/concordance/libconcord/remote_z.cpp,v
retrieving revision 1.25.2.16
diff -u -p -r1.25.2.16 remote_z.cpp
--- libconcord/remote_z.cpp 4 Jun 2012 07:09:49 -0000 1.25.2.16
+++ libconcord/remote_z.cpp 4 Jan 2013 03:48:45 -0000
@@ -374,7 +374,7 @@ int CRemoteZ_USBNET::TCPSendAndCheck(uin
}
int CRemoteZ_USBNET::UpdateConfig(const uint32_t len, const uint8_t *wr,
- lc_callback cb, void *arg, uint32_t cb_stage)
+ lc_callback cb, void *cb_arg, uint32_t cb_stage)
{
int err = 0;
int cb_count = 0;
@@ -383,7 +383,7 @@ int CRemoteZ_USBNET::UpdateConfig(const
uint8_t status;
cb(LC_CB_STAGE_INITIALIZE_UPDATE, cb_count++, 0, 2,
- LC_CB_COUNTER_TYPE_STEPS, arg);
+ LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
/* ACK it with a command to start an update */
debug("START_UPDATE");
@@ -395,7 +395,7 @@ int CRemoteZ_USBNET::UpdateConfig(const
}
cb(LC_CB_STAGE_INITIALIZE_UPDATE, cb_count++, 1, 2,
- LC_CB_COUNTER_TYPE_STEPS, arg);
+ LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
/* write update-header */
debug("UPDATE_HEADER");
@@ -412,7 +412,7 @@ int CRemoteZ_USBNET::UpdateConfig(const
}
cb(LC_CB_STAGE_INITIALIZE_UPDATE, cb_count++, 2, 2,
- LC_CB_COUNTER_TYPE_STEPS, arg);
+ LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
cb_count = 0;
/* write data */
@@ -452,14 +452,14 @@ int CRemoteZ_USBNET::UpdateConfig(const
if (cb) {
cb(LC_CB_STAGE_WRITE_CONFIG, cb_count++,
(int)(wr_ptr - wr), len,
- LC_CB_COUNTER_TYPE_BYTES, arg);
+ LC_CB_COUNTER_TYPE_BYTES, cb_arg, NULL);
}
}
/* write update-done */
cb_count = 0;
cb(LC_CB_STAGE_FINALIZE_UPDATE, cb_count++, 0, 3,
- LC_CB_COUNTER_TYPE_STEPS, arg);
+ LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
debug("UPDATE_DATA_DONE");
cmd[0] = 0x01; // 1 parameter
@@ -470,7 +470,7 @@ int CRemoteZ_USBNET::UpdateConfig(const
}
cb(LC_CB_STAGE_FINALIZE_UPDATE, cb_count++, 1, 3,
- LC_CB_COUNTER_TYPE_STEPS, arg);
+ LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
/* send get-cheksum */
debug("GET_CHECKSUM");
@@ -485,7 +485,7 @@ int CRemoteZ_USBNET::UpdateConfig(const
}
cb(LC_CB_STAGE_FINALIZE_UPDATE, cb_count++, 2, 3,
- LC_CB_COUNTER_TYPE_STEPS, arg);
+ LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
/* send finish-update */
debug("FINISH_UPDATE");
@@ -499,7 +499,7 @@ int CRemoteZ_USBNET::UpdateConfig(const
}
cb(LC_CB_STAGE_FINALIZE_UPDATE, cb_count++, 3, 3,
- LC_CB_COUNTER_TYPE_STEPS, arg);
+ LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
return 0;
}
@@ -652,7 +652,7 @@ int CRemoteZ_USBNET::ReadRegion(uint8_t
if (cb) {
cb(cb_stage, cb_count++, rgn_len - data_to_read,
- rgn_len, LC_CB_COUNTER_TYPE_BYTES, cb_arg);
+ rgn_len, LC_CB_COUNTER_TYPE_BYTES, cb_arg,
NULL);
}
}
@@ -723,7 +723,7 @@ int CRemoteZ_Base::GetIdentity(TRemoteIn
}
if (cb) {
- cb(cb_stage, 0, 1, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg);
+ cb(cb_stage, 0, 1, 2, LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
}
CRemoteZ_Base::TParamList pl;
@@ -768,7 +768,7 @@ int CRemoteZ_Base::GetIdentity(TRemoteIn
if (cb) {
cb(LC_CB_STAGE_GET_IDENTITY, 1, 2, 2, LC_CB_COUNTER_TYPE_STEPS,
- cb_arg);
+ cb_arg, NULL);
}
ParseParams(len, rsp, pl);
@@ -1084,13 +1084,13 @@ int CRemoteZ_HID::TCPSendAndCheck(uint8_
}
int CRemoteZ_HID::UpdateConfig(const uint32_t len, const uint8_t *wr,
- lc_callback cb, void *arg, uint32_t cb_stage)
+ lc_callback cb, void *cb_arg, uint32_t cb_stage)
{
int err = 0;
int cb_count = 0;
cb(LC_CB_STAGE_INITIALIZE_UPDATE, cb_count++, 0, 4,
- LC_CB_COUNTER_TYPE_STEPS, arg);
+ LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
/* Start a TCP transfer */
if ((err = Write(TYPE_REQUEST, COMMAND_INITIATE_UPDATE_TCP_CHANNEL))) {
debug("Failed to write to remote");
@@ -1112,7 +1112,7 @@ int CRemoteZ_HID::UpdateConfig(const uin
return LC_ERROR;
}
cb(LC_CB_STAGE_INITIALIZE_UPDATE, cb_count++, 1, 4,
- LC_CB_COUNTER_TYPE_STEPS, arg);
+ LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
/* Look for a SYN packet */
debug("Looking for syn");
@@ -1126,7 +1126,7 @@ int CRemoteZ_HID::UpdateConfig(const uin
return LC_ERROR;
}
cb(LC_CB_STAGE_INITIALIZE_UPDATE, cb_count++, 2, 4,
- LC_CB_COUNTER_TYPE_STEPS, arg);
+ LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
/* ACK it with a command to start an update */
debug("START_UPDATE");
@@ -1148,7 +1148,7 @@ int CRemoteZ_HID::UpdateConfig(const uin
return LC_ERROR;
}
cb(LC_CB_STAGE_INITIALIZE_UPDATE, cb_count++, 3, 4,
- LC_CB_COUNTER_TYPE_STEPS, arg);
+ LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
/* write update-header */
debug("UPDATE_HEADER");
@@ -1162,7 +1162,7 @@ int CRemoteZ_HID::UpdateConfig(const uin
return err;
}
cb(LC_CB_STAGE_INITIALIZE_UPDATE, cb_count++, 4, 4,
- LC_CB_COUNTER_TYPE_STEPS, arg);
+ LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
cb_count = 0;
/* write data */
@@ -1190,20 +1190,20 @@ int CRemoteZ_HID::UpdateConfig(const uin
if (cb) {
cb(LC_CB_STAGE_WRITE_CONFIG, cb_count++,
(int)(wr_ptr - wr), len,
- LC_CB_COUNTER_TYPE_BYTES, arg);
+ LC_CB_COUNTER_TYPE_BYTES, cb_arg, NULL);
}
}
/* write update-done */
cb_count = 0;
cb(LC_CB_STAGE_FINALIZE_UPDATE, cb_count++, 0, 6,
- LC_CB_COUNTER_TYPE_STEPS, arg);
+ LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
debug("UPDATE_DATA_DONE");
if ((err = TCPSendAndCheck(COMMAND_WRITE_UPDATE_DATA_DONE))) {
return err;
}
cb(LC_CB_STAGE_FINALIZE_UPDATE, cb_count++, 1, 6,
- LC_CB_COUNTER_TYPE_STEPS, arg);
+ LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
/* Funky ACK exchange - part 1 */
debug("FUNKY-ACK");
@@ -1229,7 +1229,7 @@ int CRemoteZ_HID::UpdateConfig(const uin
return LC_ERROR_READ;
}
cb(LC_CB_STAGE_FINALIZE_UPDATE, cb_count++, 2, 6,
- LC_CB_COUNTER_TYPE_STEPS, arg);
+ LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
/* send get-cheksum */
debug("GET_CHECKSUM");
@@ -1240,7 +1240,7 @@ int CRemoteZ_HID::UpdateConfig(const uin
return err;
}
cb(LC_CB_STAGE_FINALIZE_UPDATE, cb_count++, 3, 6,
- LC_CB_COUNTER_TYPE_STEPS, arg);
+ LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
/* send finish-update */
debug("FINISH_UPDATE");
@@ -1255,7 +1255,7 @@ int CRemoteZ_HID::UpdateConfig(const uin
return err;
}
cb(LC_CB_STAGE_FINALIZE_UPDATE, cb_count++, 4, 6,
- LC_CB_COUNTER_TYPE_STEPS, arg);
+ LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
/* Funky ACK exchange */
debug("FUNKY-ACK");
@@ -1287,7 +1287,7 @@ int CRemoteZ_HID::UpdateConfig(const uin
return LC_ERROR;
}
cb(LC_CB_STAGE_FINALIZE_UPDATE, cb_count++, 5, 6,
- LC_CB_COUNTER_TYPE_STEPS, arg);
+ LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
/* FIN-ACK */
debug("FIN-ACK");
@@ -1312,7 +1312,7 @@ int CRemoteZ_HID::UpdateConfig(const uin
return LC_ERROR_WRITE;
}
cb(LC_CB_STAGE_FINALIZE_UPDATE, cb_count++, 6, 6,
- LC_CB_COUNTER_TYPE_STEPS, arg);
+ LC_CB_COUNTER_TYPE_STEPS, cb_arg, NULL);
/*
* Official traces seem to show a final ack to the above ack, but for us
Index: libconcord/bindings/python/libconcord.py
===================================================================
RCS file:
/cvsroot/concordance/concordance/libconcord/bindings/python/libconcord.py,v
retrieving revision 1.9.2.4
diff -u -p -r1.9.2.4 libconcord.py
--- libconcord/bindings/python/libconcord.py 22 Oct 2012 00:40:43 -0000
1.9.2.4
+++ libconcord/bindings/python/libconcord.py 4 Jan 2013 03:48:45 -0000
@@ -46,9 +46,9 @@ else:
# Public libconcord API: Custom types
# typedef void (*lc_callback)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t,
-# void*);
+# void*, const uint32_t*);
callback_type = CFUNCTYPE(None, c_uint, c_uint, c_uint, c_uint, c_uint, \
- py_object)
+ py_object, POINTER(c_uint))
# Public libconcord API: Error codes
------------------------------------------------------------------------------
Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and
much more. Get web development skills now with LearnDevNow -
350+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122812
_______________________________________________
concordance-devel mailing list
concordance-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/concordance-devel