mirror of
https://github.com/freebip/BipEmulator.git
synced 2026-10-28 22:36:05 +03:00
81 lines
4.5 KiB
Markdown
81 lines
4.5 KiB
Markdown
# Bip Emulator
|
|
|
|
Эмулятор окружения BipOS для часов Amazfit Bip
|
|
|
|
## Назначение
|
|
|
|
Написание и отладка приложений для часов Amazfit Bip под управлением мода BipOS (0.5.X)
|
|
в среде Microsoft Visual Studio 2019
|
|
|
|

|
|
|
|
## Описание
|
|
|
|
Эмулятор состоит из двух модулей: Host и Proxy.
|
|
Proxy обрабатывает вызовы функций библиотеки Libbip поступающие от программы, работа которой
|
|
происходит в эмуляторе. Часть этих вызовов модуль Proxy обрабатывает сам, часть перенаправляет
|
|
модулю Host.
|
|
На модуль Host возложены более высокоуровневые задачи:
|
|
* Обработка вызовов графических функций и отображение результата их работы на пользовательском интерфейсе.
|
|
* Обработка ввода команд пользователя, специфичных для эмулируемого устройства.
|
|
* Эмуляция специфичных данных эмулируемого устройства (Давление, Геолокационные координаты и пр.)
|
|
* Отображение отладочных данных программы
|
|
|
|
## Изображения
|
|
|
|
|
|

|
|
|
|

|
|
|
|
|
|
## Использование
|
|
|
|
* Добавьте исходный код в 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)
|
|
|
|

|
|
|
|
## Примечание
|
|
|
|
У проекта WIP статус. Обработка части функций библиотеки Libbip не реализована.
|
|
|
|
|