def ate_success_cb(cmd, res, args): logger.debug('in ate_success_cb') if not 'OK' in res: logger.debug('invalid response') ate_error_cb(cmd, res, args) else: self._read_supported_pids()
def error_cb(cmd, msg, args): if msg == '?': #FIXME logger.debug('BRD command not supported') else: logger.debug('error in request_baudrate %s' % msg) self._port.baudrate = self.initial_baudrate self._current_baudrate = self.initial_baudrate
def _update_supported_views(self): logger.debug('in update_supported_views') for views in (self.views, self.os_views): for view in views: if self.app.device: if view.command.command in self.app.device.supported_commands: view.supported = True if view in self.os_views or view.command.command == '0101': view.active = True else: view.supported = False else: view.supported = False
def _update_supported_views(self): logger.debug('in update_supported_views') for views in (self.views, self.os_views): for view in views: if self.app.device: if view.command.command in self.app.device.supported_commands: view.supported=True if view in self.os_views or view.command.command == '0101': view.active=True else: view.supported=False else: view.supported=False
def _port_io_watch_cb(self, fd, condition, data=None): logger.debug('in _port_io_watch_cb') if condition & gobject.IO_HUP: logger.debug('received HUP signal') self._sent_command = None self._ret_cb = None self._err_cb = None self._cb_args = None self.close() return False elif condition & gobject.IO_ERR: logger.debug('received ERR signal') self._sent_command = None self._ret_cb = None self._err_cb = None self._cb_args = None self.close() return False elif condition & gobject.IO_IN: try: result = self._read_result() self._parse_result(result) except OBDPortError, e: logger.debug('CONDITION = IO_IN but reading times out. Error: %s' % e[0]) finally:
def _port_io_watch_cb(self, fd, condition, data=None): logger.debug('in _port_io_watch_cb') if condition & gobject.IO_HUP: logger.debug('received HUP signal') self._sent_command = None self._ret_cb = None self._err_cb = None self._cb_args = None self.close() return False elif condition & gobject.IO_ERR: logger.debug('received ERR signal') self._sent_command = None self._ret_cb = None self._err_cb = None self._cb_args = None self.close() return False elif condition & gobject.IO_IN: try: result = self._read_result() self._parse_result(result) except OBDPortError, e: logger.debug( 'CONDITION = IO_IN but reading times out. Error: %s' % e[0]) finally:
def _update_supported_views(self): logger.debug('in update_supported_views') if self.app.device.supported_freeze_frame_pids == None: logger.debug('supported_freeze_frame_pids not yet read') return for view in self.views: if self.app.device: if view.command.command in self.app.device.supported_freeze_frame_pids: view.supported=True view.active=True else: view.supported=False view.active=False else: view.supported=False view.active=False
def _update_supported_views(self): logger.debug('in update_supported_views') if self.app.device.supported_freeze_frame_pids == None: logger.debug('supported_freeze_frame_pids not yet read') return for view in self.views: if self.app.device: if view.command.command in self.app.device.supported_freeze_frame_pids: view.supported = True view.active = True else: view.supported = False view.active = False else: view.supported = False view.active = False
def _deactivate_plugin(self, plugin): instance = self._plugin_instance_from_string(plugin) istr = str(instance) if instance.action_group: self.app.ui.remove_action_group(instance.action_group) if instance.merge_id: self.app.ui.remove_ui(instance.merge_id) if hasattr(instance, 'unload'): instance.unload() del instance for item in self._active_plugins: string, i = item if string == plugin: self._active_plugins.remove(item) logger.info('Plugin deactivated: %s' % plugin) logger.debug('Plugin deactivated: %s' % istr)
def decode_result(result): logger.debug('entering decode_result') if not result: raise OBDDataError('Data Read Error', _('No data was received from the device')) ret = [] result = string.split(result, "\r") for data in result: if data: data = string.split(data) data = string.join(data, '') if data[:2] == '7F': logger.debug('we got back 7F which is an error') else: ret.append(data[4:]) return ret
def brd_support_success_cb(cmd, res, args): if 'OK' in res: logger.debug('res = OK') self._port.baudrate = baudrate logger.debug(self._stop - self._start) elif 'ELM327' in res: logger.debug('res = ELM327') self._send_command('\r', cr_success_cb, error_cb)
def atz_success_cb(cmd, res, args): logger.debug('in atz_success_cb') if not 'ELM327' in res: logger.debug('invalid response') atz_error_cb(cmd, res, None) else: logger.debug('received answer valid') self._send_command('ate0', ate_success_cb, ate_error_cb)
def _send_command(self, command, ret, err, cleanup=True, *args): logger.debug('in _send_command; command is %s' % command) if not self._port.isOpen(): raise OBDPortError('PortNotOpen', _('The port is not open')) self._cleanup_command = cleanup self._sent_command = command self._ret_cb = ret self._err_cb = err self._cb_args = args try: self._port.flushOutput() self._port.flushInput() self._port.write(command) self._port.write("\r") except serial.SerialException: self._sent_command = None self._ret_cb = None self._err_cb = None self._cb_args = None self.close() raise OBDPortError('PortIOFailed', _('Unable to write to ') + self._portname)
def _parse_result(self, data): error = False success = False res = None msg = None cmd = self._sent_command err_cb = self._err_cb ret_cb = self._ret_cb args = self._cb_args if self._sent_command: if data[0] == '>': logger.debug('command sent, received >') error = True elif data[0] == '?': logger.debug('command sent, received ?') error = True msg = '?' elif 'SEARCHING' in data: logger.info('received SEARCHING: resending command') self._send_command(cmd, ret_cb, err_cb, args) elif 'UNABLE TO CONNECT' in data: logger.debug('received UNABLE TO CONNECT') error = True msg = 'UNABLE TO CONNECT' elif 'NO DATA' in data: logger.debug('received NO DATA') error = True msg = 'NO DATA' else: res = data success = True if self._cleanup_command: self._err_cb = None self._ret_cb = None self._sent_command = None self._cb_args = None if error: err_cb(cmd, msg, args) if success: ret_cb(cmd, data, args) else: # no command sent # are we interested anyway? if '>' in data: logger.debug('received >') else: logger.debug('no command sent, received %s' % data)
def cr_return_cb(cmd, res, args): logger.debug('in cr_return_cb') if 'OK' in res: self._current_baudrate = baudrate
def ate_error_cb(cmd, msg, args): logger.debug('in atz_error_cb') raise OBDPortError('OpenPortFailed', _('ate0 command failed'))
logger.error('%s does not seem to be a valid Plugin' % instance) instance = None return None try: if instance.ui_info: instance.merge_id = self.app.ui.add_ui_from_string(instance.ui_info) self.app.ui.insert_action_group(instance.action_group, 0) except gobject.GError, msg: logger.error('building menus failed: %s' % msg) if hasattr(instance, 'load'): instance.load() logger.info('Plugin activated: %s' % plugin) logger.debug(instance) return instance def _deactivate_plugin(self, plugin): instance = self._plugin_instance_from_string(plugin) istr = str(instance) if instance.action_group: self.app.ui.remove_action_group(instance.action_group) if instance.merge_id: self.app.ui.remove_ui(instance.merge_id) if hasattr(instance, 'unload'): instance.unload() del instance
self._sent_command = None self._ret_cb = None self._err_cb = None self._cb_args = None self.close() return False elif condition & gobject.IO_IN: try: result = self._read_result() self._parse_result(result) except OBDPortError, e: logger.debug('CONDITION = IO_IN but reading times out. Error: %s' % e[0]) finally: return True else: logger.debug('received an unknown io signal') return False def _read_supported_pids(self, freeze_frame=False): #FIXME: merge these 3 in a single function def zero_success_cb(cmd, data, args): self._supported_pids += decode_pids_from_bitstring(data) if '0120' in self._supported_pids: self._send_command('0120', twenty_success_cb, error_cb) else: self._connected = True logger.info('supported pids: %s\n' % self._supported_pids) self.emit('connected', True)
self._err_cb = None self._cb_args = None self.close() return False elif condition & gobject.IO_IN: try: result = self._read_result() self._parse_result(result) except OBDPortError, e: logger.debug( 'CONDITION = IO_IN but reading times out. Error: %s' % e[0]) finally: return True else: logger.debug('received an unknown io signal') return False def _read_supported_pids(self, freeze_frame=False): #FIXME: merge these 3 in a single function def zero_success_cb(cmd, data, args): self._supported_pids += decode_pids_from_bitstring(data) if '0120' in self._supported_pids: self._send_command('0120', twenty_success_cb, error_cb) else: self._connected = True logger.info('supported pids: %s\n' % self._supported_pids) self.emit('connected', True) def twenty_success_cb(cmd, data, args): self._supported_pids += decode_pids_from_bitstring(data, 32)