Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions docs/companion_cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -413,6 +413,19 @@ Radio parameters are common to all roles and handled by `CommonRadioPrefs`.

---

#### Change BLE name
**Usage:**
- `get ble_name`
- `set ble_name <name>`
- `set ble_name_default`

**Parameters:**
- `name`: New BLE name

**Note:** By default the node name will be used as the BLE name. These commands require a reboot to take effect.

---

### Wifi

#### Get status
Expand Down
20 changes: 20 additions & 0 deletions examples/companion_radio/MyMesh.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2154,6 +2154,26 @@ bool MyMesh::handleCommand(const char* command, uint32_t sender_timestamp, char*
sprintf(reply, "> pin is now %06d", _prefs.ble_pin);
return true;
}
if (memcmp(command, "set ble_name ", 13) == 0) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we please change all the commands from set ble_name to set ble.name. This will keep is consistent with all the other commands we have, that use dot notation, instead of underscores.

if (AdvertDataParser::isValidName(&command[13])) {
StrHelper::strncpy(_prefs.ble_name, &command[13], sizeof(_prefs.ble_name));
savePrefs();
sprintf(reply, "> BLE name is now %s (reboot to apply)", _prefs.ble_name);
} else {
strcpy(reply, "Error, bad chars");
}
return true;
}
if (strcmp(command, "get ble_name") == 0) {
sprintf(reply, "> %s", _prefs.ble_name[0] ? _prefs.ble_name : _prefs.node_name);
return true;
}
if (strcmp(command, "set ble_name_default") == 0) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could probably avoid having this extra command, by checking if the name passed to set ble.name is empty. In that case, reset it to default, as it shouldn't be allowed to have an empty name, so we can use that state to revert to default.

_prefs.ble_name[0] = 0;
savePrefs();
sprintf(reply, "> BLE name reset to %s (reboot to apply)", _prefs.node_name);
return true;
}

#ifdef ENABLE_WIFI_INTERFACE
if (memcmp(command, "set wifi.ssid ", 14) == 0) {
Expand Down
2 changes: 2 additions & 0 deletions examples/companion_radio/NodePrefs.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ class NodePrefs : public ConfigSerializer { // persisted to file
float tx_delay_factor = 0;
float direct_tx_delay_factor = 0;
uint32_t ble_pin = 0;
char ble_name[32] = {0};
uint8_t advert_loc_policy = 0;
uint8_t buzzer_quiet = 0;
uint8_t vibe_quiet = 0;
Expand Down Expand Up @@ -216,6 +217,7 @@ class NodePrefs : public ConfigSerializer { // persisted to file
def("defs_nm", _parent->default_scope_name, sizeof(_parent->default_scope_name));
def("defs_key", (void *) _parent->default_scope_key, sizeof(_parent->default_scope_key));
def("pin", _parent->ble_pin);
def("ble_name", _parent->ble_name, sizeof(_parent->ble_name));

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Underscore is fine here, just recommend updating the command strings themselves.

def("buzz_q", _parent->buzzer_quiet);
def("vibe_q", _parent->vibe_quiet);
def("auto_add", _parent->autoadd_config); // bitmask for auto-add contacts config
Expand Down
2 changes: 1 addition & 1 deletion examples/companion_radio/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ void setup() {

// add bluetooth interface
#if defined(BLE_PIN_CODE)
bluetooth_interface.begin(BLE_NAME_PREFIX, the_mesh.getNodePrefs()->node_name, the_mesh.getBLEPin());
bluetooth_interface.begin(BLE_NAME_PREFIX, the_mesh.getNodePrefs()->ble_name[0] ? the_mesh.getNodePrefs()->ble_name : the_mesh.getNodePrefs()->node_name, the_mesh.getBLEPin());
interface_manager.addInterface(InterfaceType::Bluetooth, &bluetooth_interface);
#endif

Expand Down