<?xml version="1.0" encoding="utf-8" standalone="yes"?>
  <DRIVER HEADER="cpu.h" RAM="512"> <!-- Reserve 512 bytes for core libraries, stack, heap etc. -->
    <REQUIRE HEADER="Core.h"/>
    <ENUMERATION NAME="PINMODE">
      <CONSTANT NAME="INPUT" VALUE="INPUT"/>
      <CONSTANT NAME="OUTPUT"  VALUE="OUTPUT"/>
      <CONSTANT NAME="PULLUP"  VALUE="INPUT_PULLUP"/>
    </ENUMERATION>
    <ENUMERATION NAME="PINSTATE">
      <CONSTANT NAME="LOW" VALUE="LOW"/>
      <CONSTANT NAME="HIGH"  VALUE="HIGH"/>
    </ENUMERATION>
    <ENUMERATION NAME="REFMODE">
      <CONSTANT NAME="DEFAULT" VALUE="DEFAULT"/>
      <CONSTANT NAME="INTERNAL"  VALUE="INTERNAL"/>
      <CONSTANT NAME="EXTERNAL"  VALUE="EXTERNAL"/>
    </ENUMERATION>
    <ENUMERATION NAME="INTID">
      <CONSTANT NAME="INT0" VALUE="0"/>
      <CONSTANT NAME="INT1"  VALUE="1"/>
    </ENUMERATION>
    <ENUMERATION NAME="INTMODE">
      <CONSTANT NAME="LOW" VALUE="LOW"/>
      <CONSTANT NAME="CHANGE"  VALUE="CHANGE"/>
      <CONSTANT NAME="FALLING"  VALUE="FALLING"/>
      <CONSTANT NAME="RISING"  VALUE="RISING"/>
    </ENUMERATION>

    <METHOD NAME="pinMode" DESC="Set pin to input or output">
      <PARAMETER NAME="pin" TYPE="INTEGER" DESC="Arduino digital I/O number"/>
      <PARAMETER NAME="mode" TYPE="PINMODE" DESC="Input or output mode"/>
    </METHOD>
    <METHOD NAME="analogReference" DESC="Set reference for analog inputs	">
      <PARAMETER NAME="mode" TYPE="REFMODE" DESC="Reference mode"/>
    </METHOD>
    <METHOD NAME="analogWrite" DESC="Set pwm waveform on output pin">
      <PARAMETER NAME="pin" TYPE="INTEGER" DESC="Arduino digital I/O number"/>
      <PARAMETER NAME="value" TYPE="INTEGER" DESC="PWM value"/>
    </METHOD>
    <METHOD NAME="analogRead" DESC="Read voltage at analogue pin">
      <PARAMETER NAME="ain" TYPE="INTEGER" DESC="Arduino analogue input number"/>
      <RETURN NAME="value" TYPE="INTEGER" DEFAULT="ain" DESC="Analogue input value"/>
    </METHOD>
    <METHOD NAME="digitalWrite" DESC="Set state of digital output pin">
      <PARAMETER NAME="pin" TYPE="INTEGER" DESC="Arduino digital I/O number"/>
      <PARAMETER NAME="state" TYPE="BOOLEAN" DESC="Logic state"/>
    </METHOD>
    <METHOD NAME="digitalRead" DESC="Read state of digital pin">
      <PARAMETER NAME="pin" TYPE="INTEGER" DESC="Arduino digital I/O number"/>
      <RETURN NAME="state" TYPE="BOOLEAN" DEFAULT="state" DESC="Pin state"/>
    </METHOD>
    <METHOD NAME="pulseIn" DESC="Mesaure a pulse on the specified digital pin with timeout">
      <PARAMETER NAME="pin" TYPE="INTEGER" DESC="Arduino digital I/O number"/>
      <PARAMETER NAME="type" TYPE="PINSTATE" DEFAULT="HIGH" DESC="Pulse type"/>
      <PARAMETER NAME="timeout" TYPE="INTEGER" DEFAULT="1000000" DESC="Time to wait in microseconds"/>
      <RETURN NAME="duration" TYPE="INTEGER" DEFAULT="duration" DESC="Pulse length in microseconds"/>
    </METHOD>
    <METHOD NAME="millis" DESC="Read number of milliseconds since last reset">
      <RETURN NAME="millis" TYPE="INTEGER" DEFAULT="millis" DESC="Millseconds"/>
    </METHOD>
    <METHOD NAME="randomSeed" DESC="Initialise the random number generator">
      <PARAMETER NAME="seed" TYPE="INTEGER" DESC="Seed value to start the pseudo-random number generation with"/>
    </METHOD>
    <METHOD NAME="enableInterrupt" DESC="Set the mode for a specified interrupt.">
      <PARAMETER NAME="id" TYPE="INTID" DESC="Interrupt source"/>
      <PARAMETER NAME="mode" TYPE="INTMODE" DESC="Interrupt mode"/>
    </METHOD>
    <METHOD NAME="disableInterrupt" DESC="Disable the specified interrupt">
      <PARAMETER NAME="id" TYPE="INTID" DESC="Interrupt source"/>
    </METHOD>
    <METHOD NAME="setBuiltInLED" DESC="Set state of on-board LED">
      <PARAMETER NAME="state" TYPE="BOOLEAN" DESC="Logic state" DEFAULT="ON"/>
    </METHOD>    
    <METHOD NAME="debug" DESC="Write information to the simulation log.">
      <PARAMETER TYPE="LIST" DESC="Items to output."/>
    </METHOD>                  
    <METHOD NAME="tone" DESC="Play tone">
      <PARAMETER NAME="pin" TYPE="INTEGER" DESC="Arduino digital I/O number"/>
      <PARAMETER NAME="frequency" TYPE="INTEGER" DESC="Frequency"/>
      <PARAMETER NAME="duration" TYPE="INTEGER" DESC="Duration"/>
    </METHOD>
    <METHOD NAME="noTone" DESC="Stop tone">
      <PARAMETER NAME="pin" TYPE="INTEGER" DESC="Arduino digital I/O number"/>
    </METHOD>
    <INTERRUPT DESC="RESET" HOOK="attachResetHandler"/>        	
    <INTERRUPT DESC="INT0 (IO2)" HOOK="attachInterruptHandler&lt;0&gt;" EXCLUSIVE="1"/>        	
    <INTERRUPT DESC="INT1 (IO3)" HOOK="attachInterruptHandler&lt;1&gt;" EXCLUSIVE="1"/>        	
  </DRIVER>
