Exemple #1
0
/*! 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);
}
Exemple #2
0
/*!
  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());
}
Exemple #3
0
/*!
   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();
}
Exemple #4
0
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, &deg, &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, &deg, &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, &deg, &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, &deg, &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, &deg, &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, &deg, &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, &deg, &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, &deg, &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, &deg, &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);
}