Demo功能
1、基于我司的現(xiàn)場(chǎng)Nordic52840的PCBA構(gòu)建的藍(lán)牙m(xù)esh中所有節(jié)點(diǎn)為同一類型,任一節(jié)點(diǎn)都可以控制網(wǎng)絡(luò)中所有設(shè)備
2、任一節(jié)點(diǎn)的加入及去除不影響整個(gè)網(wǎng)絡(luò)的工作。
3、在節(jié)點(diǎn)中通過一個(gè)節(jié)點(diǎn)publish一個(gè)切換當(dāng)前l(fā)ight狀態(tài)的指令,當(dāng)訂閱的設(shè)備收到此信息后直接trigger一下light的狀態(tài)
需要設(shè)備
1、需要5個(gè)我司的5個(gè)PCBA
2、需要手機(jī)按照mesh的APP后代配網(wǎng)用
實(shí)現(xiàn)方法
基于light_switch的example來實(shí)現(xiàn),在client的demo中移植server部分的功能,并將server中l(wèi)ight中的功能按照新的PCBA重新配置GPIO
同時(shí)需要注意原來demo中關(guān)于GPIO配置驅(qū)動(dòng)有著局限性問題(只能配置為P0,且LED的多個(gè)GPIO需要是連續(xù)的,需要重新修改驅(qū)動(dòng))
具體步驟
(1)移植server部分代碼
/* Generic OnOff server structure definition and initialization */
APP_ONOFF_SERVER_DEF(m_onoff_server_0,
APP_CONFIG_FORCE_SEGMENTATION,
APP_CONFIG_MIC_SIZE,
app_onoff_server_set_cb,
app_onoff_server_get_cb)
/* Callback for updating the hardware state */
static void app_onoff_server_set_cb(const app_onoff_server_t * p_server, bool onoff)
{
/* Resolve the server instance here if required, this example uses only 1 instance. */
__LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "Setting GPIO value: %d\n", onoff)
//hal_led_pin_set(BSP_LED_GREEN, onoff);
LED_Toggle();
}
/* Callback for reading the hardware state */
static void app_onoff_server_get_cb(const app_onoff_server_t * p_server, bool * p_present_onoff)
{
/* Resolve the server instance here if required, this example uses only 1 instance. */
*p_present_onoff = hal_led_pin_get(BSP_LED_GREEN);
}
static void models_init_cb(void)
{
__LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "Initializing and adding models\n");
for (uint32_t i = 0; i < CLIENT_MODEL_INSTANCE_COUNT; ++i)
{
m_clients[i].settings.p_callbacks = &client_cbs;
m_clients[i].settings.timeout = 0;
m_clients[i].settings.force_segmented = APP_CONFIG_FORCE_SEGMENTATION;
m_clients[i].settings.transmic_size = APP_CONFIG_MIC_SIZE;
ERROR_CHECK(generic_onoff_client_init(&m_clients[i], i + 1));
}
app_model_init();
}
(2)手機(jī)配置過程
每個(gè)設(shè)備有三個(gè),element包含client和server

image.png
client的配置如下,所有節(jié)點(diǎn)的client的publish的組地址定為0xc000

image.png
server的配置如下,所有節(jié)點(diǎn)的server的訂閱的組地址client的publish地址一致,為0xC000

image.png
(3)功能測(cè)試
實(shí)現(xiàn)了預(yù)想功能,仍一節(jié)點(diǎn)按下按鍵后,剩余所有節(jié)點(diǎn)切換light開發(fā)狀態(tài)