most functionality to splashdwon, find neutral and start mission. short timeouts still in code for testing, will adjust to go directly to sit_idle after splashdown
Dependencies: mbed MODSERIAL FATFileSystem
Diff: IMU/IMU.h
- Revision:
- 11:3b241ecb75ed
- Parent:
- 10:085ab7328054
--- a/IMU/IMU.h Mon Oct 23 12:50:53 2017 +0000 +++ b/IMU/IMU.h Fri Oct 27 00:37:32 2017 +0000 @@ -1,6 +1,9 @@ #include "mbed.h" #include "MODSERIAL.h" +// for Microstrain's MIPS protocol, try this link, or search on microstrain.com +// http://www.microstrain.com/sites/default/files/3dm-gx5-45_dcp_manual_8500-0064_0.pdf + #define _PI ((float) 3.14159265359) // state machine states @@ -13,7 +16,7 @@ #define CRC1 6 // crc low byte // data set descriptors -#define IMU_DATA_SET 0x08 +#define IMU_DATA_SET 0x80 #define GNSS_DATA_SET 0x81 // enumerations for the Euler angle packet we care about @@ -56,13 +59,18 @@ double getLatitude(); double getLongitude(); double getAltitudeMSL(); - -protected: + + protected: Ticker interval; MODSERIAL _rs232; char byte; - unsigned char state, len, descriptor, i, crc0, crc1, payload[30], checksum; + + unsigned char state, len, descriptor, i, packet[256]; + unsigned int checksum, crc0, crc1; + +/* unsigned char state, len, descriptor, i, crc0, crc1, payload[30]; + unsigned int checksum;*/ float euler[3]; double latLonAlt[3]; @@ -70,10 +78,10 @@ bool is3dFixValid; char numSV; - void processPacket(char type, char length, unsigned char * data); - void processEulerCfPacket(char length, unsigned char * data); - void processLatLonAltPacket(char length, unsigned char * data); - void processGnssFixInformation(char length, unsigned char * data); + void processPayload(char type, char length, unsigned char * payload); + void processEulerCfPacket(char length, unsigned char * payload); + void processLatLonAltPacket(char length, unsigned char * payload); + void processGnssFixInformation(char length, unsigned char * payload); unsigned int calcChecksum(unsigned char * mip_packet, char checksum_range);