def encoder_data(self, data):
prev_val = self.digital_response_table[data[self.RESPONSE_TABLE_MODE]][self.RESPONSE_TABLE_PIN_DATA_VALUE]<EOL>val = int((data[self.MSB] << <NUM_LIT:7>) + data[self.LSB])<EOL>if val > <NUM_LIT>:<EOL><INDENT>val -= <NUM_LIT><EOL><DEDENT>pin = data[<NUM_LIT:0>]<EOL>with self.pymata.data_lock:<EOL><INDENT>self.digital_response_table[data[self.RESPONSE_TABLE_MODE]][self.RESPONSE_TABLE_PIN_DATA_VALUE] = val<EOL>if prev_val != val:<EOL><INDENT>callback = self.digital_response_table[pin][self.RESPONSE_TABLE_CALLBACK]<EOL>if callback is not None:<EOL><INDENT>callback([self.pymata.ENCODER, pin,<EOL>self.digital_response_table[pin][self.RESPONSE_TABLE_PIN_DATA_VALUE]])<EOL><DEDENT><DEDENT><DEDENT>
This method handles the incoming encoder data message and stores
the data in the digital response table.

:param data: Message data from Firmata

:return: No return value.