package org.signalml.app.worker.monitor.messages; import java.util.List; import org.codehaus.jackson.annotate.JsonProperty; import org.signalml.app.model.document.opensignal.ExperimentDescriptor; import org.signalml.app.model.document.opensignal.elements.AmplifierChannel; public class StartEEGSignalRequest extends Message { @JsonProperty("name") private String name; @JsonProperty("launch_file") private String launchFile; @JsonProperty("client_push_address") private String clientPushAddress = ""; @JsonProperty("amplifier_params") private AmplifierParameters amplifierParameters; public StartEEGSignalRequest(ExperimentDescriptor experimentDescriptor) { super(MessageType.START_EEG_SIGNAL_REQUEST); name = createName(experimentDescriptor); launchFile = experimentDescriptor.getRecommendedScenario(); amplifierParameters = new AmplifierParameters(experimentDescriptor); } protected String createName(ExperimentDescriptor experimentDescriptor) { name = "Svarog online - " + experimentDescriptor.getAmplifier().getName(); return name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getLaunchFile() { return launchFile; } public void setLaunchFile(String launchFile) { this.launchFile = launchFile; } public String getClientPushAddress() { return clientPushAddress; } public void setClientPushAddress(String clientPushAddress) { this.clientPushAddress = clientPushAddress; } public AmplifierParameters getAmplifierParameters() { return amplifierParameters; } public void setAmplifierParameters(AmplifierParameters amplifierParameters) { this.amplifierParameters = amplifierParameters; } } class AmplifierParameters { @JsonProperty("channel_names") private String channelNames = ""; @JsonProperty("active_channels") private String activeChannels = ""; @JsonProperty("sampling_rate") private Float samplingFrequency; @JsonProperty("additional_params") private Object additionalParameters; public AmplifierParameters(ExperimentDescriptor experimentDescriptor) { samplingFrequency = experimentDescriptor.getSignalParameters().getSamplingFrequency(); List<AmplifierChannel> selectedChannels = experimentDescriptor.getAmplifier().getSelectedChannels(); for (int i = 0; i < selectedChannels.size(); i++) { AmplifierChannel channel = selectedChannels.get(i); if (AmplifierChannel.SPECIAL_CHANNEL_NAMES.contains(channel.getOriginalName())) activeChannels += channel.getOriginalName(); else activeChannels += (channel.getNumber()-1); channelNames += channel.getLabel(); if (i < selectedChannels.size()-1) { activeChannels += ";"; channelNames += ";"; } } this.additionalParameters = experimentDescriptor.getAmplifier().getAdditionalParameters(); } public String getChannelNames() { return channelNames; } public void setChannelNames(String channelNames) { this.channelNames = channelNames; } public String getActiveChannels() { return activeChannels; } public void setActiveChannels(String activeChannels) { this.activeChannels = activeChannels; } public Float getSamplingFrequency() { return samplingFrequency; } public void setSamplingFrequency(Float samplingFrequency) { this.samplingFrequency = samplingFrequency; } public void setAdditionalParameters(Object additionalParameters) { this.additionalParameters = additionalParameters; } public Object getAdditionalParameters() { return additionalParameters; } }