Class: LibSerial::Drivers::MacOS

Inherits:
Object
  • Object
show all
Defined in:
lib/lib_serial/drivers/mac_os.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(device) ⇒ MacOS

Returns a new instance of MacOS.



6
7
8
9
10
11
12
13
14
15
# File 'lib/lib_serial/drivers/mac_os.rb', line 6

def initialize(device)
  self.device = device
  self.open
  self.execute("stty -f #{self.device} raw")
  self.set_baud_rate
  self.set_parity
  self.set_char_length
  self.set_stop_bits
  self.set_flow_control
end

Instance Attribute Details

#deviceObject

Returns the value of attribute device.



4
5
6
# File 'lib/lib_serial/drivers/mac_os.rb', line 4

def device
  @device
end

#file_descriptorObject

Returns the value of attribute file_descriptor.



4
5
6
# File 'lib/lib_serial/drivers/mac_os.rb', line 4

def file_descriptor
  @file_descriptor
end

Instance Method Details

#closeObject



33
34
# File 'lib/lib_serial/drivers/mac_os.rb', line 33

def close
end

#openObject



17
18
19
# File 'lib/lib_serial/drivers/mac_os.rb', line 17

def open
  self.file_descriptor = File.open(self.device, 'r+')
end

#readObject



21
22
23
24
25
# File 'lib/lib_serial/drivers/mac_os.rb', line 21

def read
  buffer = ''
  buffer << self.file_descriptor.readchar
  buffer
end

#set_baud_rate(rate = 38400) ⇒ Object



36
37
38
39
# File 'lib/lib_serial/drivers/mac_os.rb', line 36

def set_baud_rate(rate = 38400)
  ## TODO: Check for valid baud rate
  self.execute("stty -f #{self.device} #{rate.to_i}")
end

#set_char_length(length = 8) ⇒ Object



46
47
48
# File 'lib/lib_serial/drivers/mac_os.rb', line 46

def set_char_length(length = 8)
  self.execute("stty -f #{self.device} cs#{length.to_i}")
end

#set_flow_control(flow = :none) ⇒ Object



54
55
56
# File 'lib/lib_serial/drivers/mac_os.rb', line 54

def set_flow_control(flow = :none)
  self.execute("stty -f #{self.device} #{LibSerial::Drivers.flow_control[flow]}")
end

#set_parity(parity = :none) ⇒ Object



41
42
43
44
# File 'lib/lib_serial/drivers/mac_os.rb', line 41

def set_parity(parity = :none)
  ## TODO: Check for valid parity here
  self.execute("stty -f #{self.device} #{LibSerial::Drivers.parity[parity]}")
end

#set_stop_bits(length = 1) ⇒ Object



50
51
52
# File 'lib/lib_serial/drivers/mac_os.rb', line 50

def set_stop_bits(length = 1)
  self.execute("stty -f #{self.device} #{(length == 1) ? '-' : ''}cstopb")
end

#write(data) ⇒ Object



27
28
29
30
31
# File 'lib/lib_serial/drivers/mac_os.rb', line 27

def write(data)
  ret = self.file_descriptor.write(data)
  self.file_descriptor.flush
  ret
end