class DaFunk::ConnectionManagement

Constants

DEFAULT_DROP_LIMIT

Attributes

drops[RW]
last_time_check[RW]
primary_timeout[RW]

Public Class Methods

check() click to toggle source
# File lib/da_funk/connection_management.rb, line 9
def self.check
  if must_check?
    if Device::Network.connected?
      if primary_try?
        :primary_communication
      end
    else
      if fallback?
        :fallback_communication
      else
        :attach_registration_fail
      end
    end
  end
end
config()
conn_automatic_management?() click to toggle source
# File lib/da_funk/connection_management.rb, line 37
def self.conn_automatic_management?
  DaFunk::ParamsDat.exists? && DaFunk::ParamsDat.file["connection_management"] != "0"
end
conn_fallback_config() click to toggle source
# File lib/da_funk/connection_management.rb, line 50
def self.conn_fallback_config
  value = DaFunk::ParamsDat.file["conn_fallback_config"]
  if value && !value.empty?
    value
  end
end
Also aliased as: config
conn_fallback_drops_limit() click to toggle source
# File lib/da_funk/connection_management.rb, line 41
def self.conn_fallback_drops_limit
  value = DaFunk::ParamsDat.file["conn_fallback_drops_limit"]
  if value && ! value.empty?
    value.to_i
  else
    DEFAULT_DROP_LIMIT
  end
end
conn_fallback_timer() click to toggle source
# File lib/da_funk/connection_management.rb, line 57
def self.conn_fallback_timer
  value = DaFunk::ParamsDat.file["conn_fallback_timer"]
  if value && ! value.empty?
    return value.to_i
  end
  0
end
fallback?() click to toggle source
# File lib/da_funk/connection_management.rb, line 25
def self.fallback?
  if ! Device::Network.connected? && self.fallback_valid? && self.conn_automatic_management? &&
      Device::Setting.media_primary == Device::Setting.media
    self.drops += 1
    if self.drops >= self.conn_fallback_drops_limit
      self.drops = 0
      return true
    end
  end
  false
end
fallback_valid?() click to toggle source
# File lib/da_funk/connection_management.rb, line 83
def self.fallback_valid?
  self.conn_fallback_config && self.conn_fallback_timer &&
    (self.config.include?("WIFI") || self.config.include?("GPRS"))
end
primary_try?() click to toggle source
# File lib/da_funk/connection_management.rb, line 69
def self.primary_try?
  if ! Device::Setting.media_primary.to_s.empty? && Device::Setting.media_primary != Device::Setting.media
    if self.primary_timeout.nil?
      self.schedule_primary_timeout
    else
      if Time.now > self.primary_timeout
        self.schedule_primary_timeout
        return true
      end
    end
  end
  false
end
recover_fallback() click to toggle source
# File lib/da_funk/connection_management.rb, line 88
def self.recover_fallback
  if self.fallback_valid?
    self.schedule_primary_timeout
    media, parameters = self.conn_fallback_config.to_s.split("|", 2)

    if media ==  "WIFI"
      # WIFI|uclwifinetwork|uclwifisecurity|uclwifichannel|uclwifikey
      essid, authentication, channel, password = parameters.split("|")
      configuration = {
        :network_configured => "1",
        :authentication     => authentication,
        :essid              => essid,
        :wifi_password      => password,
        :channel            => channel,
        :cipher             => Device::Network::PARE_CIPHERS_TKIP,
        :mode               => Device::Network::MODE_STATION,
        :media              => Device::Network::MEDIA_WIFI
      }
      # elsif TODO # ETHERNET|DHCP
    else
      # GPRS|APN|USER|PASSWORD
      apn, user, password = parameters.split("|")
      configuration = {
        :network_configured => "1",
        :apn                => apn,
        :user               => user,
        :apn_password       => password,
        :media              => Device::Network::MEDIA_GPRS
      }
    end
    Device::Setting.update_attributes(configuration)
  end
end
recover_primary() click to toggle source
# File lib/da_funk/connection_management.rb, line 122
def self.recover_primary
  Device::Setting.update_attributes({media: Device::Setting.media_primary})
end

Private Class Methods

must_check?() click to toggle source
# File lib/da_funk/connection_management.rb, line 131
def self.must_check?
  if self.last_time_check
    if self.last_time_check < Time.now
      self.last_time_check = Time.now + @value
      true
    end
  else
    @value = DaFunk::ParamsDat.file['conn_check_timer']
    @value = @value.nil? ? 300 : @value * 60
    self.last_time_check = Time.now + @value
    true
  end
end
schedule_primary_timeout() click to toggle source
# File lib/da_funk/connection_management.rb, line 127
def self.schedule_primary_timeout
  self.primary_timeout = (Time.now + self.conn_fallback_timer)
end