/*! determines qso points based on grid squares */ void Stew::addQso(Qso *qso) { if (qso->band != BAND160) { qso->pts = 0; addQsoMult(qso); return; // not on 160, does not count } // qso points if (myGrid.size()) { double lat, lon; locator2longlat(&lon, &lat, qso->rcv_exch[0].data()); lon *= -1.0; double dist, head; if (qrb(myLon * -1.0, myLat, lon * -1.0, lat, &dist, &head) != RIG_OK) { dist = 0.0; } qso->pts = ceil(dist / 500.0); if (qso->pts <= 0) qso->pts = 1; } else { // grid entered incorrectly qso->pts = 1; } if (qso->dupe || !qso->valid) qso->pts = 0; qsoPts += qso->pts; addQsoMult(qso); }
/*! StationDialog is a dialog for entering station parameters (call, name, ...) s is station config file (so2sdr.ini) in QSettings .ini format */ StationDialog::StationDialog(QSettings &s, QWidget *parent) : QDialog(parent),settings(s) { setupUi(this); // load from settings file CallLineEdit->setValidator(new UpperValidator(CallLineEdit)); CallLineEdit->setText(settings.value(s_call,s_call_def).toString()); NameLineEdit->setValidator(new UpperValidator(NameLineEdit)); NameLineEdit->setText(settings.value(s_name,s_name_def).toString()); StateLineEdit->setValidator(new UpperValidator(StateLineEdit)); StateLineEdit->setText(settings.value(s_state,s_state_def).toString()); ARRLSectionLineEdit->setValidator(new UpperValidator(ARRLSectionLineEdit)); ARRLSectionLineEdit->setText(settings.value(s_section,s_section_def).toString()); GridLineEdit->setValidator(new UpperValidator(GridLineEdit)); GridLineEdit->setText(settings.value(s_grid,s_grid_def).toString()); Lat = 0.; Lon = 0.; locator2longlat(&Lon, &Lat, settings.value(s_grid,s_grid_def).toByteArray().data()); Lon *= -1.0; CQZoneLineEdit->setText(settings.value(s_cqzone,s_cqzone_def).toString()); ITUZoneLineEdit->setText(settings.value(s_ituzone,s_ituzone_def).toString()); connect(station_dialog_buttons, SIGNAL(rejected()), this, SLOT(rejectChanges())); connect(station_dialog_buttons, SIGNAL(accepted()), this, SLOT(updateStation())); CabrilloAddressEdit->setText(settings.value(s_cab_address,s_cab_address_def).toString()); CabrilloNameLineEdit->setText(settings.value(s_cab_name,s_cab_name_def).toString()); CityLineEdit->setText(settings.value(s_cab_city,s_cab_city_def).toString()); StateLineEdit_2->setText(settings.value(s_cab_state,s_cab_state_def).toString()); CountryLineEdit->setText(settings.value(s_cab_country,s_cab_country_def).toString()); PostalCodeLineEdit->setText(settings.value(s_cab_zip,s_cab_zip_def).toString()); }
/*! update from form input */ void StationDialog::updateStation() { settings.setValue(s_call,CallLineEdit->text()); settings.setValue(s_section,ARRLSectionLineEdit->text()); settings.setValue(s_state,StateLineEdit->text()); settings.setValue(s_grid,GridLineEdit->text()); locator2longlat(&Lon, &Lat, GridLineEdit->text().toLatin1().data()); Lon *= -1.0; settings.setValue(s_cqzone,CQZoneLineEdit->text().toInt()); settings.setValue(s_ituzone,ITUZoneLineEdit->text().toInt()); settings.setValue(s_name,NameLineEdit->text()); settings.setValue(s_cab_address,CabrilloAddressEdit->toPlainText()); settings.setValue(s_cab_name,CabrilloNameLineEdit->text()); settings.setValue(s_cab_zip,PostalCodeLineEdit->text()); settings.setValue(s_cab_city,CityLineEdit->text()); settings.setValue(s_cab_country,CountryLineEdit->text()); settings.setValue(s_cab_state,StateLineEdit_2->text()); settings.sync(); emit(stationUpdate()); accept(); }
int main (int argc, char *argv[]) { char recodedloc[13], *loc1, *loc2, sign; double lon1, lat1, lon2, lat2; double distance, az, mmm, sec; int deg, min, retcode, loc_len, nesw = 0; if (argc < 2) { fprintf(stderr, "Usage: %s <locator1> <precision> [<locator2>]\n", argv[0]); exit(1); } loc1 = argv[1]; loc_len = argc > 2 ? atoi(argv[2]) : strlen(loc1)/2; loc2 = argc > 3 ? argv[3] : NULL; printf("Locator1:\t%s\n", loc1); /* hamlib function to convert maidenhead to decimal degrees */ retcode = locator2longlat(&lon1, &lat1, loc1); if (retcode != RIG_OK) { fprintf(stderr, "locator2longlat() failed with malformed input.\n"); exit(2); } /* hamlib function to convert decimal degrees to deg, min, sec */ retcode = dec2dms(lon1, °, &min, &sec, &nesw); if (retcode != RIG_OK) { fprintf(stderr, "dec2dms() failed, invalid paramter address.\n"); exit(2); } if (nesw == 1) sign = '-'; else sign = '\0'; printf(" Longitude:\t%f\t%c%d %d' %.2f\"\n", lon1, sign, deg, min, sec); /* hamlib function to convert deg, min, sec to decimal degrees */ lon1 = dms2dec(deg, min, sec, nesw); printf(" Recoded lon:\t%f\n", lon1); /* hamlib function to convert decimal degrees to deg decimal minutes */ retcode = dec2dmmm(lon1, °, &mmm, &nesw); if (retcode != RIG_OK) { fprintf(stderr, "dec2dmmm() failed, invalid paramter address.\n"); exit(2); } if (nesw == 1) sign = '-'; else sign = '\0'; printf(" GPS lon:\t%f\t%c%d %.3f'\n", lon1, sign, deg, mmm); /* hamlib function to convert deg, decimal min to decimal degrees */ lon1 = dmmm2dec(deg, mmm, nesw); printf(" Recoded GPS:\t%f\n", lon1); /* hamlib function to convert decimal degrees to deg, min, sec */ retcode = dec2dms(lat1, °, &min, &sec, &nesw); if (retcode != RIG_OK) { fprintf(stderr, "dec2dms() failed, invalid paramter address.\n"); exit(2); } if (nesw == 1) sign = '-'; else sign = '\0'; printf(" Latitude:\t%f\t%c%d %d' %.2f\"\n", lat1, sign, deg, min, sec); /* hamlib function to convert deg, min, sec to decimal degrees */ lat1 = dms2dec(deg, min, sec, nesw); printf(" Recoded lat:\t%f\n", lat1); /* hamlib function to convert decimal degrees to deg decimal minutes */ retcode = dec2dmmm(lat1, °, &mmm, &nesw); if (retcode != RIG_OK) { fprintf(stderr, "dec2dmmm() failed, invalid paramter address.\n"); exit(2); } if (nesw == 1) sign = '-'; else sign = '\0'; printf(" GPS lat:\t%f\t%c%d %.3f'\n", lat1, sign, deg, mmm); /* hamlib function to convert deg, decimal min to decimal degrees */ lat1 = dmmm2dec(deg, mmm, nesw); printf(" Recoded GPS:\t%f\n", lat1); /* hamlib function to convert decimal degrees to maidenhead */ retcode = longlat2locator(lon1, lat1, recodedloc, loc_len); if (retcode != RIG_OK) { fprintf(stderr, "longlat2locator() failed, precision out of range.\n"); exit(2); } printf(" Recoded:\t%s\n", recodedloc); if (loc2 == NULL) exit(0); /* Now work on the second locator */ printf("\nLocator2:\t%s\n", loc2); retcode = locator2longlat(&lon2, &lat2, loc2); if (retcode != RIG_OK) { fprintf(stderr, "locator2longlat() failed with malformed input.\n"); exit(2); } /* hamlib function to convert decimal degrees to deg, min, sec */ retcode = dec2dms(lon2, °, &min, &sec, &nesw); if (retcode != RIG_OK) { fprintf(stderr, "dec2dms() failed, invalid paramter address.\n"); exit(2); } if (nesw == 1) sign = '-'; else sign = '\0'; printf(" Longitude:\t%f\t%c%d %d' %.2f\"\n", lon2, sign, deg, min, sec); /* hamlib function to convert deg, min, sec to decimal degrees */ lon2 = dms2dec(deg, min, sec, nesw); printf(" Recoded lon:\t%f\n", lon2); /* hamlib function to convert decimal degrees to deg decimal minutes */ retcode = dec2dmmm(lon2, °, &mmm, &nesw); if (retcode != RIG_OK) { fprintf(stderr, "dec2dmmm() failed, invalid paramter address.\n"); exit(2); } if (nesw == 1) sign = '-'; else sign = '\0'; printf(" GPS lon:\t%f\t%c%d %.3f'\n", lon2, sign, deg, mmm); /* hamlib function to convert deg, decimal min to decimal degrees */ lon2 = dmmm2dec(deg, mmm, nesw); printf(" Recoded GPS:\t%f\n", lon2); /* hamlib function to convert decimal degrees to deg, min, sec */ retcode = dec2dms(lat2, °, &min, &sec, &nesw); if (retcode != RIG_OK) { fprintf(stderr, "dec2dms() failed, invalid paramter address.\n"); exit(2); } if (nesw == 1) sign = '-'; else sign = '\0'; printf(" Latitude:\t%f\t%c%d %d' %.2f\"\n", lat2, sign, deg, min, sec); /* hamlib function to convert deg, min, sec to decimal degrees */ lat2 = dms2dec(deg, min, sec, nesw); printf(" Recoded lat:\t%f\n", lat2); /* hamlib function to convert decimal degrees to deg decimal minutes */ retcode = dec2dmmm(lat2, °, &mmm, &nesw); if (retcode != RIG_OK) { fprintf(stderr, "dec2dmmm() failed, invalid paramter address.\n"); exit(2); } if (nesw == 1) sign = '-'; else sign = '\0'; printf(" GPS lat:\t%f\t%c%d %.3f'\n", lat2, sign, deg, mmm); /* hamlib function to convert deg, decimal min to decimal degrees */ lat2 = dmmm2dec(deg, mmm, nesw); printf(" Recoded GPS:\t%f\n", lat2); /* hamlib function to convert decimal degrees to maidenhead */ retcode = longlat2locator(lon2, lat2, recodedloc, loc_len); if (retcode != RIG_OK) { fprintf(stderr, "longlat2locator() failed, precision out of range.\n"); exit(2); } printf(" Recoded:\t%s\n", recodedloc); retcode = qrb(lon1, lat1, lon2, lat2, &distance, &az); if (retcode != RIG_OK) { fprintf(stderr, "QRB error: %d\n", retcode); exit(2); } dec2dms(az, °, &min, &sec, &nesw); printf("\nDistance: %.6fkm\n", distance); if (nesw == 1) sign = '-'; else sign = '\0'; /* Beware printf() rounding error! */ printf("Bearing: %.2f, %c%d %d' %.2f\"\n", az, sign, deg, min, sec); exit(0); }