Ещё раз - у меня просто есть с чем сравнивать, а вы ещё не набрали пачку BLE чипов. За тот год потыркал более десятка SOC с BLE и я не являюсь специалистом - я только учусь
В исходниках. А далее надо приложить среднее от других BLE и тогда часть становится понятна.
Так-же есть рекомендации какие функции и с какими параметрами должны быть. WCH этому придерживается или гонит отсебятину?
Добрый день. Да все мы тут учимся, как же без этого. На счет команд стека для ch582 скажу следующее. Врать не буду, сравнить мне не с чем, так глубоко в стек я раньше не лазил. Нордиком я пользовался пару лет назад, уже и не помню. Что касается ch582, то описания команд даже на китайском я не нашел. Только в хедере CH58xBLE_LIB.H есть небольшие пояснения. Я выписал эти команды (для роли центрального), вот они, если интересно.
Есть несколько команд, чтобы узнать сервисы периферического устройства.
GATT_DiscAllPrimaryServices() обнаружение всех сервисов устройства
GATT_FindIncludedServices() обнаружение всех сервисов из диапазона адресов
GATT_DiscPrimaryServiceByUUID() обнаружение конкретного сервиса по UUID
Для обнаружения характеристик и дескрипторов устройства служат следующие команды:
GATT_DiscAllChars() обнаружение всех характеристик из диапазона
GATT_DiscCharsByUUID() обнаружение характеристик по UUID
GATT_DiscAllCharDescs() обнаружение всех дескрипторов характ.из диапазона
После обнаружения сервисов, характеристик и дескрипторов устройства, мы можем отправлять команды для работы с ними.
GATT_ReadCharValue() чтение значения характеристики по указателю
GATT_ReadUsingCharUUID() чтение значения характеристики по UUID
GATT_ReadLongCharValue() чтение по указателю длинного значения характ.
GATT_ReadMultiCharValues() чтение нескольких значений характ. по указателю
GATT_WriteNoRsp() запись значений характеристики без подтверждений
GATT_SignedWriteNoRsp() запись значений характеристики not encrypted
GATT_WriteCharValue() запись значения характеристики по указателю
GATT_WriteLongCharValue() запись длинного значения характеристики по указат.
GATT_ReliableWrites() запись характерист. с подтверждением получения
GATT_ReadCharDesc() чтение дескриптора характеристики
GATT_ReadLongCharDesc() чтение длинного дескриптора характеристики
GATT_WriteCharDesc() запись дескриптора характеристики
GATT_WriteLongCharDesc() запись длинного дескриптора характеристик
В принципе всё очень логично. Однако в исходниках у производителя не всё так гладко. В примерах используется наверное только треть команд. Как использовать другие - не понятно. Ну то есть логически понятно, но стек на них не реагирует. Кроме того, в исходниках своя логика использования команд. Вот пример. Команда GATT_ReadUsingCharUUID() служит для получения указателя на характеристику в стеке. Всё замечательно, она работает. Но в примерах
эту же команду используют для получения указателя на дескриптор CCCD. Я научился пользоваться частью команд, для роли центрального, но потратил на это наверное недели две, и до конца не понял. У меня ещё будет время к этому всему вернутся, т.к. это нужно для работы. Может быть, когда разберусь окончательно, тогда и будет мне озарение
Тогда и составлю чёткое описание что и к чему, ну и выложу его на всеобщее обозрение. А пока нет точного понимания, что то рекомендовать не буду. Такие вот дела