An implementation of the Sirf Binary and NMEA Protocol for gps devices using the SiRFstarIII chipset
sIRFstarIII.h@0:43da35949666, 2012-06-28 (annotated)
- Committer:
- p3p
- Date:
- Thu Jun 28 21:17:29 2012 +0000
- Revision:
- 0:43da35949666
update to baud selection
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
p3p | 0:43da35949666 | 1 | #ifndef SIRF_PROTOCOL |
p3p | 0:43da35949666 | 2 | #define SIRF_PROTOCOL |
p3p | 0:43da35949666 | 3 | |
p3p | 0:43da35949666 | 4 | #include "mbed.h" |
p3p | 0:43da35949666 | 5 | #include "MODSERIAL.h" |
p3p | 0:43da35949666 | 6 | #include "Protocol.h" |
p3p | 0:43da35949666 | 7 | #include "BinaryPackets.h" |
p3p | 0:43da35949666 | 8 | #include "NmeaPackets.h" |
p3p | 0:43da35949666 | 9 | |
p3p | 0:43da35949666 | 10 | namespace SirfStarIII { |
p3p | 0:43da35949666 | 11 | |
p3p | 0:43da35949666 | 12 | enum ProtocolMode { |
p3p | 0:43da35949666 | 13 | BINARY, |
p3p | 0:43da35949666 | 14 | NMEA |
p3p | 0:43da35949666 | 15 | }; |
p3p | 0:43da35949666 | 16 | |
p3p | 0:43da35949666 | 17 | class SirfStarIII : public SimpleSerialProtocol::Protocol { |
p3p | 0:43da35949666 | 18 | public: |
p3p | 0:43da35949666 | 19 | SirfStarIII(PinName tx, PinName rx); |
p3p | 0:43da35949666 | 20 | virtual ~SirfStarIII(); |
p3p | 0:43da35949666 | 21 | |
p3p | 0:43da35949666 | 22 | virtual void initialise(); |
p3p | 0:43da35949666 | 23 | virtual void initialise(ProtocolMode mode, uint32_t baud_rate); |
p3p | 0:43da35949666 | 24 | virtual void receive(); |
p3p | 0:43da35949666 | 25 | virtual void sendPacket(SimpleSerialProtocol::Packet* packet); |
p3p | 0:43da35949666 | 26 | |
p3p | 0:43da35949666 | 27 | void receiveBinary(); |
p3p | 0:43da35949666 | 28 | uint16_t checksumBinary(uint8_t* packet, uint16_t packet_size); |
p3p | 0:43da35949666 | 29 | void sendBinaryPacket(SimpleSerialProtocol::Packet* packet); |
p3p | 0:43da35949666 | 30 | |
p3p | 0:43da35949666 | 31 | void receiveNMEA(); |
p3p | 0:43da35949666 | 32 | uint8_t checksumNMEA(const char * command); |
p3p | 0:43da35949666 | 33 | void sendNMEAPacket(SimpleSerialProtocol::Packet* packet); |
p3p | 0:43da35949666 | 34 | |
p3p | 0:43da35949666 | 35 | void selectMode(ProtocolMode mode, uint32_t baud, bool find_baud = false); |
p3p | 0:43da35949666 | 36 | void selectBaud(uint32_t baud); |
p3p | 0:43da35949666 | 37 | |
p3p | 0:43da35949666 | 38 | void NMEAChangeBaud(uint32_t baud_rate); |
p3p | 0:43da35949666 | 39 | void BinaryChangeBaud(uint32_t baud_rate); |
p3p | 0:43da35949666 | 40 | |
p3p | 0:43da35949666 | 41 | ProtocolMode _mode; |
p3p | 0:43da35949666 | 42 | }; |
p3p | 0:43da35949666 | 43 | |
p3p | 0:43da35949666 | 44 | } |
p3p | 0:43da35949666 | 45 | |
p3p | 0:43da35949666 | 46 | #endif |