当前位置:网站首页>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);
边栏推荐
- GRE protocol details
- How does WiFi 802.11 correspond to 802.3
- [C language basics] macro definition usage
- Rtmp/rtsp/hls public network real available test address
- 国企为什么要上市
- Execute sh script to prompt "[[: not found" solution. The difference between Bash and sh
- 项目开发流程简单介绍
- Niuke daily question -day1
- Kubernetes certificate online update
- Halcon 3D 1 读取3d数据
猜你喜欢

Execute sh script to prompt "[[: not found" solution. The difference between Bash and sh

yolov5

POI, easyexcel framework use

March 22, 2021

March 4, 2021

The application could not be installed: INSTALL_FAILED_TEST_ONLY

Webrtc AEC process analysis

Performance test - GTI application service performance monitoring platform

Details of FPGA syntax

登录验证过滤器
随机推荐
Performance test - performance test tool analysis
Halcon 用点来拟合平面
Redis cluster cluster capacity expansion and data migration
Go interface oriented programming practice
Research Report on market supply and demand and strategy of China's digital camera lens industry
jpg格式与xml格式文件分离到不同的文件夹
论文阅读_图神经网络GIN
[C language basics] macro definition usage
Performance test - Analysis of performance test results
数据库实验三:数据查询
How Wireshark decrypts WiFi data packets
PHP实现图片登录验证码的解决方案
Memory model, reference and function supplement of program
Lesson 5: data warehouse construction (III)
个人申请OV类型SSL证书
Introduction to redis high availability
RTMP streaming +rtmp playback low delay solution in unity environment
[untitled]
Tabulation skills and matrix processing skills
IO system - code example