|
|
|
@ -46,6 +46,7 @@ import org.thingsboard.server.common.data.device.data.lwm2m.ObjectAttributes; |
|
|
|
import org.thingsboard.server.common.data.device.data.lwm2m.OtherConfiguration; |
|
|
|
import org.thingsboard.server.common.data.device.data.lwm2m.TelemetryMappingConfiguration; |
|
|
|
import org.thingsboard.server.common.data.device.profile.Lwm2mDeviceProfileTransportConfiguration; |
|
|
|
import org.thingsboard.server.common.data.id.TenantId; |
|
|
|
import org.thingsboard.server.common.data.ota.OtaPackageUtil; |
|
|
|
import org.thingsboard.server.common.transport.TransportService; |
|
|
|
import org.thingsboard.server.common.transport.TransportServiceCallback; |
|
|
|
@ -57,6 +58,7 @@ import org.thingsboard.server.transport.lwm2m.server.LwM2mOtaConvert; |
|
|
|
import org.thingsboard.server.transport.lwm2m.server.LwM2mTransportContext; |
|
|
|
import org.thingsboard.server.transport.lwm2m.server.LwM2mTransportServerHelper; |
|
|
|
import org.thingsboard.server.transport.lwm2m.server.LwM2mTransportUtil; |
|
|
|
import org.thingsboard.server.transport.lwm2m.server.LwM2mVersionedModelProvider; |
|
|
|
import org.thingsboard.server.transport.lwm2m.server.attributes.LwM2MAttributesService; |
|
|
|
import org.thingsboard.server.transport.lwm2m.server.client.LwM2MClientState; |
|
|
|
import org.thingsboard.server.transport.lwm2m.server.client.LwM2MClientStateException; |
|
|
|
@ -139,8 +141,8 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl |
|
|
|
private final LwM2mTransportServerHelper helper; |
|
|
|
private final TbLwM2MDtlsSessionStore sessionStore; |
|
|
|
private final LwM2mClientContext clientContext; |
|
|
|
private final LwM2MRpcRequestHandler rpcHandler; |
|
|
|
private final LwM2mDownlinkMsgHandler defaultLwM2MDownlinkMsgHandler; |
|
|
|
private final LwM2mVersionedModelProvider modelProvider; |
|
|
|
|
|
|
|
public DefaultLwM2MUplinkMsgHandler(TransportService transportService, |
|
|
|
LwM2MTransportServerConfig config, |
|
|
|
@ -150,9 +152,10 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl |
|
|
|
LwM2MSessionManager sessionManager, |
|
|
|
@Lazy LwM2MOtaUpdateService otaService, |
|
|
|
@Lazy LwM2MAttributesService attributesService, |
|
|
|
@Lazy LwM2MRpcRequestHandler rpcHandler, |
|
|
|
@Lazy LwM2mDownlinkMsgHandler defaultLwM2MDownlinkMsgHandler, |
|
|
|
LwM2mTransportContext context, TbLwM2MDtlsSessionStore sessionStore) { |
|
|
|
LwM2mTransportContext context, |
|
|
|
TbLwM2MDtlsSessionStore sessionStore, |
|
|
|
LwM2mVersionedModelProvider modelProvider) { |
|
|
|
this.transportService = transportService; |
|
|
|
this.sessionManager = sessionManager; |
|
|
|
this.attributesService = attributesService; |
|
|
|
@ -161,10 +164,10 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl |
|
|
|
this.helper = helper; |
|
|
|
this.clientContext = clientContext; |
|
|
|
this.logService = logService; |
|
|
|
this.rpcHandler = rpcHandler; |
|
|
|
this.defaultLwM2MDownlinkMsgHandler = defaultLwM2MDownlinkMsgHandler; |
|
|
|
this.context = context; |
|
|
|
this.sessionStore = sessionStore; |
|
|
|
this.modelProvider = modelProvider; |
|
|
|
} |
|
|
|
|
|
|
|
@PostConstruct |
|
|
|
@ -309,7 +312,7 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl |
|
|
|
public void onUpdateValueAfterReadResponse(Registration registration, String path, ReadResponse response) { |
|
|
|
if (response.getContent() != null) { |
|
|
|
LwM2mClient lwM2MClient = clientContext.getClientByEndpoint(registration.getEndpoint()); |
|
|
|
ObjectModel objectModelVersion = lwM2MClient.getObjectModel(path, this.config.getModelProvider()); |
|
|
|
ObjectModel objectModelVersion = lwM2MClient.getObjectModel(path, modelProvider); |
|
|
|
if (objectModelVersion != null) { |
|
|
|
if (response.getContent() instanceof LwM2mObject) { |
|
|
|
LwM2mObject lwM2mObject = (LwM2mObject) response.getContent(); |
|
|
|
@ -388,15 +391,19 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onResourceUpdate(Optional<TransportProtos.ResourceUpdateMsg> resourceUpdateMsgOpt) { |
|
|
|
String idVer = resourceUpdateMsgOpt.get().getResourceKey(); |
|
|
|
clientContext.getLwM2mClients().forEach(e -> e.updateResourceModel(idVer, this.config.getModelProvider())); |
|
|
|
public void onResourceUpdate(TransportProtos.ResourceUpdateMsg resourceUpdateMsgOpt) { |
|
|
|
String idVer = resourceUpdateMsgOpt.getResourceKey(); |
|
|
|
TenantId tenantId = new TenantId(new UUID(resourceUpdateMsgOpt.getTenantIdMSB(), resourceUpdateMsgOpt.getTenantIdLSB())); |
|
|
|
modelProvider.evict(tenantId, idVer); |
|
|
|
clientContext.getLwM2mClients().forEach(e -> e.updateResourceModel(idVer, modelProvider)); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onResourceDelete(Optional<TransportProtos.ResourceDeleteMsg> resourceDeleteMsgOpt) { |
|
|
|
String pathIdVer = resourceDeleteMsgOpt.get().getResourceKey(); |
|
|
|
clientContext.getLwM2mClients().forEach(e -> e.deleteResources(pathIdVer, this.config.getModelProvider())); |
|
|
|
public void onResourceDelete(TransportProtos.ResourceDeleteMsg resourceDeleteMsgOpt) { |
|
|
|
String pathIdVer = resourceDeleteMsgOpt.getResourceKey(); |
|
|
|
TenantId tenantId = new TenantId(new UUID(resourceDeleteMsgOpt.getTenantIdMSB(), resourceDeleteMsgOpt.getTenantIdLSB())); |
|
|
|
modelProvider.evict(tenantId, pathIdVer); |
|
|
|
clientContext.getLwM2mClients().forEach(e -> e.deleteResources(pathIdVer, modelProvider)); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
@ -544,7 +551,7 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl |
|
|
|
*/ |
|
|
|
private void updateResourcesValue(LwM2mClient lwM2MClient, LwM2mResource lwM2mResource, String path) { |
|
|
|
Registration registration = lwM2MClient.getRegistration(); |
|
|
|
if (lwM2MClient.saveResourceValue(path, lwM2mResource, this.config.getModelProvider())) { |
|
|
|
if (lwM2MClient.saveResourceValue(path, lwM2mResource, modelProvider)) { |
|
|
|
if (path.equals(convertObjectIdToVersionedId(FW_NAME_ID, registration))) { |
|
|
|
otaService.onCurrentFirmwareNameUpdate(lwM2MClient, (String) lwM2mResource.getValue()); |
|
|
|
} else if (path.equals(convertObjectIdToVersionedId(FW_3_VER_ID, registration))) { |
|
|
|
|