该DISS的配置是基于onsemi_RSL10,如果想了解有关该板子的信息介绍,可以点击Onsemi低功耗蓝牙soc:RSL10介紹进行了解。
diss:即为设备信息,初始化相关的设备信息之后,连接蓝牙后可以看到该设备的相关设备信息。
DISS_DeviceInfo_t 为设备信息结构的初始化,包括长度和数据字符串,通过配置该结构体然后进行初始化即可实现相关的DISS信息。
一.diss配置的步骤:
①结构体初始化具体的结构信息:
const struct DISS_DeviceInfo_t deviceInfo =
{
.MANUFACTURER_NAME = {.len = APP_DIS_MANUFACTURER_NAME_LEN, .data = (uint8_t*) APP_DIS_MANUFACTURER_NAME},
.MODEL_NB_STR = {.len = APP_DIS_MODEL_NB_STR_LEN, .data = (uint8_t*) APP_DIS_MODEL_NB_STR},
.SERIAL_NB_STR = {.len = APP_DIS_SERIAL_NB_STR_LEN, .data = (uint8_t*) APP_DIS_SERIAL_NB_STR},
.FIRM_REV_STR = {.len = APP_DIS_FIRM_REV_STR_LEN, .data = (uint8_t*) APP_DIS_FIRM_REV_STR},
.SYSTEM_ID = {.len = APP_DIS_SYSTEM_ID_LEN, .data = (uint8_t*) APP_DIS_SYSTEM_ID},
.HARD_REV_STR = {.len = APP_DIS_HARD_REV_STR_LEN, .data = (uint8_t*) APP_DIS_HARD_REV_STR},
.SW_REV_STR = {.len = APP_DIS_SW_REV_STR_LEN, .data = (uint8_t*) APP_DIS_SW_REV_STR},
.IEEE = {.len = APP_DIS_IEEE_LEN, .data = (uint8_t*) APP_DIS_IEEE},
.PNP = {.len = APP_DIS_PNP_ID_LEN, .data = (uint8_t*) APP_DIS_PNP_ID},
};
具体配置设备的信息如下:
②变量初始化
/* --------------------------------------------------------------------------
* Device Information used for Device Information Server Service (DISS)
* ----------------------------------------------------------------------- */
/* Manufacturer Name Value */
#define APP_DIS_MANUFACTURER_NAME ("Peripheral_HID")
#define APP_DIS_MANUFACTURER_NAME_LEN (14)
/* Model Number String Value */
#define APP_DIS_MODEL_NB_STR ("RW-BLE-1.0")
#define APP_DIS_MODEL_NB_STR_LEN (10)
/* Serial Number */
#define APP_DIS_SERIAL_NB_STR ("1.0.0.0-LE")
#define APP_DIS_SERIAL_NB_STR_LEN (10)
/* Firmware Revision */
#define APP_DIS_FIRM_REV_STR ("6.1.2")
#define APP_DIS_FIRM_REV_STR_LEN (5)
/* System ID Value - LSB -> MSB */
#define APP_DIS_SYSTEM_ID ("\x12\x34\x56\xFF\xFE\x9A\xBC\xDE")
#define APP_DIS_SYSTEM_ID_LEN (8)
/* Hardware Revision String */
#define APP_DIS_HARD_REV_STR ("1.0.0")
#define APP_DIS_HARD_REV_STR_LEN (5)
/* Software Revision String */
#define APP_DIS_SW_REV_STR ("6.3.0")
#define APP_DIS_SW_REV_STR_LEN (5)
/* IEEE */
#define APP_DIS_IEEE ("\xFF\xEE\xDD\xCC\xBB\xAA")
#define APP_DIS_IEEE_LEN (6)
/**
* PNP ID Value - LSB -> MSB
* Vendor ID Source : 0x02 (USB Implementer锟絪 Forum assigned Vendor ID value)
* Vendor ID : 0x1057 (ON Semiconductor)
* Product ID : 0x0040
* Product Version : 0x0300
*/
#define APP_DIS_PNP_ID ("\x02\x57\x10\x40\x00\x00\x03")
#define APP_DIS_PNP_ID_LEN (7)
#define APP_DIS_FEATURES (DIS_ALL_FEAT_SUP)
③调用函数把结构体传入
static void DISS_Setup(void) {
DISS_Initialize(APP_DIS_FEATURES, (const struct DISS_DeviceInfo_t*) &deviceInfo);
}
DISS_Initialize(APP_DIS_FEATURES, (const struct DISS_DeviceInfo_t*) &deviceInfo);
}
函数实例:
实例:
int DISS_Initialize(uint16_t features, const struct DISS_DeviceInfo_t *deviceInfo)
{
memset(&diss_env, 0, sizeof(DISS_Env_t));
diss_env.features = features;
diss_env.deviceInfo = deviceInfo;
/*
* Add DISS message handlers
*/
/* General */
MsgHandler_Add(TASK_ID_DISS, DISS_MsgHandler);
MsgHandler_Add(GAPM_CMP_EVT, DISS_MsgHandler);
MsgHandler_Add(GAPM_PROFILE_ADDED_IND, DISS_MsgHandler);
MsgHandler_Add(DISS_SET_VALUE_RSP, DISS_MsgHandler);
MsgHandler_Add(DISS_VALUE_REQ_IND, DISS_DeviceInfoValueReqInd);
return 0;
}
{
memset(&diss_env, 0, sizeof(DISS_Env_t));
diss_env.features = features;
diss_env.deviceInfo = deviceInfo;
/*
* Add DISS message handlers
*/
/* General */
MsgHandler_Add(TASK_ID_DISS, DISS_MsgHandler);
MsgHandler_Add(GAPM_CMP_EVT, DISS_MsgHandler);
MsgHandler_Add(GAPM_PROFILE_ADDED_IND, DISS_MsgHandler);
MsgHandler_Add(DISS_SET_VALUE_RSP, DISS_MsgHandler);
MsgHandler_Add(DISS_VALUE_REQ_IND, DISS_DeviceInfoValueReqInd);
return 0;
}
二.效果图:
连上设备之后,可以查看到你设置的设备信息,上图两个信息为上面红色字体的代码所设置的:
评论