70 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import socket
 | |
| 
 | |
| KKEY = 0x73e2
 | |
| 
 | |
| def do_hash(callsign):
 | |
|     rootCall = callsign.split("-")[0].upper() + '\0'
 | |
|     
 | |
|     hash = KKEY
 | |
|     i = 0
 | |
|     length = len(rootCall)
 | |
|     
 | |
|     while (i+1 < length):
 | |
|         hash ^= ord(rootCall[i])<<8
 | |
|         hash ^= ord(rootCall[i+1])
 | |
|         i += 2
 | |
|     
 | |
|     return int(hash & 0x7fff)
 | |
| 
 | |
| HOST = 'rotate.aprs2.net'
 | |
| PORT = 14580
 | |
| 
 | |
| print "Connecting..."
 | |
| 
 | |
| s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 | |
| s.connect((HOST, PORT))
 | |
| 
 | |
| print "Connected..."
 | |
| 
 | |
| data = s.recv(1024)
 | |
| print data
 | |
| 
 | |
| call = 'KN4CRD'
 | |
| pw = do_hash(call)
 | |
| ver = "FT8Call"
 | |
| 
 | |
| login = "user {} pass {} ver {}\n".format(call, pw, ver)
 | |
| s.send(login)
 | |
| 
 | |
| print "Login sent...", login
 | |
| 
 | |
| data = s.recv(1024)
 | |
| print data
 | |
| 
 | |
| if 0:
 | |
|     message = "KN4CRD>OH8STN,APRS,TCPIP*::EMAIL-2  :KN4CRD@GMAIL.COM TESTING!{04}\n"
 | |
|     s.send(message)
 | |
| 
 | |
| if 0:
 | |
|     message = "{}>APRS,TCPIP*::EMAIL-2  :kn4crd@gmail.com testing456{{01}}\n".format(call)
 | |
|     message = "KN4CRD>APRS,TCPIP*::EMAIL-2  :KN4CRD@GMAIL.COM TESTING!{02}\n"
 | |
|     s.send(message)
 | |
| 
 | |
| if 0:
 | |
|     payload = ":This is a test message"
 | |
|     message = "{}>APRS,TCPIP*::{}   {}\n".format(call, call, payload)
 | |
|     s.send(message)
 | |
| if 1:
 | |
|     position = "=3352.45N/08422.71Wn"
 | |
|     status = "FT8CALL VIA XX9XXX/XXXX 14.082500MHz -20dB"
 | |
|     payload = "".join((position, status))
 | |
|     message = "{}>OH8STN,APRS,TCPIP*:{}\n".format(call, payload)
 | |
|     s.send(message)
 | |
| 
 | |
| print "Spot sent...", message
 | |
| 
 | |
| data = s.recv(1024)
 | |
| print data
 | |
| 
 | |
| s.close()
 | 
