| 1 | #!/usr/bin/ruby1.8
|
|---|
| 2 | #
|
|---|
| 3 | # Copyright (c) 2011 Polytechnic Institute of New York University
|
|---|
| 4 | #
|
|---|
| 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy
|
|---|
| 6 | # of this software and associated documentation files (the "Software"), to deal
|
|---|
| 7 | # in the Software without restriction, including without limitation the rights
|
|---|
| 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|---|
| 9 | # copies of the Software, and to permit persons to whom the Software is
|
|---|
| 10 | # furnished to do so, subject to the following conditions:
|
|---|
| 11 | #
|
|---|
| 12 | # The above copyright notice and this permission notice shall be included in
|
|---|
| 13 | # all copies or substantial portions of the Software.
|
|---|
| 14 | #
|
|---|
| 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|---|
| 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|---|
| 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|---|
| 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|---|
| 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|---|
| 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|---|
| 21 | # THE SOFTWARE.
|
|---|
| 22 | #
|
|---|
| 23 | # Contact: ffund01@students.poly.edu
|
|---|
| 24 |
|
|---|
| 25 |
|
|---|
| 26 |
|
|---|
| 27 | require "/usr/bin/oml4r.rb"
|
|---|
| 28 |
|
|---|
| 29 | APPNAME = "wmxstat"
|
|---|
| 30 | APPPATH = "/usr/bin/wimaxcu"
|
|---|
| 31 | APPVERSION = "1.2"
|
|---|
| 32 |
|
|---|
| 33 | class MPStat < OML4R::MPBase
|
|---|
| 34 | name :status_link
|
|---|
| 35 | param :freq, :type => :long
|
|---|
| 36 | param :signal
|
|---|
| 37 | param :rssi, :type => :long
|
|---|
| 38 | param :cinr, :type => :long
|
|---|
| 39 | end
|
|---|
| 40 |
|
|---|
| 41 | class Wrapper
|
|---|
| 42 |
|
|---|
| 43 | def process(output)
|
|---|
| 44 | lines = output.split("\n")
|
|---|
| 45 | lines=lines.drop(1)
|
|---|
| 46 | lines=lines.reverse.drop(2).reverse
|
|---|
| 47 | vals=lines.collect { |row|
|
|---|
| 48 | column = row.split(" ")
|
|---|
| 49 | column[2]
|
|---|
| 50 | }
|
|---|
| 51 |
|
|---|
| 52 | # Inject the measurements into OML
|
|---|
| 53 | MPStat.inject(vals[0],vals[1],vals[2],vals[3])
|
|---|
| 54 | end
|
|---|
| 55 |
|
|---|
| 56 | def initialize(args)
|
|---|
| 57 |
|
|---|
| 58 | # Initialize variables
|
|---|
| 59 | @interval = 5
|
|---|
| 60 |
|
|---|
| 61 | # Initialize OML4R
|
|---|
| 62 | OML4R::init(args, :appID => APPNAME)
|
|---|
| 63 |
|
|---|
| 64 | end
|
|---|
| 65 |
|
|---|
| 66 | def start()
|
|---|
| 67 | while true
|
|---|
| 68 | # Run 'wimaxcu scan'; capture its output and process it
|
|---|
| 69 | cmd = "#{APPPATH} status link"
|
|---|
| 70 | output = `#{cmd}`
|
|---|
| 71 | process(output)
|
|---|
| 72 | # Wait for a given duration and loop again
|
|---|
| 73 | sleep @interval.to_i
|
|---|
| 74 | end
|
|---|
| 75 | end
|
|---|
| 76 |
|
|---|
| 77 | end
|
|---|
| 78 |
|
|---|
| 79 | begin
|
|---|
| 80 | app = Wrapper.new(ARGV)
|
|---|
| 81 | app.start()
|
|---|
| 82 | rescue Exception => ex
|
|---|
| 83 | puts "Received an Exception when executing the wrapper!"
|
|---|
| 84 | puts "The Exception is: #{ex}\n"
|
|---|
| 85 | end
|
|---|
| 86 |
|
|---|