LWM2M: add response FirmWareUpdate

This commit is contained in:
nickAS21 2021-06-03 17:05:21 +03:00
parent d469672706
commit 45fa1a7bd2
3 changed files with 42 additions and 10 deletions

View File

@ -89,4 +89,6 @@ public abstract class AbstractLwm2mTransportResource extends LwM2mCoapResource {
exchange.respond(CoAP.ResponseCode.INTERNAL_SERVER_ERROR);
}
}
}

View File

@ -139,6 +139,7 @@ public class DefaultLwM2MTransportMsgHandler implements LwM2mTransportMsgHandler
public final LwM2mClientContext clientContext;
public final LwM2mTransportRequest lwM2mTransportRequest;
private final Map<UUID, Long> rpcSubscriptions;
private final Map<Integer, String> getCoapResource;
public DefaultLwM2MTransportMsgHandler(TransportService transportService, LwM2MTransportServerConfig config, LwM2mTransportServerHelper helper,
LwM2mClientContext clientContext,
@ -154,6 +155,7 @@ public class DefaultLwM2MTransportMsgHandler implements LwM2mTransportMsgHandler
this.context = context;
this.adaptor = adaptor;
this.rpcSubscriptions = new ConcurrentHashMap<>();
this.getCoapResource = new ConcurrentHashMap<>();
this.sessionStore = sessionStore;
}
@ -199,7 +201,7 @@ public class DefaultLwM2MTransportMsgHandler implements LwM2mTransportMsgHandler
.setSessionType(TransportProtos.SessionType.ASYNC).build())
.build(), null);
this.getInfoFirmwareUpdate(lwM2MClient, null);
this.getInfoSoftwareUpdate(lwM2MClient, null);
// this.getInfoSoftwareUpdate(lwM2MClient, null);
this.initLwM2mFromClientValue(registration, lwM2MClient);
this.sendLogsToThingsboard(LOG_LW2M_INFO + ": Client create after Registration", registration.getId());
} else {

View File

@ -30,6 +30,9 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicInteger;
import static org.thingsboard.server.transport.lwm2m.server.LwM2mTransportUtil.FW_COAP_RESOURCE;
import static org.thingsboard.server.transport.lwm2m.server.LwM2mTransportUtil.SW_COAP_RESOURCE;
@Slf4j
public class LwM2mTransportCoapResource extends AbstractLwm2mTransportResource {
private final ConcurrentMap<String, ObserveRelation> tokenToObserveRelationMap = new ConcurrentHashMap<>();
@ -64,9 +67,9 @@ public class LwM2mTransportCoapResource extends AbstractLwm2mTransportResource {
@Override
protected void processHandleGet(CoapExchange exchange) {
log.warn("1) processHandleGet [{}]", exchange);
// exchange.respond(CoAP.ResponseCode.BAD_REQUEST);
// int ver = 10;
int ver = 9;
// exchange.respond(CoAP.ResponseCode.BAD_REQUEST);
int ver = 10;
// int ver = 9;
UUID currentId;
if (ver == 10) {
long mSB = 4951557297924280811L;
@ -77,10 +80,37 @@ public class LwM2mTransportCoapResource extends AbstractLwm2mTransportResource {
long lSb = -9086716326447629319L;
currentId = new UUID(mSB, lSb);
}
String resource = exchange.getRequestOptions().getUriPath().get(0);
String token = exchange.getRequestOptions().getUriPath().get(1);
exchange.respond(CoAP.ResponseCode.CONTENT, this.getFwData(currentId));
String coapResource = exchange.getRequestOptions().getUriPath().get(0);
String token = exchange.getRequestOptions().getUriPath().get(1);
if (exchange.getRequestOptions().getBlock2() != null) {
int chunkSize = exchange.getRequestOptions().getBlock2().getSzx();
int chunk = 0;
Response response = new Response(CoAP.ResponseCode.CONTENT);
byte[] fwData = this.getFwData(currentId);
if (fwData != null && fwData.length > 0) {
response.setPayload(fwData);
boolean moreFlag = fwData.length > chunkSize;
response.getOptions().setBlock2(chunkSize, moreFlag, chunk);
exchange.respond(response);
}
}
// List<String> options = exchange.advanced().getRequest().getOptions().getUriPath();
// options.stream()
// .filter(o -> FW_COAP_RESOURCE.equals(o))
// .findFirst()
// .ifPresent(o -> System.err.println(o.getNumber() + " " + o.getStringValue()));
if (FW_COAP_RESOURCE.equals(coapResource)) {
}
else if (SW_COAP_RESOURCE.equals(coapResource)) {
}
}
@ -138,9 +168,7 @@ public class LwM2mTransportCoapResource extends AbstractLwm2mTransportResource {
}
private byte[] getFwData(UUID currentId) {
int chunkSize = 0;
int chunk = 0;
return ((DefaultLwM2MTransportMsgHandler) handler).otaPackageDataCache.get(currentId.toString(), chunkSize, chunk);
return ((DefaultLwM2MTransportMsgHandler) handler).otaPackageDataCache.get(currentId.toString());
}
}