Инструкция Bip | Разработка приложений для BipOS ( SDK )

MNVolkov

Разработчик
Команда форума
Сообщения
340
Реакции
2,442
Баллы
463
Ваше "умное" устройство
Amazfit Bip
  • Первое сообщение
  • #1
Разработка приложений для BipOS
Software Development Kit (SDK)
MNVolkov BipOS

Вводная часть
Начиная с версии 0.5 MNVolkov MOD полностью переработан код запуска приложений. Теперь каждое приложение - это отдельный файл, хранящийся в ресурсах. Формат исполняемых файлов Arm-elf (или просто "эльф"). Мод получил новое название BipOS. При запуске меню мода происходит сканирование ресурсов на наличие приложений. Для каждой прошивки разное количество ресурсов, а приложения всегда размещаются в конце. Поэтому загрузчик ищет ресурсы по сигнатуре Elf начиная с 930 ресурса. Из найденных приложений формируется список, который помещается в меню "приложения".
Для того чтобы повысить общее удобство и снизить количество несовместимостей разработана система "прошивконезависимых" приложений. Так один и тот же Калькулятор будет работать как на латин 1.1.5.12, так и на нелатин 1.1.2.05. без изменений (необходимо только разместить его в RES файле соответствующей версии). Независимость от прошивки удалось достигнуть за счет применения универсальной библиотеки libbip.a которая содержит адреса функций прошивки. После загрузки эльфа в оперативную память происходит пересчет внутренних адресов функций и переменных т.н. релокация, а так же подмена библиотечных адресов функций на реальные адреса функций в прошивке.

Среда разработки
Для разработки приложений понадобится среда разработки и компилятор. В качестве среды разработки я использую обычный Notepad++ . Наверное, можно настроить Code::Blocks или другую IDE я до этого не дошел, отложил на будущее. Установка специализированной IDE конечно повысит удобство разработки. На среде разработки останавливаться не буду.

Компилятор
Для сборки приложения я применяю GNU Embedded Toolchain for Arm. Для установки необходимо проделать следующие шаги:
  1. Скачать тулчейн можно тут:

    Пожалуйста войдите или зарегистрируйтесь для просмотра скрытого текста.


    Качаем файл gcc-arm-none-eabi-8-2019-q3-update-win32-sha2.exe ( или более свежую редакцию) с таким описанием: Windows 32-bit Installer (Signed for Windows 7 and later)
  2. Можно все установить по умолчанию, в конце установки установить все галочки
  3. Рекомендуется добавить в системный (не пользовательский) PATH путь до папки bin компилятора
Библиотека
Библиотека включает в себя как адреса функций прошивки, так и некоторые функции, которые написаны для облегчения разработки пользовательских приложений, например функции работы с меню. Библиотеку необходимо распаковать в папку на одном уровне с папками приложений. Путь до этой папки будет указан в сценарии сборки.

Актуальная версия библиотеки на GitHub -

Пожалуйста войдите или зарегистрируйтесь для просмотра скрытого текста.



v.0.5.4
У вас нет разрешения на просмотр содержимого!


v.0.5.2
У вас нет разрешения на просмотр содержимого!

v.0.5.1
У вас нет разрешения на просмотр содержимого!

v.0.5
У вас нет разрешения на просмотр содержимого!

BipEmulator от @x27 - Эмулятор окружения BipOS для часов Amazfit Bip, предназначенный для написания и отладки приложений под управлением мода BipOS (0.5.X) в среде Microsoft Visual Studio 2019

Пожалуйста войдите или зарегистрируйтесь для просмотра скрытого текста.



Пример приложения
Специально для облегчения вхождения подготовлен пример приложения на языке СИ template_app. Функционал простой: создается рабочий экран приложения, при нажатии в центр экрана меняется цвет фона и надписи.
Этот пример можно использовать в качестве шаблона. Для этого нужно создать новую папку приложения и скопировать в неё файлы примера. Наименование папки приложения в скрипте сборки берется в качестве служебного имени приложения.
Отображаемое в списке приложений наименование необходимо внести в файл label.txt При этом после наименования не должно быть каких либо символов или перевода строки.
Для сборки приложения подготовлен bat файл. Сборка осуществляется путем запуска bat файла внутри папки без параметров. Все параметры компилятора и линковщика совместимые с загрузчиком BipOS внесены в этот скрипт.
Приложение-шаблон:
У вас нет разрешения на просмотр содержимого!

Исходники на GitHub

Пожалуйста войдите или зарегистрируйтесь для просмотра скрытого текста.



Пожалуйста войдите или зарегистрируйтесь для просмотра скрытого текста.



Сборка RES файла и загрузка в часы
Для запуска эльфа необходимо загрузить его в часы. Для этого необходимо поместить его в RES файл. Для сборки RES файлов разработана специальная программа для ПК (Win32) с помощью которой можно добавить в ваш существующий RES файл необходимые приложения. ResPack.exe - это консольное приложение для выполнения простых операций с RES фалами Amazfit Bip: отображение содержимого с краткой информацией по каждому ресурсу, распаковка сырых данных ресурсов, выполнение выравнивания строковых ресурсов версии 61 и 69 для решения проблемы пропадания текста при загрузке кастомных ресурсов, а также добавления произвольных файлов в ресурсы.
Для добавления в существующий RES файл файлов приложений запускаем из командной строки:
Код:
ResPack -a <выходной_RES_файл> <входной_RES_файл> файлы которые надо добавить
Полученный RES файл прошивается в часы обычным способом, например, через GadgetBridge. Для обновления данных в оперативной памяти часы после обновления ресурсов необходимо перезагрузить. Сделать это можно либо через меню настроек выключив и включив часы.
У вас нет разрешения на просмотр содержимого!


Описание некоторых функций и жизненный цикл приложения
Видеоинструкция по прошивке и встраиванию приложений в ресурсы
Несмотря на то, что использование загрузчика значительно снижает вероятность окирпичивания ваших часов в процессе разработки, необходимо все же соблюдать меры осторожности. Необходимо продумывать алгоритмы работы вашего приложения, исключать бесконечные циклы, запись в область памяти специально не предназначенную для использования вашим приложением и т.д. Все что вы делаете, вы делаете на свой страх и риск, никто ответственности за последствия ваших действий не несет. Данная инструкция носит характер информационный, перед выполнением любых действий вы должны осознавать все что собираетесь сделать и какие последствия наступят, принять эти вероятные последствия.


Обсуждение процесса разработки ведется в этой теме.
 

Вложения

Последнее редактирование:

x27

Разработчик
Команда форума
Сообщения
185
Реакции
685
Баллы
93
Ваше "умное" устройство
Amazfit Bip
Лайфхак тут придумал.
Иногда хочется посмотреть, как в живую на часах будет выглядеть экран в программе,
(ибо даже BipEmulator не передаёт всего ужаса красоты), а формировать Res файл с эльфом
и заливать его долго и муторно.
Поэтому делаем так.
Берем циферблат, рисуем нашу картинку 176x176 и помещаем её в бэкграунд, остальное всё стираем/ не упоминаем.
У меня получился циферблат размером в 15 Кб, в часы залетает очень быстро.
Прикладываю результаты испытаний, вместе с циферблатом.

0.png

test.png


ps. можно ещё дальше пойти, прикладывать много картинок и показывать из в соответствии со временем или
статусом, но это уже отдельный изврат и получится как-бы настоящий циферблат :)
 

Вложения

GermanIvanov

Участник
Сообщения
2
Реакции
2
Баллы
43
День добрый. Самым главным расттройством в бип-ах для меня является очень уж "усредненный" пульсомер, поэтому натнкувшись на ваш проект тут же сел с ним разбираться.
Задачей является прога выводящая на бегу реальный текущий не усреденный пульс. Если намеряла прямо сейчас 80 уд.мин то пусть так и выводит, намеряла 180 то пусть так и пишет.

В заголовке libbip описаны три функции работы с пульсомером и почти ко всем у меня возникли вопросы.

extern unsigned char get_last_heartrate(); // получение измеренного последнего значения с датчика сердцебиения
extern int set_hrm_mode(int hrm_mode); // установка режима измерения пульса 0x20 - однократный
extern void* get_hrm_struct(); // получение указателя на данные датчика сердца

Установка режима. 0x0 отключение, 0x20 однократный замер, А многократный найти не удалось? По опыту общения с часами он срабатывает существенно точнее однократного.
get_hrm_struct(); Указатель на данные датчика сердца это вообще что? никто подробнее не разбирался?
 
  •  Мне нравится
Реакции: be3

GermanIvanov

Участник
Сообщения
2
Реакции
2
Баллы
43
get_hrm_struct(); Указатель на данные датчика сердца это вообще что? никто подробнее не разбирался?
сам нашел описание структуры в libbip.h, но увы не нашел в нем функций для работы с гироскопом. Не разобрались еще?
 

x27

Разработчик
Команда форума
Сообщения
185
Реакции
685
Баллы
93
Ваше "умное" устройство
Amazfit Bip
Сегодня игрался с прямым доступом к видеопамяти, ну вернее теневому буферу экрана.
А он лежит не отдельно где-нибудь, а прям среди всяких переменных в ОЗУ, чистеньких таких 15488 байт.
Ну и ошибся с координатами в функции вывода в этот теневой буфер и видать, что-то затёр важное.
Телефон фриз словил, ни на что не откликается.
Думаю, ну вот, наконец-то мои опыты привели мои часы к морозилке.
А потом смотрю, блютусная связь есть. Я ему ресурсы залил. Никаких изменений.
Залил прошу. Часы перегрузились и ожили. Выдохнул.

Выводов сразу несколько поимел:
1. Отладь и проверить всё, что возможно отладить и проверить на компе, только потом лейте в часы.
2. Не факт, то что работает на компе, будет и работать и на часах.
На часах отлаживайте и проверяйте код маленькими кусочками. Убедитесь, что текущий кусочек работает,
переходите к другому.
3. В часах полная свобода при записи чтении ОЗУ/Флеша, это опасная практика, будьте на чеку, вас могут поиметь те же указатели :)
Всё это, конечно, большей частью относится к экспериментам, но бывает и стандартные функции libbip могут выкинуть фортель.

@AlexJey очень не хватает (кроме того про то, что я должен напомнить) правильно работающей кнопки Reset в LikeApp.
 

AlexJey

Разработчик
Команда форума
Сообщения
524
Реакции
1,161
Баллы
238
Ваше "умное" устройство
Amazfit Bip
@AlexJey очень не хватает правильно работающей кнопки Reset в LikeApp
Функция RESET - наследие GB. Я не знаю, как правильно делать reset. Если узнаю, то обязательно сделаю. Самому такой функции не хватает)

P.S. Factory reset работает. Reboot - не работает.
 

PRO100KBAC

Разработчик
Команда форума
Сообщения
117
Реакции
278
Баллы
78
Ваше "умное" устройство
Amazfit Bip
Ребят, привет! Имеет ли смысл сделать такое приложение? Приложение, которое добавит авто или ручной ночной режим(уменьшение общего значения яркости до заданного значения), приложение будет работать всегда в фоне, в нем можно будет указать нужное время или выбрать "авто" режим, насчет работы в фоне не уверен, что это возможно.
 

x27

Разработчик
Команда форума
Сообщения
185
Реакции
685
Баллы
93
Ваше "умное" устройство
Amazfit Bip
На текущий момент приложения не могут работать в фоне. Сейчас свободной памяти в озу около 30 кб, если еще и в фоне что-то будет висеть, то для запуска приложух совсем мало останется.
Мне лично такое приложение не особо нужно, я кнопочку нажимаю когда нужно, причем тойже рукой на которой часы :)
Подобную фичу можно внедрить в операционку, но надо ковыряться в прошивке.
 

PRO100KBAC

Разработчик
Команда форума
Сообщения
117
Реакции
278
Баллы
78
Ваше "умное" устройство
Amazfit Bip
На текущий момент приложения не могут работать в фоне. Сейчас свободной памяти в озу около 30 кб, если еще и в фоне что-то будет висеть, то для запуска приложух совсем мало останется.
Мне лично такое приложение не особо нужно, я кнопочку нажимаю когда нужно, причем тойже рукой на которой часы :)
Подобную фичу можно внедрить в операционку, но надо ковыряться в прошивке.
Затестил с выходом из приложения через тренировки долгим зажатием кнопки, работает и свободной памяти остаётся около 23554байт, сегодня доделаю, может будет работать в фоне через выход с помощью тренировок.
 

strjaz

Местный
Сообщения
283
Реакции
172
Баллы
78
Ребят, привет! Имеет ли смысл сделать такое приложение? Приложение, которое добавит авто или ручной ночной режим(уменьшение общего значения яркости до заданного значения), приложение будет работать всегда в фоне, в нем можно будет указать нужное время или выбрать "авто" режим, насчет работы в фоне не уверен, что это возможно.
Это очень нужная функция для экономии аккумулятора
Я писал о ней, но нужно чтоб Максим в прошивку добавил.
 
Последнее редактирование:

PRO100KBAC

Разработчик
Команда форума
Сообщения
117
Реакции
278
Баллы
78
Ваше "умное" устройство
Amazfit Bip
Это очень нужная функция для экономии аккумулятора
Я писал о ней, но нужно чтоб Максим в прошивку добавил.
Через костыль выходить из приложения оставляя его в фоне и при достижении определенного времени суток, уменьшает яркость, но я так понял яркость можно менять только для приложения, ибо при переходе в любой из пунктов настройки и тд, яркость меняется на ту, которая была установлена в настройках.
 

x27

Разработчик
Команда форума
Сообщения
185
Реакции
685
Баллы
93
Ваше "умное" устройство
Amazfit Bip
... ибо при переходе в любой из пунктов настройки и тд, яркость меняется на ту, которая была установлена в настройках.
Системная установка яркости выглядит так:

Код:
// 1.1.5.36 (0x08063AF8)

// value: 0 ... 5

int __fastcall set_system_backlight(__int16 value)
{
  int packet; // [sp+0h] [bp-8h]

  packet = 0x424C;
  HIWORD(packet) = value;
  return set_generic_data(29, &packet);
}
set_generic_data в libbip есть

сам не пробовал, подсмотрел в прошивке
 

PRO100KBAC

Разработчик
Команда форума
Сообщения
117
Реакции
278
Баллы
78
Ваше "умное" устройство
Amazfit Bip
Системная установка яркости выглядит так:

Код:
// 1.1.5.36 (0x08063AF8)

// value: 0 ... 5

int __fastcall set_system_backlight(__int16 value)
{
  int packet; // [sp+0h] [bp-8h]

  packet = 0x424C;
  HIWORD(packet) = value;
  return set_generic_data(29, &packet);
}
set_generic_data в libbip есть

сам не пробовал, подсмотрел в прошивке
Уже пробовал, изменение яркости вроде работает, но в фоне к сожалению работает некорректно... Может Макс добавит в прошивку эту функцию и не придется костылями это делать.
 
Последнее редактирование:
  •  Мне нравится
Реакции: be3

x27

Разработчик
Команда форума
Сообщения
185
Реакции
685
Баллы
93
Ваше "умное" устройство
Amazfit Bip
Он же писал как-то, что для этого надо.
Реализовать функцию.
Указать в прошивках 1.1.5.36, 1.1.5.12, 1.1.2.05 как её внедрять.
 

MNVolkov

Разработчик
Команда форума
Сообщения
340
Реакции
2,442
Баллы
463
Ваше "умное" устройство
Amazfit Bip
Есть в библиотеке Libbip такая функциия show_big_digit (адрес 0x080204BC для FW 1.1.5.36 latin) с прототипом:

Код:
// отображение цифр большим шрифтом
extern void show_big_digit(int color, const char * digits, int pos_x, unsigned int pos_y, int space);
Занимаясь написанием эмулятора BipEmulator пришлось эту функцию эмулировать и как следствие изучать, что это за функция такая и чем она занимается. Как показало изучение прошивки, название функции не совсем отражает её суть, а первый аргумент, так и вовсе отвечает не за цвет.

По-сути это функция печати символов на экране, только в отличии text_out и text_out_center, растры символов она берет не из файла шрифтов (.ft), а из файла ресурсов.

Проектировали эту функцию тупо т.к. таблица символов, ширина каждого символа и идентификатор ресурса жестко запрограммирована в прошивке, ну а данные соответственно, ресурсы, лежат в файле ресурсов. Изменяя данные либо в прошивке, либо в ресурса, потребуют двойную работу по изменению данных в ресурсах, либо прошивке соответственно.

Ясно-понятно в ресурсах символы поместили, чтобы каждый создатель программ мог их использовать, но секундочку ведь создатель программ для часов и создатель прошивки он же как бы официально всего один ...

Итак, первый символ отображает не цвет, а номер набора символов, которые данная функция может отображать. Наборов всего 16 (0-15), с разным количеством символов в каждом наборе. Чтобы оценить все прелести шрифтов и в дальнейшем выбрать шрифт для ваших приложений, я сформировал картинки с каждым набором символов.

Все наборы символов можно посмотреть на

Пожалуйста войдите или зарегистрируйтесь для просмотра скрытого текста.



Ну и это как бы предпосылки для того, чтобы @MNVolkov внес корректировки относительно этой функции в Libbip
Функция show_big_digit это внутренняя функция более сложного класса вывода текста. В прошивке (особенно 1.1.5.36) чаще используется обычный text_out но с предварительным переключением шрифта. Это более удобный способ вывода текста, как мне видится, но надо до конца разобраться как это все работает. До тех пор предлагаю сделать алиас функции show_big_digit, например такой:

Код:
void     text_out_font(int font, const char * text, int pos_x, unsigned int pos_y, int space);     //    отображение цифр альтернативным шрифтом (алиас к функции show_big_digit), примеры шрифтов см. https://github.com/freebip/fwhack/blob/master/show_big_digit.md

// тип шрифта для функции text_out_font
#define FONT_DIGIT_LED_0                    0
#define FONT_DIGIT_SQUARE_MINI_1            1
#define FONT_DIGIT_MIDDLE_2                    2
#define FONT_DIGIT_BIG_3                    3
#define FONT_DIGIT_BIG_RED_4                4
#define FONT_LETTER_MIDDLE_5                5
#define FONT_LETTER_BIG_6                    6
#define FONT_DIGIT_ROUND_BIG_7                7
#define FONT_DIGIT_MIDDLE_8                    8
#define FONT_DIGIT_BIG_9                    9
#define FONT_FONT_DIGIT_SQUARE_MIDDLE_10    10
#define FONT_DIGIT_SMALL_11                    11
#define FONT_DIGIT_TINY_12                    12
#define FONT_DIGIT_MICRO_13                    13
#define FONT_DIGIT_TINY_14                    14
#define FONT_DIGIT_SQUARE_MICRO_15            15
 

Sanya pilot

Участник
Сообщения
42
Реакции
77
Баллы
33
Ваше "умное" устройство
Amazfit Bip
Здравствуйте. Решил прикрутить новый интерфейс к своему приложению "Монитор пульса", а именно сделать менюшку для настроек. Вроде все сделал правильно, менюшка рисуется, работает, НО до тех пор, пока не выйдешь из нее. Дальше начинается вакханалия. При помощи записи в лог понял, что вызывается функция рисования основного экрана, но считает, что запуск произошел из меню, т. е. производит первичные заполнения структур и т. д. Дальше - больше. Ресурсы из эльфа читает вообще из другого приложения, потом ни с того ни с сего опять вызывается функция рисования меню, хотя в коде она не прописана, и выкидывает ошибку, что не с главного экрана... Если зайти в меню, то картинки из другого приложения, значения настроек многозначные. Буду очень благодарен, если поможете, т. к. уже давно не могу понять, в чем проблема.
P. S. Много закомментированного кода, оно может пригодиться в будущем. Естественно этот хлам не пойдет в релиз.
 

Вложения

ugers

Местный
Сообщения
79
Реакции
379
Баллы
68
Ваше "умное" устройство
Amazfit Bip
BipStatusbarLibrary
Занимаясь разработкой на андроид очень понравилась идея библиотек. Сделав отображение заряда в приложении счётчик, подумал почему бы не сделать этакий аналог статус бара, который можно было бы легко включить в свой проект и при этом отконфигурировать.
Как пользоваться:
  • Скопируйте в папку с проектом фаилы библиотеки( BipStatusbarLib.c и BipStatusbarLib.h )
  • Добавьте #include "BipStatusbarLib.h" в main.c в секцию где подтягиваются другие фаилы( можно сразу после #include <libbip.h>)
  • Добавьте в функцию void screen_job() эту строку:
    show_statusbar(3, COLOR_BLACK,COLOR_WHITE);
  • В этой же функции замените set_update_period на:
    set_update_period(1, 60000); //для того чтобы лучше держало батарею обновляем экран раз в минуту
  • Добавьте в функцию void draw_screen(или аналогичную где у вас рисуется экран) строку:
    show_statusbar(3, COLOR_BLACK,COLOR_WHITE);
  • Наслаждайтесь
Как настраивать:
в функции show_statusbar(3, COLOR_BLACK,COLOR_WHITE) - COLOR_BLACK - Цвет фона статусбара, COLOR_WHITE - Цвет шрифта. Можете менять на любой цвет(главное не одинаковый:biggrin:).

Для конфигурирования библиотеки в BipStatusbarLib.c в разделе Опции - просто закомментируйте не нужный #define.
Например:
  • #define BATTERY_TEXT
  • #define BATTERY_ICON
  • //#define TIME
  • #define DATA
  • #define BLUETOOTH
Закомментировав TIME вы отключите время и оно отображаться не будет.

Исходники:

Пожалуйста войдите или зарегистрируйтесь для просмотра скрытого текста.



на 3м скрине пример отключения времени и иконки батареи
на 4м скрине отключена дата и батарея в процентах
иконка блютуза рабочая если что:)

Как только добавят заряд батареи для других прошивок библиотеку обновлю
Так же интересно было бы:
-Вывести туда иконку будильника когда он включен
-Можно было бы при уведомлении туда добавить иконку а по нажатию на статус бар открывать его
но это станет возможно только если Максим или х27 откопают функционал в прошивке

1603903937717.png 1603903959085.png1603904120831.png1603904193251.png
 
Последнее редактирование:

MNVolkov

Разработчик
Команда форума
Сообщения
340
Реакции
2,442
Баллы
463
Ваше "умное" устройство
Amazfit Bip
Обновление
MNVolkov BipOS SDK 0.5.4

Изменения:
  • добавлена функция text_out_font - алиас к прошивочной функции show_big_digit с прототипом более соотвествующем её функциональности (спасибо @x27). Функция show_big_digit объявлена устаревшей и будет удалена в будущих версиях библиотеки
  • в функциях работы с ресурсами, такими как ElfGetSettingsSize, ElfReadSettings, ElfWriteSettings, show_elf_res_by_id, get_res_count, get_res_params и т.д. добавлен новый источник ресурсов - Шрифт (index_listed == INDEX_FONT_RES)
  • добавлена прошивочная функция int get_battery_charge(), производящая замер и возвращающая заряд батареи в %, а также два макроса
    IS_CHARGE_PLUGGED - возвращает 0 если часы не заряжаются, 1 если заряжаются
    IS_CHARGE_COMPLETE - возвращает 0 если часы не до конца заряжены, 1 если часы заряжены полностью и зарядное устройство не отключено
  • добавлены структуры данных struct icons_ и struct menu_items_draw_ передаваемые BipOS в приложение при отрисовке значков главного меню.

Библиотека
Обновленная библиотека libbip доступна к скачиванию. Для работы с BipOS 0.5.4 необходимо собрать приложения с применением этой библиотеки.

Библиотека доступна на GitHub
У вас нет разрешения на просмотр содержимого!
- рекомендую пользоваться этим источником

Также можно скачать:
У вас нет разрешения на просмотр содержимого!


Пример приложения
Для демонстрации работы новой функции подготовлен пример приложения Анимация значков главного меню
Код размещен на GitHub:

Пожалуйста войдите или зарегистрируйтесь для просмотра скрытого текста.

 

Вложения

Последнее редактирование:

Yuukari

Новичок
Сообщения
16
Реакции
75
Баллы
18
Ваше "умное" устройство
Amazfit Bip
Раскопал обмен данными Alipay в часах с помощью BLE сервиса.
Научился передавать данные часам и принимать данные от часов.
Надеюсь это в первую очередь запилится в следующую версию BipOS.
Так как букаф много, присутствуют исходники, ну и местный пункт правил 6.20 никто не отменял, то залил всё на

Пожалуйста войдите или зарегистрируйтесь для просмотра скрытого текста.

.
Захотел повторить проделанную вами работу, и попытаться реализовать обмен данными с часами.

Пропатчил стоковую прошивку 1.1.5.36 сначала вашими патчами, затем пропатчил BipOS, установил все на часы. Пишу данные в характеристику через приложение на Android. Судя по всему, данные до часов доходят, так как в логах приходит сообщение "recv alipay msg while not binding" и количество принятых байт. Однако функция-обработчик в приложении на часах по какой-то причине не выполняется. Пробовал модифицировать исходники bt_echo, добавляя в обработчик отправку лога, пробовал писать свое приложение с нуля - безрезультатно. В чем может быть проблема?
 

x27

Разработчик
Команда форума
Сообщения
185
Реакции
685
Баллы
93
Ваше "умное" устройство
Amazfit Bip
Да хз, вроде все, что можно было описал в статье.
Если прошивка пропатчена моим патчем, то в принципе есть только одно условие когда обработчик не запускается, эт когда он не установлен.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу