device acquire in loop. NMEA report UTC from incomplete sentences.

master
Michal Fratczak 2020-04-11 17:45:21 +02:00
rodzic 95232350da
commit a6d27c94d2
4 zmienionych plików z 37 dodań i 15 usunięć

Wyświetl plik

@ -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
//

Wyświetl plik

@ -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

Wyświetl plik

@ -36,7 +36,6 @@ public:
fix_quality_t fix_quality = fix_quality_t::kNoFix;
std::string str() const;
};

Wyświetl plik

@ -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;
}