IRM2121のfork
Fork of IRM2121 by
Diff: IRM2121.cpp
- Revision:
- 0:fd5c1ea78a7c
- Child:
- 1:1f7a3a98a5f5
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IRM2121.cpp Sun Nov 09 11:11:37 2014 +0000 @@ -0,0 +1,53 @@ +/* mbed Ping Library + * + * + */ + + +#include "IRM2121.h" +#include "mbed.h" + +IRM2121::IRM2121(PinName IRM_PIN) + : _event(IRM_PIN) + , _timer() + { + _event.rise(this,&IRM2121::_Stop ); + _event.fall(this,&IRM2121::_Start ); + _event.disable_irq(); + _Flag = false; + } + +void IRM2121::_Start(void) +{ + _Flag = true; + _Valid = false; // start the timere, and invalidate the current time. + _Busy = true; + _timer.start(); + _Time = _timer.read_us(); +} + +void IRM2121::_Stop(void) +{ + if(_Flag == true){ + _Flag = false; + _Valid = true; // When it stops, update the time + _Busy = false; + _Time = _timer.read_us()-_Time; + _event.disable_irq(); + } +} + +void IRM2121::Set() +{ + _event.enable_irq(); + +} + +int IRM2121::Read() +// -1 means not valid. +{ + if(_Valid && ~_Busy) + return (_Time); + else + return -1; +} \ No newline at end of file