@@ -35,6 +35,12 @@ NimBLEHIDDevice::NimBLEHIDDevice(NimBLEServer* server) {
35
35
*/
36
36
m_pnpCharacteristic = m_deviceInfoService->createCharacteristic ((uint16_t ) 0x2a50 , NIMBLE_PROPERTY::READ);
37
37
38
+ /*
39
+ * Non-mandatory characteristics for device info service
40
+ * Will be created on demand
41
+ */
42
+ m_manufacturerCharacteristic = nullptr ;
43
+
38
44
/*
39
45
* Mandatory characteristics for HID service
40
46
*/
@@ -86,7 +92,10 @@ void NimBLEHIDDevice::startServices() {
86
92
* @brief Create a manufacturer characteristic (this characteristic is optional).
87
93
*/
88
94
NimBLECharacteristic* NimBLEHIDDevice::manufacturer () {
89
- m_manufacturerCharacteristic = m_deviceInfoService->createCharacteristic ((uint16_t ) 0x2a29 , NIMBLE_PROPERTY::READ);
95
+ if (m_manufacturerCharacteristic == nullptr ) {
96
+ m_manufacturerCharacteristic = m_deviceInfoService->createCharacteristic ((uint16_t )0x2a29 , NIMBLE_PROPERTY::READ);
97
+ }
98
+
90
99
return m_manufacturerCharacteristic;
91
100
}
92
101
@@ -95,7 +104,7 @@ NimBLECharacteristic* NimBLEHIDDevice::manufacturer() {
95
104
* @param [in] name The manufacturer name of this HID device.
96
105
*/
97
106
void NimBLEHIDDevice::manufacturer (std::string name) {
98
- m_manufacturerCharacteristic ->setValue (name);
107
+ manufacturer () ->setValue (name);
99
108
}
100
109
101
110
/* *
@@ -106,7 +115,15 @@ void NimBLEHIDDevice::manufacturer(std::string name) {
106
115
* @param [in] version The produce version number.
107
116
*/
108
117
void NimBLEHIDDevice::pnp (uint8_t sig, uint16_t vid, uint16_t pid, uint16_t version) {
109
- uint8_t pnp[] = { sig, (uint8_t ) (vid >> 8 ), (uint8_t ) vid, (uint8_t ) (pid >> 8 ), (uint8_t ) pid, (uint8_t ) (version >> 8 ), (uint8_t ) version };
118
+ uint8_t pnp[] = {
119
+ sig,
120
+ ((uint8_t *)&vid)[0 ],
121
+ ((uint8_t *)&vid)[1 ],
122
+ ((uint8_t *)&pid)[0 ],
123
+ ((uint8_t *)&pid)[1 ],
124
+ ((uint8_t *)&version)[0 ],
125
+ ((uint8_t *)&version)[1 ]
126
+ };
110
127
m_pnpCharacteristic->setValue (pnp, sizeof (pnp));
111
128
}
112
129
0 commit comments