|
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,
|
@@ -101,32 +103,32 @@ class PairingCommand : public CHIPCommand,
|
101 | 103 | break;
|
102 | 104 | case PairingMode::Ble:
|
103 | 105 | AddArgument("skip-commissioning-complete", 0, 1, &mSkipCommissioningComplete);
|
104 |
| - AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode); |
105 |
| - AddArgument("discriminator", 0, 4096, &mDiscriminator); |
| 106 | + AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode.emplace()); |
| 107 | + AddArgument("discriminator", 0, 4096, &mDiscriminator.emplace()); |
106 | 108 | break;
|
107 | 109 | case PairingMode::OnNetwork:
|
108 | 110 | AddArgument("skip-commissioning-complete", 0, 1, &mSkipCommissioningComplete);
|
109 |
| - AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode); |
| 111 | + AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode.emplace()); |
110 | 112 | AddArgument("pase-only", 0, 1, &mPaseOnly);
|
111 | 113 | break;
|
112 | 114 | case PairingMode::SoftAP:
|
113 | 115 | AddArgument("skip-commissioning-complete", 0, 1, &mSkipCommissioningComplete);
|
114 |
| - AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode); |
115 |
| - AddArgument("discriminator", 0, 4096, &mDiscriminator); |
| 116 | + AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode.emplace()); |
| 117 | + AddArgument("discriminator", 0, 4096, &mDiscriminator.emplace()); |
116 | 118 | AddArgument("device-remote-ip", &mRemoteAddr);
|
117 | 119 | AddArgument("device-remote-port", 0, UINT16_MAX, &mRemotePort);
|
118 | 120 | AddArgument("pase-only", 0, 1, &mPaseOnly);
|
119 | 121 | break;
|
120 | 122 | case PairingMode::AlreadyDiscovered:
|
121 | 123 | AddArgument("skip-commissioning-complete", 0, 1, &mSkipCommissioningComplete);
|
122 |
| - AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode); |
| 124 | + AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode.emplace()); |
123 | 125 | AddArgument("device-remote-ip", &mRemoteAddr);
|
124 | 126 | AddArgument("device-remote-port", 0, UINT16_MAX, &mRemotePort);
|
125 | 127 | AddArgument("pase-only", 0, 1, &mPaseOnly);
|
126 | 128 | break;
|
127 | 129 | case PairingMode::AlreadyDiscoveredByIndex:
|
128 | 130 | AddArgument("skip-commissioning-complete", 0, 1, &mSkipCommissioningComplete);
|
129 |
| - AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode); |
| 131 | + AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode.emplace()); |
130 | 132 | AddArgument("index", 0, UINT16_MAX, &mIndex);
|
131 | 133 | AddArgument("pase-only", 0, 1, &mPaseOnly);
|
132 | 134 | break;
|
@@ -246,8 +248,14 @@ class PairingCommand : public CHIPCommand,
|
246 | 248 | mComplex_DSTOffsets;
|
247 | 249 |
|
248 | 250 | uint16_t mRemotePort;
|
249 |
| - uint16_t mDiscriminator; |
250 |
| - uint32_t mSetupPINCode; |
| 251 | + // mDiscriminator is only used for some situations, but in those situations |
| 252 | + // it's mandatory. Track whether we're actually using it; the cases that do |
| 253 | + // will emplace this optional. |
| 254 | + std::optional<uint16_t> mDiscriminator; |
| 255 | + // mSetupPINCode is only used for some situations, but in those situations |
| 256 | + // it's mandatory. Track whether we're actually using it; the cases that do |
| 257 | + // will emplace this optional. |
| 258 | + std::optional<uint32_t> mSetupPINCode; |
251 | 259 | uint16_t mIndex;
|
252 | 260 | chip::ByteSpan mOperationalDataset;
|
253 | 261 | chip::ByteSpan mSSID;
|
|
0 commit comments