Всем добрый день!
Мало помалу осваиваю NRF51/52 пытаюсь разобраться по примерам как работать с блутуз стеком от нордика. стадию написания блютуз меток, устройств типа BLE Observer ну и по примерам тестирование различных готовых сервисов прошел.
основные же трудности у меня в меру небольшого ума и знания языка встали при попытке реализовать свой сервис и обмениваться с программкой на андройде данными. Со стороны андройда все просто и работает.
Со стороны мк у меня долго ничего не получалось, пока не наткнулся на Bluetooth dev. studio (BDS) и с горем пополам, опираясь на скудный мануал смог запустить свой сервис.
В итоге могу со стороны мк получать данные из значения value моей characteristic при записи в нее с телефона, но записать со стороны МК не получается....не вижу на телефоне чтобы чтото полученно было.
Параллельно задавал данный вопрос по этому поводу (на своем корявом англ.) в теме на nordic dev zone
тут!
Там же выложил проект в кейле и файлы, сгенерированные BDS.
Функция для записи данных делалась на основе
примера с того же Nordic Dev Zone.
Код
uint32_t ble_my_service_value_update(ble_myprofile_t * p_myprofile, uint8_t data)
{
uint32_t err_code = NRF_SUCCESS;
ble_myprofile_evt_t ble_myprofile_evt;
ble_gatts_value_t gatts_value;
ble_myprofile_t ble_myprofile;
ble_myprofile_mycharacteristic_t * p_mycharacteristic;
memset(&gatts_value, 0, sizeof(gatts_value));
gatts_value.len = sizeof(uint8_t);
gatts_value.offset = 0;
gatts_value.p_value = &data;
err_code = sd_ble_gatts_value_set(p_myprofile->conn_handle,
p_myprofile->mycharacteristic_handles.value_handle,
&gatts_value);
if (p_myprofile->conn_handle != BLE_CONN_HANDLE_INVALID)
{
ble_gatts_hvx_params_t hvx_params;
// Initialize value struct.
memset(&hvx_params, 0, sizeof(hvx_params));
hvx_params.handle = p_myprofile->mycharacteristic_handles.value_handle;
hvx_params.type = BLE_GATT_HVX_NOTIFICATION;
hvx_params.offset = gatts_value.offset;
hvx_params.p_len = &gatts_value.len;
hvx_params.p_data = gatts_value.p_value;
err_code = sd_ble_gatts_hvx(p_myprofile->conn_handle, &hvx_params);
}
return err_code;
}
Возможно не правильно произвожу обновление значения в характеристике, либо что то накосячил при настройке BDS
Знатоки NRF5 и BDS прошу совета....
Сообщение отредактировал Роман - Jun 28 2017, 12:11