Skip to content

Commit e48db4c

Browse files
committed
clean up bonding
1 parent 35372d8 commit e48db4c

File tree

1 file changed

+20
-20
lines changed

1 file changed

+20
-20
lines changed

libraries/Bluefruit52Lib/src/utility/bonding.cpp

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,21 @@ static void get_fname (char* fname, uint8_t role, uint16_t ediv)
6363
sprintf(fname, (role == BLE_GAP_ROLE_PERIPH) ? BOND_FNAME_PRPH : BOND_FNAME_CNTR, ediv);
6464
}
6565

66-
static bool skip_data_field(File* f)
66+
static bool bdata_skip_field(File* file)
6767
{
68-
int len = f->read();
68+
int len = file->read();
6969
VERIFY(len > 0);
7070

71-
f->seek(len + f->position());
71+
file->seek(len + file->position());
7272
return true;
7373
}
7474

75+
static void bdata_write(File* file, void const* buffer, uint16_t bufsize)
76+
{
77+
file->write( (uint8_t) bufsize );
78+
file->write( (uint8_t const*) buffer, bufsize);
79+
}
80+
7581
void bond_init(void)
7682
{
7783
InternalFS.begin();
@@ -98,8 +104,7 @@ static void bond_save_keys_dfr (uint8_t role, uint16_t conn_hdl, bond_keys_t* bk
98104
VERIFY(file,);
99105

100106
//------------- save keys -------------//
101-
file.write(sizeof(bond_keys_t));
102-
file.write((uint8_t*) bkeys, sizeof(bond_keys_t));
107+
bdata_write(&file, bkeys, sizeof(bond_keys_t));
103108

104109
//------------- save device name -------------//
105110
char devname[CFG_MAX_DEVNAME_LEN] = { 0 };
@@ -112,9 +117,7 @@ static void bond_save_keys_dfr (uint8_t role, uint16_t conn_hdl, bond_keys_t* bk
112117
sprintf(devname, "%02X:%02X:%02X:%02X:%02X:%02X", mac[5], mac[4], mac[3], mac[2], mac[1], mac[0]);
113118
}
114119

115-
uint8_t const namelen = strlen(devname);
116-
file.write(namelen + 1);
117-
file.write((uint8_t*) devname, namelen + 1);
120+
bdata_write(&file, devname, strlen(devname)+1); // save also null char
118121

119122
BOND_LOG("Saved keys for \"%s\" to file %s ( %d bytes )", devname, filename, file.size());
120123

@@ -161,10 +164,9 @@ static void bond_save_cccd_dfr (uint8_t role, uint16_t conn_hdl, uint16_t ediv)
161164
{
162165
uint16_t len=0;
163166
sd_ble_gatts_sys_attr_get(conn_hdl, NULL, &len, SVC_CONTEXT_FLAG);
167+
VERIFY(len, );
164168

165169
uint8_t sys_attr[len];
166-
VERIFY( sys_attr, );
167-
168170
VERIFY_STATUS(sd_ble_gatts_sys_attr_get(conn_hdl, sys_attr, &len, SVC_CONTEXT_FLAG),);
169171

170172
char filename[BOND_FNAME_LEN];
@@ -173,12 +175,11 @@ static void bond_save_cccd_dfr (uint8_t role, uint16_t conn_hdl, uint16_t ediv)
173175
File file(filename, FILE_WRITE, InternalFS);
174176
VERIFY(file,);
175177

176-
file.seek(0);
177-
file.seek(file.read() + file.position()); // skip key
178-
file.seek(file.read() + file.position()); // skip name
178+
file.seek(0); // write mode start at the end, seek to beginning
179+
bdata_skip_field(&file); // skip key
180+
bdata_skip_field(&file); // skip name
179181

180-
file.write((uint8_t) len);
181-
file.write(sys_attr, len);
182+
bdata_write(&file, sys_attr, len);
182183

183184
BOND_LOG("Saved CCCD setting to file %s ( offset = %d, len = %d bytes )", filename, file.size() - (len + 1), len);
184185

@@ -204,14 +205,12 @@ bool bond_load_cccd(uint8_t role, uint16_t cond_hdl, uint16_t ediv)
204205
char filename[BOND_FNAME_LEN];
205206
get_fname(filename, role, ediv);
206207

207-
PRINT_STR(filename);
208-
209208
File file(filename, FILE_READ, InternalFS);
210209

211210
if ( file )
212211
{
213-
file.seek(file.read() + file.position()); // skip key
214-
file.seek(file.read() + file.position()); // skip name
212+
bdata_skip_field(&file); // skip key
213+
bdata_skip_field(&file); // skip name
215214

216215
int len = file.read();
217216
if ( len > 0 )
@@ -249,7 +248,7 @@ void bond_print_list(uint8_t role)
249248

250249
while ( (file = dir.openNextFile(FILE_READ)) )
251250
{
252-
if ( skip_data_field(&file) ) // skip key
251+
if ( !file.isDirectory() && bdata_skip_field(&file) ) // skip key
253252
{
254253
int len = file.read();
255254
if ( len > 0 )
@@ -260,6 +259,7 @@ void bond_print_list(uint8_t role)
260259
cprintf(" %s : %s (%d bytes)\n", file.name(), devname, file.size());
261260
}
262261
}
262+
263263
file.close();
264264
}
265265

0 commit comments

Comments
 (0)