Commit ff334b54389f9a4ceda9ea6e7fa3cb4415b16128

Authored by Andrii Shvaika
1 parent 5ca0e05a

Improvements to support large files for firmware updates

... ... @@ -66,7 +66,7 @@ public class LwM2mNetworkConfig {
66 66 * A value of {@code 0} turns off transparent handling of blockwise transfers altogether.
67 67 */
68 68 // coapConfig.setInt(NetworkConfig.Keys.MAX_RESOURCE_BODY_SIZE, 8192);
69   - coapConfig.setInt(NetworkConfig.Keys.MAX_RESOURCE_BODY_SIZE, 16384);
  69 + coapConfig.setInt(NetworkConfig.Keys.MAX_RESOURCE_BODY_SIZE, 256 * 1024 * 1024);
70 70 /**
71 71 * The default DTLS response matcher.
72 72 * Supported values are STRICT, RELAXED, or PRINCIPAL.
... ... @@ -83,7 +83,7 @@ public class LwM2mNetworkConfig {
83 83 * The block size (number of bytes) to use when doing a blockwise transfer. \
84 84 * This value serves as the upper limit for block size in blockwise transfers
85 85 */
86   - coapConfig.setInt(NetworkConfig.Keys.PREFERRED_BLOCK_SIZE, 512);
  86 + coapConfig.setInt(NetworkConfig.Keys.PREFERRED_BLOCK_SIZE, 1024);
87 87 /**
88 88 * The maximum payload size (in bytes) that can be transferred in a
89 89 * single message, i.e. without requiring a blockwise transfer.
... ... @@ -91,7 +91,7 @@ public class LwM2mNetworkConfig {
91 91 * In particular, this value cannot exceed the network's MTU if UDP is used as the transport protocol
92 92 * DEFAULT_VALUE = 1024
93 93 */
94   - coapConfig.setInt(NetworkConfig.Keys.MAX_MESSAGE_SIZE, 512);
  94 + coapConfig.setInt(NetworkConfig.Keys.MAX_MESSAGE_SIZE, 1024);
95 95
96 96 coapConfig.setInt(NetworkConfig.Keys.MAX_RETRANSMIT, 4);
97 97
... ...
... ... @@ -424,7 +424,7 @@ public class LwM2mTransportRequest {
424 424 LOG_LW2M_INFO, ((Response) response.getCoapResponse()).getCode(), response.getCode().getCode(),
425 425 response.getCode().getName(), request.getPath().toString(), value);
426 426 serviceImpl.sendLogsToThingsboard(msg, registration.getId());
427   - log.warn("[{}] [{}] [{}] - [{}] [{}] Update finished successfully: [{}]", request.getClass().getName().toString(), registration.getEndpoint(),
  427 + log.trace("[{}] [{}] [{}] - [{}] [{}] Update finished successfully: [{}]", request.getClass().getName().toString(), registration.getEndpoint(),
428 428 ((Response) response.getCoapResponse()).getCode(), response.getCode(),
429 429 request.getPath().toString(), value);
430 430 }
... ...
... ... @@ -334,6 +334,7 @@ public class LwM2mTransportServiceImpl implements LwM2mTransportService {
334 334 String pathName = tsKvProto.getKv().getKey();
335 335 String pathIdVer = this.getPresentPathIntoProfile(sessionInfo, pathName);
336 336 Object valueNew = this.lwM2mTransportContextServer.getValueFromKvProto(tsKvProto.getKv());
  337 + //TODO: react on change of the firmware name.
337 338 if (FirmwareUtil.getAttributeKey(FirmwareType.FIRMWARE, FirmwareKey.VERSION).equals(pathName) && !valueNew.equals(lwM2MClient.getFrUpdate().getCurrentFwVersion())) {
338 339 this.getInfoFirmwareUpdate(lwM2MClient);
339 340 }
... ... @@ -612,6 +613,9 @@ public class LwM2mTransportServiceImpl implements LwM2mTransportService {
612 613 public void sendLogsToThingsboard(String logMsg, String registrationId) {
613 614 SessionInfoProto sessionInfo = this.getValidateSessionInfo(registrationId);
614 615 if (logMsg != null && sessionInfo != null) {
  616 + if(logMsg.length() > 1024){
  617 + logMsg = logMsg.substring(0, 1024);
  618 + }
615 619 this.lwM2mTransportContextServer.sendParametersOnThingsboardTelemetry(this.lwM2mTransportContextServer.getKvLogyToThingsboard(logMsg), sessionInfo);
616 620 }
617 621 }
... ... @@ -1372,6 +1376,7 @@ public class LwM2mTransportServiceImpl implements LwM2mTransportService {
1372 1376 .setDeviceIdLSB(sessionInfo.getDeviceIdLSB())
1373 1377 .setTenantIdMSB(sessionInfo.getTenantIdMSB())
1374 1378 .setTenantIdLSB(sessionInfo.getTenantIdLSB())
  1379 + .setType(FirmwareType.FIRMWARE.name())
1375 1380 .build();
1376 1381 transportService.process(sessionInfo, getFirmwareRequestMsg,
1377 1382 new TransportServiceCallback<>() {
... ... @@ -1416,7 +1421,7 @@ public class LwM2mTransportServiceImpl implements LwM2mTransportService {
1416 1421 Integer objectId = 5;
1417 1422 String verSupportedObject = lwM2MClient.getRegistration().getSupportedObject().get(objectId);
1418 1423 String targetIdVer = LWM2M_SEPARATOR_PATH + objectId + LWM2M_SEPARATOR_KEY + verSupportedObject + LWM2M_SEPARATOR_PATH + 0 + LWM2M_SEPARATOR_PATH + 0;
1419   - lwM2mTransportRequest.sendAllRequest(lwM2MClient.getRegistration(), targetIdVer, WRITE_REPLACE, ContentFormat.TLV.getName(),
  1424 + lwM2mTransportRequest.sendAllRequest(lwM2MClient.getRegistration(), targetIdVer, WRITE_REPLACE, ContentFormat.OPAQUE.getName(),
1420 1425 firmwareChunk, lwM2mTransportContextServer.getLwM2MTransportConfigServer().getTimeout(), null);
1421 1426 log.warn("updateFirmwareClient [{}] [{}]", lwM2MClient.getFrUpdate().getCurrentFwVersion(), lwM2MClient.getFrUpdate().getClientFwVersion());
1422 1427 }
... ...