EASYS (SignalML 1.0)
From SignalML
<?xml version="1.0"?>
<meta_format>
<header>
<format id='EASYS'/>
</header>
<data_format frame_type='multiplex' offset='16*{data_offset}' sample_type='int16'/>
<parameters>
<property id='magic' type='ascii' width='6' offset='0'/>
<constraint test='{magic}.equals("EASREC")'/>
<number_of_channels type='byte' offset='16'/>
<sampling_frequency evaltype='float' type='int16' offset='18' units='Hz'/>
<calibration_gain type='byte' offset='25' units='microVolts'/>
<property id='data_offset' type='int16' offset='28'/>
<property id='ext_hdr' type='uint16' offset='30'/>
<code language='java'>
private int offset_value;
private boolean offset_value_set=false;
private int easys_offset(int haveEx, int data_offset, int chn) throws XMLCodecException {
if(offset_value_set==false) {
if(haveEx==0) {
throw new XMLCodecException("ex. header not found !");
}
int offset=256;
for( ; ; ) {
char code1=(char)read_byte(offset), code2=(char)read_byte(offset+1);
short size=read_short(offset+2);
offset+=4;
if(code1=='C' && code2=='N') {
break;
} else if(code1=='\0' && code2=='\0') {
throw new XMLCodecException("channel names not found !");
}
offset+=size;
if(offset > data_offset) {
throw new XMLCodecException("channel names not found !");
}
}
offset_value_set=true;
offset_value=offset;
System.out.println(" OFFSET " + (16*offset));
return offset;
} else {
return offset_value;
}
}
</code>
<channel_names type='ascii' width='4'
offset='easys_offset({ext_hdr},{data_offset}, {number_of_channels})+4*({index}-1)'
index='1..{number_of_channels}'
/>
</parameters>
</meta_format>