public PVStructure createRequest() { PVDataCreate dataCreate = PVDataFactory.getPVDataCreate(); PVStructure request = dataCreate.createPVStructure(requestType); PVString commandField = request.getStringField("command"); commandField.put(commandName); return request; }
/** Read info from data server */ public void read(RPCClientImpl client, double REQUEST_TIMEOUT) throws Exception { PVStructure pvRequest = createRequest(); PVInt keyField = pvRequest.getIntField("key"); keyField.put(key); PVString patternField = pvRequest.getStringField("pattern"); patternField.put(pattern); PVStructure pvResult = client.request(pvRequest, REQUEST_TIMEOUT); // process result PVStructureArray infos = pvResult.getStructureArrayField("channels"); StructureArrayData data = new StructureArrayData(); infos.get(0, infos.getLength(), data); this.chNames = new String[data.data.length]; this.starts = new Instant[data.data.length]; this.ends = new Instant[data.data.length]; for (int i = 0; i < data.data.length; i++) { PVStructure info = data.data[i]; chNames[i] = info.getStringField("name").get(); int start_secs = info.getIntField("start_sec").get(); int start_nano = info.getIntField("start_nano").get(); starts[i] = Instant.ofEpochSecond(start_secs, start_nano); int end_secs = info.getIntField("end_sec").get(); int end_nano = info.getIntField("end_nano").get(); ends[i] = Instant.ofEpochSecond(end_secs, end_nano); } }
@Override public void populatePVStructure(Serialiser serialiser, SpiralModel model, PVStructure pvStructure) throws Exception { PVString name = pvStructure.getSubField(PVString.class, "name"); name.put(model.getName()); PVString fastAxisName = pvStructure.getSubField(PVString.class, "fastAxisName"); fastAxisName.put(model.getFastAxisName()); PVString slowAxisName = pvStructure.getSubField(PVString.class, "slowAxisName"); slowAxisName.put(model.getSlowAxisName()); PVDouble scale = pvStructure.getSubField(PVDouble.class, "scale"); scale.put(model.getScale()); PVStructure bbStructure = pvStructure.getStructureField("boundingBox"); serialiser.setValues(model.getBoundingBox(), bbStructure); }
public void process() { pvResultValue.put("Hello " + pvArgumentValue.get()); super.process(); }