module ComunikaGsm::Device
Public Class Methods
add(device)
click to toggle source
# File lib/comunika_gsm/modem.rb, line 42 def self.add(device) @@devices << device end
all()
click to toggle source
Get all devices intances
# File lib/comunika_gsm/modem.rb, line 10 def self.all @@devices end
clear()
click to toggle source
# File lib/comunika_gsm/modem.rb, line 14 def self.clear @devices = [] end
load(params={})
click to toggle source
Initialize devices
# File lib/comunika_gsm/modem.rb, line 19 def self.load(params={}) self.clear threads = [] self.ports.each do |port| threads << Thread.new { ## Check port and add in to devices ## modem = self.load_modem(port, params[:debug]) if modem self.add(modem) end Thread.current.kill } end while threads.count > 0 threads.delete_if {|t| !t.alive? } end @@devices #@@devices.collect! {|d| Device.new(d) }#.uniq {|d| d[:imei] }#.find_all{|dev| dev.status == true }.uniq!{|d| d.imei } end
load_modem(port, debug=false)
click to toggle source
# File lib/comunika_gsm/modem.rb, line 46 def self.load_modem(port, debug=false) gsm = GSM2.new(:port => port, :debug => debug) if gsm.status result = gsm.cmd("AT\r\n") if result.to_s.length > 0 imei = gsm.cmd("AT+CGSN\r\n") iccid = gsm.cmd("AT+CRSM=176,12258,0,0,10\r\n") provider = gsm.cmd("AT+COPS?\r\n") signal = gsm.cmd("AT+CSQ\r\n") unless @@devices.find {|m| m[:imei] == imei} return Device.new(:port => port,:gsm => gsm, :imei => imei, :iccid => iccid, :provider => provider, :signal => signal) end else gsm.close return nil end end end
ports()
click to toggle source
# File lib/comunika_gsm/modem.rb, line 5 def self.ports ports = %x{ls /dev | grep ttyUSB*}.split(/\n/) end