Satellite Observers Workbench. NOT yet complete, just published for forum posters to \"cherry pick\" pieces of code as requiered as an example.

Dependencies:   mbed

utils/stations.c

Committer:
AjK
Date:
2010-10-11
Revision:
0:0a841b89d614

File content as of revision 0:0a841b89d614:

/****************************************************************************
 *    Copyright 2010 Andy Kirkham, Stellar Technologies Ltd
 *    
 *    This file is part of the Satellite Observers Workbench (SOWB).
 *
 *    SOWB is free software: you can redistribute it and/or modify
 *    it under the terms of the GNU General Public License as published by
 *    the Free Software Foundation, either version 3 of the License, or
 *    (at your option) any later version.
 *
 *    SOWB is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    GNU General Public License for more details.
 *
 *    You should have received a copy of the GNU General Public License
 *    along with SOWB.  If not, see <http://www.gnu.org/licenses/>.
 *
 *    $Id: main.cpp 5 2010-07-12 20:51:11Z ajk $
 *    
 ***************************************************************************/
 
#include "stations.h"

/** COSPAR observing stations around the World. 
 */
const STATION_t stations[] = {
    
    { 2010, "MM",   30.3340,     -97.7610,   160.,  "5105 Crestway Dr." },
    { 2011, "MM",   30.3150,     -97.8661,   300.,  "Bee Caves Rsrch Ctr" },
    { 2420, "RE",   55.9486,      -3.1386,    40.,  "Russell Eberst" },
    { 2675, "DB",   52.1358,      -2.3264,    70.,  "David Brierley" },
    { 2676, "DB",   52.1273,      -2.3365,   107.,  "David Brierley" },
    { 2018, "PW",   51.0945,      -1.1188,   150.,  "Peter Wakelin" },
    { 2701, "TM",   43.6876,     -79.3924,   230.,  "Ted Molczan" },
    { 3022, "JC",   48.7389,       3.4589,    52.,  "Jean-Paul Cornec" },
    { 5917, "BG",   59.3418,      18.0545,    33.,  "Bjorn Gimle" },
    { 5918, "BG",   59.2985,      18.1045,    44.,  "Bjorn Gimle" },
    { 5919, "BG",   59.2615,      18.6206,    33.,  "Bjorn Gimle" },
    { 9987, "BF",   59.3418,      18.0545,    30.,  "Bjorn Gimle" },
    {  100, "SG",   59.4628,      17.9137,    30.,  "Sven Grahn" },
    { 8305, "PG",   26.2431,     -98.2163,    30.,  "Paul Gabriel" },
    { 2563, "PN",   51.0524,       2.4043,    10.,  "Pierre Nierinck" },
    { 6226, "SC",   28.4861,     -97.8194,   110.,  "Scott Campbell" },
    { 8539, "SN",   39.4707,     -79.3388,   839.,  "Steve Newcomb" },
    { 2751, "BM",   51.3440,      -1.9849,   125.,  "Bruce MacDonald" },
    { 2756, "AK",   56.0907,      -3.1623,    25.,  "Andy Kirkham" }, /* wow, that's me! Shame I no longer live there. */
    {  433, "GR",  -33.9406,      18.5129,    10.,  "Greg Roberts" },
    { 4541, "AR",   41.9639,      12.4531,    80.,  "Alberto Rango" },
    { 4542, "AR",   41.9683,      12.4545,    80.,  "Alberto Rango" },
    { 4641, "AR",   41.1060,      16.9010,    70.,  "Alberto Rango" },
    { 2115, "MW",   51.3286,       0.7950,    75.,  "Mike Waterman" },
    { 1775, "KF",   44.6062,     -75.6910,   200.,  "Kevin Fettner" },
    { 1747, "DD",   45.7275,     -72.3526,   191.,  "Daniel Deak" },
    { 8597, "TB",  -34.9638,     138.6333,   100.,  "Tony Beresford" }, 
    { 8730, "EC",   30.3086,     -97.7279,   150.,  "Ed Cannon" },
    { 9730, "MM",   30.3150,     -97.8660,   280.,  "BCRC (0002)" },
    { 4353, "ML",   52.1541,       4.4908,     0.,  "Marco Langbroek" },
    { 4354, "ML",   52.1168,       4.5602,    -2.,  "Marco Langbroek" },
    {  710, "LS",   52.3261,      10.6756,    85.,  "Lutz Schindler" },
    { 1056, "MK",   57.0122,      23.9833,     4.,  "Martins Keruss" },
    {  110, "LK",   32.5408,     -96.8906,   200.,  "Lyn Kennedy" },
    {   11, "VA",   44.7269,      34.0167,   580.,  "Crimea Astrophysical Observ." },
    {   70, "BC",   53.2233,      -0.6003,    30.,  "Bob Christy" },
    { 8335, "BY",   35.8311,     -96.1471,   335.,  "Brad Young" },
    { 8336, "BY",   36.1397,     -95.9838,   205.,  "Brad Young" },
    { 8337, "BY",   36.9557,     -96.5518,   395.,  "Brad Young" },
    { 4160, "BD",   51.2793,       5.4768,    35.,  "Bram Dorreman" },
    { 9011, "RM",   50.9310,       2.4053,    72.,  "Richard Miles" },
    {   20, "PM",   50.7453,       2.1107,    70.,  "Paul Marsh" },
    {   40, "IR",   50.7453,       2.1107,    70.,  "Ian Roberts" },
    {   90, "RF",   50.7453,       2.1107,    70.,  "Richard Flagg" },
    {    1, "AK",   56.1923,      -3.0340,    53.,  "SOWB Test Station" },       /* Used for testing the SOWB. */
    {    0, "uk",    0.0000,       0.0000,     0.,  "Unknown station location" } /* Always the last entry. */
};

/** cospar_station_at
 *
 * Given a latitude and longitude is the point within a +/-0.0005 degree
 * box of a given station? If so, return a handle (array index) for that
 * station.
 *
 * @param double latitude
 * @param double longitude
 * @return int index
 */
int cospar_station_at(double latitude, double longitude) {
    int i;
    double high, low;
    
    for (i = 0; stations[i].cospar != 0; i++) {
        high = stations[i].latitude + 0.0005;
        low  = stations[i].latitude - 0.0005;
        if (latitude <= high && latitude >= low) {
            high = stations[i].longitude + 0.0005;
            low  = stations[i].longitude - 0.0005;
            if (longitude <= high && longitude >= low) {
                return i;
            }
        }
    }
    
    return i;
}

/** station
 *
 * Given an array index value, return a pointer to the station information structure.
 * The proceedure is basically a look-up opertaion.
 *
 * @param int index
 * @return STATION_t *  
 */
const STATION_t * cospar_station(int index) {
    return &stations[index];
}