kopia lustrzana https://github.com/ogre/pizero_tracker
device acquire in loop. NMEA report UTC from incomplete sentences.
rodzic
95232350da
commit
a6d27c94d2
|
@ -151,21 +151,21 @@ int main1(int argc, char** argv)
|
|||
gpioSetMode( G.cli.hw_pin_radio_on, PI_OUTPUT );
|
||||
gpioWrite ( G.cli.hw_pin_radio_on, 1 );
|
||||
mtx2_set_frequency( G.cli.hw_pin_radio_on, G.cli.freqMHz );
|
||||
const int radio_fd = mtx2_open( G.cli.hw_radio_serial, G.cli.baud );
|
||||
if (radio_fd < 1)
|
||||
{
|
||||
cerr<<"Failed opening radio UART "<<G.cli.hw_radio_serial<<endl;
|
||||
return 1;
|
||||
int radio_fd = 0;
|
||||
while(radio_fd<1) {
|
||||
cout<<"Opening Radio UART "<<G.cli.hw_radio_serial<<endl;
|
||||
radio_fd = mtx2_open( G.cli.hw_radio_serial, G.cli.baud );
|
||||
sleep(3);
|
||||
}
|
||||
|
||||
|
||||
// uBLOX I2C start and config
|
||||
//
|
||||
const int uBlox_i2c_fd = uBLOX_i2c_open( G.cli.hw_ublox_device, 0x42 );
|
||||
if (!uBlox_i2c_fd)
|
||||
{
|
||||
cerr<<"Failed opening I2C "<<G.cli.hw_ublox_device<<" 0x42"<<endl;
|
||||
return 1;
|
||||
int uBlox_i2c_fd = 0;
|
||||
while(uBlox_i2c_fd<1) {
|
||||
cout<<"Opening uBlox I2C "<<G.cli.hw_ublox_device<<endl;
|
||||
uBlox_i2c_fd = uBLOX_i2c_open( G.cli.hw_ublox_device, 0x42 );
|
||||
sleep(3);
|
||||
}
|
||||
write(uBlox_i2c_fd, UBX_CMD_EnableOutput_ACK_ACK, sizeof(UBX_CMD_EnableOutput_ACK_ACK));
|
||||
write(uBlox_i2c_fd, UBX_CMD_EnableOutput_ACK_NAK, sizeof(UBX_CMD_EnableOutput_ACK_NAK));
|
||||
|
@ -252,6 +252,8 @@ int main1(int argc, char** argv)
|
|||
&& current_nmea.fix_quality != nmea_t::fix_quality_t::kNoFix;
|
||||
if(gps_fix_valid)
|
||||
valid_nmea = current_nmea;
|
||||
else
|
||||
memcpy( valid_nmea.utc, current_nmea.utc, sizeof(current_nmea.utc) );
|
||||
|
||||
// telemetry message
|
||||
//
|
||||
|
|
|
@ -100,8 +100,6 @@ bool NMEA_parse(const char* Buffer, nmea_t& o_nmea)
|
|||
{
|
||||
using namespace std;
|
||||
|
||||
// cout << "??? " << Buffer << endl;
|
||||
|
||||
float utc = 0;
|
||||
int date = 0;
|
||||
|
||||
|
@ -178,9 +176,14 @@ bool NMEA_parse(const char* Buffer, nmea_t& o_nmea)
|
|||
}
|
||||
return true;
|
||||
}
|
||||
else if(scanned_positions > 0 && utc != 0)
|
||||
{
|
||||
sprintf( o_nmea.utc, "%06d", int(floor(utc)) );
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// cerr<<"GGA scanf err"<<endl;
|
||||
// cerr<<"GGA scanf err"<<endl; // probably not all fields in sentence
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -220,9 +223,14 @@ bool NMEA_parse(const char* Buffer, nmea_t& o_nmea)
|
|||
|
||||
return true;
|
||||
}
|
||||
else if(scanned_positions > 0 && utc != 0)
|
||||
{
|
||||
sprintf( o_nmea.utc, "%06d", int(floor(utc)) );
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// cerr<<"RMC scanf err"<<endl;
|
||||
// cerr<<"RMC scanf err"<<endl; // probably not all fields in sentence
|
||||
return false;
|
||||
}
|
||||
} // RMC
|
||||
|
|
|
@ -36,7 +36,6 @@ public:
|
|||
fix_quality_t fix_quality = fix_quality_t::kNoFix;
|
||||
|
||||
std::string str() const;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -36,4 +36,17 @@ int main()
|
|||
else
|
||||
cout<<"nmea msg not found"<<endl;
|
||||
|
||||
cout<<"\n\nnmea_t copy test"<<endl;
|
||||
nmea_t A, B;
|
||||
A.utc[0] = '1';
|
||||
A.utc[1] = '2';
|
||||
A.utc[2] = '3';
|
||||
A.utc[3] = '4';
|
||||
A.utc[4] = '5';
|
||||
A.utc[5] = '6';
|
||||
cout<<A.str()<<endl;
|
||||
cout<<B.str()<<endl;
|
||||
B = A;
|
||||
cout<<B.str()<<endl;
|
||||
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue