IRM2121のfork

Fork of IRM2121 by Fumiya Fujisawa

Committer:
bousiya03
Date:
Sat Nov 15 00:38:54 2014 +0000
Revision:
1:1f7a3a98a5f5
Parent:
0:fd5c1ea78a7c
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ryuna 0:fd5c1ea78a7c 1 /* mbed Ping Library
ryuna 0:fd5c1ea78a7c 2 *
ryuna 0:fd5c1ea78a7c 3 *
ryuna 0:fd5c1ea78a7c 4 */
ryuna 0:fd5c1ea78a7c 5
ryuna 0:fd5c1ea78a7c 6
ryuna 0:fd5c1ea78a7c 7 #include "IRM2121.h"
ryuna 0:fd5c1ea78a7c 8 #include "mbed.h"
ryuna 0:fd5c1ea78a7c 9
bousiya03 1:1f7a3a98a5f5 10
ryuna 0:fd5c1ea78a7c 11 IRM2121::IRM2121(PinName IRM_PIN)
ryuna 0:fd5c1ea78a7c 12 : _event(IRM_PIN)
ryuna 0:fd5c1ea78a7c 13 , _timer()
ryuna 0:fd5c1ea78a7c 14 {
bousiya03 1:1f7a3a98a5f5 15 //_event.rise(this,&IRM2121::_Stop );
bousiya03 1:1f7a3a98a5f5 16 //_event.fall(this,&IRM2121::_Start );
bousiya03 1:1f7a3a98a5f5 17 //_event.disable_irq();
bousiya03 1:1f7a3a98a5f5 18
ryuna 0:fd5c1ea78a7c 19 _Flag = false;
ryuna 0:fd5c1ea78a7c 20 }
ryuna 0:fd5c1ea78a7c 21
ryuna 0:fd5c1ea78a7c 22 void IRM2121::_Start(void)
ryuna 0:fd5c1ea78a7c 23 {
ryuna 0:fd5c1ea78a7c 24 _Flag = true;
ryuna 0:fd5c1ea78a7c 25 _Valid = false; // start the timere, and invalidate the current time.
ryuna 0:fd5c1ea78a7c 26 _Busy = true;
ryuna 0:fd5c1ea78a7c 27 _timer.start();
ryuna 0:fd5c1ea78a7c 28 _Time = _timer.read_us();
ryuna 0:fd5c1ea78a7c 29 }
ryuna 0:fd5c1ea78a7c 30
ryuna 0:fd5c1ea78a7c 31 void IRM2121::_Stop(void)
ryuna 0:fd5c1ea78a7c 32 {
ryuna 0:fd5c1ea78a7c 33 if(_Flag == true){
ryuna 0:fd5c1ea78a7c 34 _Flag = false;
ryuna 0:fd5c1ea78a7c 35 _Valid = true; // When it stops, update the time
ryuna 0:fd5c1ea78a7c 36 _Busy = false;
ryuna 0:fd5c1ea78a7c 37 _Time = _timer.read_us()-_Time;
bousiya03 1:1f7a3a98a5f5 38 //_event.rise(this, 0);
bousiya03 1:1f7a3a98a5f5 39 //_event.fall(this, 0);
bousiya03 1:1f7a3a98a5f5 40 _event.rise_disable(this,&IRM2121::_Stop);
bousiya03 1:1f7a3a98a5f5 41 _event.fall_disable(this,&IRM2121::_Start);
ryuna 0:fd5c1ea78a7c 42 }
ryuna 0:fd5c1ea78a7c 43 }
ryuna 0:fd5c1ea78a7c 44
ryuna 0:fd5c1ea78a7c 45 void IRM2121::Set()
ryuna 0:fd5c1ea78a7c 46 {
bousiya03 1:1f7a3a98a5f5 47 //_event.enable_irq();
bousiya03 1:1f7a3a98a5f5 48 _event.rise(this,&IRM2121::_Stop);
bousiya03 1:1f7a3a98a5f5 49 _event.fall(this,&IRM2121::_Start);
ryuna 0:fd5c1ea78a7c 50 }
ryuna 0:fd5c1ea78a7c 51
ryuna 0:fd5c1ea78a7c 52 int IRM2121::Read()
ryuna 0:fd5c1ea78a7c 53 // -1 means not valid.
ryuna 0:fd5c1ea78a7c 54 {
ryuna 0:fd5c1ea78a7c 55 if(_Valid && ~_Busy)
ryuna 0:fd5c1ea78a7c 56 return (_Time);
ryuna 0:fd5c1ea78a7c 57 else
ryuna 0:fd5c1ea78a7c 58 return -1;
ryuna 0:fd5c1ea78a7c 59 }