Class: HamRadio

Inherits:
Object
  • Object
show all
Defined in:
lib/hamradio.rb

Instance Method Summary collapse

Constructor Details

#initializeHamRadio

Returns a new instance of HamRadio.



3
4
5
# File 'lib/hamradio.rb', line 3

def initialize()

end

Instance Method Details

#grid_encode(dms) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/hamradio.rb', line 7

def grid_encode(dms)

  # return nil if this isn't a valid gridsquare
  return nil if self.valid_gridsquare(dms) == nil
  grid = ''

  lat = dms[0].to_f+90
  lon = dms[1].to_f+180

  v = (lon/20).to_i
  lon -= (v*20)
  grid += ((?A.ord + v).chr).to_s # first letter

  v = (lat/10).to_i
  lat -= (v*10)
  grid += ((?A.ord + v).chr).to_s # second letter

  p3 = (lon/2).to_i
  grid += p3.to_s # third number
  p4 = (lat).to_i
  grid += p4.to_s # fourth number

  lon -= p3*2
  lat -= p4
  p3 = (?0.ord + p3.to_i).chr
  p4 = (?0.ord + p4).chr
  p5 = (12.ord * lon).to_i
  p6 = (24.ord * lat).to_i

  grid += ((?a.ord + p5).chr).to_s # fifth letter
  grid += ((?a.ord + p6).chr).to_s # sixth letter

end

#lookup_callsign(call) ⇒ Object



45
46
47
48
49
50
# File 'lib/hamradio.rb', line 45

def lookup_callsign(call)
  require 'nestful'

  c = Nestful.get 'http://callbytxt.org/db/'+call+'.json', :format => :json #=> {:json_hash => 1}
  c['calls']
end

#valid_callsign(call) ⇒ Object



52
53
54
# File 'lib/hamradio.rb', line 52

def valid_callsign(call)
  (call =~ /^([BFGIKMNTW]|[A-Z0-9]{2})[0-9][A-Z0-9]{0,3}[A-Z]$/i) != nil
end

#valid_gridsquare(grid) ⇒ Object



41
42
43
# File 'lib/hamradio.rb', line 41

def valid_gridsquare(grid)
  (grid =~ /[a-z][a-z]\d\d[a-z]*/i) != nil
end