Skip to content

Commit d2c50dd

Browse files
authored
Update BLEDis.cpp
1 parent 5151d5f commit d2c50dd

File tree

1 file changed

+122
-9
lines changed

1 file changed

+122
-9
lines changed

libraries/Bluefruit52Lib/src/services/BLEDis.cpp

Lines changed: 122 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,51 +51,164 @@ BLEDis::BLEDis(void)
5151
_hardware_rev = NULL;
5252
_software_rev = ARDUINO_BSP_VERSION;
5353
_manufacturer = "Adafruit Industries";
54+
_system_id = NULL;
55+
_reg_cert_list = NULL;
56+
_pnp_id = NULL;
57+
}
58+
59+
void BLEDis::setFirmwareRev(const char* firmware_rev)
60+
{
61+
_firmware_rev = firmware_rev;
62+
_firmware_rev_length = strlen(firmware_rev);
63+
}
64+
void BLEDis::setFirmwareRev(const char* firmware_rev, uint8_t length)
65+
{
66+
_firmware_rev = firmware_rev;
67+
_firmware_rev_length = length;
68+
}
69+
70+
void BLEDis::setSerialNum(const char* serial_num)
71+
{
72+
_serial = serial_num;
73+
_serial_length = strlen(serial_num);
74+
}
75+
void BLEDis::setSerialNum(const char* serial_num, uint8_t length)
76+
{
77+
_serial = serial_num;
78+
_serial_length = length;
79+
}
80+
81+
void BLEDis::setSystemID(const char* system_id)
82+
{
83+
_system_id = system_id;
84+
_system_id_length = strlen(system_id);
85+
}
86+
void BLEDis::setSystemID(const char* system_id, uint8_t length)
87+
{
88+
_system_id = system_id;
89+
_system_id_length = length;
90+
}
91+
92+
void BLEDis::setRegCertList(const char* reg_cert_list)
93+
{
94+
_reg_cert_list = reg_cert_list;
95+
_reg_cert_list_length = strlen(reg_cert_list);
96+
}
97+
void BLEDis::setRegCertList(const char* reg_cert_list, uint8_t length)
98+
{
99+
_reg_cert_list = reg_cert_list;
100+
_reg_cert_list_length = length;
101+
}
102+
103+
void BLEDis::setPNPID(const char* pnp_id)
104+
{
105+
_pnp_id = pnp_id;
106+
_pnp_id_length = strlen(pnp_id);
107+
}
108+
void BLEDis::setPNPID(const char* pnp_id, uint8_t length)
109+
{
110+
_pnp_id = pnp_id;
111+
_pnp_id_length = length;
112+
}
113+
void BLEDis::setModel(const char* model,uint8_t length)
114+
{
115+
_model = model;
116+
_model_length = length;
117+
}
118+
119+
void BLEDis::setHardwareRev(const char* hw_rev,uint8_t length)
120+
{
121+
_hardware_rev = hw_rev;
122+
_hardware_rev_length = length;
123+
}
124+
125+
void BLEDis::setSoftwareRev(const char* sw_rev, uint8_t length)
126+
{
127+
_software_rev = sw_rev;
128+
_software_rev_length = length;
129+
}
130+
131+
void BLEDis::setManufacturer(const char* manufacturer, uint8_t length)
132+
{
133+
_manufacturer = manufacturer;
134+
_manufacturer_length = length;
54135
}
55136

56137
void BLEDis::setModel(const char* model)
57138
{
58139
_model = model;
140+
_model_length = strlen(model);
59141
}
60142

61143
void BLEDis::setHardwareRev(const char* hw_rev)
62144
{
63145
_hardware_rev = hw_rev;
146+
_hardware_rev_length = strlen(hw_rev);
64147
}
65148

66149
void BLEDis::setSoftwareRev(const char* sw_rev)
67150
{
68151
_software_rev = sw_rev;
152+
_software_rev_length = strlen(sw_rev);
69153
}
70154

71155
void BLEDis::setManufacturer(const char* manufacturer)
72156
{
73157
_manufacturer = manufacturer;
158+
_manufacturer_length = strlen(manufacturer);
74159
}
75160

76161
err_t BLEDis::begin(void)
77162
{
78163
// Invoke base class begin()
79164
VERIFY_STATUS( BLEService::begin() );
80165

81-
_serial = getMcuUniqueID();
82-
_firmware_rev = getBootloaderVersion();
166+
if(!_serial) {
167+
_serial = getMcuUniqueID();
168+
}
169+
if (!_firmware_rev) {
170+
_firmware_rev = getBootloaderVersion();
171+
}
83172

84-
for(uint8_t i=0; i<arrcount(_strarr); i++)
173+
for(uint8_t i=0; i<arrcount(_strarr)-1; i++) // without PNP_ID
85174
{
86175
if ( _strarr[i] != NULL )
87176
{
88-
BLECharacteristic chars(UUID16_CHR_MODEL_NUMBER_STRING+i);
177+
BLECharacteristic chars(UUID16_CHR_SYSTEM_ID+i);
89178
chars.setTempMemory();
90-
91179
chars.setProperties(CHR_PROPS_READ);
92-
chars.setFixedLen(strlen(_strarr[i]));
93-
180+
if (_strarr_length[i]) {
181+
chars.setFixedLen(_strarr_length[i]);
182+
} else {
183+
chars.setFixedLen(strlen(_strarr[i]));
184+
}
94185
VERIFY_STATUS( chars.begin() );
95-
chars.write(_strarr[i]);
186+
if (_strarr_length[i]) {
187+
chars.write(_strarr[i], _strarr_length[i]);
188+
} else {
189+
chars.write(_strarr[i]);
190+
}
191+
96192
}
97193
}
98194

195+
if ( _strarr[arrcount(_strarr)-1] != NULL )
196+
{
197+
BLECharacteristic chars(UUID16_CHR_PNP_ID);
198+
chars.setTempMemory();
199+
chars.setProperties(CHR_PROPS_READ);
200+
if (_pnp_id_length == 0) {
201+
chars.setFixedLen(strlen(_strarr[arrcount(_strarr)-1]));
202+
} else {
203+
chars.setFixedLen(_pnp_id_length);
204+
}
205+
VERIFY_STATUS( chars.begin() );
206+
if (_pnp_id_length == 0) {
207+
chars.write(_strarr[arrcount(_strarr)-1]);
208+
} else {
209+
chars.write(_strarr[arrcount(_strarr)-1], _pnp_id_length);
210+
}
211+
}
212+
99213
return ERROR_NONE;
100214
}
101-

0 commit comments

Comments
 (0)