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 @@ -320,6 +320,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 @@ -2147,6 +2147,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) {
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) {
_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 @@ -30,6 +30,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 @@ -186,6 +187,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));
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 @@ -206,7 +206,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