Commit e83064ece73ec11726c131e56c47949f6d70e7e2

Authored by Andrii Shvaika
1 parent 3a82c227

Refactoring of the LwM2MTransport

Showing 14 changed files with 98 additions and 167 deletions
@@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
14 <logger name="org.springframework.boot.test" level="WARN"/> 14 <logger name="org.springframework.boot.test" level="WARN"/>
15 <logger name="org.apache.cassandra" level="WARN"/> 15 <logger name="org.apache.cassandra" level="WARN"/>
16 <logger name="org.cassandraunit" level="INFO"/> 16 <logger name="org.cassandraunit" level="INFO"/>
17 - <logger name="org.eclipse.leshan" level="TRACE"/> 17 + <logger name="org.eclipse.leshan" level="INFO"/>
18 18
19 19
20 <root level="WARN"> 20 <root level="WARN">
@@ -42,14 +42,12 @@ public class OtaPackageTransportResource extends AbstractCoapTransportResource { @@ -42,14 +42,12 @@ public class OtaPackageTransportResource extends AbstractCoapTransportResource {
42 private static final int ACCESS_TOKEN_POSITION = 2; 42 private static final int ACCESS_TOKEN_POSITION = 2;
43 43
44 private final OtaPackageType otaPackageType; 44 private final OtaPackageType otaPackageType;
45 - private final ExecutorService sendOtaDataOutUriLarge;  
46 45
47 public OtaPackageTransportResource(CoapTransportContext ctx, OtaPackageType otaPackageType) { 46 public OtaPackageTransportResource(CoapTransportContext ctx, OtaPackageType otaPackageType) {
48 super(ctx, otaPackageType.getKeyPrefix()); 47 super(ctx, otaPackageType.getKeyPrefix());
49 this.otaPackageType = otaPackageType; 48 this.otaPackageType = otaPackageType;
50 49
51 this.setObservable(true); 50 this.setObservable(true);
52 - this.sendOtaDataOutUriLarge = ThingsBoardExecutors.newWorkStealingPool(10, "LwM2M sendOtaDataOutUriLarge");  
53 } 51 }
54 52
55 @Override 53 @Override
@@ -140,46 +138,12 @@ public class OtaPackageTransportResource extends AbstractCoapTransportResource { @@ -140,46 +138,12 @@ public class OtaPackageTransportResource extends AbstractCoapTransportResource {
140 Response response = new Response(CoAP.ResponseCode.CONTENT); 138 Response response = new Response(CoAP.ResponseCode.CONTENT);
141 if (data != null && data.length > 0) { 139 if (data != null && data.length > 0) {
142 response.setPayload(data); 140 response.setPayload(data);
143 -// response.getOptions().setAccept(MediaTypeRegistry.APPLICATION_OCTET_STREAM);  
144 if (exchange.getRequestOptions().getBlock2() != null) { 141 if (exchange.getRequestOptions().getBlock2() != null) {
145 int chunkSize = exchange.getRequestOptions().getBlock2().getSzx(); 142 int chunkSize = exchange.getRequestOptions().getBlock2().getSzx();
146 boolean lastFlag = data.length <= chunkSize; 143 boolean lastFlag = data.length <= chunkSize;
147 - this.sendOtaDataOutUriLarge.submit(() -> {  
148 - response.getOptions().setBlock2(chunkSize, lastFlag, 0);  
149 - }); }  
150 - exchange.respond(response);  
151 - }  
152 - }  
153 -  
154 - public class CoapResourceObserver implements ResourceObserver {  
155 - @Override  
156 - public void changedName(String old) {  
157 -  
158 - }  
159 -  
160 - @Override  
161 - public void changedPath(String old) {  
162 -  
163 - }  
164 -  
165 - @Override  
166 - public void addedChild(Resource child) {  
167 -  
168 - }  
169 -  
170 - @Override  
171 - public void removedChild(Resource child) {  
172 -  
173 - }  
174 -  
175 - @Override  
176 - public void addedObserveRelation(ObserveRelation relation) {  
177 -  
178 - }  
179 -  
180 - @Override  
181 - public void removedObserveRelation(ObserveRelation relation) {  
182 - 144 + response.getOptions().setBlock2(chunkSize, lastFlag, 0);
  145 + }
  146 + transportContext.getExecutor().submit(() -> exchange.respond(response));
183 } 147 }
184 } 148 }
185 149
@@ -142,7 +142,7 @@ public class LwM2MTransportServerConfig implements LwM2MSecureServerConfig { @@ -142,7 +142,7 @@ public class LwM2MTransportServerConfig implements LwM2MSecureServerConfig {
142 URI uri = null; 142 URI uri = null;
143 try { 143 try {
144 uri = Resources.getResource(keyStorePathFile).toURI(); 144 uri = Resources.getResource(keyStorePathFile).toURI();
145 - log.error("URI: {}", uri); 145 + log.info("URI: {}", uri);
146 File keyStoreFile = new File(uri); 146 File keyStoreFile = new File(uri);
147 InputStream inKeyStore = new FileInputStream(keyStoreFile); 147 InputStream inKeyStore = new FileInputStream(keyStoreFile);
148 keyStoreValue = KeyStore.getInstance(keyStoreType); 148 keyStoreValue = KeyStore.getInstance(keyStoreType);
@@ -59,12 +59,12 @@ public class LwM2mCredentialsSecurityInfoValidator { @@ -59,12 +59,12 @@ public class LwM2mCredentialsSecurityInfoValidator {
59 public TbLwM2MSecurityInfo getEndpointSecurityInfoByCredentialsId(String credentialsId, LwM2mTypeServer keyValue) { 59 public TbLwM2MSecurityInfo getEndpointSecurityInfoByCredentialsId(String credentialsId, LwM2mTypeServer keyValue) {
60 CountDownLatch latch = new CountDownLatch(1); 60 CountDownLatch latch = new CountDownLatch(1);
61 final TbLwM2MSecurityInfo[] resultSecurityStore = new TbLwM2MSecurityInfo[1]; 61 final TbLwM2MSecurityInfo[] resultSecurityStore = new TbLwM2MSecurityInfo[1];
62 - log.warn("001) [{}]", credentialsId); 62 + log.trace("Validating credentials [{}]", credentialsId);
63 context.getTransportService().process(ValidateDeviceLwM2MCredentialsRequestMsg.newBuilder().setCredentialsId(credentialsId).build(), 63 context.getTransportService().process(ValidateDeviceLwM2MCredentialsRequestMsg.newBuilder().setCredentialsId(credentialsId).build(),
64 new TransportServiceCallback<>() { 64 new TransportServiceCallback<>() {
65 @Override 65 @Override
66 public void onSuccess(ValidateDeviceCredentialsResponse msg) { 66 public void onSuccess(ValidateDeviceCredentialsResponse msg) {
67 - log.warn("002) [{}] [{}]", credentialsId, msg); 67 + log.trace("Validated credentials: [{}] [{}]", credentialsId, msg);
68 String credentialsBody = msg.getCredentials(); 68 String credentialsBody = msg.getCredentials();
69 resultSecurityStore[0] = createSecurityInfo(credentialsId, credentialsBody, keyValue); 69 resultSecurityStore[0] = createSecurityInfo(credentialsId, credentialsBody, keyValue);
70 resultSecurityStore[0].setMsg(msg); 70 resultSecurityStore[0].setMsg(msg);
@@ -74,7 +74,6 @@ public class LwM2mCredentialsSecurityInfoValidator { @@ -74,7 +74,6 @@ public class LwM2mCredentialsSecurityInfoValidator {
74 74
75 @Override 75 @Override
76 public void onError(Throwable e) { 76 public void onError(Throwable e) {
77 - log.warn("003) [{}] [{}] Failed to process credentials ", credentialsId, e);  
78 log.trace("[{}] [{}] Failed to process credentials ", credentialsId, e); 77 log.trace("[{}] [{}] Failed to process credentials ", credentialsId, e);
79 resultSecurityStore[0] = createSecurityInfo(credentialsId, null, null); 78 resultSecurityStore[0] = createSecurityInfo(credentialsId, null, null);
80 latch.countDown(); 79 latch.countDown();
@@ -46,10 +46,10 @@ import org.thingsboard.server.common.data.device.profile.Lwm2mDeviceProfileTrans @@ -46,10 +46,10 @@ import org.thingsboard.server.common.data.device.profile.Lwm2mDeviceProfileTrans
46 import org.thingsboard.server.common.transport.TransportServiceCallback; 46 import org.thingsboard.server.common.transport.TransportServiceCallback;
47 import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient; 47 import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient;
48 import org.thingsboard.server.transport.lwm2m.server.client.ResourceValue; 48 import org.thingsboard.server.transport.lwm2m.server.client.ResourceValue;
49 -import org.thingsboard.server.transport.lwm2m.server.ota.firmware.UpdateResultFw;  
50 -import org.thingsboard.server.transport.lwm2m.server.ota.firmware.UpdateStateFw;  
51 -import org.thingsboard.server.transport.lwm2m.server.ota.software.UpdateResultSw;  
52 -import org.thingsboard.server.transport.lwm2m.server.ota.software.UpdateStateSw; 49 +import org.thingsboard.server.transport.lwm2m.server.ota.firmware.FirmwareUpdateResult;
  50 +import org.thingsboard.server.transport.lwm2m.server.ota.firmware.FirmwareUpdateState;
  51 +import org.thingsboard.server.transport.lwm2m.server.ota.software.SoftwareUpdateResult;
  52 +import org.thingsboard.server.transport.lwm2m.server.ota.software.SoftwareUpdateState;
53 import org.thingsboard.server.transport.lwm2m.server.uplink.DefaultLwM2MUplinkMsgHandler; 53 import org.thingsboard.server.transport.lwm2m.server.uplink.DefaultLwM2MUplinkMsgHandler;
54 54
55 import java.util.ArrayList; 55 import java.util.ArrayList;
@@ -148,19 +148,19 @@ public class LwM2mTransportUtil { @@ -148,19 +148,19 @@ public class LwM2mTransportUtil {
148 if (path != null) { 148 if (path != null) {
149 if (FW_STATE_ID.equals(path)) { 149 if (FW_STATE_ID.equals(path)) {
150 lwM2mOtaConvert.setCurrentType(STRING); 150 lwM2mOtaConvert.setCurrentType(STRING);
151 - lwM2mOtaConvert.setValue(UpdateStateFw.fromStateFwByCode(((Long) value).intValue()).type); 151 + lwM2mOtaConvert.setValue(FirmwareUpdateState.fromStateFwByCode(((Long) value).intValue()).type);
152 return lwM2mOtaConvert; 152 return lwM2mOtaConvert;
153 } else if (FW_RESULT_ID.equals(path)) { 153 } else if (FW_RESULT_ID.equals(path)) {
154 lwM2mOtaConvert.setCurrentType(STRING); 154 lwM2mOtaConvert.setCurrentType(STRING);
155 - lwM2mOtaConvert.setValue(UpdateResultFw.fromUpdateResultFwByCode(((Long) value).intValue()).getType()); 155 + lwM2mOtaConvert.setValue(FirmwareUpdateResult.fromUpdateResultFwByCode(((Long) value).intValue()).getType());
156 return lwM2mOtaConvert; 156 return lwM2mOtaConvert;
157 } else if (SW_UPDATE_STATE_ID.equals(path)) { 157 } else if (SW_UPDATE_STATE_ID.equals(path)) {
158 lwM2mOtaConvert.setCurrentType(STRING); 158 lwM2mOtaConvert.setCurrentType(STRING);
159 - lwM2mOtaConvert.setValue(UpdateStateSw.fromUpdateStateSwByCode(((Long) value).intValue()).type); 159 + lwM2mOtaConvert.setValue(SoftwareUpdateState.fromUpdateStateSwByCode(((Long) value).intValue()).type);
160 return lwM2mOtaConvert; 160 return lwM2mOtaConvert;
161 } else if (SW_RESULT_ID.equals(path)) { 161 } else if (SW_RESULT_ID.equals(path)) {
162 lwM2mOtaConvert.setCurrentType(STRING); 162 lwM2mOtaConvert.setCurrentType(STRING);
163 - lwM2mOtaConvert.setValue(UpdateResultSw.fromUpdateResultSwByCode(((Long) value).intValue()).type); 163 + lwM2mOtaConvert.setValue(SoftwareUpdateResult.fromUpdateResultSwByCode(((Long) value).intValue()).type);
164 return lwM2mOtaConvert; 164 return lwM2mOtaConvert;
165 } 165 }
166 } 166 }
@@ -435,19 +435,6 @@ public class LwM2mTransportUtil { @@ -435,19 +435,6 @@ public class LwM2mTransportUtil {
435 } 435 }
436 } 436 }
437 437
438 -// public static boolean isFwSwWords(String pathName) {  
439 -// return OtaPackageUtil.getAttributeKey(OtaPackageType.FIRMWARE, OtaPackageKey.VERSION).equals(pathName)  
440 -// || OtaPackageUtil.getAttributeKey(OtaPackageType.FIRMWARE, OtaPackageKey.TITLE).equals(pathName)  
441 -// || OtaPackageUtil.getAttributeKey(OtaPackageType.FIRMWARE, OtaPackageKey.CHECKSUM).equals(pathName)  
442 -// || OtaPackageUtil.getAttributeKey(OtaPackageType.FIRMWARE, OtaPackageKey.CHECKSUM_ALGORITHM).equals(pathName)  
443 -// || OtaPackageUtil.getAttributeKey(OtaPackageType.FIRMWARE, OtaPackageKey.SIZE).equals(pathName)  
444 -// || OtaPackageUtil.getAttributeKey(OtaPackageType.SOFTWARE, OtaPackageKey.VERSION).equals(pathName)  
445 -// || OtaPackageUtil.getAttributeKey(OtaPackageType.SOFTWARE, OtaPackageKey.TITLE).equals(pathName)  
446 -// || OtaPackageUtil.getAttributeKey(OtaPackageType.SOFTWARE, OtaPackageKey.CHECKSUM).equals(pathName)  
447 -// || OtaPackageUtil.getAttributeKey(OtaPackageType.SOFTWARE, OtaPackageKey.CHECKSUM_ALGORITHM).equals(pathName)  
448 -// || OtaPackageUtil.getAttributeKey(OtaPackageType.SOFTWARE, OtaPackageKey.SIZE).equals(pathName);  
449 -// }  
450 -  
451 /** 438 /**
452 * @param lwM2MClient - 439 * @param lwM2MClient -
453 * @param path - 440 * @param path -
@@ -25,6 +25,7 @@ import org.springframework.stereotype.Service; @@ -25,6 +25,7 @@ import org.springframework.stereotype.Service;
25 import org.thingsboard.common.util.DonAsynchron; 25 import org.thingsboard.common.util.DonAsynchron;
26 import org.thingsboard.server.cache.ota.OtaPackageDataCache; 26 import org.thingsboard.server.cache.ota.OtaPackageDataCache;
27 import org.thingsboard.server.common.data.StringUtils; 27 import org.thingsboard.server.common.data.StringUtils;
  28 +import org.thingsboard.server.common.data.device.data.lwm2m.OtherConfiguration;
28 import org.thingsboard.server.common.data.ota.OtaPackageKey; 29 import org.thingsboard.server.common.data.ota.OtaPackageKey;
29 import org.thingsboard.server.common.data.ota.OtaPackageType; 30 import org.thingsboard.server.common.data.ota.OtaPackageType;
30 import org.thingsboard.server.common.data.ota.OtaPackageUpdateStatus; 31 import org.thingsboard.server.common.data.ota.OtaPackageUpdateStatus;
@@ -45,12 +46,12 @@ import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MWriteReplac @@ -45,12 +46,12 @@ import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MWriteReplac
45 import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MWriteResponseCallback; 46 import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MWriteResponseCallback;
46 import org.thingsboard.server.transport.lwm2m.server.log.LwM2MTelemetryLogService; 47 import org.thingsboard.server.transport.lwm2m.server.log.LwM2MTelemetryLogService;
47 import org.thingsboard.server.transport.lwm2m.server.ota.firmware.LwM2MFirmwareUpdateStrategy; 48 import org.thingsboard.server.transport.lwm2m.server.ota.firmware.LwM2MFirmwareUpdateStrategy;
48 -import org.thingsboard.server.transport.lwm2m.server.ota.firmware.UpdateDeliveryFw;  
49 -import org.thingsboard.server.transport.lwm2m.server.ota.firmware.UpdateResultFw;  
50 -import org.thingsboard.server.transport.lwm2m.server.ota.firmware.UpdateStateFw; 49 +import org.thingsboard.server.transport.lwm2m.server.ota.firmware.FirmwareDeliveryMethod;
  50 +import org.thingsboard.server.transport.lwm2m.server.ota.firmware.FirmwareUpdateResult;
  51 +import org.thingsboard.server.transport.lwm2m.server.ota.firmware.FirmwareUpdateState;
51 import org.thingsboard.server.transport.lwm2m.server.ota.software.LwM2MSoftwareUpdateStrategy; 52 import org.thingsboard.server.transport.lwm2m.server.ota.software.LwM2MSoftwareUpdateStrategy;
52 -import org.thingsboard.server.transport.lwm2m.server.ota.software.UpdateResultSw;  
53 -import org.thingsboard.server.transport.lwm2m.server.ota.software.UpdateStateSw; 53 +import org.thingsboard.server.transport.lwm2m.server.ota.software.SoftwareUpdateResult;
  54 +import org.thingsboard.server.transport.lwm2m.server.ota.software.SoftwareUpdateState;
54 import org.thingsboard.server.transport.lwm2m.server.uplink.LwM2mUplinkMsgHandler; 55 import org.thingsboard.server.transport.lwm2m.server.uplink.LwM2mUplinkMsgHandler;
55 56
56 import javax.annotation.PostConstruct; 57 import javax.annotation.PostConstruct;
@@ -201,20 +202,20 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl @@ -201,20 +202,20 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl
201 } 202 }
202 203
203 @Override 204 @Override
204 - public void onCurrentFirmwareStrategyUpdate(LwM2mClient client, Integer newStrategy, String newBaseUrl) {  
205 - log.debug("[{}] Current fw strategy: {}", client.getEndpoint(), newStrategy); 205 + public void onCurrentFirmwareStrategyUpdate(LwM2mClient client, OtherConfiguration configuration) {
  206 + log.debug("[{}] Current fw strategy: {}", client.getEndpoint(), configuration.getFwUpdateStrategy());
206 LwM2MClientOtaInfo fwInfo = getOrInitFwInfo(client); 207 LwM2MClientOtaInfo fwInfo = getOrInitFwInfo(client);
207 - fwInfo.setFwStrategy(LwM2MFirmwareUpdateStrategy.fromStrategyFwByCode(newStrategy));  
208 - fwInfo.setBaseUrl(newBaseUrl); 208 + fwInfo.setFwStrategy(LwM2MFirmwareUpdateStrategy.fromStrategyFwByCode(configuration.getFwUpdateStrategy()));
  209 + fwInfo.setBaseUrl(configuration.getFwUpdateRecourse());
209 startFirmwareUpdateIfNeeded(client, fwInfo); 210 startFirmwareUpdateIfNeeded(client, fwInfo);
210 } 211 }
211 212
212 @Override 213 @Override
213 - public void onCurrentSoftwareStrategyUpdate(LwM2mClient client, Integer newStrategy, String newBaseUrl) {  
214 - log.debug("[{}] Current sw strategy: {}", client.getEndpoint(), newStrategy); 214 + public void onCurrentSoftwareStrategyUpdate(LwM2mClient client, OtherConfiguration configuration) {
  215 + log.debug("[{}] Current sw strategy: {}", client.getEndpoint(), configuration.getSwUpdateStrategy());
215 LwM2MClientOtaInfo swInfo = getOrInitSwInfo(client); 216 LwM2MClientOtaInfo swInfo = getOrInitSwInfo(client);
216 - swInfo.setSwStrategy(LwM2MSoftwareUpdateStrategy.fromStrategySwByCode(newStrategy));  
217 - swInfo.setBaseUrl(newBaseUrl); 217 + swInfo.setSwStrategy(LwM2MSoftwareUpdateStrategy.fromStrategySwByCode(configuration.getSwUpdateStrategy()));
  218 + swInfo.setBaseUrl(configuration.getSwUpdateRecourse());
218 startSoftwareUpdateIfNeeded(client, swInfo); 219 startSoftwareUpdateIfNeeded(client, swInfo);
219 } 220 }
220 221
@@ -236,8 +237,8 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl @@ -236,8 +237,8 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl
236 public void onCurrentFirmwareStateUpdate(LwM2mClient client, Long stateCode) { 237 public void onCurrentFirmwareStateUpdate(LwM2mClient client, Long stateCode) {
237 log.debug("[{}] Current fw state: {}", client.getEndpoint(), stateCode); 238 log.debug("[{}] Current fw state: {}", client.getEndpoint(), stateCode);
238 LwM2MClientOtaInfo fwInfo = getOrInitFwInfo(client); 239 LwM2MClientOtaInfo fwInfo = getOrInitFwInfo(client);
239 - UpdateStateFw state = UpdateStateFw.fromStateFwByCode(stateCode.intValue());  
240 - if (UpdateStateFw.DOWNLOADED.equals(state)) { 240 + FirmwareUpdateState state = FirmwareUpdateState.fromStateFwByCode(stateCode.intValue());
  241 + if (FirmwareUpdateState.DOWNLOADED.equals(state)) {
241 executeFwUpdate(client); 242 executeFwUpdate(client);
242 } 243 }
243 fwInfo.setUpdateState(state); 244 fwInfo.setUpdateState(state);
@@ -250,7 +251,7 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl @@ -250,7 +251,7 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl
250 public void onCurrentFirmwareResultUpdate(LwM2mClient client, Long code) { 251 public void onCurrentFirmwareResultUpdate(LwM2mClient client, Long code) {
251 log.debug("[{}] Current fw result: {}", client.getEndpoint(), code); 252 log.debug("[{}] Current fw result: {}", client.getEndpoint(), code);
252 LwM2MClientOtaInfo fwInfo = getOrInitFwInfo(client); 253 LwM2MClientOtaInfo fwInfo = getOrInitFwInfo(client);
253 - UpdateResultFw result = UpdateResultFw.fromUpdateResultFwByCode(code.intValue()); 254 + FirmwareUpdateResult result = FirmwareUpdateResult.fromUpdateResultFwByCode(code.intValue());
254 Optional<OtaPackageUpdateStatus> status = this.toOtaPackageUpdateStatus(result); 255 Optional<OtaPackageUpdateStatus> status = this.toOtaPackageUpdateStatus(result);
255 status.ifPresent(otaStatus -> sendStateUpdateToTelemetry(client, fwInfo, 256 status.ifPresent(otaStatus -> sendStateUpdateToTelemetry(client, fwInfo,
256 otaStatus, "Firmware Update Result: " + result.name())); 257 otaStatus, "Firmware Update Result: " + result.name()));
@@ -324,10 +325,10 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl @@ -324,10 +325,10 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl
324 if (TransportProtos.ResponseStatus.SUCCESS.equals(response.getResponseStatus())) { 325 if (TransportProtos.ResponseStatus.SUCCESS.equals(response.getResponseStatus())) {
325 UUID otaPackageId = new UUID(response.getOtaPackageIdMSB(), response.getOtaPackageIdLSB()); 326 UUID otaPackageId = new UUID(response.getOtaPackageIdMSB(), response.getOtaPackageIdLSB());
326 LwM2MFirmwareUpdateStrategy strategy; 327 LwM2MFirmwareUpdateStrategy strategy;
327 - if (fwInfo.getDeliveryMethod() == null || fwInfo.getDeliveryMethod() == UpdateDeliveryFw.BOTH.code) { 328 + if (fwInfo.getDeliveryMethod() == null || fwInfo.getDeliveryMethod() == FirmwareDeliveryMethod.BOTH.code) {
328 strategy = fwInfo.getFwStrategy(); 329 strategy = fwInfo.getFwStrategy();
329 } else { 330 } else {
330 - strategy = fwInfo.getDeliveryMethod() == UpdateDeliveryFw.PULL.code ? LwM2MFirmwareUpdateStrategy.OBJ_5_TEMP_URL : LwM2MFirmwareUpdateStrategy.OBJ_5_BINARY; 331 + strategy = fwInfo.getDeliveryMethod() == FirmwareDeliveryMethod.PULL.code ? LwM2MFirmwareUpdateStrategy.OBJ_5_TEMP_URL : LwM2MFirmwareUpdateStrategy.OBJ_5_BINARY;
331 } 332 }
332 switch (strategy) { 333 switch (strategy) {
333 case OBJ_5_BINARY: 334 case OBJ_5_BINARY:
@@ -405,8 +406,8 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl @@ -405,8 +406,8 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl
405 helper.sendParametersOnThingsboardTelemetry(result, client.getSession()); 406 helper.sendParametersOnThingsboardTelemetry(result, client.getSession());
406 } 407 }
407 408
408 - private static Optional<OtaPackageUpdateStatus> toOtaPackageUpdateStatus(UpdateResultFw updateResultFw) {  
409 - switch (updateResultFw) { 409 + private static Optional<OtaPackageUpdateStatus> toOtaPackageUpdateStatus(FirmwareUpdateResult fwUpdateResult) {
  410 + switch (fwUpdateResult) {
410 case INITIAL: 411 case INITIAL:
411 return Optional.empty(); 412 return Optional.empty();
412 case UPDATE_SUCCESSFULLY: 413 case UPDATE_SUCCESSFULLY:
@@ -421,12 +422,12 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl @@ -421,12 +422,12 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl
421 case UNSUPPORTED_PROTOCOL: 422 case UNSUPPORTED_PROTOCOL:
422 return Optional.of(FAILED); 423 return Optional.of(FAILED);
423 default: 424 default:
424 - throw new CodecException("Invalid value stateFw %s for FirmwareUpdateStatus.", updateResultFw.name()); 425 + throw new CodecException("Invalid value stateFw %s for FirmwareUpdateStatus.", fwUpdateResult.name());
425 } 426 }
426 } 427 }
427 428
428 - private static Optional<OtaPackageUpdateStatus> toOtaPackageUpdateStatus(UpdateStateFw updateStateFw) {  
429 - switch (updateStateFw) { 429 + private static Optional<OtaPackageUpdateStatus> toOtaPackageUpdateStatus(FirmwareUpdateState firmwareUpdateState) {
  430 + switch (firmwareUpdateState) {
430 case IDLE: 431 case IDLE:
431 return Optional.empty(); 432 return Optional.empty();
432 case DOWNLOADING: 433 case DOWNLOADING:
@@ -436,7 +437,7 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl @@ -436,7 +437,7 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl
436 case UPDATING: 437 case UPDATING:
437 return Optional.of(UPDATING); 438 return Optional.of(UPDATING);
438 default: 439 default:
439 - throw new CodecException("Invalid value stateFw %d for FirmwareUpdateStatus.", updateStateFw); 440 + throw new CodecException("Invalid value stateFw %d for FirmwareUpdateStatus.", firmwareUpdateState);
440 } 441 }
441 } 442 }
442 443
@@ -444,10 +445,10 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl @@ -444,10 +445,10 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl
444 * FirmwareUpdateStatus { 445 * FirmwareUpdateStatus {
445 * DOWNLOADING, DOWNLOADED, VERIFIED, UPDATING, UPDATED, FAILED 446 * DOWNLOADING, DOWNLOADED, VERIFIED, UPDATING, UPDATED, FAILED
446 */ 447 */
447 - public static Optional<OtaPackageUpdateStatus> toSwSateResultUpdateStatus(UpdateStateSw updateStateSw, UpdateResultSw updateResultSw) {  
448 - switch (updateResultSw) { 448 + public static Optional<OtaPackageUpdateStatus> toSwSateResultUpdateStatus(SoftwareUpdateState softwareUpdateState, SoftwareUpdateResult softwareUpdateResult) {
  449 + switch (softwareUpdateResult) {
449 case INITIAL: 450 case INITIAL:
450 - switch (updateStateSw) { 451 + switch (softwareUpdateState) {
451 case INITIAL: 452 case INITIAL:
452 case DOWNLOAD_STARTED: 453 case DOWNLOAD_STARTED:
453 return Optional.of(DOWNLOADING); 454 return Optional.of(DOWNLOADING);
@@ -473,10 +474,8 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl @@ -473,10 +474,8 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl
473 case UN_INSTALL_FAILURE: 474 case UN_INSTALL_FAILURE:
474 return Optional.of(FAILED); 475 return Optional.of(FAILED);
475 default: 476 default:
476 - throw new CodecException("Invalid value stateFw %s %s for FirmwareUpdateStatus.", updateStateSw.name(), updateResultSw.name()); 477 + throw new CodecException("Invalid value stateFw %s %s for FirmwareUpdateStatus.", softwareUpdateState.name(), softwareUpdateResult.name());
477 } 478 }
478 } 479 }
479 480
480 -  
481 -  
482 } 481 }
@@ -19,8 +19,8 @@ import lombok.Data; @@ -19,8 +19,8 @@ import lombok.Data;
19 import org.thingsboard.server.common.data.StringUtils; 19 import org.thingsboard.server.common.data.StringUtils;
20 import org.thingsboard.server.common.data.ota.OtaPackageType; 20 import org.thingsboard.server.common.data.ota.OtaPackageType;
21 import org.thingsboard.server.transport.lwm2m.server.ota.firmware.LwM2MFirmwareUpdateStrategy; 21 import org.thingsboard.server.transport.lwm2m.server.ota.firmware.LwM2MFirmwareUpdateStrategy;
22 -import org.thingsboard.server.transport.lwm2m.server.ota.firmware.UpdateResultFw;  
23 -import org.thingsboard.server.transport.lwm2m.server.ota.firmware.UpdateStateFw; 22 +import org.thingsboard.server.transport.lwm2m.server.ota.firmware.FirmwareUpdateResult;
  23 +import org.thingsboard.server.transport.lwm2m.server.ota.firmware.FirmwareUpdateState;
24 import org.thingsboard.server.transport.lwm2m.server.ota.software.LwM2MSoftwareUpdateStrategy; 24 import org.thingsboard.server.transport.lwm2m.server.ota.software.LwM2MSoftwareUpdateStrategy;
25 25
26 import java.util.Optional; 26 import java.util.Optional;
@@ -47,8 +47,8 @@ public class LwM2MClientOtaInfo { @@ -47,8 +47,8 @@ public class LwM2MClientOtaInfo {
47 //TODO: use value from device if applicable; 47 //TODO: use value from device if applicable;
48 private LwM2MFirmwareUpdateStrategy fwStrategy; 48 private LwM2MFirmwareUpdateStrategy fwStrategy;
49 private LwM2MSoftwareUpdateStrategy swStrategy; 49 private LwM2MSoftwareUpdateStrategy swStrategy;
50 - private UpdateStateFw updateState;  
51 - private UpdateResultFw updateResult; 50 + private FirmwareUpdateState updateState;
  51 + private FirmwareUpdateResult updateResult;
52 52
53 private String failedPackageId; 53 private String failedPackageId;
54 private int retryAttempts; 54 private int retryAttempts;
@@ -90,7 +90,7 @@ public class LwM2MClientOtaInfo { @@ -90,7 +90,7 @@ public class LwM2MClientOtaInfo {
90 return StringUtils.isNotEmpty(currentName) || StringUtils.isNotEmpty(currentVersion5) || StringUtils.isNotEmpty(currentVersion3); 90 return StringUtils.isNotEmpty(currentName) || StringUtils.isNotEmpty(currentVersion5) || StringUtils.isNotEmpty(currentVersion3);
91 } 91 }
92 92
93 - public void setUpdateResult(UpdateResultFw updateResult) { 93 + public void setUpdateResult(FirmwareUpdateResult updateResult) {
94 this.updateResult = updateResult; 94 this.updateResult = updateResult;
95 switch (updateResult) { 95 switch (updateResult) {
96 case INITIAL: 96 case INITIAL:
@@ -15,6 +15,7 @@ @@ -15,6 +15,7 @@
15 */ 15 */
16 package org.thingsboard.server.transport.lwm2m.server.ota; 16 package org.thingsboard.server.transport.lwm2m.server.ota;
17 17
  18 +import org.thingsboard.server.common.data.device.data.lwm2m.OtherConfiguration;
18 import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient; 19 import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient;
19 20
20 import java.util.Optional; 21 import java.util.Optional;
@@ -31,9 +32,9 @@ public interface LwM2MOtaUpdateService { @@ -31,9 +32,9 @@ public interface LwM2MOtaUpdateService {
31 32
32 void onCurrentFirmwareNameUpdate(LwM2mClient client, String name); 33 void onCurrentFirmwareNameUpdate(LwM2mClient client, String name);
33 34
34 - void onCurrentFirmwareStrategyUpdate(LwM2mClient client, Integer newStrategy, String newBaseUrl); 35 + void onCurrentFirmwareStrategyUpdate(LwM2mClient client, OtherConfiguration configuration);
35 36
36 - void onCurrentSoftwareStrategyUpdate(LwM2mClient client, Integer newStrategy, String newBaseUrl); 37 + void onCurrentSoftwareStrategyUpdate(LwM2mClient client, OtherConfiguration configuration);
37 38
38 void onCurrentFirmwareVersion3Update(LwM2mClient client, String version); 39 void onCurrentFirmwareVersion3Update(LwM2mClient client, String version);
39 40
common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/ota/firmware/FirmwareDeliveryMethod.java renamed from common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/ota/firmware/UpdateDeliveryFw.java
@@ -15,14 +15,7 @@ @@ -15,14 +15,7 @@
15 */ 15 */
16 package org.thingsboard.server.transport.lwm2m.server.ota.firmware; 16 package org.thingsboard.server.transport.lwm2m.server.ota.firmware;
17 17
18 -/**  
19 - * /** Delivery Method R  
20 - * 0: Pull only  
21 - * 1: Push only  
22 - * 2: Both:  
23 - * - In this case the LwM2M Server MAY choose the preferred mechanism for conveying the firmware image to the LwM2M Client.  
24 - */  
25 -public enum UpdateDeliveryFw { 18 +public enum FirmwareDeliveryMethod {
26 PULL(0, "Pull only"), 19 PULL(0, "Pull only"),
27 PUSH(1, "Push only"), 20 PUSH(1, "Push only"),
28 BOTH(2, "Push or Push"); 21 BOTH(2, "Push or Push");
@@ -30,13 +23,13 @@ public enum UpdateDeliveryFw { @@ -30,13 +23,13 @@ public enum UpdateDeliveryFw {
30 public int code; 23 public int code;
31 public String type; 24 public String type;
32 25
33 - UpdateDeliveryFw(int code, String type) { 26 + FirmwareDeliveryMethod(int code, String type) {
34 this.code = code; 27 this.code = code;
35 this.type = type; 28 this.type = type;
36 } 29 }
37 30
38 - public static UpdateDeliveryFw fromStateFwByType(String type) {  
39 - for (UpdateDeliveryFw to : UpdateDeliveryFw.values()) { 31 + public static FirmwareDeliveryMethod fromStateFwByType(String type) {
  32 + for (FirmwareDeliveryMethod to : FirmwareDeliveryMethod.values()) {
40 if (to.type.equals(type)) { 33 if (to.type.equals(type)) {
41 return to; 34 return to;
42 } 35 }
@@ -44,8 +37,8 @@ public enum UpdateDeliveryFw { @@ -44,8 +37,8 @@ public enum UpdateDeliveryFw {
44 throw new IllegalArgumentException(String.format("Unsupported FW delivery type : %s", type)); 37 throw new IllegalArgumentException(String.format("Unsupported FW delivery type : %s", type));
45 } 38 }
46 39
47 - public static UpdateDeliveryFw fromStateFwByCode(int code) {  
48 - for (UpdateDeliveryFw to : UpdateDeliveryFw.values()) { 40 + public static FirmwareDeliveryMethod fromStateFwByCode(int code) {
  41 + for (FirmwareDeliveryMethod to : FirmwareDeliveryMethod.values()) {
49 if (to.code == code) { 42 if (to.code == code) {
50 return to; 43 return to;
51 } 44 }
common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/ota/firmware/FirmwareUpdateResult.java renamed from common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/ota/firmware/UpdateResultFw.java
@@ -30,7 +30,7 @@ import lombok.Getter; @@ -30,7 +30,7 @@ import lombok.Getter;
30 * 8: Firmware update failed. 30 * 8: Firmware update failed.
31 * 9: Unsupported protocol. 31 * 9: Unsupported protocol.
32 */ 32 */
33 -public enum UpdateResultFw { 33 +public enum FirmwareUpdateResult {
34 INITIAL(0, "Initial value", false), 34 INITIAL(0, "Initial value", false),
35 UPDATE_SUCCESSFULLY(1, "Firmware updated successfully", false), 35 UPDATE_SUCCESSFULLY(1, "Firmware updated successfully", false),
36 NOT_ENOUGH(2, "Not enough flash memory for the new firmware package", false), 36 NOT_ENOUGH(2, "Not enough flash memory for the new firmware package", false),
@@ -49,14 +49,14 @@ public enum UpdateResultFw { @@ -49,14 +49,14 @@ public enum UpdateResultFw {
49 @Getter 49 @Getter
50 private boolean again; 50 private boolean again;
51 51
52 - UpdateResultFw(int code, String type, boolean isAgain) { 52 + FirmwareUpdateResult(int code, String type, boolean isAgain) {
53 this.code = code; 53 this.code = code;
54 this.type = type; 54 this.type = type;
55 this.again = isAgain; 55 this.again = isAgain;
56 } 56 }
57 57
58 - public static UpdateResultFw fromUpdateResultFwByType(String type) {  
59 - for (UpdateResultFw to : UpdateResultFw.values()) { 58 + public static FirmwareUpdateResult fromUpdateResultFwByType(String type) {
  59 + for (FirmwareUpdateResult to : FirmwareUpdateResult.values()) {
60 if (to.type.equals(type)) { 60 if (to.type.equals(type)) {
61 return to; 61 return to;
62 } 62 }
@@ -64,8 +64,8 @@ public enum UpdateResultFw { @@ -64,8 +64,8 @@ public enum UpdateResultFw {
64 throw new IllegalArgumentException(String.format("Unsupported FW Update Result type : %s", type)); 64 throw new IllegalArgumentException(String.format("Unsupported FW Update Result type : %s", type));
65 } 65 }
66 66
67 - public static UpdateResultFw fromUpdateResultFwByCode(int code) {  
68 - for (UpdateResultFw to : UpdateResultFw.values()) { 67 + public static FirmwareUpdateResult fromUpdateResultFwByCode(int code) {
  68 + for (FirmwareUpdateResult to : FirmwareUpdateResult.values()) {
69 if (to.code == code) { 69 if (to.code == code) {
70 return to; 70 return to;
71 } 71 }
common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/ota/firmware/FirmwareUpdateState.java renamed from common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/ota/firmware/UpdateStateFw.java
@@ -22,7 +22,7 @@ package org.thingsboard.server.transport.lwm2m.server.ota.firmware; @@ -22,7 +22,7 @@ package org.thingsboard.server.transport.lwm2m.server.ota.firmware;
22 * 2: Downloaded 22 * 2: Downloaded
23 * 3: Updating 23 * 3: Updating
24 */ 24 */
25 -public enum UpdateStateFw { 25 +public enum FirmwareUpdateState {
26 IDLE(0, "Idle"), 26 IDLE(0, "Idle"),
27 DOWNLOADING(1, "Downloading"), 27 DOWNLOADING(1, "Downloading"),
28 DOWNLOADED(2, "Downloaded"), 28 DOWNLOADED(2, "Downloaded"),
@@ -31,13 +31,13 @@ public enum UpdateStateFw { @@ -31,13 +31,13 @@ public enum UpdateStateFw {
31 public int code; 31 public int code;
32 public String type; 32 public String type;
33 33
34 - UpdateStateFw(int code, String type) { 34 + FirmwareUpdateState(int code, String type) {
35 this.code = code; 35 this.code = code;
36 this.type = type; 36 this.type = type;
37 } 37 }
38 38
39 - public static UpdateStateFw fromStateFwByType(String type) {  
40 - for (UpdateStateFw to : UpdateStateFw.values()) { 39 + public static FirmwareUpdateState fromStateFwByType(String type) {
  40 + for (FirmwareUpdateState to : FirmwareUpdateState.values()) {
41 if (to.type.equals(type)) { 41 if (to.type.equals(type)) {
42 return to; 42 return to;
43 } 43 }
@@ -45,8 +45,8 @@ public enum UpdateStateFw { @@ -45,8 +45,8 @@ public enum UpdateStateFw {
45 throw new IllegalArgumentException(String.format("Unsupported FW State type : %s", type)); 45 throw new IllegalArgumentException(String.format("Unsupported FW State type : %s", type));
46 } 46 }
47 47
48 - public static UpdateStateFw fromStateFwByCode(int code) {  
49 - for (UpdateStateFw to : UpdateStateFw.values()) { 48 + public static FirmwareUpdateState fromStateFwByCode(int code) {
  49 + for (FirmwareUpdateState to : FirmwareUpdateState.values()) {
50 if (to.code == code) { 50 if (to.code == code) {
51 return to; 51 return to;
52 } 52 }
common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/ota/software/SoftwareUpdateResult.java renamed from common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/ota/software/UpdateResultSw.java
@@ -39,7 +39,7 @@ package org.thingsboard.server.transport.lwm2m.server.ota.software; @@ -39,7 +39,7 @@ package org.thingsboard.server.transport.lwm2m.server.ota.software;
39 * 60-200 : (for expansion, selection to be in blocks depending on new introduction of features) 39 * 60-200 : (for expansion, selection to be in blocks depending on new introduction of features)
40 * This Resource MAY be reported by sending Observe operation. 40 * This Resource MAY be reported by sending Observe operation.
41 */ 41 */
42 -public enum UpdateResultSw { 42 +public enum SoftwareUpdateResult {
43 INITIAL(0, "Initial value", false), 43 INITIAL(0, "Initial value", false),
44 DOWNLOADING(1, "Downloading", false), 44 DOWNLOADING(1, "Downloading", false),
45 SUCCESSFULLY_INSTALLED(2, "Software successfully installed", false), 45 SUCCESSFULLY_INSTALLED(2, "Software successfully installed", false),
@@ -58,14 +58,14 @@ public enum UpdateResultSw { @@ -58,14 +58,14 @@ public enum UpdateResultSw {
58 public String type; 58 public String type;
59 public boolean isAgain; 59 public boolean isAgain;
60 60
61 - UpdateResultSw(int code, String type, boolean isAgain) { 61 + SoftwareUpdateResult(int code, String type, boolean isAgain) {
62 this.code = code; 62 this.code = code;
63 this.type = type; 63 this.type = type;
64 this.isAgain = isAgain; 64 this.isAgain = isAgain;
65 } 65 }
66 66
67 - public static UpdateResultSw fromUpdateResultSwByType(String type) {  
68 - for (UpdateResultSw to : UpdateResultSw.values()) { 67 + public static SoftwareUpdateResult fromUpdateResultSwByType(String type) {
  68 + for (SoftwareUpdateResult to : SoftwareUpdateResult.values()) {
69 if (to.type.equals(type)) { 69 if (to.type.equals(type)) {
70 return to; 70 return to;
71 } 71 }
@@ -73,8 +73,8 @@ public enum UpdateResultSw { @@ -73,8 +73,8 @@ public enum UpdateResultSw {
73 throw new IllegalArgumentException(String.format("Unsupported SW Update Result type : %s", type)); 73 throw new IllegalArgumentException(String.format("Unsupported SW Update Result type : %s", type));
74 } 74 }
75 75
76 - public static UpdateResultSw fromUpdateResultSwByCode(int code) {  
77 - for (UpdateResultSw to : UpdateResultSw.values()) { 76 + public static SoftwareUpdateResult fromUpdateResultSwByCode(int code) {
  77 + for (SoftwareUpdateResult to : SoftwareUpdateResult.values()) {
78 if (to.code == code) { 78 if (to.code == code) {
79 return to; 79 return to;
80 } 80 }
common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/ota/software/SoftwareUpdateState.java renamed from common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/ota/software/UpdateStateSw.java
@@ -26,7 +26,7 @@ package org.thingsboard.server.transport.lwm2m.server.ota.software; @@ -26,7 +26,7 @@ package org.thingsboard.server.transport.lwm2m.server.ota.software;
26 * After executing the UnInstall Resource, the state changes to INITIAL. 26 * After executing the UnInstall Resource, the state changes to INITIAL.
27 * 4: INSTALLED 27 * 4: INSTALLED
28 */ 28 */
29 -public enum UpdateStateSw { 29 +public enum SoftwareUpdateState {
30 INITIAL(0, "Initial"), 30 INITIAL(0, "Initial"),
31 DOWNLOAD_STARTED(1, "DownloadStarted"), 31 DOWNLOAD_STARTED(1, "DownloadStarted"),
32 DOWNLOADED(2, "Downloaded"), 32 DOWNLOADED(2, "Downloaded"),
@@ -36,13 +36,13 @@ public enum UpdateStateSw { @@ -36,13 +36,13 @@ public enum UpdateStateSw {
36 public int code; 36 public int code;
37 public String type; 37 public String type;
38 38
39 - UpdateStateSw(int code, String type) { 39 + SoftwareUpdateState(int code, String type) {
40 this.code = code; 40 this.code = code;
41 this.type = type; 41 this.type = type;
42 } 42 }
43 43
44 - public static UpdateStateSw fromUpdateStateSwByType(String type) {  
45 - for (UpdateStateSw to : UpdateStateSw.values()) { 44 + public static SoftwareUpdateState fromUpdateStateSwByType(String type) {
  45 + for (SoftwareUpdateState to : SoftwareUpdateState.values()) {
46 if (to.type.equals(type)) { 46 if (to.type.equals(type)) {
47 return to; 47 return to;
48 } 48 }
@@ -50,8 +50,8 @@ public enum UpdateStateSw { @@ -50,8 +50,8 @@ public enum UpdateStateSw {
50 throw new IllegalArgumentException(String.format("Unsupported SW State type : %s", type)); 50 throw new IllegalArgumentException(String.format("Unsupported SW State type : %s", type));
51 } 51 }
52 52
53 - public static UpdateStateSw fromUpdateStateSwByCode(int code) {  
54 - for (UpdateStateSw to : UpdateStateSw.values()) { 53 + public static SoftwareUpdateState fromUpdateStateSwByCode(int code) {
  54 + for (SoftwareUpdateState to : SoftwareUpdateState.values()) {
55 if (to.code == code) { 55 if (to.code == code) {
56 return to; 56 return to;
57 } 57 }
@@ -40,7 +40,9 @@ import org.thingsboard.common.util.DonAsynchron; @@ -40,7 +40,9 @@ import org.thingsboard.common.util.DonAsynchron;
40 import org.thingsboard.server.cache.ota.OtaPackageDataCache; 40 import org.thingsboard.server.cache.ota.OtaPackageDataCache;
41 import org.thingsboard.server.common.data.Device; 41 import org.thingsboard.server.common.data.Device;
42 import org.thingsboard.server.common.data.DeviceProfile; 42 import org.thingsboard.server.common.data.DeviceProfile;
  43 +import org.thingsboard.server.common.data.StringUtils;
43 import org.thingsboard.server.common.data.device.data.lwm2m.ObjectAttributes; 44 import org.thingsboard.server.common.data.device.data.lwm2m.ObjectAttributes;
  45 +import org.thingsboard.server.common.data.device.data.lwm2m.OtherConfiguration;
44 import org.thingsboard.server.common.data.device.data.lwm2m.TelemetryMappingConfiguration; 46 import org.thingsboard.server.common.data.device.data.lwm2m.TelemetryMappingConfiguration;
45 import org.thingsboard.server.common.data.device.profile.Lwm2mDeviceProfileTransportConfiguration; 47 import org.thingsboard.server.common.data.device.profile.Lwm2mDeviceProfileTransportConfiguration;
46 import org.thingsboard.server.common.data.ota.OtaPackageUtil; 48 import org.thingsboard.server.common.data.ota.OtaPackageUtil;
@@ -130,16 +132,13 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl @@ -130,16 +132,13 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl
130 private final LwM2mTransportContext context; 132 private final LwM2mTransportContext context;
131 private final LwM2MAttributesService attributesService; 133 private final LwM2MAttributesService attributesService;
132 private final LwM2MOtaUpdateService otaService; 134 private final LwM2MOtaUpdateService otaService;
133 - public final LwM2MTransportServerConfig config; 135 + private final LwM2MTransportServerConfig config;
134 private final LwM2MTelemetryLogService logService; 136 private final LwM2MTelemetryLogService logService;
135 - public final OtaPackageDataCache otaPackageDataCache;  
136 - public final LwM2mTransportServerHelper helper; 137 + private final LwM2mTransportServerHelper helper;
137 private final TbLwM2MDtlsSessionStore sessionStore; 138 private final TbLwM2MDtlsSessionStore sessionStore;
138 - public final LwM2mClientContext clientContext; 139 + private final LwM2mClientContext clientContext;
139 private final LwM2MRpcRequestHandler rpcHandler; 140 private final LwM2MRpcRequestHandler rpcHandler;
140 - public final LwM2mDownlinkMsgHandler defaultLwM2MDownlinkMsgHandler;  
141 -  
142 - public final Map<String, Integer> firmwareUpdateState; 141 + private final LwM2mDownlinkMsgHandler defaultLwM2MDownlinkMsgHandler;
143 142
144 public DefaultLwM2MUplinkMsgHandler(TransportService transportService, 143 public DefaultLwM2MUplinkMsgHandler(TransportService transportService,
145 LwM2MTransportServerConfig config, 144 LwM2MTransportServerConfig config,
@@ -150,7 +149,6 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl @@ -150,7 +149,6 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl
150 @Lazy LwM2MAttributesService attributesService, 149 @Lazy LwM2MAttributesService attributesService,
151 @Lazy LwM2MRpcRequestHandler rpcHandler, 150 @Lazy LwM2MRpcRequestHandler rpcHandler,
152 @Lazy LwM2mDownlinkMsgHandler defaultLwM2MDownlinkMsgHandler, 151 @Lazy LwM2mDownlinkMsgHandler defaultLwM2MDownlinkMsgHandler,
153 - OtaPackageDataCache otaPackageDataCache,  
154 LwM2mTransportContext context, TbLwM2MDtlsSessionStore sessionStore) { 152 LwM2mTransportContext context, TbLwM2MDtlsSessionStore sessionStore) {
155 this.transportService = transportService; 153 this.transportService = transportService;
156 this.attributesService = attributesService; 154 this.attributesService = attributesService;
@@ -161,9 +159,7 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl @@ -161,9 +159,7 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl
161 this.logService = logService; 159 this.logService = logService;
162 this.rpcHandler = rpcHandler; 160 this.rpcHandler = rpcHandler;
163 this.defaultLwM2MDownlinkMsgHandler = defaultLwM2MDownlinkMsgHandler; 161 this.defaultLwM2MDownlinkMsgHandler = defaultLwM2MDownlinkMsgHandler;
164 - this.otaPackageDataCache = otaPackageDataCache;  
165 this.context = context; 162 this.context = context;
166 - this.firmwareUpdateState = new ConcurrentHashMap<>();  
167 this.sessionStore = sessionStore; 163 this.sessionStore = sessionStore;
168 } 164 }
169 165
@@ -781,27 +777,19 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl @@ -781,27 +777,19 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl
781 } 777 }
782 } 778 }
783 779
784 - // # 7.1  
785 // update value in fwInfo 780 // update value in fwInfo
786 - if (!newProfile.getClientLwM2mSettings().getFwUpdateStrategy().equals(oldProfile.getClientLwM2mSettings().getFwUpdateStrategy())  
787 - || (LwM2MFirmwareUpdateStrategy.OBJ_5_TEMP_URL.code == newProfile.getClientLwM2mSettings().getFwUpdateStrategy() &&  
788 - !newProfile.getClientLwM2mSettings().getFwUpdateRecourse().equals(oldProfile.getClientLwM2mSettings().getFwUpdateRecourse()))) {  
789 - clients.forEach(lwM2MClient -> {  
790 - otaService.onCurrentFirmwareStrategyUpdate(lwM2MClient,  
791 - newProfile.getClientLwM2mSettings().getFwUpdateStrategy(),  
792 - newProfile.getClientLwM2mSettings().getFwUpdateRecourse());  
793 - }); 781 + OtherConfiguration newLwM2mSettings = newProfile.getClientLwM2mSettings();
  782 + OtherConfiguration oldLwM2mSettings = oldProfile.getClientLwM2mSettings();
  783 + if (!newLwM2mSettings.getFwUpdateStrategy().equals(oldLwM2mSettings.getFwUpdateStrategy())
  784 + || (StringUtils.isNotEmpty(newLwM2mSettings.getFwUpdateRecourse()) &&
  785 + !newLwM2mSettings.getFwUpdateRecourse().equals(oldLwM2mSettings.getFwUpdateRecourse()))) {
  786 + clients.forEach(lwM2MClient -> otaService.onCurrentFirmwareStrategyUpdate(lwM2MClient, newLwM2mSettings));
794 } 787 }
795 788
796 - //# 7.2 // update value in swInfo  
797 - if (!newProfile.getClientLwM2mSettings().getSwUpdateStrategy().equals(oldProfile.getClientLwM2mSettings().getSwUpdateStrategy())  
798 - || (LwM2MSoftwareUpdateStrategy.TEMP_URL.code == newProfile.getClientLwM2mSettings().getSwUpdateStrategy() &&  
799 - !newProfile.getClientLwM2mSettings().getSwUpdateRecourse().equals(oldProfile.getClientLwM2mSettings().getSwUpdateRecourse()))) {  
800 - clients.forEach(lwM2MClient -> {  
801 - otaService.onCurrentSoftwareStrategyUpdate(lwM2MClient,  
802 - newProfile.getClientLwM2mSettings().getFwUpdateStrategy(),  
803 - newProfile.getClientLwM2mSettings().getFwUpdateRecourse());  
804 - }); 789 + if (!newLwM2mSettings.getSwUpdateStrategy().equals(oldLwM2mSettings.getSwUpdateStrategy())
  790 + || (StringUtils.isNotEmpty(newLwM2mSettings.getSwUpdateRecourse()) &&
  791 + !newLwM2mSettings.getSwUpdateRecourse().equals(oldLwM2mSettings.getSwUpdateRecourse()))) {
  792 + clients.forEach(lwM2MClient -> otaService.onCurrentSoftwareStrategyUpdate(lwM2MClient, newLwM2mSettings));
805 } 793 }
806 } 794 }
807 } 795 }