-
Notifications
You must be signed in to change notification settings - Fork 0
Device Configuration Guide
Amir Nathoo edited this page Dec 8, 2024
·
1 revision
The DeviceBuilder provides a fluent interface to configure RadioMesh devices with different capabilities. This guide shows how to create and configure devices based on actual test examples.
DeviceBuilder builder;
std::array<byte, DEV_ID_LENGTH> device_id = {0x11, 0x11, 0x11, 0x11};
IDevice* device = builder.start()
.build("MyDevice", device_id);
// Using preset configurations for Heltec WiFi LoRa 32 V3
const LoraRadioParams radioParams = LoraRadioPresets::HELTEC_WIFI_LORA_32_V3;
device = builder.start()
.withLoraRadio(radioParams)
.build("MyDevice", device_id);
// Custom radio configuration
const LoraRadioParams customParams = LoraRadioParams(
PinConfig(8, 12, 13, 14), // ss, di1, rst, di0
915.0, // frequency band MHz
20, // tx power
125.0, // bandwidth
8, // spreading factor
0, // gain
true // private network
);
// OLED display configuration
OledDisplayParams displayParams = OledDisplayParams(
SCL_OLED, // clock pin
SDA_OLED, // data pin
RST_OLED, // reset pin
RM_FONT_SMALL // font size
);
device = builder.start()
.withOledDisplay(displayParams)
.build("MyDevice", device_id);
// As a client
WifiParams wifiParams = {"MyNetwork", "MyPassword"};
device = builder.start()
.withWifi(wifiParams)
.build("MyDevice", device_id);
// As an access point
WifiAccessPointParams apParams = {
"WarpPortal", // SSID
"firefly2424", // Password
"192.168.20.1" // IP Address
};
device = builder.start()
.withWifiAccessPoint(apParams)
.build("MyDevice", device_id);
void RxCallback(const RadioMeshPacket *packet, int err) {
// Handle received packets
}
device = builder.start()
.withRxPacketCallback(RxCallback)
.build("MyDevice", device_id);
std::vector<byte> key = {
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88
};
std::vector<byte> iv = {
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88
};
SecurityParams securityParams(key, iv, SecurityMethod::AES);
device = builder.start()
.withSecureMessaging(securityParams)
.build("MyDevice", device_id);
// Full-featured device based on test_DeviceBuilder.cpp
device = builder.start()
.withLoraRadio(radioParams)
.withWifi(wifiParams)
.withWifiAccessPoint(apParams)
.withRelayEnabled(true)
.withRxPacketCallback(RxCallback)
.withSecureMessaging(securityParams)
.withOledDisplay(displayParams)
.build("MyDevice", device_id, MeshDeviceType::STANDARD);
-
MeshDeviceType::STANDARD
: Regular mesh node that can send/receive messages and optionally relay -
MeshDeviceType::HUB
: Network coordinator with additional capabilities including device inclusion -
MeshDeviceType::UNKNOWN
: Default type before configuration
ByteStorageParams storageParams(128); // 128 bytes of storage
device = builder.start()
.withStorage(storageParams)
.build("MyDevice", device_id);