/* 
 * File:   buddyshare.h
 * Author: M650116
 *
 * Created on July 28, 2014, 4:48 PM
 */

#ifndef BUDDYSHARE_H
#define	BUDDYSHARE_H

#include <math.h>
    
#define EARTH_MEAN_RADIUS 6371 // km

// Degree to radian conversion (PI / 180)
#define CONVERT_TO_RAD 0.0174532925199433

// Radian to degree conversion (180 / PI)
#define CONVERT_TO_DEG 57.29577951308232

// Convert KM to miles
#define CONVERT_TO_MI 0.621371

// Number of expected argumanets
#define EXPECTED_NUM_ARGS 5

// Char point description ('a=') size
#define CHAR_DESC_SIZE 2

// Max number of chars per argv
#define MAX_ARGV_CHARS 256

// Comma delimiter ascii code
#define COMMA_CHAR_CODE 44

// ERROR Codes
#define INVALID_ARG_COUNT 1

    // Driver number enumeration
    typedef enum {
        driver_all = 0, // Both drivers share the same detour distance
        driver_1 = 1,
        driver_2 = 2
    }enum_driver;

    // Structure for a latitude and longitude point
    // Values in degrees
    typedef struct {
        double lat;
        double lon;
    }latlon;
    
    // Structure to hold the shorter of the driver distances
    typedef struct {
        enum_driver driver;
        double detour_distance;
    }driver_detour;
    
// Prototypes
double haversine(latlon * from, latlon * to);
driver_detour calculateShorterDetour(latlon a, latlon b, latlon c, latlon d);
void getCommandArg(latlon * retPoint,char *argv);


#endif	/* BUDDYSHARE_H */

