Index: win2300.c
===================================================================
--- win2300.c	(revision 3)
+++ win2300.c	(working copy)
@@ -229,15 +229,16 @@
 /********************************************************************
  * http_request_url - Windows version
  * 
- * Inputs: urlline - URL to Weather Underground with path and data
+ * Inputs: urlline - URL to Weather site with path and data
  *                   as a pointer to char array (string)
+ *         baseurl - hostname of site to send data to
  *
  * Returns: 0 on success and -1 if fail.
  *
- * Action: Send a http request to Weather Underground
+ * Action: Send a http request to a weather site
  *
  ********************************************************************/
-int http_request_url(char *urlline)
+int http_request_url(char *urlline, char *baseurl)
 {
 	WORD wVersionRequested;
 	WSADATA wsaData;
@@ -267,7 +268,7 @@
 	    return(-1);   
 	}
 
-	if ( (hostinfo = gethostbyname(WEATHER_UNDERGROUND_BASEURL)) == NULL )
+	if ( (hostinfo = gethostbyname(baseurl)) == NULL )
 	{
 		perror("Host not known by DNS server or DNS server not working");
 		return(-1);
Index: rw2300.h
===================================================================
--- rw2300.h	(revision 3)
+++ rw2300.h	(working copy)
@@ -54,6 +54,12 @@
 
 #define WEATHER_UNDERGROUND_SOFTWARETYPE   "open2300"
 
+/* ONLY EDIT THESE IF HAMWEATHER CHANGES URL */
+#define HAMWEATHER_BASEURL "www.hamweather.net"
+#define HAMWEATHER_PATH "/weatherstations/pwsupdate.php"
+
+#define HAMWEATHER_SOFTWARETYPE   "open2300%20v"
+
 #define MAX_APRS_HOSTS	6
 
 typedef struct {
@@ -71,6 +77,8 @@
 	int    num_hosts;					// total defined hosts
 	char   weather_underground_id[30];
 	char   weather_underground_password[50];
+	char   hamweather_id[30];
+	char   hamweather_password[50];
 	char   timezone[6];                //not integer because of half hour time zones
 	double wind_speed_conv_factor;     //from m/s to km/h or miles/hour
 	int    temperature_conv;           //0=Celcius, 1=Fahrenheit
@@ -305,7 +313,7 @@
 int write_device(WEATHERSTATION serdevice, unsigned char *buffer, int size);
 void sleep_short(int milliseconds);
 void sleep_long(int seconds);
-int http_request_url(char *urlline);
+int http_request_url(char *urlline, char *baseurl);
 int citizen_weather_send(struct config_type *config, char *datastring);
 
 #endif /* _INCLUDE_RW2300_H_ */ 
Index: linux2300.c
===================================================================
--- linux2300.c	(revision 3)
+++ linux2300.c	(working copy)
@@ -242,13 +242,14 @@
  * 
  * Inputs: urlline - URL to Weather Underground with path and data
  *                   as a pointer to char array (string)
+ *         baseurl - hostname of site to send data to
  *
  * Returns: 0 on success and -1 if fail.
  *
- * Action: Send a http request to Weather Underground
+ * Action: Send a http request to a weather site
  *
  ********************************************************************/
-int http_request_url(char *urlline)
+int http_request_url(char *urlline, char *baseurl)
 {
 	int sockfd;
 	struct hostent *hostinfo;
@@ -256,7 +257,7 @@
 	char buffer[1024];
 	int bytes_read;
 	
-	if ( (hostinfo = gethostbyname(WEATHER_UNDERGROUND_BASEURL)) == NULL )
+	if ( (hostinfo = gethostbyname(baseurl)) == NULL )
 	{
 		perror("Host not known by DNS server or DNS server not working");
 		return(-1);
Index: open2300-dist.conf
===================================================================
--- open2300-dist.conf	(revision 3)
+++ open2300-dist.conf	(working copy)
@@ -21,7 +21,7 @@
 
 
 # Units of measure (set them to your preference)
-# The units of measure are ignored by wu2300 and cw2300 because both requires specific units
+# The units of measure are ignored by wu2300, ham2300 and cw2300 because both requires specific units
 
 WIND_SPEED                    m/s         # select MPH (miles/hour), m/s, or km/h
 TEMPERATURE                   C           # Select C or F
@@ -52,6 +52,12 @@
 WEATHER_UNDERGROUND_PASSWORD  WUPASSWORD  # Password for Weather Underground
 
 
+#### HAMWEATHER variables (used only by ham2300)
+
+HAMWEATHER_ID        HAMID        # ID received from Hamweather
+HAMWEATHER_PASSWORD  HAMPASSWORD  # Password for Hamweather
+
+
 ### MYSQL Settings (only used by mysql2300)
 
 MYSQL_HOST              localhost         # Localhost or IP address/host name
Index: Makefile
===================================================================
--- Makefile	(revision 3)
+++ Makefile	(working copy)
@@ -23,6 +23,7 @@
 LOGOBJ = log2300.o rw2300.o linux2300.o win2300.o
 FETCHOBJ = fetch2300.o rw2300.o linux2300.o win2300.o
 WUOBJ = wu2300.o rw2300.o linux2300.o win2300.o
+HAMOBJ = ham2300.o rw2300.o linux2300.o win2300.o
 CWOBJ = cw2300.o rw2300.o linux2300.o win2300.o
 DUMPOBJ = dump2300.o rw2300.o linux2300.o win2300.o
 HISTOBJ = history2300.o rw2300.o linux2300.o win2300.o
@@ -47,7 +48,7 @@
 
 ####### Build rules
 
-all: open2300 dump2300 log2300 fetch2300 wu2300 cw2300 history2300 histlog2300 bin2300 xml2300 light2300 interval2300 minmax2300 mysql2300 mysqlhistlog2300
+all: open2300 dump2300 log2300 fetch2300 wu2300 ham2300 cw2300 history2300 histlog2300 bin2300 xml2300 light2300 interval2300 minmax2300 mysql2300 mysqlhistlog2300
 
 open2300 : $(OBJ)
 	$(CC) $(CFLAGS) -o $@ $(OBJ) $(CC_LDFLAGS)
@@ -64,6 +65,9 @@
 wu2300 : $(WUOBJ)
 	$(CC) $(CFLAGS) -o $@ $(WUOBJ) $(CC_LDFLAGS) $(CC_WINFLAG)
 	
+ham2300 : $(HAMOBJ)
+	$(CC) $(CFLAGS) -o $@ $(HAMOBJ) $(CC_LDFLAGS) $(CC_WINFLAG)
+	
 cw2300 : $(CWOBJ)
 	$(CC) $(CFLAGS) -o $@ $(CWOBJ) $(CC_LDFLAGS) $(CC_WINFLAG)
 
@@ -105,6 +109,7 @@
 	$(INSTALL) log2300 $(bindir)
 	$(INSTALL) fetch2300 $(bindir)
 	$(INSTALL) wu2300 $(bindir)
+	$(INSTALL) ham2300 $(bindir)
 	$(INSTALL) cw2300 $(bindir)
 	$(INSTALL) histlog2300 $(bindir)
 	$(INSTALL) xml2300 $(bindir)
@@ -115,10 +120,10 @@
 	$(INSTALL) mysqlhistlog2300 $(bindir)
 	
 uninstall:
-	rm -f $(bindir)/open2300 $(bindir)/dump2300 $(bindir)/log2300 $(bindir)/fetch2300 $(bindir)/wu2300 $(bindir)/cw2300 $(bindir)/xml2300 $(bindir)/light2300 $(bindir)/interval2300 $(bindir)/minmax2300 $(bindir)/mysql2300 $(bindir)/mysqlhistlog2300
+	rm -f $(bindir)/open2300 $(bindir)/dump2300 $(bindir)/log2300 $(bindir)/fetch2300 $(bindir)/wu2300 $(bindir)/ham2300 $(bindir)/cw2300 $(bindir)/xml2300 $(bindir)/light2300 $(bindir)/interval2300 $(bindir)/minmax2300 $(bindir)/mysql2300 $(bindir)/mysqlhistlog2300
 
 clean:
-	rm -f *~ *.o open2300 dump2300 log2300 fetch2300 wu2300 cw2300 history2300 histlog2300 bin2300 xml2300 mysql2300 pgsql2300 light2300 interval2300 minmax2300 mysql2300 mysqlhistlog2300
+	rm -f *~ *.o open2300 dump2300 log2300 fetch2300 wu2300 ham2300 cw2300 history2300 histlog2300 bin2300 xml2300 mysql2300 pgsql2300 light2300 interval2300 minmax2300 mysql2300 mysqlhistlog2300
 
 cleanexe:
-	rm -f *~ *.o open2300.exe dump2300.exe log2300.exe fetch2300.exe wu2300.exe cw2300.exe history2300.exe histlog2300.exe bin2300.exe xml2300.exe mysql2300.exe pgsql2300.exe light2300.exe interval2300.exe minmax2300.exe
\ No newline at end of file
+	rm -f *~ *.o open2300.exe dump2300.exe log2300.exe fetch2300.exe wu2300.exe ham2300.exe cw2300.exe history2300.exe histlog2300.exe bin2300.exe xml2300.exe mysql2300.exe pgsql2300.exe light2300.exe interval2300.exe minmax2300.exe
Index: wu2300.c
===================================================================
--- wu2300.c	(revision 3)
+++ wu2300.c	(working copy)
@@ -127,7 +127,7 @@
 	}
 	else
 	{
-		http_request_url(urlline);
+		http_request_url(urlline, WEATHER_UNDERGROUND_BASEURL);
 	}
 
 	/* Reset minimum and maximum wind readings if reporting gusts */
Index: open2300-dist-win.conf
===================================================================
--- open2300-dist-win.conf	(revision 3)
+++ open2300-dist-win.conf	(working copy)
@@ -21,7 +21,7 @@
 
 
 # Units of measure (set them to your preference)
-# The units of measure are ignored by wu2300 and cw2300 because both requires specific units
+# The units of measure are ignored by wu2300, ham2300 and cw2300 because both requires specific units
 
 WIND_SPEED                    m/s         # select MPH (miles/hour), m/s, or km/h
 TEMPERATURE                   C           # Select C or F
@@ -52,6 +52,12 @@
 WEATHER_UNDERGROUND_PASSWORD  WUPASSWORD  # Password for Weather Underground
 
 
+#### HAMWEATHER variables (used only by ham2300)
+
+HAMWEATHER_ID        HAMID        # ID received from Hamweather
+HAMWEATHER_PASSWORD  HAMPASSWORD  # Password for Hamweather
+
+
 ### MYSQL Settings (only used by mysql2300)
 
 MYSQL_HOST              localhost         # Localhost or IP address/host name
Index: rw2300.c
===================================================================
--- rw2300.c	(revision 3)
+++ rw2300.c	(working copy)
@@ -2403,6 +2403,8 @@
 	config->num_hosts = 2;                                     // default number of defined hosts
 	strcpy(config->weather_underground_id, "WUID");             // Weather Underground ID 
 	strcpy(config->weather_underground_password, "WUPassword"); // Weather Underground Password
+	strcpy(config->hamweather_id, "HAMID");             // Hamweather ID 
+	strcpy(config->hamweather_password, "HAMPassword"); // Hamweather Password
 	strcpy(config->timezone, "1");                              // Timezone, default CET
 	config->wind_speed_conv_factor = 1.0;                   // Speed dimention, m/s is default
 	config->temperature_conv = 0;                           // Temperature in Celcius
@@ -2490,6 +2492,18 @@
 			continue;
 		}
 
+		if ((strcmp(token,"HAMWEATHER_ID")==0) && (strlen(val)!=0))
+		{
+			strcpy(config->hamweather_id, val);
+			continue;
+		}
+
+		if ((strcmp(token,"HAMWEATHER_PASSWORD")==0)&&(strlen(val)!=0))
+		{
+			strcpy(config->hamweather_password, val);
+			continue;
+		}
+
 		if ((strcmp(token,"TIMEZONE")==0) && (strlen(val) != 0))
 		{
 			strcpy(config->timezone, val);
