mirror of
https://github.com/espressif/openthread.git
synced 2026-08-20 09:29:51 +00:00
[cli] service and server data as hex-encoded binary values (#5556)
This commit is contained in:
+33
-39
@@ -1737,6 +1737,39 @@ Perform an IEEE 802.15.4 Energy Scan.
|
||||
Done
|
||||
```
|
||||
|
||||
### service
|
||||
|
||||
Module for controlling service registration in Network Data. Each change in service registration must be sent to leader by `netdata register` command before taking effect.
|
||||
|
||||
### service add \<enterpriseNumber\> \<serviceData\> \<serverData\>
|
||||
|
||||
Add service to the Network Data.
|
||||
|
||||
- enterpriseNumber: IANA enterprise number
|
||||
- serviceData: hex-encoded binary service data
|
||||
- serverData: hex-encoded binary server data
|
||||
|
||||
```bash
|
||||
> service add 44970 112233 aabbcc
|
||||
Done
|
||||
> netdata register
|
||||
Done
|
||||
```
|
||||
|
||||
### service remove \<enterpriseNumber\> \<serviceData\>
|
||||
|
||||
Remove service from Network Data.
|
||||
|
||||
- enterpriseNumber: IANA enterprise number
|
||||
- serviceData: hext-encoded binary service data
|
||||
|
||||
```bash
|
||||
> service remove 44970 112233
|
||||
Done
|
||||
> netdata register
|
||||
Done
|
||||
```
|
||||
|
||||
### singleton
|
||||
|
||||
Return true when there are no other nodes in the network, otherwise return false.
|
||||
@@ -2079,43 +2112,4 @@ Done
|
||||
|
||||
Factory Diagnostics module is enabled only when building OpenThread with `OPENTHREAD_CONFIG_DIAG_ENABLE=1` option. Go [diagnostics module][diag] for more information.
|
||||
|
||||
### service
|
||||
|
||||
Module for controlling service registration in Network Data. Each change in service registration must be sent to leader by `netdata register` command before taking effect.
|
||||
|
||||
### service add \<enterpriseNumber\> \<serviceData\> \<serverData\>
|
||||
|
||||
Add service to the Network Data.
|
||||
|
||||
```bash
|
||||
> service add 44970 foo bar
|
||||
Done
|
||||
> netdata register
|
||||
Done
|
||||
> ipaddr
|
||||
fdde:ad00:beef:0:0:ff:fe00:fc10
|
||||
fdde:ad00:beef:0:0:ff:fe00:fc00
|
||||
fdde:ad00:beef:0:0:ff:fe00:7c00
|
||||
fe80:0:0:0:1486:2f57:3c:6e10
|
||||
fdde:ad00:beef:0:8ca4:19ed:217a:eff9
|
||||
Done
|
||||
```
|
||||
|
||||
### service remove \<enterpriseNumber\> \<serviceData\>
|
||||
|
||||
Remove service from Network Data.
|
||||
|
||||
```bash
|
||||
> service remove 44970 foo
|
||||
Done
|
||||
> netdata register
|
||||
Done
|
||||
> ipaddr
|
||||
fdde:ad00:beef:0:0:ff:fe00:fc00
|
||||
fdde:ad00:beef:0:0:ff:fe00:7c00
|
||||
fe80:0:0:0:1486:2f57:3c:6e10
|
||||
fdde:ad00:beef:0:8ca4:19ed:217a:eff9
|
||||
Done
|
||||
```
|
||||
|
||||
[diag]: ../../src/core/diags/README.md
|
||||
|
||||
+27
-36
@@ -2257,52 +2257,43 @@ otError Interpreter::ProcessServiceList(void)
|
||||
|
||||
otError Interpreter::ProcessService(uint8_t aArgsLength, char *aArgs[])
|
||||
{
|
||||
otError error = OT_ERROR_NONE;
|
||||
otError error = OT_ERROR_INVALID_COMMAND;
|
||||
otServiceConfig cfg;
|
||||
|
||||
if (aArgsLength == 0)
|
||||
{
|
||||
SuccessOrExit(error = ProcessServiceList());
|
||||
error = ProcessServiceList();
|
||||
}
|
||||
else if (strcmp(aArgs[0], "add") == 0)
|
||||
else
|
||||
{
|
||||
otServiceConfig cfg;
|
||||
long enterpriseNumber;
|
||||
size_t length;
|
||||
|
||||
VerifyOrExit(aArgsLength > 3, error = OT_ERROR_INVALID_ARGS);
|
||||
|
||||
SuccessOrExit(error = ParseLong(aArgs[1], enterpriseNumber));
|
||||
cfg.mEnterpriseNumber = static_cast<uint32_t>(enterpriseNumber);
|
||||
|
||||
length = strlen(aArgs[2]);
|
||||
VerifyOrExit(length <= sizeof(cfg.mServiceData), error = OT_ERROR_NO_BUFS);
|
||||
cfg.mServiceDataLength = static_cast<uint8_t>(length);
|
||||
memcpy(cfg.mServiceData, aArgs[2], cfg.mServiceDataLength);
|
||||
|
||||
length = strlen(aArgs[3]);
|
||||
VerifyOrExit(length <= sizeof(cfg.mServerConfig.mServerData), error = OT_ERROR_NO_BUFS);
|
||||
cfg.mServerConfig.mServerDataLength = static_cast<uint8_t>(length);
|
||||
memcpy(cfg.mServerConfig.mServerData, aArgs[3], cfg.mServerConfig.mServerDataLength);
|
||||
|
||||
cfg.mServerConfig.mStable = true;
|
||||
|
||||
SuccessOrExit(error = otServerAddService(mInstance, &cfg));
|
||||
}
|
||||
else if (strcmp(aArgs[0], "remove") == 0)
|
||||
{
|
||||
long enterpriseNumber = 0;
|
||||
long enterpriseNumber;
|
||||
int length;
|
||||
|
||||
VerifyOrExit(aArgsLength > 2, error = OT_ERROR_INVALID_ARGS);
|
||||
|
||||
SuccessOrExit(error = ParseLong(aArgs[1], enterpriseNumber));
|
||||
cfg.mEnterpriseNumber = static_cast<uint32_t>(enterpriseNumber);
|
||||
|
||||
SuccessOrExit(error = otServerRemoveService(mInstance, static_cast<uint32_t>(enterpriseNumber),
|
||||
reinterpret_cast<uint8_t *>(aArgs[2]),
|
||||
static_cast<uint8_t>(strlen(aArgs[2]))));
|
||||
}
|
||||
else
|
||||
{
|
||||
ExitNow(error = OT_ERROR_INVALID_COMMAND);
|
||||
length = Hex2Bin(aArgs[2], cfg.mServiceData, sizeof(cfg.mServiceData));
|
||||
VerifyOrExit(length > 0, error = OT_ERROR_INVALID_ARGS);
|
||||
cfg.mServiceDataLength = static_cast<uint8_t>(length);
|
||||
|
||||
if (strcmp(aArgs[0], "add") == 0)
|
||||
{
|
||||
VerifyOrExit(aArgsLength > 3, error = OT_ERROR_INVALID_ARGS);
|
||||
|
||||
length = Hex2Bin(aArgs[3], cfg.mServerConfig.mServerData, sizeof(cfg.mServerConfig.mServerData));
|
||||
VerifyOrExit(length > 0, error = OT_ERROR_INVALID_ARGS);
|
||||
cfg.mServerConfig.mServerDataLength = static_cast<uint8_t>(length);
|
||||
|
||||
cfg.mServerConfig.mStable = true;
|
||||
|
||||
error = otServerAddService(mInstance, &cfg);
|
||||
}
|
||||
else if (strcmp(aArgs[0], "remove") == 0)
|
||||
{
|
||||
error = otServerRemoveService(mInstance, cfg.mEnterpriseNumber, cfg.mServiceData, cfg.mServiceDataLength);
|
||||
}
|
||||
}
|
||||
|
||||
exit:
|
||||
|
||||
@@ -38,8 +38,8 @@ REED = 2
|
||||
|
||||
SRV_0_ID = 0
|
||||
SRV_0_ENT_NUMBER = '123'
|
||||
SRV_0_SERVICE_DATA = 'foo'
|
||||
SRV_0_SERVER_DATA = 'bar'
|
||||
SRV_0_SERVICE_DATA = '123'
|
||||
SRV_0_SERVER_DATA = 'abc'
|
||||
|
||||
# Topology:
|
||||
# LEADER -- REED
|
||||
|
||||
@@ -39,13 +39,13 @@ ROUTER2 = 3
|
||||
|
||||
SRV_0_ID = 0
|
||||
SRV_0_ENT_NUMBER = '123'
|
||||
SRV_0_SERVICE_DATA = 'foo'
|
||||
SRV_0_SERVER_DATA = 'bar'
|
||||
SRV_0_SERVICE_DATA = '123'
|
||||
SRV_0_SERVER_DATA = 'abc'
|
||||
|
||||
SRV_1_ID = 1
|
||||
SRV_1_ENT_NUMBER = '234'
|
||||
SRV_1_SERVICE_DATA = 'baz'
|
||||
SRV_1_SERVER_DATA = 'qux'
|
||||
SRV_1_SERVICE_DATA = '456'
|
||||
SRV_1_SERVER_DATA = 'def'
|
||||
|
||||
|
||||
class Test_Service(thread_cert.TestCase):
|
||||
|
||||
Reference in New Issue
Block a user