def _extract_matrix_info(info_data, config_c): """Populate the matrix information. """ row_pins = config_c.get('MATRIX_ROW_PINS', '').replace('{', '').replace('}', '').strip() col_pins = config_c.get('MATRIX_COL_PINS', '').replace('{', '').replace('}', '').strip() direct_pins = config_c.get('DIRECT_PINS', '').replace(' ', '')[1:-1] if 'MATRIX_ROWS' in config_c and 'MATRIX_COLS' in config_c: if 'matrix_size' in info_data: _log_warning(info_data, 'Matrix size is specified in both info.json and config.h, the config.h values win.') info_data['matrix_size'] = { 'cols': compute(config_c.get('MATRIX_COLS', '0')), 'rows': compute(config_c.get('MATRIX_ROWS', '0')), } if row_pins and col_pins: if 'matrix_pins' in info_data: _log_warning(info_data, 'Matrix pins are specified in both info.json and config.h, the config.h values win.') info_data['matrix_pins'] = { 'cols': _extract_pins(col_pins), 'rows': _extract_pins(row_pins), } if direct_pins: if 'matrix_pins' in info_data: _log_warning(info_data, 'Direct pins are specified in both info.json and config.h, the config.h values win.') info_data['matrix_pins']['direct'] = _extract_direct_matrix(info_data, direct_pins) return info_data
def _extract_matrix_info(info_data, config_c): """Populate the matrix information. """ row_pins = config_c.get('MATRIX_ROW_PINS', '').replace('{', '').replace('}', '').strip() col_pins = config_c.get('MATRIX_COL_PINS', '').replace('{', '').replace('}', '').strip() unused_pin_text = config_c.get('UNUSED_PINS') unused_pins = unused_pin_text.replace('{', '').replace('}', '').strip() if isinstance(unused_pin_text, str) else None direct_pins = config_c.get('DIRECT_PINS', '').replace(' ', '')[1:-1] info_snippet = {} if 'MATRIX_ROWS' in config_c and 'MATRIX_COLS' in config_c: if 'matrix_size' in info_data: _log_warning(info_data, 'Matrix size is specified in both info.json and config.h, the config.h values win.') info_data['matrix_size'] = { 'cols': compute(config_c.get('MATRIX_COLS', '0')), 'rows': compute(config_c.get('MATRIX_ROWS', '0')), } if row_pins and col_pins: if 'matrix_pins' in info_data and 'cols' in info_data['matrix_pins'] and 'rows' in info_data['matrix_pins']: _log_warning(info_data, 'Matrix pins are specified in both info.json and config.h, the config.h values win.') info_snippet['cols'] = _extract_pins(col_pins) info_snippet['rows'] = _extract_pins(row_pins) if direct_pins: if 'matrix_pins' in info_data and 'direct' in info_data['matrix_pins']: _log_warning(info_data, 'Direct pins are specified in both info.json and config.h, the config.h values win.') info_snippet['direct'] = _extract_direct_matrix(direct_pins) if unused_pins: if 'matrix_pins' not in info_data: info_data['matrix_pins'] = {} info_snippet['unused'] = _extract_pins(unused_pins) if config_c.get('CUSTOM_MATRIX', 'no') != 'no': if 'matrix_pins' in info_data and 'custom' in info_data['matrix_pins']: _log_warning(info_data, 'Custom Matrix is specified in both info.json and config.h, the config.h values win.') info_snippet['custom'] = True if config_c['CUSTOM_MATRIX'] == 'lite': info_snippet['custom_lite'] = True if info_snippet: info_data['matrix_pins'] = info_snippet return info_data
def _extract_config_h(info_data): """Pull some keyboard information from existing rules.mk files """ config_c = config_h(info_data['keyboard_folder']) row_pins = config_c.get('MATRIX_ROW_PINS', '').replace('{', '').replace('}', '').strip() col_pins = config_c.get('MATRIX_COL_PINS', '').replace('{', '').replace('}', '').strip() direct_pins = config_c.get('DIRECT_PINS', '').replace(' ', '')[1:-1] info_data['diode_direction'] = config_c.get('DIODE_DIRECTION') info_data['matrix_size'] = { 'rows': compute(config_c.get('MATRIX_ROWS', '0')), 'cols': compute(config_c.get('MATRIX_COLS', '0')), } info_data['matrix_pins'] = {} if row_pins: info_data['matrix_pins']['rows'] = row_pins.split(',') if col_pins: info_data['matrix_pins']['cols'] = col_pins.split(',') if direct_pins: direct_pin_array = [] for row in direct_pins.split('},{'): if row.startswith('{'): row = row[1:] if row.endswith('}'): row = row[:-1] direct_pin_array.append([]) for pin in row.split(','): if pin == 'NO_PIN': pin = None direct_pin_array[-1].append(pin) info_data['matrix_pins']['direct'] = direct_pin_array info_data['usb'] = { 'vid': config_c.get('VENDOR_ID'), 'pid': config_c.get('PRODUCT_ID'), 'device_ver': config_c.get('DEVICE_VER'), 'manufacturer': config_c.get('MANUFACTURER'), 'product': config_c.get('PRODUCT'), 'description': config_c.get('DESCRIPTION'), } return info_data