当前位置:网站首页>Nrf52832 services et fonctionnalités personnalisés
Nrf52832 services et fonctionnalités personnalisés
2022-06-12 05:45:00 【M0 7788.】
But de l'expérience:PersonnalisationServiceService privé et transmission des données du capteur de température et d'humidité.Cette expérience est basée surSDK17.02Moyenneble_app_uartExemple de code à modifier.
Un.、Contexte
1.1GAPInitialisation:
Trois tâches principales ont été accomplies:
a.GAPInitialisation de la configuration du mode de sécurité,Le mode de sécurité indique si l'authentification est nécessaire lors de la connexion.
b.Configuration du nom du périphérique Bluetooth,C'est - à - dire définir le nom de la diffusion Bluetooth,Notez que la longueur du nom est limitée,De préférence pas plus de 18 octets
c.Paramètres de connexion,Paramètres de connexion,Principalement les réglages:Espacement minimal des connexions、Espacement maximal des connexions、Période de latence de l'équipement esclave、Délai de connexion.Ces valeurs représentent les paramètres attendus du périphérique pour la connexion.
1.2GATTInitialisation
GATTAppelé spécification générale des attributs(Generic Attribute profile,GATT),GATTLa couche est où les données réelles sont transférées Couche.Comprend un cadre de transfert et de stockage de données et ses opérations de base.La plupart de ses fonctions personnalisées.CC'est écrit,Dans la fonction principale, il suffit d'initialiser et de configurer la relation entre les fonctions.
GATTUtilisé ATT(Attribute Protocol)Accord,ATT Accord Service,Characteristic Les données correspondantes sont sauvegardées dans une table de recherche,Utilisation de la table de recherche 16bit ID Comme index pour chaque élément.GATTLes structures de données à plusieurs niveaux définies sont brièvement résumées comme suit: Services(Service) Peut contenir plusieurs Caractéristiques(Characteristic), Chaque caractéristique contient Propriétés(Properties) Et Valeur(Value), Peut également contenir plusieurs Description(Descriptor).
2.、ble_lbs.cFonctions
battery_level Pour simuler la quantité d'électricité value
2.1 Gestion des événements du client hôte
ble_lbs.hMode observateurNRF_SDH_BLE_OBSERVER—>>>ble_lbs_on_ble_evt—>>>lbs_c_evt_handler()
case BLE_GATTS_EVT_WRITE: //LEDLorsque la caractéristique est écrite dans les données,C'est arrivé.GATTÉcrivez l'événement,Appelleon_writeFonctions.
lbs_c_evt_handler(p_lbs, p_ble_evt);
ble_lbs_on_ble_evt—>>>lbs_c_evt_handler()
p_lbs->led_write_handler(p_ble_evt->evt.gap_evt.conn_handle, p_lbs, p_evt_write->data[0]);
ble_srv_is_notification_enabled(p_evt_write->data)
2.2 Initialisation du client hôte ble_lbs_init()
// Initialize service structure
p_lbs->evt_handler = p_lbs_init->evt_handler;
p_lbs->is_notification_supported = p_lbs_init->support_notification;
p_lbs->battery_level_last = INVALID_BATTERY_LEVEL;
// Add service
BLE_UUID_BLE_ASSIGN(ble_uuid, BLE_UUID_BATTERY_SERVICE);
// Add battery level characteristic
err_code = battery_level_char_add(p_lbs, p_lbs_init);
Fonction d'ajout de fonctionnalités battery_level_char_add()
memset(&cccd_md, 0, sizeof(cccd_md));
BLE_GAP_CONN_SEC_MODE_SET_OPEN(&cccd_md.read_perm);
memset(&char_md, 0, sizeof(char_md));
BLE_UUID_BLE_ASSIGN(ble_uuid, BLE_UUID_BATTERY_LEVEL_CHAR);
memset(&attr_md, 0, sizeof(attr_md));
initial_battery_level = p_bas_init->initial_batt_level;
memset(&attr_char_value, 0, sizeof(attr_char_value));
err_code = sd_ble_gatts_characteristic_add(p_bas->service_handle, &char_md,
&attr_char_value,
&p_bas->battery_level_handles);
2.3 Fonction de traitement des données de température du client hôte
main.cAppel de minuteriebattery_level_update():
memset(&gatts_value, 0, sizeof(gatts_value));
err_code = sd_ble_gatts_value_set(BLE_CONN_HANDLE_INVALID,
p_bas->battery_level_handles.value_handle,
&gatts_value);
err_code = battery_notification_send(&hvx_params, conn_handles.conn_handles[i]);
battery_level_update()—>>>battery_notification_send()
err_code = sd_ble_gatts_hvx(conn_handle, p_hvx_params);
Trois.main.cFonctions
3.1.Macro - définition
APP_TIMER_DEF(m_battery_timer_id);
BLE_LBS_mpu6050_DEF(m_mpu6050);//Mode observateur
static ble_lbs_t m_mpu6050;
ble_bas_battery_level_update(&m_mpu6050, TIME_TEMP, BLE_CONN_HANDLE_ALL);
3.2.services_init
Principalement l'initialisationble_lbs.cÀ l'intérieur.ble_lbs_init
ble_lbs_init_t bas_init_obj;
memset(&bas_init_obj, 0, sizeof(bas_init_obj));
err_code = ble_lbs_init(&m_mpu6050, &bas_init_obj);
3.3.Minuterie
Fonction de rappelmeasure_timer_handler
TIME_TEMP Est une valeur analogique
ble_bas_battery_level_update(&m_mpu6050, TIME_TEMP, BLE_CONN_HANDLE_ALL);
边栏推荐
- Introduction to redis high availability
- 利用jieba库进行词频统计
- Review notes of naturallanguageprocessing based on deep learning
- How much Ma is the driving current of SIM card signal? Is it adjustable?
- Go interface implementation principle [advanced level]
- [untitled]
- Introduction to redis cluster
- China's elastic belt market trend report, technical dynamic innovation and market forecast
- flex/fixed上中下(移動端)
- Kubernetes certificate online update
猜你喜欢

beginning一款非常优秀的emlog主题v3.1,支持Emlog Pro

Redis persistence

个体工商户是不是法人企业

DMA RDMA technology details

Redis memory obsolescence strategy

What is the lszrz protocol used at ordinary times? Talk about xmodem/ymodem/zmodem

Select gb28181, RTSP or RTMP for data push?

Rtmp/rtsp/hls public network real available test address
![[grpc development] go language builds simple server and client](/img/24/06c3c1219ecad7e117f4df152e9ce7.jpg)
[grpc development] go language builds simple server and client

按键精灵的简单入门
随机推荐
Oracle EBS interface/api (34) - update vendor API
What is the difference between ArrayList and LinkedList?
Flutter monitors application lifecycle status
XML参数架构,同一MTK SW版本兼容两套不同的音频参数
Research Report on market supply and demand and strategy of China's digital camera lens industry
【js小知识】轻松了解js防抖与节流
beginning一款非常优秀的emlog主题v3.1,支持Emlog Pro
China's alternative sports equipment market trend report, technology dynamic innovation and market forecast
Rtmp/rtsp/hls public network real available test address
Laravel8 authentication login
Introduction to Internet Protocol
CODIS long link test
Performance test - Analysis of performance test results
Go interface oriented programming practice
Individual application for ov type SSL certificate
[untitled]
数据库实验一:数据定义实验指导
FPGA语法的细节
How Wireshark decrypts WiFi data packets
nrf52832--官方例程ble_app_uart添加led特性,实现电脑uart和手机app控制开发板led开和关