lwm2m/coap: client queue Mode

This commit is contained in:
nick 2024-02-13 15:13:26 +02:00
parent cb674048e7
commit 9cdcad8775
2 changed files with 15 additions and 25 deletions

View File

@ -18,7 +18,6 @@ package org.thingsboard.server.transport.coap.client;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.eclipse.californium.core.coap.CoAP; import org.eclipse.californium.core.coap.CoAP;
import org.eclipse.californium.core.coap.CoAP.ResponseCode;
import org.eclipse.californium.core.coap.Response; import org.eclipse.californium.core.coap.Response;
import org.eclipse.californium.core.observe.ObserveRelation; import org.eclipse.californium.core.observe.ObserveRelation;
import org.eclipse.californium.core.server.resources.CoapExchange; import org.eclipse.californium.core.server.resources.CoapExchange;
@ -222,7 +221,7 @@ public class DefaultCoapClientContext implements CoapClientContext {
private void onUplink(TbCoapClientState client, boolean notifyOtherServers, long uplinkTs) { private void onUplink(TbCoapClientState client, boolean notifyOtherServers, long uplinkTs) {
PowerMode powerMode = client.getPowerMode(); PowerMode powerMode = client.getPowerMode();
PowerSavingConfiguration profileSettings = null; PowerSavingConfiguration profileSettings = null;
if (powerMode == null) { if (powerMode == null && client.getProfileId() != null) {
var clientProfile = getProfile(client.getProfileId()); var clientProfile = getProfile(client.getProfileId());
if (clientProfile.isPresent()) { if (clientProfile.isPresent()) {
profileSettings = clientProfile.get().getClientSettings(); profileSettings = clientProfile.get().getClientSettings();
@ -736,7 +735,7 @@ public class DefaultCoapClientContext implements CoapClientContext {
private boolean isDownlinkAllowed(TbCoapClientState client) { private boolean isDownlinkAllowed(TbCoapClientState client) {
PowerMode powerMode = client.getPowerMode(); PowerMode powerMode = client.getPowerMode();
PowerSavingConfiguration profileSettings = null; PowerSavingConfiguration profileSettings = null;
if (powerMode == null) { if (powerMode == null && client.getProfileId() != null) {
var clientProfile = getProfile(client.getProfileId()); var clientProfile = getProfile(client.getProfileId());
if (clientProfile.isPresent()) { if (clientProfile.isPresent()) {
profileSettings = clientProfile.get().getClientSettings(); profileSettings = clientProfile.get().getClientSettings();
@ -785,11 +784,12 @@ public class DefaultCoapClientContext implements CoapClientContext {
private PowerMode getPowerMode(TbCoapClientState client) { private PowerMode getPowerMode(TbCoapClientState client) {
PowerMode powerMode = client.getPowerMode(); PowerMode powerMode = client.getPowerMode();
if (powerMode == null) { if (powerMode == null) {
Optional<CoapDeviceProfileTransportConfiguration> deviceProfile = getProfile(client.getProfileId()); powerMode = PowerMode.PSM;
if (deviceProfile.isPresent()) { if (client.getProfileId() != null) {
powerMode = deviceProfile.get().getClientSettings().getPowerMode(); Optional<CoapDeviceProfileTransportConfiguration> deviceProfile = getProfile(client.getProfileId());
} else { if (deviceProfile.isPresent()) {
powerMode = PowerMode.PSM; powerMode = deviceProfile.get().getClientSettings().getPowerMode();
}
} }
} }
return powerMode; return powerMode;

View File

@ -411,15 +411,12 @@ public class LwM2mClientContextImpl implements LwM2mClientContext {
public boolean isDownlinkAllowed(LwM2mClient client) { public boolean isDownlinkAllowed(LwM2mClient client) {
PowerMode powerMode = client.getPowerMode(); PowerMode powerMode = client.getPowerMode();
OtherConfiguration profileSettings = null; OtherConfiguration profileSettings = null;
if (powerMode == null) { if (powerMode == null && client.getProfileId() != null) {
var clientProfile = getProfile(client.getProfileId()); var clientProfile = getProfile(client.getProfileId());
profileSettings = clientProfile.getClientLwM2mSettings(); profileSettings = clientProfile.getClientLwM2mSettings();
powerMode = profileSettings.getPowerMode(); powerMode = profileSettings.getPowerMode();
if (powerMode == null) {
powerMode = PowerMode.DRX;
}
} }
if (PowerMode.DRX.equals(powerMode) || otaUpdateService.isOtaDownloading(client)) { if (powerMode == null || PowerMode.DRX.equals(powerMode) || otaUpdateService.isOtaDownloading(client)) {
return true; return true;
} }
client.lock(); client.lock();
@ -460,19 +457,12 @@ public class LwM2mClientContextImpl implements LwM2mClientContext {
public void onUplink(LwM2mClient client) { public void onUplink(LwM2mClient client) {
PowerMode powerMode = client.getPowerMode(); PowerMode powerMode = client.getPowerMode();
OtherConfiguration profileSettings = null; OtherConfiguration profileSettings = null;
if (powerMode == null) { if (powerMode == null && client.getProfileId() != null) {
if (client.getProfileId() == null) { var clientProfile = getProfile(client.getProfileId());
powerMode = PowerMode.DRX; profileSettings = clientProfile.getClientLwM2mSettings();
} else { powerMode = profileSettings.getPowerMode();
var clientProfile = getProfile(client.getProfileId());
profileSettings = clientProfile.getClientLwM2mSettings();
powerMode = profileSettings.getPowerMode();
if (powerMode == null) {
powerMode = PowerMode.DRX;
}
}
} }
if (PowerMode.DRX.equals(powerMode)) { if (powerMode == null || PowerMode.DRX.equals(powerMode)) {
client.updateLastUplinkTime(); client.updateLastUplinkTime();
return; return;
} }