//****************************************************************************
//
// LED blink example
//
//****************************************************************************

#configure board        hu_arm_v4
#configure clcd_lines   2
#configure memory       rom
#configure baudrate     38400

class output_pin {
public:
   virtual void set( bool x ) = 0; 
};

class pin_lpc2: public output_pin {
private:
   unsigned int n;
public: 
   pin_lpc2( unsigned int n ): n( n ) { mkt_pin_configure( n, mkt_output ); }
   void set( bool x ) { mkt_pin_write( n, x ); }
};

class lpc2148 {
public:
   pin_lpc2 pio0_31;  
   
   lpc2148(): 
	  pio0_31( 31 ) 
   {}
};	
     
void blink( output_pin &led, unsigned int delay = 200 * 1000 ){
    for(;;){
       led.set( 1 );
       mkt_wait_us( delay );
       led.set( 0 );
       mkt_wait_us( delay );
   }      
};

int main( void ){ 
   lpc2148 target;
   blink( target.pio0_31 );
}


