BipEmulator/README.md
2020-08-01 13:10:34 +10:00

81 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Bip Emulator
Эмулятор окружения BipOS для часов Amazfit Bip
## Назначение
Написание и отладка приложений для часов Amazfit Bip под управлением мода BipOS (0.5.X)
в среде Microsoft Visual Studio 2019
![alt-текст](https://github.com/freebip/BipEmulator/raw/master/images/main.png "Главное окно")
## Описание
Эмулятор состоит из двух модулей: Host и Proxy.
Proxy обрабатывает вызовы функций библиотеки Libbip поступающие от программы, работа которой
происходит в эмуляторе. Часть этих вызовов модуль Proxy обрабатывает сам, часть перенаправляет
модулю Host.
На модуль Host возложены более высокоуровневые задачи:
* Обработка вызовов графических функций и отображение результата их работы на пользовательском интерфейсе.
* Обработка ввода команд пользователя, специфичных для эмулируемого устройства.
* Эмуляция специфичных данных эмулируемого устройства (Давление, Геолокационные координаты и пр.)
* Отображение отладочных данных программы
## Изображения
![alt-текст](https://github.com/freebip/BipEmulator/raw/master/images/options.png "Настройки")
![alt-текст](https://github.com/freebip/BipEmulator/raw/master/images/debug.png "Отладочный вывод")
## Использование
* Добавьте исходный код в Proxy модуль.
* Откомпилируйте Proxy модуль.
* Запустите Host модуль.
* Завершите исполнение эмулятора
* Исправьте исходный код
* Повторять со второго пункта бесконечное кол-во раз
## Особенности использования
В данном проекте используется связка C# <-> CLI/C++.
Поэтому добавляемые исходные файлы должны иметь расширение .cpp (не относится к заголовочным файлам)
***Но*** код должен быть написан в соответствии со стандартами чистого Си т.к. в последствии его предстоит
собирать с помощью gnu toolchain под Си.
Так как при использовании расширения .cpp мы переводим исходные файлы в разряд C++, то на код накладываются
более суровые ограничения (например, в плане приведения типов по-умолчанию)
Было так:
```
void* get_ptr_temp_buf_2();
struct calend_** calend_p = get_ptr_temp_buf_2();
```
Надо так:
```
void* get_ptr_temp_buf_2();
struct calend_** calend_p = (struct calend_**) get_ptr_temp_buf_2();
```
Proxy модуль является динамически линкуемой библиотекой (.dll), от которой зависит компиляция Host модуля.
Поэтому после всех изменений принудительно откомпилируйте Proxy модуль, а после этого запускайте программу.
После первого запуска необходимо на закладке Options указать файл стандартных ресурсов и
файл шрифтов. Иначе Календарь не будет отображаться, т.к. шрифты ему взять не откуда.
## Пример
Для демонстрации возможностей эмулятора в него добавлено приложение [Календарь](https://github.com/MNVolkov/Calend)
![alt-текст](https://github.com/freebip/BipEmulator/raw/master/images/explorer.png "Исходные фаайлы календаря")
## Примечание
У проекта WIP статус. Обработка части функций библиотеки Libbip не реализована.