40
40
BLEDis::BLEDis (void )
41
41
: BLEService(UUID16_SVC_DEVICE_INFORMATION)
42
42
{
43
+ memclr (_strarr, sizeof (_strarr));
44
+ memclr (_strarr_length, sizeof (_strarr_length));
45
+
43
46
#ifdef NRF52840_XXAA
44
- _model = " Bluefruit Feather nRF52840" ;
47
+ this -> setModel ( " Bluefruit Feather nRF52840" ) ;
45
48
#else
46
- _model = " Bluefruit Feather nRF52832" ;
49
+ this -> setModel ( " Bluefruit Feather nRF52832" ) ;
47
50
#endif
48
51
49
- _serial = NULL ;
50
- _firmware_rev = NULL ;
51
- _hardware_rev = NULL ;
52
- _software_rev = ARDUINO_BSP_VERSION;
53
- _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;
52
+ this ->setSoftwareRev (ARDUINO_BSP_VERSION);
53
+ this ->setManufacturer (" Adafruit Industries" );
79
54
}
80
55
81
- void BLEDis::setSystemID (const char * system_id)
82
- {
83
- _system_id = system_id;
84
- _system_id_length = strlen (system_id);
85
- }
86
56
void BLEDis::setSystemID (const char * system_id, uint8_t length)
87
57
{
88
58
_system_id = system_id;
89
59
_system_id_length = length;
90
60
}
91
61
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)
62
+ void BLEDis::setModel (const char * model,uint8_t length)
98
63
{
99
- _reg_cert_list = reg_cert_list ;
100
- _reg_cert_list_length = length;
64
+ _model = model ;
65
+ _model_length = length;
101
66
}
102
67
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)
68
+ void BLEDis::setSerialNum (const char * serial_num, uint8_t length)
109
69
{
110
- _pnp_id = pnp_id ;
111
- _pnp_id_length = length;
70
+ _serial = serial_num ;
71
+ _serial_length = length;
112
72
}
113
- void BLEDis::setModel (const char * model,uint8_t length)
73
+
74
+ void BLEDis::setFirmwareRev (const char * firmware_rev, uint8_t length)
114
75
{
115
- _model = model ;
116
- _model_length = length;
76
+ _firmware_rev = firmware_rev ;
77
+ _firmware_rev_length = length;
117
78
}
118
79
119
80
void BLEDis::setHardwareRev (const char * hw_rev,uint8_t length)
@@ -134,81 +95,49 @@ void BLEDis::setManufacturer(const char* manufacturer, uint8_t length)
134
95
_manufacturer_length = length;
135
96
}
136
97
137
- void BLEDis::setModel (const char * model)
138
- {
139
- _model = model;
140
- _model_length = strlen (model);
141
- }
142
-
143
- void BLEDis::setHardwareRev (const char * hw_rev)
98
+ void BLEDis::setRegCertList (const char * reg_cert_list, uint8_t length)
144
99
{
145
- _hardware_rev = hw_rev ;
146
- _hardware_rev_length = strlen (hw_rev) ;
100
+ _reg_cert_list = reg_cert_list ;
101
+ _reg_cert_list_length = length ;
147
102
}
148
103
149
- void BLEDis::setSoftwareRev (const char * sw_rev )
104
+ void BLEDis::setPNPID (const char * pnp_id, uint8_t length )
150
105
{
151
- _software_rev = sw_rev ;
152
- _software_rev_length = strlen (sw_rev) ;
106
+ _pnp_id = pnp_id ;
107
+ _pnp_id_length = length ;
153
108
}
154
109
155
- void BLEDis::setManufacturer (const char * manufacturer)
156
- {
157
- _manufacturer = manufacturer;
158
- _manufacturer_length = strlen (manufacturer);
159
- }
160
110
161
111
err_t BLEDis::begin (void )
162
112
{
163
113
// Invoke base class begin()
164
114
VERIFY_STATUS ( BLEService::begin () );
165
115
166
- if (!_serial) {
167
- _serial = getMcuUniqueID ();
168
- }
169
- if (!_firmware_rev) {
170
- _firmware_rev = getBootloaderVersion ();
171
- }
116
+ if (!_serial) setSerialNum (getMcuUniqueID ());
117
+ if (!_firmware_rev) setFirmwareRev (getBootloaderVersion ());
172
118
173
- for (uint8_t i=0 ; i<arrcount (_strarr)- 1 ; i++) // without PNP_ID
119
+ for (uint8_t i=0 ; i<arrcount (_strarr); i++)
174
120
{
175
121
if ( _strarr[i] != NULL )
176
122
{
177
- BLECharacteristic chars (UUID16_CHR_SYSTEM_ID+i);
178
- chars.setTempMemory ();
179
- chars.setProperties (CHR_PROPS_READ);
180
- if (_strarr_length[i]) {
181
- chars.setFixedLen (_strarr_length[i]);
182
- } else {
183
- chars.setFixedLen (strlen (_strarr[i]));
184
- }
185
- VERIFY_STATUS ( chars.begin () );
186
- if (_strarr_length[i]) {
187
- chars.write (_strarr[i], _strarr_length[i]);
188
- } else {
189
- chars.write (_strarr[i]);
123
+ BLECharacteristic chars;
124
+
125
+ // PNP_ID is not consecutive with the rest
126
+ if ( _strarr[i] == _pnp_id )
127
+ {
128
+ chars.setUuid (UUID16_CHR_PNP_ID);
129
+ }else
130
+ {
131
+ chars.setUuid (UUID16_CHR_SYSTEM_ID+i);
190
132
}
191
-
192
- }
193
- }
194
133
195
- if ( _strarr[arrcount (_strarr)-1 ] != NULL )
196
- {
197
- BLECharacteristic chars (UUID16_CHR_PNP_ID);
198
134
chars.setTempMemory ();
199
135
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
- }
136
+ chars.setFixedLen (_strarr_length[i]);
205
137
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
- }
138
+ chars.write (_strarr[i], _strarr_length[i]);
211
139
}
140
+ }
212
141
213
142
return ERROR_NONE;
214
143
}
0 commit comments