private void getUserStructs() { for (Struct struct : userStructs) { List<FieldDescription> fieldDescs = new ArrayList<FieldDescription>(); List<Field> fields = struct.getFields(); for (Field field : fields) { Srl srlType = Srl.valueOf(field.getType().getId()); switch (srlType) { case t_srl_I32: fieldDescs.add(new FieldDescription(field.getName(), FieldType.INT64)); break; case t_srl_U32: fieldDescs.add(new FieldDescription(field.getName(), FieldType.INT64)); break; default: } } client.typeDescRead(new TypeDescription(struct.getId(), struct.getName(), fieldDescs)); } }
private void getUserEvent(TypedCircularMessage message, long ts) { Struct struct = message.getStruct(); userStructs.add(struct); int structId = struct.getId(); FieldValues values = new FieldValues(); List<Field> fields = struct.getFields(); for (Field field : fields) { String fieldName = field.getName(); Object value = message.getValue(fieldName); Type type = field.getType(); if (field.isNullTerminated()) { if (type.getId() == Type.Srl.t_char.getId()) { String s = (String) value; values.addStringValue(s); } else { throw new UnsupportedOperationException( "Only null terminated 'char' sequences are currently supported, type is " + type); } } else if (field.getNumElements() == 1) { Srl srlType = Srl.valueOf(type.getId()); switch (srlType) { case t_srl_I32: case t_srl_U32: Long i = (Long) value; values.addLongValue(i); break; default: throw new UnsupportedOperationException("Unsupported type: " + type); } } else { throw new UnsupportedOperationException( "Arrays are currently not supported, type is " + type); } } client.eventRead(new GenericEventInfo(ts, structId, values)); }
/** * A hack to fix the problem with swapped ids in SRL in the mentor delivery 08032? * * @param typedCircularMessages */ private void correctMessageIds(final Collection<TypedCircularMessage> typedCircularMessages) { for (TypedCircularMessage typedCircularMessage : typedCircularMessages) { Struct struct = typedCircularMessage.getStruct(); /* * Detect id - name mismatch */ if (struct.getId() == Message.UML_SEND.srlTypeId()) { if (struct.getName().equals("srl_UmlSignalReceive")) { struct.setId(Message.UML_RECEIVE.srlTypeId()); } } else if (struct.getId() == Message.UML_RECEIVE.srlTypeId()) { if (struct.getName().equals("srl_UmlSignalSend")) { struct.setId(Message.UML_SEND.srlTypeId()); } } } }