|
26 | 26 | #include <lib/support/Span.h>
|
27 | 27 | #include <lib/support/ThreadOperationalDataset.h>
|
28 | 28 |
|
| 29 | +#include <optional> |
| 30 | + |
29 | 31 | enum class PairingMode
|
30 | 32 | {
|
31 | 33 | None,
|
@@ -107,32 +109,32 @@ class PairingCommand : public CHIPCommand,
|
107 | 109 | break;
|
108 | 110 | case PairingMode::Ble:
|
109 | 111 | AddArgument("skip-commissioning-complete", 0, 1, &mSkipCommissioningComplete);
|
110 |
| - AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode); |
111 |
| - AddArgument("discriminator", 0, 4096, &mDiscriminator); |
| 112 | + AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode.emplace()); |
| 113 | + AddArgument("discriminator", 0, 4096, &mDiscriminator.emplace()); |
112 | 114 | break;
|
113 | 115 | case PairingMode::OnNetwork:
|
114 | 116 | AddArgument("skip-commissioning-complete", 0, 1, &mSkipCommissioningComplete);
|
115 |
| - AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode); |
| 117 | + AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode.emplace()); |
116 | 118 | AddArgument("pase-only", 0, 1, &mPaseOnly);
|
117 | 119 | break;
|
118 | 120 | case PairingMode::SoftAP:
|
119 | 121 | AddArgument("skip-commissioning-complete", 0, 1, &mSkipCommissioningComplete);
|
120 |
| - AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode); |
121 |
| - AddArgument("discriminator", 0, 4096, &mDiscriminator); |
| 122 | + AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode.emplace()); |
| 123 | + AddArgument("discriminator", 0, 4096, &mDiscriminator.emplace()); |
122 | 124 | AddArgument("device-remote-ip", &mRemoteAddr);
|
123 | 125 | AddArgument("device-remote-port", 0, UINT16_MAX, &mRemotePort);
|
124 | 126 | AddArgument("pase-only", 0, 1, &mPaseOnly);
|
125 | 127 | break;
|
126 | 128 | case PairingMode::AlreadyDiscovered:
|
127 | 129 | AddArgument("skip-commissioning-complete", 0, 1, &mSkipCommissioningComplete);
|
128 |
| - AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode); |
| 130 | + AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode.emplace()); |
129 | 131 | AddArgument("device-remote-ip", &mRemoteAddr);
|
130 | 132 | AddArgument("device-remote-port", 0, UINT16_MAX, &mRemotePort);
|
131 | 133 | AddArgument("pase-only", 0, 1, &mPaseOnly);
|
132 | 134 | break;
|
133 | 135 | case PairingMode::AlreadyDiscoveredByIndex:
|
134 | 136 | AddArgument("skip-commissioning-complete", 0, 1, &mSkipCommissioningComplete);
|
135 |
| - AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode); |
| 137 | + AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode.emplace()); |
136 | 138 | AddArgument("index", 0, UINT16_MAX, &mIndex);
|
137 | 139 | AddArgument("pase-only", 0, 1, &mPaseOnly);
|
138 | 140 | break;
|
@@ -252,8 +254,14 @@ class PairingCommand : public CHIPCommand,
|
252 | 254 | mComplex_DSTOffsets;
|
253 | 255 |
|
254 | 256 | uint16_t mRemotePort;
|
255 |
| - uint16_t mDiscriminator; |
256 |
| - uint32_t mSetupPINCode; |
| 257 | + // mDiscriminator is only used for some situations, but in those situations |
| 258 | + // it's mandatory. Track whether we're actually using it; the cases that do |
| 259 | + // will emplace this optional. |
| 260 | + std::optional<uint16_t> mDiscriminator; |
| 261 | + // mSetupPINCode is only used for some situations, but in those situations |
| 262 | + // it's mandatory. Track whether we're actually using it; the cases that do |
| 263 | + // will emplace this optional. |
| 264 | + std::optional<uint32_t> mSetupPINCode; |
257 | 265 | uint16_t mIndex;
|
258 | 266 | chip::ByteSpan mOperationalDataset;
|
259 | 267 | chip::ByteSpan mSSID;
|
|
0 commit comments