Showing
14 changed files
with
98 additions
and
167 deletions
... | ... | @@ -14,7 +14,7 @@ |
14 | 14 | <logger name="org.springframework.boot.test" level="WARN"/> |
15 | 15 | <logger name="org.apache.cassandra" level="WARN"/> |
16 | 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 | 20 | <root level="WARN"> | ... | ... |
... | ... | @@ -42,14 +42,12 @@ public class OtaPackageTransportResource extends AbstractCoapTransportResource { |
42 | 42 | private static final int ACCESS_TOKEN_POSITION = 2; |
43 | 43 | |
44 | 44 | private final OtaPackageType otaPackageType; |
45 | - private final ExecutorService sendOtaDataOutUriLarge; | |
46 | 45 | |
47 | 46 | public OtaPackageTransportResource(CoapTransportContext ctx, OtaPackageType otaPackageType) { |
48 | 47 | super(ctx, otaPackageType.getKeyPrefix()); |
49 | 48 | this.otaPackageType = otaPackageType; |
50 | 49 | |
51 | 50 | this.setObservable(true); |
52 | - this.sendOtaDataOutUriLarge = ThingsBoardExecutors.newWorkStealingPool(10, "LwM2M sendOtaDataOutUriLarge"); | |
53 | 51 | } |
54 | 52 | |
55 | 53 | @Override |
... | ... | @@ -140,46 +138,12 @@ public class OtaPackageTransportResource extends AbstractCoapTransportResource { |
140 | 138 | Response response = new Response(CoAP.ResponseCode.CONTENT); |
141 | 139 | if (data != null && data.length > 0) { |
142 | 140 | response.setPayload(data); |
143 | -// response.getOptions().setAccept(MediaTypeRegistry.APPLICATION_OCTET_STREAM); | |
144 | 141 | if (exchange.getRequestOptions().getBlock2() != null) { |
145 | 142 | int chunkSize = exchange.getRequestOptions().getBlock2().getSzx(); |
146 | 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 | 142 | URI uri = null; |
143 | 143 | try { |
144 | 144 | uri = Resources.getResource(keyStorePathFile).toURI(); |
145 | - log.error("URI: {}", uri); | |
145 | + log.info("URI: {}", uri); | |
146 | 146 | File keyStoreFile = new File(uri); |
147 | 147 | InputStream inKeyStore = new FileInputStream(keyStoreFile); |
148 | 148 | keyStoreValue = KeyStore.getInstance(keyStoreType); | ... | ... |
... | ... | @@ -59,12 +59,12 @@ public class LwM2mCredentialsSecurityInfoValidator { |
59 | 59 | public TbLwM2MSecurityInfo getEndpointSecurityInfoByCredentialsId(String credentialsId, LwM2mTypeServer keyValue) { |
60 | 60 | CountDownLatch latch = new CountDownLatch(1); |
61 | 61 | final TbLwM2MSecurityInfo[] resultSecurityStore = new TbLwM2MSecurityInfo[1]; |
62 | - log.warn("001) [{}]", credentialsId); | |
62 | + log.trace("Validating credentials [{}]", credentialsId); | |
63 | 63 | context.getTransportService().process(ValidateDeviceLwM2MCredentialsRequestMsg.newBuilder().setCredentialsId(credentialsId).build(), |
64 | 64 | new TransportServiceCallback<>() { |
65 | 65 | @Override |
66 | 66 | public void onSuccess(ValidateDeviceCredentialsResponse msg) { |
67 | - log.warn("002) [{}] [{}]", credentialsId, msg); | |
67 | + log.trace("Validated credentials: [{}] [{}]", credentialsId, msg); | |
68 | 68 | String credentialsBody = msg.getCredentials(); |
69 | 69 | resultSecurityStore[0] = createSecurityInfo(credentialsId, credentialsBody, keyValue); |
70 | 70 | resultSecurityStore[0].setMsg(msg); |
... | ... | @@ -74,7 +74,6 @@ public class LwM2mCredentialsSecurityInfoValidator { |
74 | 74 | |
75 | 75 | @Override |
76 | 76 | public void onError(Throwable e) { |
77 | - log.warn("003) [{}] [{}] Failed to process credentials ", credentialsId, e); | |
78 | 77 | log.trace("[{}] [{}] Failed to process credentials ", credentialsId, e); |
79 | 78 | resultSecurityStore[0] = createSecurityInfo(credentialsId, null, null); |
80 | 79 | latch.countDown(); | ... | ... |
... | ... | @@ -46,10 +46,10 @@ import org.thingsboard.server.common.data.device.profile.Lwm2mDeviceProfileTrans |
46 | 46 | import org.thingsboard.server.common.transport.TransportServiceCallback; |
47 | 47 | import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient; |
48 | 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 | 53 | import org.thingsboard.server.transport.lwm2m.server.uplink.DefaultLwM2MUplinkMsgHandler; |
54 | 54 | |
55 | 55 | import java.util.ArrayList; |
... | ... | @@ -148,19 +148,19 @@ public class LwM2mTransportUtil { |
148 | 148 | if (path != null) { |
149 | 149 | if (FW_STATE_ID.equals(path)) { |
150 | 150 | lwM2mOtaConvert.setCurrentType(STRING); |
151 | - lwM2mOtaConvert.setValue(UpdateStateFw.fromStateFwByCode(((Long) value).intValue()).type); | |
151 | + lwM2mOtaConvert.setValue(FirmwareUpdateState.fromStateFwByCode(((Long) value).intValue()).type); | |
152 | 152 | return lwM2mOtaConvert; |
153 | 153 | } else if (FW_RESULT_ID.equals(path)) { |
154 | 154 | lwM2mOtaConvert.setCurrentType(STRING); |
155 | - lwM2mOtaConvert.setValue(UpdateResultFw.fromUpdateResultFwByCode(((Long) value).intValue()).getType()); | |
155 | + lwM2mOtaConvert.setValue(FirmwareUpdateResult.fromUpdateResultFwByCode(((Long) value).intValue()).getType()); | |
156 | 156 | return lwM2mOtaConvert; |
157 | 157 | } else if (SW_UPDATE_STATE_ID.equals(path)) { |
158 | 158 | lwM2mOtaConvert.setCurrentType(STRING); |
159 | - lwM2mOtaConvert.setValue(UpdateStateSw.fromUpdateStateSwByCode(((Long) value).intValue()).type); | |
159 | + lwM2mOtaConvert.setValue(SoftwareUpdateState.fromUpdateStateSwByCode(((Long) value).intValue()).type); | |
160 | 160 | return lwM2mOtaConvert; |
161 | 161 | } else if (SW_RESULT_ID.equals(path)) { |
162 | 162 | lwM2mOtaConvert.setCurrentType(STRING); |
163 | - lwM2mOtaConvert.setValue(UpdateResultSw.fromUpdateResultSwByCode(((Long) value).intValue()).type); | |
163 | + lwM2mOtaConvert.setValue(SoftwareUpdateResult.fromUpdateResultSwByCode(((Long) value).intValue()).type); | |
164 | 164 | return lwM2mOtaConvert; |
165 | 165 | } |
166 | 166 | } |
... | ... | @@ -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 | 439 | * @param lwM2MClient - |
453 | 440 | * @param path - | ... | ... |
... | ... | @@ -25,6 +25,7 @@ import org.springframework.stereotype.Service; |
25 | 25 | import org.thingsboard.common.util.DonAsynchron; |
26 | 26 | import org.thingsboard.server.cache.ota.OtaPackageDataCache; |
27 | 27 | import org.thingsboard.server.common.data.StringUtils; |
28 | +import org.thingsboard.server.common.data.device.data.lwm2m.OtherConfiguration; | |
28 | 29 | import org.thingsboard.server.common.data.ota.OtaPackageKey; |
29 | 30 | import org.thingsboard.server.common.data.ota.OtaPackageType; |
30 | 31 | import org.thingsboard.server.common.data.ota.OtaPackageUpdateStatus; |
... | ... | @@ -45,12 +46,12 @@ import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MWriteReplac |
45 | 46 | import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MWriteResponseCallback; |
46 | 47 | import org.thingsboard.server.transport.lwm2m.server.log.LwM2MTelemetryLogService; |
47 | 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 | 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 | 55 | import org.thingsboard.server.transport.lwm2m.server.uplink.LwM2mUplinkMsgHandler; |
55 | 56 | |
56 | 57 | import javax.annotation.PostConstruct; |
... | ... | @@ -201,20 +202,20 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl |
201 | 202 | } |
202 | 203 | |
203 | 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 | 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 | 210 | startFirmwareUpdateIfNeeded(client, fwInfo); |
210 | 211 | } |
211 | 212 | |
212 | 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 | 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 | 219 | startSoftwareUpdateIfNeeded(client, swInfo); |
219 | 220 | } |
220 | 221 | |
... | ... | @@ -236,8 +237,8 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl |
236 | 237 | public void onCurrentFirmwareStateUpdate(LwM2mClient client, Long stateCode) { |
237 | 238 | log.debug("[{}] Current fw state: {}", client.getEndpoint(), stateCode); |
238 | 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 | 242 | executeFwUpdate(client); |
242 | 243 | } |
243 | 244 | fwInfo.setUpdateState(state); |
... | ... | @@ -250,7 +251,7 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl |
250 | 251 | public void onCurrentFirmwareResultUpdate(LwM2mClient client, Long code) { |
251 | 252 | log.debug("[{}] Current fw result: {}", client.getEndpoint(), code); |
252 | 253 | LwM2MClientOtaInfo fwInfo = getOrInitFwInfo(client); |
253 | - UpdateResultFw result = UpdateResultFw.fromUpdateResultFwByCode(code.intValue()); | |
254 | + FirmwareUpdateResult result = FirmwareUpdateResult.fromUpdateResultFwByCode(code.intValue()); | |
254 | 255 | Optional<OtaPackageUpdateStatus> status = this.toOtaPackageUpdateStatus(result); |
255 | 256 | status.ifPresent(otaStatus -> sendStateUpdateToTelemetry(client, fwInfo, |
256 | 257 | otaStatus, "Firmware Update Result: " + result.name())); |
... | ... | @@ -324,10 +325,10 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl |
324 | 325 | if (TransportProtos.ResponseStatus.SUCCESS.equals(response.getResponseStatus())) { |
325 | 326 | UUID otaPackageId = new UUID(response.getOtaPackageIdMSB(), response.getOtaPackageIdLSB()); |
326 | 327 | LwM2MFirmwareUpdateStrategy strategy; |
327 | - if (fwInfo.getDeliveryMethod() == null || fwInfo.getDeliveryMethod() == UpdateDeliveryFw.BOTH.code) { | |
328 | + if (fwInfo.getDeliveryMethod() == null || fwInfo.getDeliveryMethod() == FirmwareDeliveryMethod.BOTH.code) { | |
328 | 329 | strategy = fwInfo.getFwStrategy(); |
329 | 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 | 333 | switch (strategy) { |
333 | 334 | case OBJ_5_BINARY: |
... | ... | @@ -405,8 +406,8 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl |
405 | 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 | 411 | case INITIAL: |
411 | 412 | return Optional.empty(); |
412 | 413 | case UPDATE_SUCCESSFULLY: |
... | ... | @@ -421,12 +422,12 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl |
421 | 422 | case UNSUPPORTED_PROTOCOL: |
422 | 423 | return Optional.of(FAILED); |
423 | 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 | 431 | case IDLE: |
431 | 432 | return Optional.empty(); |
432 | 433 | case DOWNLOADING: |
... | ... | @@ -436,7 +437,7 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl |
436 | 437 | case UPDATING: |
437 | 438 | return Optional.of(UPDATING); |
438 | 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 | 445 | * FirmwareUpdateStatus { |
445 | 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 | 450 | case INITIAL: |
450 | - switch (updateStateSw) { | |
451 | + switch (softwareUpdateState) { | |
451 | 452 | case INITIAL: |
452 | 453 | case DOWNLOAD_STARTED: |
453 | 454 | return Optional.of(DOWNLOADING); |
... | ... | @@ -473,10 +474,8 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl |
473 | 474 | case UN_INSTALL_FAILURE: |
474 | 475 | return Optional.of(FAILED); |
475 | 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 | 19 | import org.thingsboard.server.common.data.StringUtils; |
20 | 20 | import org.thingsboard.server.common.data.ota.OtaPackageType; |
21 | 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 | 24 | import org.thingsboard.server.transport.lwm2m.server.ota.software.LwM2MSoftwareUpdateStrategy; |
25 | 25 | |
26 | 26 | import java.util.Optional; |
... | ... | @@ -47,8 +47,8 @@ public class LwM2MClientOtaInfo { |
47 | 47 | //TODO: use value from device if applicable; |
48 | 48 | private LwM2MFirmwareUpdateStrategy fwStrategy; |
49 | 49 | private LwM2MSoftwareUpdateStrategy swStrategy; |
50 | - private UpdateStateFw updateState; | |
51 | - private UpdateResultFw updateResult; | |
50 | + private FirmwareUpdateState updateState; | |
51 | + private FirmwareUpdateResult updateResult; | |
52 | 52 | |
53 | 53 | private String failedPackageId; |
54 | 54 | private int retryAttempts; |
... | ... | @@ -90,7 +90,7 @@ public class LwM2MClientOtaInfo { |
90 | 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 | 94 | this.updateResult = updateResult; |
95 | 95 | switch (updateResult) { |
96 | 96 | case INITIAL: | ... | ... |
... | ... | @@ -15,6 +15,7 @@ |
15 | 15 | */ |
16 | 16 | package org.thingsboard.server.transport.lwm2m.server.ota; |
17 | 17 | |
18 | +import org.thingsboard.server.common.data.device.data.lwm2m.OtherConfiguration; | |
18 | 19 | import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient; |
19 | 20 | |
20 | 21 | import java.util.Optional; |
... | ... | @@ -31,9 +32,9 @@ public interface LwM2MOtaUpdateService { |
31 | 32 | |
32 | 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 | 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 | 15 | */ |
16 | 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 | 19 | PULL(0, "Pull only"), |
27 | 20 | PUSH(1, "Push only"), |
28 | 21 | BOTH(2, "Push or Push"); |
... | ... | @@ -30,13 +23,13 @@ public enum UpdateDeliveryFw { |
30 | 23 | public int code; |
31 | 24 | public String type; |
32 | 25 | |
33 | - UpdateDeliveryFw(int code, String type) { | |
26 | + FirmwareDeliveryMethod(int code, String type) { | |
34 | 27 | this.code = code; |
35 | 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 | 33 | if (to.type.equals(type)) { |
41 | 34 | return to; |
42 | 35 | } |
... | ... | @@ -44,8 +37,8 @@ public enum UpdateDeliveryFw { |
44 | 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 | 42 | if (to.code == code) { |
50 | 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 | 30 | * 8: Firmware update failed. |
31 | 31 | * 9: Unsupported protocol. |
32 | 32 | */ |
33 | -public enum UpdateResultFw { | |
33 | +public enum FirmwareUpdateResult { | |
34 | 34 | INITIAL(0, "Initial value", false), |
35 | 35 | UPDATE_SUCCESSFULLY(1, "Firmware updated successfully", false), |
36 | 36 | NOT_ENOUGH(2, "Not enough flash memory for the new firmware package", false), |
... | ... | @@ -49,14 +49,14 @@ public enum UpdateResultFw { |
49 | 49 | @Getter |
50 | 50 | private boolean again; |
51 | 51 | |
52 | - UpdateResultFw(int code, String type, boolean isAgain) { | |
52 | + FirmwareUpdateResult(int code, String type, boolean isAgain) { | |
53 | 53 | this.code = code; |
54 | 54 | this.type = type; |
55 | 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 | 60 | if (to.type.equals(type)) { |
61 | 61 | return to; |
62 | 62 | } |
... | ... | @@ -64,8 +64,8 @@ public enum UpdateResultFw { |
64 | 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 | 69 | if (to.code == code) { |
70 | 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 | 22 | * 2: Downloaded |
23 | 23 | * 3: Updating |
24 | 24 | */ |
25 | -public enum UpdateStateFw { | |
25 | +public enum FirmwareUpdateState { | |
26 | 26 | IDLE(0, "Idle"), |
27 | 27 | DOWNLOADING(1, "Downloading"), |
28 | 28 | DOWNLOADED(2, "Downloaded"), |
... | ... | @@ -31,13 +31,13 @@ public enum UpdateStateFw { |
31 | 31 | public int code; |
32 | 32 | public String type; |
33 | 33 | |
34 | - UpdateStateFw(int code, String type) { | |
34 | + FirmwareUpdateState(int code, String type) { | |
35 | 35 | this.code = code; |
36 | 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 | 41 | if (to.type.equals(type)) { |
42 | 42 | return to; |
43 | 43 | } |
... | ... | @@ -45,8 +45,8 @@ public enum UpdateStateFw { |
45 | 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 | 50 | if (to.code == code) { |
51 | 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 | 39 | * 60-200 : (for expansion, selection to be in blocks depending on new introduction of features) |
40 | 40 | * This Resource MAY be reported by sending Observe operation. |
41 | 41 | */ |
42 | -public enum UpdateResultSw { | |
42 | +public enum SoftwareUpdateResult { | |
43 | 43 | INITIAL(0, "Initial value", false), |
44 | 44 | DOWNLOADING(1, "Downloading", false), |
45 | 45 | SUCCESSFULLY_INSTALLED(2, "Software successfully installed", false), |
... | ... | @@ -58,14 +58,14 @@ public enum UpdateResultSw { |
58 | 58 | public String type; |
59 | 59 | public boolean isAgain; |
60 | 60 | |
61 | - UpdateResultSw(int code, String type, boolean isAgain) { | |
61 | + SoftwareUpdateResult(int code, String type, boolean isAgain) { | |
62 | 62 | this.code = code; |
63 | 63 | this.type = type; |
64 | 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 | 69 | if (to.type.equals(type)) { |
70 | 70 | return to; |
71 | 71 | } |
... | ... | @@ -73,8 +73,8 @@ public enum UpdateResultSw { |
73 | 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 | 78 | if (to.code == code) { |
79 | 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 | 26 | * After executing the UnInstall Resource, the state changes to INITIAL. |
27 | 27 | * 4: INSTALLED |
28 | 28 | */ |
29 | -public enum UpdateStateSw { | |
29 | +public enum SoftwareUpdateState { | |
30 | 30 | INITIAL(0, "Initial"), |
31 | 31 | DOWNLOAD_STARTED(1, "DownloadStarted"), |
32 | 32 | DOWNLOADED(2, "Downloaded"), |
... | ... | @@ -36,13 +36,13 @@ public enum UpdateStateSw { |
36 | 36 | public int code; |
37 | 37 | public String type; |
38 | 38 | |
39 | - UpdateStateSw(int code, String type) { | |
39 | + SoftwareUpdateState(int code, String type) { | |
40 | 40 | this.code = code; |
41 | 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 | 46 | if (to.type.equals(type)) { |
47 | 47 | return to; |
48 | 48 | } |
... | ... | @@ -50,8 +50,8 @@ public enum UpdateStateSw { |
50 | 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 | 55 | if (to.code == code) { |
56 | 56 | return to; |
57 | 57 | } | ... | ... |
... | ... | @@ -40,7 +40,9 @@ import org.thingsboard.common.util.DonAsynchron; |
40 | 40 | import org.thingsboard.server.cache.ota.OtaPackageDataCache; |
41 | 41 | import org.thingsboard.server.common.data.Device; |
42 | 42 | import org.thingsboard.server.common.data.DeviceProfile; |
43 | +import org.thingsboard.server.common.data.StringUtils; | |
43 | 44 | import org.thingsboard.server.common.data.device.data.lwm2m.ObjectAttributes; |
45 | +import org.thingsboard.server.common.data.device.data.lwm2m.OtherConfiguration; | |
44 | 46 | import org.thingsboard.server.common.data.device.data.lwm2m.TelemetryMappingConfiguration; |
45 | 47 | import org.thingsboard.server.common.data.device.profile.Lwm2mDeviceProfileTransportConfiguration; |
46 | 48 | import org.thingsboard.server.common.data.ota.OtaPackageUtil; |
... | ... | @@ -130,16 +132,13 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl |
130 | 132 | private final LwM2mTransportContext context; |
131 | 133 | private final LwM2MAttributesService attributesService; |
132 | 134 | private final LwM2MOtaUpdateService otaService; |
133 | - public final LwM2MTransportServerConfig config; | |
135 | + private final LwM2MTransportServerConfig config; | |
134 | 136 | private final LwM2MTelemetryLogService logService; |
135 | - public final OtaPackageDataCache otaPackageDataCache; | |
136 | - public final LwM2mTransportServerHelper helper; | |
137 | + private final LwM2mTransportServerHelper helper; | |
137 | 138 | private final TbLwM2MDtlsSessionStore sessionStore; |
138 | - public final LwM2mClientContext clientContext; | |
139 | + private final LwM2mClientContext clientContext; | |
139 | 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 | 143 | public DefaultLwM2MUplinkMsgHandler(TransportService transportService, |
145 | 144 | LwM2MTransportServerConfig config, |
... | ... | @@ -150,7 +149,6 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl |
150 | 149 | @Lazy LwM2MAttributesService attributesService, |
151 | 150 | @Lazy LwM2MRpcRequestHandler rpcHandler, |
152 | 151 | @Lazy LwM2mDownlinkMsgHandler defaultLwM2MDownlinkMsgHandler, |
153 | - OtaPackageDataCache otaPackageDataCache, | |
154 | 152 | LwM2mTransportContext context, TbLwM2MDtlsSessionStore sessionStore) { |
155 | 153 | this.transportService = transportService; |
156 | 154 | this.attributesService = attributesService; |
... | ... | @@ -161,9 +159,7 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl |
161 | 159 | this.logService = logService; |
162 | 160 | this.rpcHandler = rpcHandler; |
163 | 161 | this.defaultLwM2MDownlinkMsgHandler = defaultLwM2MDownlinkMsgHandler; |
164 | - this.otaPackageDataCache = otaPackageDataCache; | |
165 | 162 | this.context = context; |
166 | - this.firmwareUpdateState = new ConcurrentHashMap<>(); | |
167 | 163 | this.sessionStore = sessionStore; |
168 | 164 | } |
169 | 165 | |
... | ... | @@ -781,27 +777,19 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl |
781 | 777 | } |
782 | 778 | } |
783 | 779 | |
784 | - // # 7.1 | |
785 | 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 | } | ... | ... |