EASYS (SignalML 1.0)

From SignalML
Jump to: navigation, search
<?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' &amp;&amp; code2=='N') {
             break;
          } else if(code1=='\0' &amp;&amp; code2=='\0') {
             throw new XMLCodecException("channel names not found !");
          }
          offset+=size;
          if(offset &gt; 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>
Personal tools