index
Заметка для разработчиков этой библиотеки
Мы используем стандартные соглашения по форматированию Python из Visual Studio Code (VScode) (autopep8). Таким образом, если вы используете эту IDE, вы сможете использовать "Format Document" и не генерировать несвязанные различия. Если вы используете другой редактор, пожалуйста, не меняйте форматирование в строках, которые вы сами не изменяли.
Сборка
```shell title="To build a new release" apt install pandoc sudo pip3 install markdown pdoc3 webencodings pyparsing twine autopep8 pylint pytest pytest-cov
```shell title="For development"
poetry install --all-extras --with dev,powermon
Линтинг
pylint meshtastic
Тестирование
Установка и запуск pytest
- Для большей подробности добавьте
-vили даже-vv
pip3 install .
pytest -vv
```shell title="Run just unit tests" pytest
or (more verbosely)
pytest -m unit
or
make
```shell title="Run just integration tests"
pytest -m int
```shell title="Run the smoke test with only one device connected serially (aka smoke1)" pytest -m smoke1
:::caution
Запуск `smoke1` сбросит значения на устройстве, включая регион на 1 (US).
Обязательно нажмите кнопку сброса на устройстве после завершения теста.
:::
```shell title="Run the smoke test with only two device connected serially (aka smoke2)"
pytest -m smoke2
```shell title="Run the wifi smoke test" pytest -m smokewifi
```shell title="Run a specific test"
pytest -msmoke1 meshtastic/tests/test_smoke1.py::test_smoke1_info
# or to run a specific smoke2 test
pytest -m smoke2 meshtastic/tests/test_smoke2.py::test_smoke2_info
# or to run a specific smoke_wifi test
pytest -m smokewifi meshtastic/tests/test_smoke_wifi.py::test_smokewifi_info
Добавьте другую классификацию тестов, такую как unit или smoke1
См. pytest.ini.
```shell title="To see the unit test code coverage" pytest --cov=meshtastic
or if want html coverage report
pytest --cov-report html --cov=meshtastic
or
make cov
```shell title="To see slowest unit tests, you can run"
pytest --durations=0
# or
make slow
Кодирование по проводу
При отправке пакетов protobuf по serial или TCP каждый пакет предваряется uint32, отправленным в сетевом порядке байтов (big endian). Верхние 16 бит должны быть 0x94C3. Нижние 16 бит — длина пакета (это кодирование оставляет место для будущей поддержки очень больших пакетов).
Реализации проверяют длину на соответствие максимальному возможному размеру пакета BLE (нашему наименьшему общему знаменателю) в 512 байт. Если указанная длина больше этого, мы предполагаем, что пакет повреждён, и начинаем заново искать разметку 0x94C3.
Пакеты, идущие к устройству, — это protobuf ToRadio, пакеты, идущие от устройства, — FromRadio. Маркер 0x94C3 можно использовать как разметку для (будущей) повторной синхронизации, если пакеты повреждены по проводу.
Примечание: разметка 0x94C3 была выбрана, чтобы избежать путаницы с набором символов 7-битного ASCII. Она также не конфликтует ни с каким допустимым кодированием UTF-8. Это немного упрощает запуск устройства с выводом обычного отладочного вывода на его serial-порт, а затем, только после получения допустимого пакета от ПК, отключение не закодированного отладочного вывода и переключение на это кодирование пакетов.