IRM2121のfork
Fork of IRM2121 by
IRM2121.cpp@1:1f7a3a98a5f5, 2014-11-15 (annotated)
- Committer:
- bousiya03
- Date:
- Sat Nov 15 00:38:54 2014 +0000
- Revision:
- 1:1f7a3a98a5f5
- Parent:
- 0:fd5c1ea78a7c
test
Who changed what in which revision?
User | Revision | Line number | New 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 | } |