mirror of
https://github.com/freebip/BipEmulator.git
synced 2025-04-22 16:00:27 +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 не реализована.
|
||
|
||
|