Diff: RFSRF05.h
- Revision:
- 0:7583de124698
- Child:
- 1:0370ea94b64a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/RFSRF05.h Fri Mar 30 19:44:25 2012 +0000 @@ -0,0 +1,89 @@ + +#ifndef MBED_RFSRF05_H +#define MBED_RFSRF05_H + +#include "mbed.h" +#include "RF12B.h" + +#define CODE0 0x22 +#define CODE1 0x44 +#define CODE2 0x88 + +/* SAMPLE IMPLEMENTATION! +RFSRF05 my_srf(p13,p21,p22,p23,p24,p25,p26,p5,p6,p7,p8,p9); + + +void callbinmain(int num, float dist) { + //Here is where you deal with your brand new reading ;D +} + +int main() { + pc.printf("Hello World of RobotSonar!\r\n"); + my_srf.callbackfunc = callbinmain; + + while (1); +} + + */ + +class DummyCT; + +class RFSRF05 { +public: + + RFSRF05( + PinName trigger, + PinName echo0, + PinName echo1, + PinName echo2, + PinName echo3, + PinName echo4, + PinName echo5, + PinName SDI, + PinName SDO, + PinName SCK, + PinName NCS, + PinName NIRQ); + + /** A non-blocking function that will return the last measurement + * + * @returns floating point representation of distance in cm + */ + float read0(); + float read1(); + float read2(); + float read(unsigned int beaconnum); + + /** A assigns a callback function when a new reading is available **/ + void (*callbackfunc)(int beaconnum, float distance); + DummyCT* callbackobj; + void (DummyCT::*mcallbackfunc)(int beaconnum, float distance); + + //triggers a read + void startRange(); + + /** A short hand way of using the read function */ + operator float(); + +private : + RF12B _rf; + DigitalOut _trigger; + InterruptIn _echo0; + InterruptIn _echo1; + InterruptIn _echo2; + InterruptIn _echo3; + InterruptIn _echo4; + InterruptIn _echo5; + Timer _timer; + Ticker _ticker; + void _rising (void); + void _falling (void); + float _dist[3]; + char _code[3]; + int _beacon_counter; + bool ValidPulse; + bool expValidPulse; + +}; + +#endif