Index: dialin/protocols/CAN.py =================================================================== diff -u -racd09d02879e8add4cf7f694f5db8e423a76c341 -r440d8d8bcd4b1d8737a43292262e61476a155683 --- dialin/protocols/CAN.py (.../CAN.py) (revision acd09d02879e8add4cf7f694f5db8e423a76c341) +++ dialin/protocols/CAN.py (.../CAN.py) (revision 440d8d8bcd4b1d8737a43292262e61476a155683) @@ -656,10 +656,11 @@ if dialin_ch_id in self.sync_response_dictionary.keys() and \ dialin_msg_id in self.sync_response_dictionary[channel_id].keys(): - self.thread_pool_executor.submit( - self.sync_response_dictionary[dialin_ch_id][dialin_msg_id], - complete_dialin_message - ) + for function_id in self.sync_response_dictionary[dialin_ch_id][dialin_msg_id]: + self.thread_pool_executor.submit( + self.sync_response_dictionary[dialin_ch_id][dialin_msg_id][function_id], + complete_dialin_message + ) else: self.logger.critical("Invalid message: {}\n".format(self.messages)) @@ -693,14 +694,18 @@ @param message_id: Diality request ID in message @param function: function reference """ - - # if the channel_id exist, we just update the dictionary for the channel_id + # function_id is a UID for each callback per channel,msg pair. + function_id = id(function) + # if the channel_id exist, we update the dictionary for the channel_id if channel_id in self.sync_response_dictionary.keys(): - self.sync_response_dictionary[channel_id].update({message_id: function}) + if message_id in self.sync_response_dictionary[channel_id].keys(): + self.sync_response_dictionary[channel_id][message_id].update({function_id: function}) + else: + self.sync_response_dictionary[channel_id].update( {message_id: {function_id: function}}) - # otherwise, we need to create the dictionary for the channel_id + # otherwise, we need to create the dictionary for the channel_id, msg_id pair else: - self.sync_response_dictionary[channel_id] = {message_id: function} + self.sync_response_dictionary[channel_id] = {message_id: {function_id: function}} def register_received_all_ui_publication_function(self, function_ptr: Callable): """