AP_GPS: replaced "int" with "int16_t" and "long" with "int32_t"

This commit is contained in:
rmackay9 2012-08-18 16:35:38 +09:00
parent bd84f58f83
commit 2ad383505c
10 changed files with 59 additions and 59 deletions

View File

@ -45,11 +45,11 @@ AP_GPS_406::_configure_gps(void)
const uint8_t gps_checksum[] = {0xA8, 0xAA, 0xAD, 0xAF, 0xC1}; const uint8_t gps_checksum[] = {0xA8, 0xAA, 0xAD, 0xAF, 0xC1};
const uint8_t gps_ender[] = {0xB0, 0xB3}; const uint8_t gps_ender[] = {0xB0, 0xB3};
for(int z = 0; z < 2; z++) { for(int16_t z = 0; z < 2; z++) {
for(int x = 0; x < 5; x++) { for(int16_t x = 0; x < 5; x++) {
_port->write(gps_header, sizeof(gps_header)); // Prints the msg header, is the same header for all msg.. _port->write(gps_header, sizeof(gps_header)); // Prints the msg header, is the same header for all msg..
_port->write(gps_payload[x]); // Prints the payload, is not the same for every msg _port->write(gps_payload[x]); // Prints the payload, is not the same for every msg
for(int y = 0; y < 6; y++) // Prints 6 zeros for(int16_t y = 0; y < 6; y++) // Prints 6 zeros
_port->write((uint8_t)0); _port->write((uint8_t)0);
_port->write(gps_checksum[x]); // Print the Checksum _port->write(gps_checksum[x]); // Print the Checksum
_port->write(gps_ender[0]); // Print the Ender of the string, is same on all msg's. _port->write(gps_ender[0]); // Print the Ender of the string, is same on all msg's.

View File

@ -17,11 +17,11 @@
update() : Call this funcion as often as you want to ensure you read the incomming gps data update() : Call this funcion as often as you want to ensure you read the incomming gps data
Properties: Properties:
lattitude : lattitude * 10000000 (long value) lattitude : lattitude * 10000000 (int32_t value)
longitude : longitude * 10000000 (long value) longitude : longitude * 10000000 (int32_t value)
altitude : altitude * 100 (meters) (long value) altitude : altitude * 100 (meters) (int32_t value)
ground_speed : Speed (m/s) * 100 (long value) ground_speed : Speed (m/s) * 100 (int32_t value)
ground_course : Course (degrees) * 100 (long value) ground_course : Course (degrees) * 100 (int32_t value)
new_data : 1 when a new data is received. new_data : 1 when a new data is received.
You need to write a 0 to new_data when you read the data You need to write a 0 to new_data when you read the data
fix : 1: GPS NO fix, 2: 2D fix, 3: 3D fix. fix : 1: GPS NO fix, 2: 2D fix, 3: 3D fix.
@ -56,12 +56,12 @@ bool
AP_GPS_IMU::read(void) AP_GPS_IMU::read(void)
{ {
byte data; byte data;
int numc = 0; int16_t numc = 0;
numc = _port->available(); numc = _port->available();
if (numc > 0) { if (numc > 0) {
for (int i=0; i<numc; i++) { // Process bytes received for (int16_t i=0; i<numc; i++) { // Process bytes received
data = _port->read(); data = _port->read();
@ -169,30 +169,30 @@ void AP_GPS_IMU::join_data(void)
//In this case all the message im using are in class 1, to know more about classes check PAGE 60 of DataSheet. //In this case all the message im using are in class 1, to know more about classes check PAGE 60 of DataSheet.
//Storing IMU roll //Storing IMU roll
roll_sensor = *(int *)&buffer[0]; roll_sensor = *(int16_t *)&buffer[0];
//Storing IMU pitch //Storing IMU pitch
pitch_sensor = *(int *)&buffer[2]; pitch_sensor = *(int16_t *)&buffer[2];
//Storing IMU heading (yaw) //Storing IMU heading (yaw)
ground_course = *(int *)&buffer[4]; ground_course = *(int16_t *)&buffer[4];
imu_ok = true; imu_ok = true;
} }
void AP_GPS_IMU::join_data_xplane() void AP_GPS_IMU::join_data_xplane()
{ {
//Storing IMU roll //Storing IMU roll
roll_sensor = *(int *)&buffer[0]; roll_sensor = *(int16_t *)&buffer[0];
//Storing IMU pitch //Storing IMU pitch
pitch_sensor = *(int *)&buffer[2]; pitch_sensor = *(int16_t *)&buffer[2];
//Storing IMU heading (yaw) //Storing IMU heading (yaw)
ground_course = *(unsigned int *)&buffer[4]; ground_course = *(uint16_t *)&buffer[4];
//Storing airspeed //Storing airspeed
airspeed = *(int *)&buffer[6]; airspeed = *(int16_t *)&buffer[6];
imu_ok = true; imu_ok = true;
@ -200,17 +200,17 @@ void AP_GPS_IMU::join_data_xplane()
void AP_GPS_IMU::GPS_join_data(void) void AP_GPS_IMU::GPS_join_data(void)
{ {
longitude = *(long *)&buffer[0]; // degrees * 10e7 longitude = *(int32_t *)&buffer[0]; // degrees * 10e7
latitude = *(long *)&buffer[4]; latitude = *(int32_t *)&buffer[4];
//Storing GPS Height above the sea level //Storing GPS Height above the sea level
altitude = (long)*(int *)&buffer[8] * 10; altitude = (int32_t)*(int16_t *)&buffer[8] * 10;
//Storing Speed //Storing Speed
speed_3d = ground_speed = (float)*(int *)&buffer[10]; speed_3d = ground_speed = (float)*(int16_t *)&buffer[10];
//We skip the gps ground course because we use yaw value from the IMU for ground course //We skip the gps ground course because we use yaw value from the IMU for ground course
time = *(long *)&buffer[14]; time = *(int32_t *)&buffer[14];
imu_health = buffer[15]; imu_health = buffer[15];
@ -234,5 +234,5 @@ void AP_GPS_IMU::checksum(unsigned char data)
/**************************************************************** /****************************************************************
* Unused * Unused
****************************************************************/ ****************************************************************/
void AP_GPS_IMU::setHIL(long _time, float _latitude, float _longitude, float _altitude, void AP_GPS_IMU::setHIL(uint32_t _time, float _latitude, float _longitude, float _altitude,
float _ground_speed, float _ground_course, float _speed_3d, uint8_t _num_sats) {}; float _ground_speed, float _ground_course, float _speed_3d, uint8_t _num_sats) {};

View File

@ -15,14 +15,14 @@ public:
virtual bool read(void); virtual bool read(void);
// Properties // Properties
long roll_sensor; // how much we're turning in deg * 100 int32_t roll_sensor; // how much we're turning in deg * 100
long pitch_sensor; // our angle of attack in deg * 100 int32_t pitch_sensor; // our angle of attack in deg * 100
int airspeed; int16_t airspeed;
float imu_health; float imu_health;
uint8_t imu_ok; uint8_t imu_ok;
// Unused // Unused
virtual void setHIL(long time, float latitude, float longitude, float altitude, virtual void setHIL(uint32_t time, float latitude, float longitude, float altitude,
float ground_speed, float ground_course, float speed_3d, uint8_t num_sats); float ground_speed, float ground_course, float speed_3d, uint8_t num_sats);
private: private:

View File

@ -52,11 +52,11 @@ bool
AP_GPS_MTK::read(void) AP_GPS_MTK::read(void)
{ {
uint8_t data; uint8_t data;
int numc; int16_t numc;
bool parsed = false; bool parsed = false;
numc = _port->available(); numc = _port->available();
for (int i = 0; i < numc; i++) { // Process bytes received for (int16_t i = 0; i < numc; i++) { // Process bytes received
// read the next byte // read the next byte
data = _port->read(); data = _port->read();
@ -138,8 +138,8 @@ restart:
num_sats = _buffer.msg.satellites; num_sats = _buffer.msg.satellites;
// time from gps is UTC, but convert here to msToD // time from gps is UTC, but convert here to msToD
long time_utc = _swapl(&_buffer.msg.utc_time); int32_t time_utc = _swapl(&_buffer.msg.utc_time);
long temp = (time_utc/10000000); int32_t temp = (time_utc/10000000);
time_utc -= temp*10000000; time_utc -= temp*10000000;
time = temp * 3600000; time = temp * 3600000;
temp = (time_utc/100000); temp = (time_utc/100000);

View File

@ -59,11 +59,11 @@ bool
AP_GPS_MTK16::read(void) AP_GPS_MTK16::read(void)
{ {
uint8_t data; uint8_t data;
int numc; int16_t numc;
bool parsed = false; bool parsed = false;
numc = _port->available(); numc = _port->available();
for (int i = 0; i < numc; i++) { // Process bytes received for (int16_t i = 0; i < numc; i++) { // Process bytes received
// read the next byte // read the next byte
data = _port->read(); data = _port->read();
@ -136,8 +136,8 @@ restart:
date = _buffer.msg.utc_date; date = _buffer.msg.utc_date;
// time from gps is UTC, but convert here to msToD // time from gps is UTC, but convert here to msToD
long time_utc = _buffer.msg.utc_time; int32_t time_utc = _buffer.msg.utc_time;
long temp = (time_utc/10000000); int32_t temp = (time_utc/10000000);
time_utc -= temp*10000000; time_utc -= temp*10000000;
time = temp * 3600000; time = temp * 3600000;
temp = (time_utc/100000); temp = (time_utc/100000);
@ -157,11 +157,11 @@ restart:
/* Waiting on clarification of MAVLink protocol! /* Waiting on clarification of MAVLink protocol!
if(!_offset_calculated && parsed) { if(!_offset_calculated && parsed) {
long tempd1 = date; int32_t tempd1 = date;
long day = tempd1/10000; int32_t day = tempd1/10000;
tempd1 -= day * 10000; tempd1 -= day * 10000;
long month = tempd1/100; int32_t month = tempd1/100;
long year = tempd1 - month * 100; int32_t year = tempd1 - month * 100;
_time_offset = _calc_epoch_offset(day, month, year); _time_offset = _calc_epoch_offset(day, month, year);
_epoch = UNIX_EPOCH; _epoch = UNIX_EPOCH;
_offset_calculated = TRUE; _offset_calculated = TRUE;

View File

@ -115,7 +115,7 @@ void AP_GPS_NMEA::init(enum GPS_Engine_Setting nav_setting)
bool AP_GPS_NMEA::read(void) bool AP_GPS_NMEA::read(void)
{ {
int numc; int16_t numc;
bool parsed = false; bool parsed = false;
numc = _port->available(); numc = _port->available();
@ -167,7 +167,7 @@ bool AP_GPS_NMEA::_decode(char c)
// //
// internal utilities // internal utilities
// //
int AP_GPS_NMEA::_from_hex(char a) int16_t AP_GPS_NMEA::_from_hex(char a)
{ {
if (a >= 'A' && a <= 'F') if (a >= 'A' && a <= 'F')
return a - 'A' + 10; return a - 'A' + 10;
@ -197,7 +197,7 @@ uint32_t AP_GPS_NMEA::_parse_degrees()
{ {
char *p, *q; char *p, *q;
uint8_t deg = 0, min = 0; uint8_t deg = 0, min = 0;
unsigned int frac_min = 0; uint16_t frac_min = 0;
int32_t ret = 0; int32_t ret = 0;
// scan for decimal point or end of field // scan for decimal point or end of field
@ -224,7 +224,7 @@ uint32_t AP_GPS_NMEA::_parse_degrees()
// ten-thousandths of a minute // ten-thousandths of a minute
if (*p == '.') { if (*p == '.') {
q = p + 1; q = p + 1;
for (int i = 0; i < 5; i++) { for (int16_t i = 0; i < 5; i++) {
frac_min = (int32_t)(frac_min * 10); frac_min = (int32_t)(frac_min * 10);
if (isdigit(*q)) if (isdigit(*q))
frac_min += *q++ - '0'; frac_min += *q++ - '0';

View File

@ -88,7 +88,7 @@ private:
/// @param a The character to be converted /// @param a The character to be converted
/// @returns The value of the character as a hex digit /// @returns The value of the character as a hex digit
/// ///
int _from_hex(char a); int16_t _from_hex(char a);
/// Parses the current term as a NMEA-style decimal number with /// Parses the current term as a NMEA-style decimal number with
/// up to two decimal digits. /// up to two decimal digits.
@ -129,14 +129,14 @@ private:
// The result of parsing terms within a message is stored temporarily until // The result of parsing terms within a message is stored temporarily until
// the message is completely processed and the checksum validated. // the message is completely processed and the checksum validated.
// This avoids the need to buffer the entire message. // This avoids the need to buffer the entire message.
long _new_time; ///< time parsed from a term int32_t _new_time; ///< time parsed from a term
long _new_date; ///< date parsed from a term int32_t _new_date; ///< date parsed from a term
long _new_latitude; ///< latitude parsed from a term int32_t _new_latitude; ///< latitude parsed from a term
long _new_longitude; ///< longitude parsed from a term int32_t _new_longitude; ///< longitude parsed from a term
long _new_altitude; ///< altitude parsed from a term int32_t _new_altitude; ///< altitude parsed from a term
long _new_speed; ///< speed parsed from a term int32_t _new_speed; ///< speed parsed from a term
long _new_course; ///< course parsed from a term int32_t _new_course; ///< course parsed from a term
int _new_hdop; ///< HDOP parsed from a term int16_t _new_hdop; ///< HDOP parsed from a term
uint8_t _new_satellite_count; ///< satellite count parsed from a term uint8_t _new_satellite_count; ///< satellite count parsed from a term
/// @name Init strings /// @name Init strings

View File

@ -56,7 +56,7 @@ bool
AP_GPS_SIRF::read(void) AP_GPS_SIRF::read(void)
{ {
uint8_t data; uint8_t data;
int numc; int16_t numc;
bool parsed = false; bool parsed = false;
numc = _port->available(); numc = _port->available();

View File

@ -63,11 +63,11 @@ bool
AP_GPS_UBLOX::read(void) AP_GPS_UBLOX::read(void)
{ {
uint8_t data; uint8_t data;
int numc; int16_t numc;
bool parsed = false; bool parsed = false;
numc = _port->available(); numc = _port->available();
for (int i = 0; i < numc; i++) { // Process bytes received for (int16_t i = 0; i < numc; i++) { // Process bytes received
// read the next byte // read the next byte
data = _port->read(); data = _port->read();

View File

@ -25,7 +25,7 @@ public:
/// ///
void update(void); void update(void);
void (*callback)(unsigned long t); void (*callback)(uint32_t t);
/// GPS status codes /// GPS status codes
/// ///
@ -161,7 +161,7 @@ protected:
/// long in the wrong byte order /// long in the wrong byte order
/// @returns endian-swapped value /// @returns endian-swapped value
/// ///
long _swapl(const void *bytes); int32_t _swapl(const void *bytes);
/// perform an endian swap on an int /// perform an endian swap on an int
/// ///
@ -215,12 +215,12 @@ private:
float _velocity_east; float _velocity_east;
}; };
inline long inline int32_t
GPS::_swapl(const void *bytes) GPS::_swapl(const void *bytes)
{ {
const uint8_t *b = (const uint8_t *)bytes; const uint8_t *b = (const uint8_t *)bytes;
union { union {
long v; int32_t v;
uint8_t b[4]; uint8_t b[4];
} u; } u;