Class: I2c_settings

Inherits:
Qt::Widget
  • Object
show all
Defined in:
lib/class/I2C/I2c_settings.rb

Instance Method Summary collapse

Constructor Details

#initialize(api, chip) ⇒ I2c_settings

Returns a new instance of I2c_settings.



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/class/I2C/I2c_settings.rb', line 14

def initialize(api, chip)
  super()
  @i2c_settings_gui = Ui_I2c_settings.new
  centerWindow(self)
  @i2c_settings_gui.setupUi(self)
  @i2c_settings_gui.lbl_chip.setText(chip.chip_reference)
  inputRestrict(@i2c_settings_gui.lie_total_size, 0)
  inputRestrict(@i2c_settings_gui.lie_page_size, 0)
  inputRestrict(@i2c_settings_gui.lie_write_page_latency, 0)
  inputRestrict(@i2c_settings_gui.lie_address_r, 3)
  inputRestrict(@i2c_settings_gui.lie_address_w, 3)
  @i2c_settings_gui.tbl_bus_scan.resizeColumnsToContents
  @i2c_settings_gui.tbl_bus_scan.resizeRowsToContents
  @i2c_settings_gui.tbl_bus_scan.horizontalHeader.stretchLastSection = true
  @chip_settings = I2C.find_by(i2c_chip: chip.chip_id)
  @chip = chip
  @api = api
  feed_settings_form
end

Instance Method Details

#bus_scanObject



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/class/I2C/I2c_settings.rb', line 101

def bus_scan
  @i2c_settings_gui.tbl_bus_scan.setRowCount(0)
  Firmware.new(@api, 'I2C')
  scan_result = @api.i2c_Scan(0)
  if scan_result.include?(1)
    scan_result.each_with_index do |v, i|
      if v == 1
        @i2c_settings_gui.tbl_bus_scan.insertRow(@i2c_settings_gui.tbl_bus_scan.rowCount)
        @i2c_settings_gui.tbl_bus_scan.setItem(@i2c_settings_gui.tbl_bus_scan.rowCount - 1, 0, Qt::TableWidgetItem.new(i.to_s(16).upcase))
        if i % 2 == 0
          @i2c_settings_gui.tbl_bus_scan.setItem(@i2c_settings_gui.tbl_bus_scan.rowCount - 1, 1, Qt::TableWidgetItem.new('Write'))
        else
          @i2c_settings_gui.tbl_bus_scan.setItem(@i2c_settings_gui.tbl_bus_scan.rowCount - 1, 1, Qt::TableWidgetItem.new('Read'))
        end
      end
    end
    @i2c_settings_gui.tbl_bus_scan.resizeColumnsToContents
    @i2c_settings_gui.tbl_bus_scan.resizeRowsToContents
    @i2c_settings_gui.tbl_bus_scan.horizontalHeader.stretchLastSection = true
    Qt::MessageBox.new(Qt::MessageBox::Information, "Bus Scan", "Bus scan ended correctly: #{@i2c_settings_gui.tbl_bus_scan.rowCount} address(es) found").exec
  else
    Qt::MessageBox.new(Qt::MessageBox::Information, "Bus addresses", "No valid addresses have been returned by the scan").exec
  end
rescue Exception => msg
  logger = Logger.new($logFilePath)
  logger.error msg
  Qt::MessageBox.new(Qt::MessageBox::Critical, "Critical error", "Error occured when scanning I2C. Consult the log for more details").exec
end

#createObject



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/class/I2C/I2c_settings.rb', line 58

def create
  @chip_settings = I2C.create(
    i2c_address_w: @i2c_settings_gui.lie_address_w.text,
    i2c_address_r: @i2c_settings_gui.lie_address_r.text,
    i2c_frequency: @i2c_settings_gui.cbx_frequency.currentText,
    i2c_write_page_latency: @i2c_settings_gui.lie_write_page_latency.text,
    i2c_page_size: @i2c_settings_gui.lie_page_size.text,
    i2c_total_size: @i2c_settings_gui.lie_total_size.text,
    i2c_chip: @chip.chip_id
  )
  Qt::MessageBox.new(Qt::MessageBox::Information, 'Succes', 'I2C parameters created successfully').exec
rescue Exception => msg
  logger = Logger.new($logFilePath)
  logger.error msg
  Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error occured when creating the I2C parameters. Consult the log for more details').exec
end

#feed_settings_formObject



43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/class/I2C/I2c_settings.rb', line 43

def feed_settings_form
  unless @chip_settings.nil?
    @i2c_settings_gui.lie_address_w.setText(@chip_settings.i2c_address_w)
    @i2c_settings_gui.lie_address_r.setText(@chip_settings.i2c_address_r)
    @i2c_settings_gui.cbx_frequency.setCurrentIndex(@i2c_settings_gui.cbx_frequency.findText(@chip_settings.i2c_frequency.to_s))
    @i2c_settings_gui.lie_write_page_latency.setText(@chip_settings.i2c_write_page_latency.to_s)
    @i2c_settings_gui.lie_page_size.setText(@chip_settings.i2c_page_size.to_s)
    @i2c_settings_gui.lie_total_size.setText(@chip_settings.i2c_total_size.to_s)
  end
rescue Exception => msg
  logger = Logger.new($logFilePath)
  logger.error msg
  Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error while loading the form. Consult the log for more details').exec
end

#save_settingsObject



34
35
36
37
38
39
40
41
# File 'lib/class/I2C/I2c_settings.rb', line 34

def save_settings
  if @chip_settings.nil?
    create
  else
    @chip_settings = I2C.find_by(i2c_chip: @chip.chip_id)
    update
  end
end

#updateObject



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/class/I2C/I2c_settings.rb', line 75

def update
  if @chip_settings.i2c_address_w != @i2c_settings_gui.lie_address_w.text
    @chip_settings.update(i2c_address_w: @i2c_settings_gui.lie_address_w.text)
  end
  if @chip_settings.i2c_address_r != @i2c_settings_gui.lie_address_r.text
    @chip_settings.update(i2c_address_r: @i2c_settings_gui.lie_address_r.text)
  end
  if @chip_settings.i2c_frequency != @i2c_settings_gui.cbx_frequency.currentText.to_i
    @chip_settings.update(i2c_frequency: @i2c_settings_gui.cbx_frequency.currentText.to_i)
  end
  if @chip_settings.i2c_write_page_latency != @i2c_settings_gui.lie_write_page_latency.text
    @chip_settings.update(i2c_write_page_latency: @i2c_settings_gui.lie_write_page_latency.text)
  end
  if @chip_settings.i2c_page_size != @i2c_settings_gui.lie_page_size.text
    @chip_settings.update(i2c_page_size: @i2c_settings_gui.lie_page_size.text)
  end
  if @chip_settings.i2c_total_size != @i2c_settings_gui.lie_total_size.text
    @chip_settings.update(i2c_total_size: @i2c_settings_gui.lie_total_size.text)
  end
  Qt::MessageBox.new(Qt::MessageBox::Information, 'Succes', 'I2C parameters saved successfully').exec
rescue Exception => msg
  logger = Logger.new($logFilePath)
  logger.error msg
  Qt::MessageBox.new(Qt::MessageBox::Critical, 'Critical error', 'Error occured when saving the I2C parameters. Consult the log for more details').exec
end