наконец-то вроде сделан поиск.
есть кривости в подскасках начата работа надо двумя таблицами (всех и выбранных переменных)
This commit is contained in:
parent
69c0bf1574
commit
42ac3eb65d
@ -2,7 +2,7 @@ import re
|
|||||||
import xml.etree.ElementTree as ET
|
import xml.etree.ElementTree as ET
|
||||||
from PySide2.QtWidgets import (
|
from PySide2.QtWidgets import (
|
||||||
QDialog, QTreeWidget, QTreeWidgetItem, QVBoxLayout, QPushButton,
|
QDialog, QTreeWidget, QTreeWidgetItem, QVBoxLayout, QPushButton,
|
||||||
QLineEdit, QLabel, QHeaderView, QCompleter, QCheckBox, QHBoxLayout
|
QLineEdit, QLabel, QHeaderView, QCompleter, QCheckBox, QHBoxLayout, QSizePolicy
|
||||||
)
|
)
|
||||||
from PySide2.QtGui import QKeySequence, QKeyEvent
|
from PySide2.QtGui import QKeySequence, QKeyEvent
|
||||||
from PySide2.QtCore import Qt, QStringListModel, QSettings
|
from PySide2.QtCore import Qt, QStringListModel, QSettings
|
||||||
@ -20,7 +20,7 @@ class VariableSelectorDialog(QDialog):
|
|||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
self.setWindowTitle("Выбор переменных")
|
self.setWindowTitle("Выбор переменных")
|
||||||
self.setAttribute(Qt.WA_DeleteOnClose)
|
self.setAttribute(Qt.WA_DeleteOnClose)
|
||||||
self.resize(600, 500)
|
self.resize(1200, 500)
|
||||||
self.selected_names = []
|
self.selected_names = []
|
||||||
self._bckspc_pressed = False # флаг подавления добавления разделителя
|
self._bckspc_pressed = False # флаг подавления добавления разделителя
|
||||||
self.table = table
|
self.table = table
|
||||||
@ -45,27 +45,55 @@ class VariableSelectorDialog(QDialog):
|
|||||||
# При изменении состояния чекбокса сохраняем его
|
# При изменении состояния чекбокса сохраняем его
|
||||||
self.autocomplete_checkbox.stateChanged.connect(self.save_checkbox_state)
|
self.autocomplete_checkbox.stateChanged.connect(self.save_checkbox_state)
|
||||||
|
|
||||||
|
# Кнопки между таблицами
|
||||||
|
self.btn_right = QPushButton(">")
|
||||||
|
self.btn_right.clicked.connect(self.on_move_right)
|
||||||
|
self.btn_left = QPushButton("<")
|
||||||
|
self.btn_left.clicked.connect(self.on_move_left)
|
||||||
|
|
||||||
# Создаем кнопки, они остаются в диалоге
|
# Создаем кнопки, они остаются в диалоге
|
||||||
self.btn_add = QPushButton("Добавить выбранные")
|
self.btn_add = QPushButton("Добавить выбранные")
|
||||||
self.btn_delete = QPushButton("Удалить выбранные")
|
self.btn_delete = QPushButton("Удалить выбранные")
|
||||||
|
|
||||||
# Создаем экземпляр вашего готового виджета
|
# Создаем экземпляр вашего готового виджета
|
||||||
self.vars_widget = selectTable.VariableSelectWidget(self)
|
self.vars_widget = selectTable.VariableSelectWidget(self)
|
||||||
|
self.selected_vars_widget = selectTable.VariableSelectWidget(self)
|
||||||
|
|
||||||
# Собираем новую, более простую компоновку
|
|
||||||
search_layout = QHBoxLayout()
|
|
||||||
search_layout.addWidget(QLabel("Поиск:"))
|
|
||||||
search_layout.addStretch()
|
|
||||||
search_layout.addWidget(self.autocomplete_checkbox)
|
|
||||||
|
|
||||||
layout = QVBoxLayout(self)
|
# --- Лэйауты ---
|
||||||
layout.addLayout(search_layout)
|
main_layout = QVBoxLayout(self) # главный вертикальный layout окна
|
||||||
layout.addWidget(self.vars_widget) # Добавляем ваш виджет целиком
|
|
||||||
|
tables_layout = QHBoxLayout() # горизонтальный layout с таблицами и кнопками
|
||||||
|
|
||||||
|
# Левая таблица
|
||||||
|
self.vars_widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
|
||||||
|
tables_layout.addWidget(self.vars_widget)
|
||||||
|
|
||||||
|
# Кнопки ">" и "<" между таблицами
|
||||||
|
middle_buttons_layout = QVBoxLayout()
|
||||||
|
middle_buttons_layout.addStretch()
|
||||||
|
middle_buttons_layout.addWidget(self.btn_right)
|
||||||
|
middle_buttons_layout.addWidget(self.btn_left)
|
||||||
|
middle_buttons_layout.addStretch()
|
||||||
|
tables_layout.addLayout(middle_buttons_layout)
|
||||||
|
|
||||||
|
# Правая таблица
|
||||||
|
self.selected_vars_widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
|
||||||
|
tables_layout.addWidget(self.selected_vars_widget)
|
||||||
|
|
||||||
|
# Добавляем горизонтальный layout с таблицами в главный вертикальный
|
||||||
|
main_layout.addLayout(tables_layout)
|
||||||
|
|
||||||
|
# Кнопки "Добавить выбранные" и "Удалить выбранные" под таблицами
|
||||||
|
buttons_layout = QVBoxLayout()
|
||||||
|
buttons_layout.addWidget(self.btn_add)
|
||||||
|
buttons_layout.addWidget(self.btn_delete)
|
||||||
|
main_layout.addLayout(buttons_layout)
|
||||||
|
|
||||||
|
# Важно, если окно — QDialog или QWidget, установи layout
|
||||||
|
self.setLayout(main_layout)
|
||||||
|
|
||||||
|
|
||||||
button_layout = QHBoxLayout()
|
|
||||||
button_layout.addWidget(self.btn_add)
|
|
||||||
button_layout.addWidget(self.btn_delete)
|
|
||||||
layout.addLayout(button_layout)
|
|
||||||
|
|
||||||
# Соединяем сигналы кнопок с методами диалога
|
# Соединяем сигналы кнопок с методами диалога
|
||||||
self.btn_add.clicked.connect(self.on_add_clicked)
|
self.btn_add.clicked.connect(self.on_add_clicked)
|
||||||
@ -75,19 +103,60 @@ class VariableSelectorDialog(QDialog):
|
|||||||
self.autocomplete_checkbox.stateChanged.connect(self.vars_widget.set_autocomplete)
|
self.autocomplete_checkbox.stateChanged.connect(self.vars_widget.set_autocomplete)
|
||||||
# Устанавливаем начальное состояние автодополнения в виджете
|
# Устанавливаем начальное состояние автодополнения в виджете
|
||||||
self.vars_widget.set_autocomplete(self.autocomplete_checkbox.isChecked())
|
self.vars_widget.set_autocomplete(self.autocomplete_checkbox.isChecked())
|
||||||
|
self.selected_vars_widget.set_autocomplete(self.autocomplete_checkbox.isChecked())
|
||||||
|
|
||||||
# --- Код в конце __init__ ---
|
# --- Код в конце __init__ ---
|
||||||
self.expanded_vars = setupVars.expand_vars(self.all_vars, self.structs, self.typedefs)
|
self.expanded_vars = setupVars.expand_vars(self.all_vars, self.structs, self.typedefs)
|
||||||
|
self.selected_vars = setupVars.filter_selected_vars(self.expanded_vars)
|
||||||
# Передаем данные в виджет
|
# Передаем данные в виджет
|
||||||
self.vars_widget.set_data(self.expanded_vars)
|
self.vars_widget.set_data(self.expanded_vars)
|
||||||
|
self.selected_vars_widget.set_data(self.selected_vars)
|
||||||
|
|
||||||
def on_add_clicked(self):
|
def on_move_right(self):
|
||||||
# 5. Получаем имена из виджета
|
# Устанавливаем show_var=True для всех выбранных переменных из ЛЕВОЙ таблицы
|
||||||
selected_items = self.vars_widget.get_selected_items()
|
selected = self.vars_widget.get_selected_var_names()
|
||||||
if not selected_items:
|
if not selected:
|
||||||
return
|
return
|
||||||
|
|
||||||
for item in selected_items:
|
def mark_selected_show_var(data):
|
||||||
|
for var in data:
|
||||||
|
if var['name'] in selected:
|
||||||
|
var['show_var'] = 'true'
|
||||||
|
if 'children' in var:
|
||||||
|
mark_selected_show_var(var['children'])
|
||||||
|
mark_selected_show_var(self.expanded_vars)
|
||||||
|
|
||||||
|
self.update_selected_vars_widget()
|
||||||
|
|
||||||
|
def on_move_left(self):
|
||||||
|
# Сбрасываем show_var=False для всех выбранных переменных из ПРАВОЙ таблицы
|
||||||
|
selected = self.selected_vars_widget.get_selected_var_names()
|
||||||
|
if not selected:
|
||||||
|
return
|
||||||
|
|
||||||
|
def mark_selected_hide_var(data):
|
||||||
|
for var in data:
|
||||||
|
if var['name'] in selected:
|
||||||
|
var['show_var'] = 'false'
|
||||||
|
if 'children' in var:
|
||||||
|
mark_selected_hide_var(var['children'])
|
||||||
|
mark_selected_hide_var(self.expanded_vars)
|
||||||
|
|
||||||
|
self.update_selected_vars_widget()
|
||||||
|
|
||||||
|
def update_selected_vars_widget(self):
|
||||||
|
self.selected_vars = setupVars.filter_selected_vars(self.expanded_vars)
|
||||||
|
self.selected_vars_widget.set_data(self.selected_vars)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def on_add_clicked(self):
|
||||||
|
# Получаем все переменные из правой таблицы (selected_vars_widget)
|
||||||
|
all_items = self.selected_vars_widget.get_all_items()
|
||||||
|
if not all_items:
|
||||||
|
return
|
||||||
|
|
||||||
|
for item in all_items:
|
||||||
name = item.text(0)
|
name = item.text(0)
|
||||||
type_str = item.text(1)
|
type_str = item.text(1)
|
||||||
|
|
||||||
@ -109,26 +178,24 @@ class VariableSelectorDialog(QDialog):
|
|||||||
self.all_vars.append(new_var)
|
self.all_vars.append(new_var)
|
||||||
self.var_map[name] = new_var
|
self.var_map[name] = new_var
|
||||||
|
|
||||||
self.accept() # Используем accept() вместо done(QDialog.Accepted)
|
self.accept()
|
||||||
|
|
||||||
|
|
||||||
def on_delete_clicked(self):
|
def on_delete_clicked(self):
|
||||||
# 5. Получаем имена из виджета
|
# Получаем все имена переменных из правой таблицы
|
||||||
selected_names = self.vars_widget.get_selected_var_names()
|
all_names = self.selected_vars_widget.get_all_var_names()
|
||||||
if not selected_names:
|
if not all_names:
|
||||||
print("nothing selected")
|
|
||||||
return
|
return
|
||||||
|
|
||||||
# Обновляем var_map и all_vars
|
for name in all_names:
|
||||||
for name in selected_names:
|
|
||||||
if name in self.var_map:
|
if name in self.var_map:
|
||||||
self.var_map[name]['show_var'] = 'false'
|
self.var_map[name]['show_var'] = 'false'
|
||||||
self.var_map[name]['enable'] = 'false'
|
self.var_map[name]['enable'] = 'false'
|
||||||
|
|
||||||
self.update_xml_vars(selected_names, 'false', 'false')
|
self.update_xml_vars(all_names, 'false', 'false')
|
||||||
self.accept()
|
self.update_selected_vars_widget()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def update_xml_vars(self, names, show, enable):
|
def update_xml_vars(self, names, show, enable):
|
||||||
"""Обновляет флаги show_var и enable в XML файле."""
|
"""Обновляет флаги show_var и enable в XML файле."""
|
||||||
if not self.xml_path:
|
if not self.xml_path:
|
||||||
@ -152,8 +219,6 @@ class VariableSelectorDialog(QDialog):
|
|||||||
def save_checkbox_state(self):
|
def save_checkbox_state(self):
|
||||||
self.settings.setValue("autocomplete_enabled", self.autocomplete_checkbox.isChecked())
|
self.settings.setValue("autocomplete_enabled", self.autocomplete_checkbox.isChecked())
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def keyPressEvent(self, event):
|
def keyPressEvent(self, event):
|
||||||
if event.key() == Qt.Key_Delete:
|
if event.key() == Qt.Key_Delete:
|
||||||
self.delete_selected_vars()
|
self.delete_selected_vars()
|
||||||
|
@ -10,20 +10,26 @@ from PySide2.QtCore import Qt, QStringListModel
|
|||||||
def split_path(path):
|
def split_path(path):
|
||||||
"""
|
"""
|
||||||
Разбивает путь на компоненты:
|
Разбивает путь на компоненты:
|
||||||
- 'foo[2].bar[1]->baz' → ['foo', [2]', 'bar', '[1]' 'baz']
|
- 'foo[2].bar[1]->baz' → ['foo', '[2]', 'bar', '[1]', 'baz']
|
||||||
|
Если видит '-' в конце строки (без '>' после) — обрезает этот '-'
|
||||||
"""
|
"""
|
||||||
tokens = []
|
tokens = []
|
||||||
token = ''
|
token = ''
|
||||||
i = 0
|
i = 0
|
||||||
while i < len(path):
|
length = len(path)
|
||||||
|
while i < length:
|
||||||
c = path[i]
|
c = path[i]
|
||||||
# Разделители: '->' и '.'
|
# Разделители: '->' и '.'
|
||||||
if c == '-' and path[i:i+2] == '->':
|
if c == '-' and i + 1 < length and path[i:i+2] == '->':
|
||||||
if token:
|
if token:
|
||||||
tokens.append(token)
|
tokens.append(token)
|
||||||
token = ''
|
token = ''
|
||||||
i += 2
|
i += 2
|
||||||
continue
|
continue
|
||||||
|
elif c == '-' and i == length - 1:
|
||||||
|
# '-' на конце строки без '>' после — просто пропускаем его
|
||||||
|
i += 1
|
||||||
|
continue
|
||||||
elif c == '.':
|
elif c == '.':
|
||||||
if token:
|
if token:
|
||||||
tokens.append(token)
|
tokens.append(token)
|
||||||
@ -31,16 +37,14 @@ def split_path(path):
|
|||||||
i += 1
|
i += 1
|
||||||
continue
|
continue
|
||||||
elif c == '[':
|
elif c == '[':
|
||||||
# Заканчиваем текущий токен, если есть
|
|
||||||
if token:
|
if token:
|
||||||
tokens.append(token)
|
tokens.append(token)
|
||||||
token = ''
|
token = ''
|
||||||
# Собираем индекс [N]
|
|
||||||
idx = ''
|
idx = ''
|
||||||
while i < len(path) and path[i] != ']':
|
while i < length and path[i] != ']':
|
||||||
idx += path[i]
|
idx += path[i]
|
||||||
i += 1
|
i += 1
|
||||||
if i < len(path) and path[i] == ']':
|
if i < length and path[i] == ']':
|
||||||
idx += ']'
|
idx += ']'
|
||||||
i += 1
|
i += 1
|
||||||
tokens.append(idx)
|
tokens.append(idx)
|
||||||
@ -52,10 +56,6 @@ def split_path(path):
|
|||||||
tokens.append(token)
|
tokens.append(token)
|
||||||
return tokens
|
return tokens
|
||||||
|
|
||||||
def hide_all(item):
|
|
||||||
item.setHidden(True)
|
|
||||||
for i in range(item.childCount()):
|
|
||||||
hide_all(item.child(i))
|
|
||||||
|
|
||||||
# Функция парсит имя с индексами в (базовое_имя, список_индексов)
|
# Функция парсит имя с индексами в (базовое_имя, список_индексов)
|
||||||
def parse_name_with_indices(name):
|
def parse_name_with_indices(name):
|
||||||
@ -89,20 +89,18 @@ def show_matching_path(item, path_parts, level=0):
|
|||||||
node_name = item.text(0).lower()
|
node_name = item.text(0).lower()
|
||||||
node_parts = split_path(node_name)
|
node_parts = split_path(node_name)
|
||||||
|
|
||||||
|
if 'project' in node_name:
|
||||||
|
a = 1
|
||||||
|
|
||||||
if level >= len(path_parts):
|
if level >= len(path_parts):
|
||||||
# Путь полностью пройден — показываем только этот узел (без раскрытия всех детей)
|
# Путь полностью пройден — показываем только этот узел (без раскрытия всех детей)
|
||||||
item.setHidden(False)
|
item.setHidden(False)
|
||||||
# Показываем детей, которые тоже соответствуют, но на этом уровне их нет,
|
|
||||||
# поэтому детей не раскрываем
|
|
||||||
for i in range(item.childCount()):
|
|
||||||
hide_all(item.child(i))
|
|
||||||
item.setExpanded(False)
|
item.setExpanded(False)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
if level >= len(node_parts):
|
if level >= len(node_parts):
|
||||||
# Уровень поиска больше длины пути узла — скрываем
|
# Уровень поиска больше длины пути узла — скрываем
|
||||||
item.setHidden(True)
|
item.setHidden(False)
|
||||||
return False
|
|
||||||
|
|
||||||
search_part = path_parts[level]
|
search_part = path_parts[level]
|
||||||
node_part = node_parts[level]
|
node_part = node_parts[level]
|
||||||
@ -115,16 +113,18 @@ def show_matching_path(item, path_parts, level=0):
|
|||||||
child = item.child(i)
|
child = item.child(i)
|
||||||
if show_matching_path(child, path_parts, level + 1):
|
if show_matching_path(child, path_parts, level + 1):
|
||||||
matched_any = True
|
matched_any = True
|
||||||
else:
|
|
||||||
hide_all(child)
|
|
||||||
item.setExpanded(matched_any)
|
item.setExpanded(matched_any)
|
||||||
return matched_any or item.childCount() == 0
|
return matched_any or item.childCount() == 0
|
||||||
|
|
||||||
elif node_part.startswith(search_part):
|
elif node_part.startswith(search_part):
|
||||||
# Неполное совпадение — показываем только этот узел, детей скрываем, не раскрываем
|
# Неполное совпадение — показываем только этот узел, детей скрываем, не раскрываем
|
||||||
item.setHidden(False)
|
item.setHidden(False)
|
||||||
for i in range(item.childCount()):
|
item.setExpanded(False)
|
||||||
hide_all(item.child(i))
|
return True
|
||||||
|
|
||||||
|
elif search_part in node_part and (level == len(path_parts)-1):
|
||||||
|
# Неполное совпадение — показываем только этот узел, детей скрываем, не раскрываем
|
||||||
|
item.setHidden(False)
|
||||||
item.setExpanded(False)
|
item.setExpanded(False)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@ -135,15 +135,6 @@ def show_matching_path(item, path_parts, level=0):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class VariableSelectWidget(QWidget):
|
class VariableSelectWidget(QWidget):
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
@ -204,17 +195,6 @@ class VariableSelectWidget(QWidget):
|
|||||||
"""Возвращает имена выделенных переменных."""
|
"""Возвращает имена выделенных переменных."""
|
||||||
return [item.text(0) for item in self.tree.selectedItems() if item.text(0)]
|
return [item.text(0) for item in self.tree.selectedItems() if item.text(0)]
|
||||||
|
|
||||||
def expand_to_level(self, item, level, current_level=0):
|
|
||||||
"""
|
|
||||||
Рекурсивно раскрывает узлы до заданного уровня.
|
|
||||||
"""
|
|
||||||
if current_level < level:
|
|
||||||
item.setExpanded(True)
|
|
||||||
else:
|
|
||||||
item.setExpanded(False)
|
|
||||||
|
|
||||||
for i in range(item.childCount()):
|
|
||||||
self.expand_to_level(item.child(i), level, current_level + 1)
|
|
||||||
|
|
||||||
def populate_tree(self, vars_list=None):
|
def populate_tree(self, vars_list=None):
|
||||||
if vars_list is None:
|
if vars_list is None:
|
||||||
@ -241,6 +221,15 @@ class VariableSelectWidget(QWidget):
|
|||||||
return fullname
|
return fullname
|
||||||
|
|
||||||
|
|
||||||
|
def get_selected_vars(self):
|
||||||
|
selected = self.tree.selectedItems()
|
||||||
|
result = []
|
||||||
|
for item in selected:
|
||||||
|
var = item.data(0, Qt.UserRole)
|
||||||
|
if var:
|
||||||
|
result.append(var)
|
||||||
|
return result
|
||||||
|
|
||||||
def add_tree_item_recursively(self, parent, var):
|
def add_tree_item_recursively(self, parent, var):
|
||||||
"""
|
"""
|
||||||
Рекурсивно добавляет переменную и её дочерние поля в дерево.
|
Рекурсивно добавляет переменную и её дочерние поля в дерево.
|
||||||
@ -289,12 +278,9 @@ class VariableSelectWidget(QWidget):
|
|||||||
item.setHidden(False)
|
item.setHidden(False)
|
||||||
# Не сбрасываем expanded, чтобы можно было раскрывать вручную
|
# Не сбрасываем expanded, чтобы можно было раскрывать вручную
|
||||||
else:
|
else:
|
||||||
hide_all(item)
|
|
||||||
item.setHidden(True)
|
item.setHidden(True)
|
||||||
else:
|
else:
|
||||||
for i in range(self.tree.topLevelItemCount()):
|
for i in range(self.tree.topLevelItemCount()):
|
||||||
item = self.tree.topLevelItem(i)
|
|
||||||
hide_all(item)
|
|
||||||
item = self.tree.topLevelItem(i)
|
item = self.tree.topLevelItem(i)
|
||||||
show_matching_path(item, path_parts, 0)
|
show_matching_path(item, path_parts, 0)
|
||||||
|
|
||||||
@ -530,4 +516,10 @@ class VariableSelectWidget(QWidget):
|
|||||||
|
|
||||||
def set_tool(self, item, text):
|
def set_tool(self, item, text):
|
||||||
item.setToolTip(0, text)
|
item.setToolTip(0, text)
|
||||||
item.setToolTip(1, text)
|
item.setToolTip(1, text)
|
||||||
|
|
||||||
|
def get_all_items(self):
|
||||||
|
return [self.tree.topLevelItem(i) for i in range(self.tree.topLevelItemCount())]
|
||||||
|
|
||||||
|
def get_all_var_names(self):
|
||||||
|
return [self.tree.topLevelItem(i).text(0) for i in range(self.tree.topLevelItemCount())]
|
@ -405,3 +405,19 @@ def expand_vars(vars_list, structs, typedefs):
|
|||||||
|
|
||||||
return expanded
|
return expanded
|
||||||
|
|
||||||
|
def filter_selected_vars(expanded_vars):
|
||||||
|
selected_vars = []
|
||||||
|
|
||||||
|
def recurse(vars_list):
|
||||||
|
for var in vars_list:
|
||||||
|
show_var = var.get('show_var', 'false').lower()
|
||||||
|
if show_var == 'true':
|
||||||
|
selected_vars.append(var)
|
||||||
|
|
||||||
|
# Рекурсивно обходим детей, если есть
|
||||||
|
children = var.get('children')
|
||||||
|
if children:
|
||||||
|
recurse(children)
|
||||||
|
|
||||||
|
recurse(expanded_vars)
|
||||||
|
return selected_vars
|
||||||
|
198
vars.xml
198
vars.xml
@ -1,5 +1,5 @@
|
|||||||
<?xml version='1.0' encoding='utf-8'?>
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
<analysis makefile_path="Debug/makefile" proj_path="F:/Work/Projects/TMS/TMS_new_bus" structs_path="Src/DebugTools/structs.xml">
|
<analysis makefile_path="Debug/makefile" proj_path="E:/.WORK/TMS/TMS_new_bus" structs_path="Src/DebugTools/structs.xml">
|
||||||
<variables>
|
<variables>
|
||||||
<var name="ADC0finishAddr">
|
<var name="ADC0finishAddr">
|
||||||
<show_var>true</show_var>
|
<show_var>true</show_var>
|
||||||
@ -3746,7 +3746,7 @@
|
|||||||
<static>false</static>
|
<static>false</static>
|
||||||
</var>
|
</var>
|
||||||
<var name="project.cds_tk[2].read.sbus.mask_protect_tk.all">
|
<var name="project.cds_tk[2].read.sbus.mask_protect_tk.all">
|
||||||
<show_var>true</show_var>
|
<show_var>false</show_var>
|
||||||
<enable>true</enable>
|
<enable>true</enable>
|
||||||
<shortname>tk2_ackcur</shortname>
|
<shortname>tk2_ackcur</shortname>
|
||||||
<pt_type>pt_uint16</pt_type>
|
<pt_type>pt_uint16</pt_type>
|
||||||
@ -3758,7 +3758,7 @@
|
|||||||
<static>false</static>
|
<static>false</static>
|
||||||
</var>
|
</var>
|
||||||
<var name="project.cds_tk[1].plane_address">
|
<var name="project.cds_tk[1].plane_address">
|
||||||
<show_var>true</show_var>
|
<show_var>false</show_var>
|
||||||
<enable>true</enable>
|
<enable>true</enable>
|
||||||
<shortname>tk1_adr</shortname>
|
<shortname>tk1_adr</shortname>
|
||||||
<pt_type>pt_uint16</pt_type>
|
<pt_type>pt_uint16</pt_type>
|
||||||
@ -3769,6 +3769,198 @@
|
|||||||
<extern>false</extern>
|
<extern>false</extern>
|
||||||
<static>false</static>
|
<static>false</static>
|
||||||
</var>
|
</var>
|
||||||
|
<var name="ADC_sf[1][0]">
|
||||||
|
<show_var>false</show_var>
|
||||||
|
<enable>true</enable>
|
||||||
|
<shortname>ADC_sf[1][0]</shortname>
|
||||||
|
<pt_type>pt_int16</pt_type>
|
||||||
|
<iq_type>t_iq_none</iq_type>
|
||||||
|
<return_type>t_iq_none</return_type>
|
||||||
|
<type>int</type>
|
||||||
|
<file>Src/main/adc_tools.c</file>
|
||||||
|
<extern>false</extern>
|
||||||
|
<static>false</static>
|
||||||
|
</var>
|
||||||
|
<var name="ADC_sf[1][1]">
|
||||||
|
<show_var>false</show_var>
|
||||||
|
<enable>true</enable>
|
||||||
|
<shortname>ADC_sf[1][1]</shortname>
|
||||||
|
<pt_type>pt_int16</pt_type>
|
||||||
|
<iq_type>t_iq_none</iq_type>
|
||||||
|
<return_type>t_iq_none</return_type>
|
||||||
|
<type>int</type>
|
||||||
|
<file>Src/main/adc_tools.c</file>
|
||||||
|
<extern>false</extern>
|
||||||
|
<static>false</static>
|
||||||
|
</var>
|
||||||
|
<var name="ADC_sf[1][2]">
|
||||||
|
<show_var>false</show_var>
|
||||||
|
<enable>true</enable>
|
||||||
|
<shortname>ADC_sf[1][2]</shortname>
|
||||||
|
<pt_type>pt_int16</pt_type>
|
||||||
|
<iq_type>t_iq_none</iq_type>
|
||||||
|
<return_type>t_iq_none</return_type>
|
||||||
|
<type>int</type>
|
||||||
|
<file>Src/main/adc_tools.c</file>
|
||||||
|
<extern>false</extern>
|
||||||
|
<static>false</static>
|
||||||
|
</var>
|
||||||
|
<var name="ADC_sf[1][3]">
|
||||||
|
<show_var>false</show_var>
|
||||||
|
<enable>true</enable>
|
||||||
|
<shortname>ADC_sf[1][3]</shortname>
|
||||||
|
<pt_type>pt_int16</pt_type>
|
||||||
|
<iq_type>t_iq_none</iq_type>
|
||||||
|
<return_type>t_iq_none</return_type>
|
||||||
|
<type>int</type>
|
||||||
|
<file>Src/main/adc_tools.c</file>
|
||||||
|
<extern>false</extern>
|
||||||
|
<static>false</static>
|
||||||
|
</var>
|
||||||
|
<var name="ADC_sf[1][4]">
|
||||||
|
<show_var>false</show_var>
|
||||||
|
<enable>true</enable>
|
||||||
|
<shortname>ADC_sf[1][4]</shortname>
|
||||||
|
<pt_type>pt_int16</pt_type>
|
||||||
|
<iq_type>t_iq_none</iq_type>
|
||||||
|
<return_type>t_iq_none</return_type>
|
||||||
|
<type>int</type>
|
||||||
|
<file>Src/main/adc_tools.c</file>
|
||||||
|
<extern>false</extern>
|
||||||
|
<static>false</static>
|
||||||
|
</var>
|
||||||
|
<var name="ADC_sf[1][5]">
|
||||||
|
<show_var>false</show_var>
|
||||||
|
<enable>true</enable>
|
||||||
|
<shortname>ADC_sf[1][5]</shortname>
|
||||||
|
<pt_type>pt_int16</pt_type>
|
||||||
|
<iq_type>t_iq_none</iq_type>
|
||||||
|
<return_type>t_iq_none</return_type>
|
||||||
|
<type>int</type>
|
||||||
|
<file>Src/main/adc_tools.c</file>
|
||||||
|
<extern>false</extern>
|
||||||
|
<static>false</static>
|
||||||
|
</var>
|
||||||
|
<var name="ADC_sf[1][6]">
|
||||||
|
<show_var>false</show_var>
|
||||||
|
<enable>true</enable>
|
||||||
|
<shortname>ADC_sf[1][6]</shortname>
|
||||||
|
<pt_type>pt_int16</pt_type>
|
||||||
|
<iq_type>t_iq_none</iq_type>
|
||||||
|
<return_type>t_iq_none</return_type>
|
||||||
|
<type>int</type>
|
||||||
|
<file>Src/main/adc_tools.c</file>
|
||||||
|
<extern>false</extern>
|
||||||
|
<static>false</static>
|
||||||
|
</var>
|
||||||
|
<var name="ADC_sf[1][7]">
|
||||||
|
<show_var>false</show_var>
|
||||||
|
<enable>true</enable>
|
||||||
|
<shortname>ADC_sf[1][7]</shortname>
|
||||||
|
<pt_type>pt_int16</pt_type>
|
||||||
|
<iq_type>t_iq_none</iq_type>
|
||||||
|
<return_type>t_iq_none</return_type>
|
||||||
|
<type>int</type>
|
||||||
|
<file>Src/main/adc_tools.c</file>
|
||||||
|
<extern>false</extern>
|
||||||
|
<static>false</static>
|
||||||
|
</var>
|
||||||
|
<var name="ADC_sf[1][8]">
|
||||||
|
<show_var>false</show_var>
|
||||||
|
<enable>true</enable>
|
||||||
|
<shortname>ADC_sf[1][8]</shortname>
|
||||||
|
<pt_type>pt_int16</pt_type>
|
||||||
|
<iq_type>t_iq_none</iq_type>
|
||||||
|
<return_type>t_iq_none</return_type>
|
||||||
|
<type>int</type>
|
||||||
|
<file>Src/main/adc_tools.c</file>
|
||||||
|
<extern>false</extern>
|
||||||
|
<static>false</static>
|
||||||
|
</var>
|
||||||
|
<var name="ADC_sf[1][9]">
|
||||||
|
<show_var>false</show_var>
|
||||||
|
<enable>true</enable>
|
||||||
|
<shortname>ADC_sf[1][9]</shortname>
|
||||||
|
<pt_type>pt_int16</pt_type>
|
||||||
|
<iq_type>t_iq_none</iq_type>
|
||||||
|
<return_type>t_iq_none</return_type>
|
||||||
|
<type>int</type>
|
||||||
|
<file>Src/main/adc_tools.c</file>
|
||||||
|
<extern>false</extern>
|
||||||
|
<static>false</static>
|
||||||
|
</var>
|
||||||
|
<var name="ADC_sf[1][10]">
|
||||||
|
<show_var>false</show_var>
|
||||||
|
<enable>true</enable>
|
||||||
|
<shortname>ADC_sf[1][10]</shortname>
|
||||||
|
<pt_type>pt_int16</pt_type>
|
||||||
|
<iq_type>t_iq_none</iq_type>
|
||||||
|
<return_type>t_iq_none</return_type>
|
||||||
|
<type>int</type>
|
||||||
|
<file>Src/main/adc_tools.c</file>
|
||||||
|
<extern>false</extern>
|
||||||
|
<static>false</static>
|
||||||
|
</var>
|
||||||
|
<var name="ADC_sf[1][11]">
|
||||||
|
<show_var>false</show_var>
|
||||||
|
<enable>true</enable>
|
||||||
|
<shortname>ADC_sf[1][11]</shortname>
|
||||||
|
<pt_type>pt_int16</pt_type>
|
||||||
|
<iq_type>t_iq_none</iq_type>
|
||||||
|
<return_type>t_iq_none</return_type>
|
||||||
|
<type>int</type>
|
||||||
|
<file>Src/main/adc_tools.c</file>
|
||||||
|
<extern>false</extern>
|
||||||
|
<static>false</static>
|
||||||
|
</var>
|
||||||
|
<var name="ADC_sf[1][12]">
|
||||||
|
<show_var>false</show_var>
|
||||||
|
<enable>true</enable>
|
||||||
|
<shortname>ADC_sf[1][12]</shortname>
|
||||||
|
<pt_type>pt_int16</pt_type>
|
||||||
|
<iq_type>t_iq_none</iq_type>
|
||||||
|
<return_type>t_iq_none</return_type>
|
||||||
|
<type>int</type>
|
||||||
|
<file>Src/main/adc_tools.c</file>
|
||||||
|
<extern>false</extern>
|
||||||
|
<static>false</static>
|
||||||
|
</var>
|
||||||
|
<var name="ADC_sf[1][13]">
|
||||||
|
<show_var>false</show_var>
|
||||||
|
<enable>true</enable>
|
||||||
|
<shortname>ADC_sf[1][13]</shortname>
|
||||||
|
<pt_type>pt_int16</pt_type>
|
||||||
|
<iq_type>t_iq_none</iq_type>
|
||||||
|
<return_type>t_iq_none</return_type>
|
||||||
|
<type>int</type>
|
||||||
|
<file>Src/main/adc_tools.c</file>
|
||||||
|
<extern>false</extern>
|
||||||
|
<static>false</static>
|
||||||
|
</var>
|
||||||
|
<var name="ADC_sf[1][14]">
|
||||||
|
<show_var>false</show_var>
|
||||||
|
<enable>true</enable>
|
||||||
|
<shortname>ADC_sf[1][14]</shortname>
|
||||||
|
<pt_type>pt_int16</pt_type>
|
||||||
|
<iq_type>t_iq_none</iq_type>
|
||||||
|
<return_type>t_iq_none</return_type>
|
||||||
|
<type>int</type>
|
||||||
|
<file>Src/main/adc_tools.c</file>
|
||||||
|
<extern>false</extern>
|
||||||
|
<static>false</static>
|
||||||
|
</var>
|
||||||
|
<var name="ADC_sf[1][15]">
|
||||||
|
<show_var>false</show_var>
|
||||||
|
<enable>true</enable>
|
||||||
|
<shortname>ADC_sf[1][15]</shortname>
|
||||||
|
<pt_type>pt_int16</pt_type>
|
||||||
|
<iq_type>t_iq_none</iq_type>
|
||||||
|
<return_type>t_iq_none</return_type>
|
||||||
|
<type>int</type>
|
||||||
|
<file>Src/main/adc_tools.c</file>
|
||||||
|
<extern>false</extern>
|
||||||
|
<static>false</static>
|
||||||
|
</var>
|
||||||
</variables>
|
</variables>
|
||||||
<includes>
|
<includes>
|
||||||
<file>Src/main/vector.h</file>
|
<file>Src/main/vector.h</file>
|
||||||
|
Loading…
Reference in New Issue
Block a user