hardsploit_gui 2.2 → 2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. checksums.yaml +4 -4
  2. data/bin/hardsploit_gui +2 -2
  3. data/lib/{Firmware → Firmwares}/FPGA/I2C/I2C_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_I2C_INTERACT.rpd +0 -0
  4. data/lib/{Firmware/FPGA/SWD/SWD_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_SWD_INTERACT.rpd → Firmwares/FPGA/PARALLEL/NO_MUX_PARALLEL_MEMORY/HARDSPLOIT_FIRMWARE_FPGA_NO_MUX_PARALLEL_MEMORY.rpd} +0 -0
  5. data/lib/Firmwares/FPGA/SPI/SPI_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_SPI_INTERACT.rpd +0 -0
  6. data/lib/{Firmware/FPGA/SPI/SPI_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_SPI_INTERACT.rpd → Firmwares/FPGA/SPI/SPI_SNIFFER/HARDSPLOIT_FIRMWARE_FPGA_SPI_SNIFFER.rpd} +0 -0
  7. data/lib/Firmwares/FPGA/SWD/SWD_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_SWD_INTERACT.rpd +0 -0
  8. data/lib/{Firmware → Firmwares}/FPGA/TEST/TEST_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_TEST_INTERACT.rpd +0 -0
  9. data/lib/Firmwares/FPGA/UART/UART_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_UART_INTERACT.rpd +0 -0
  10. data/lib/{Firmware → Firmwares}/FPGA/VersionFPGA.rb +1 -1
  11. data/lib/{Firmware → Firmwares}/UC/HARDSPLOIT_FIRMWARE_UC.bin +0 -0
  12. data/lib/{Firmware → Firmwares}/UC/VersionUC.rb +1 -1
  13. data/lib/HardsploitAPI/Core/HardsploitAPI.rb +210 -0
  14. data/lib/HardsploitAPI/Core/HardsploitAPI_CONSTANT.rb +150 -0
  15. data/lib/HardsploitAPI/Core/HardsploitAPI_ERROR.rb +109 -0
  16. data/lib/HardsploitAPI/Core/HardsploitAPI_FIRMWARE.rb +305 -0
  17. data/lib/HardsploitAPI/{HardsploitAPI_PROGRESS.rb → Core/HardsploitAPI_PROGRESS.rb} +0 -0
  18. data/lib/HardsploitAPI/Core/HardsploitAPI_USB_COMMUNICATION.rb +166 -0
  19. data/lib/HardsploitAPI/Modules/I2C/HardsploitAPI_I2C.rb +356 -0
  20. data/lib/HardsploitAPI/{HardsploitAPI_NO_MUX_PARALLELE_MEMORY.rb → Modules/NO_MUX_PARALLEL_MEMORY/HardsploitAPI_NO_MUX_PARALLEL_MEMORY.rb} +26 -49
  21. data/lib/HardsploitAPI/Modules/NRF24L01/HardsploitAPI_NRF24L01.rb +306 -0
  22. data/lib/HardsploitAPI/Modules/SPI/HardsploitAPI_SPI.rb +340 -0
  23. data/lib/HardsploitAPI/Modules/SPI_SNIFFER/HardsploitAPI_SPI_SNIFFER.rb +83 -0
  24. data/lib/HardsploitAPI/Modules/SWD/HardsploitAPI_SWD.rb +367 -0
  25. data/lib/HardsploitAPI/Modules/SWD/HardsploitAPI_SWD_DEBUG.rb +89 -0
  26. data/lib/HardsploitAPI/Modules/SWD/HardsploitAPI_SWD_MEM_AP.rb +61 -0
  27. data/lib/HardsploitAPI/{SWD → Modules/SWD}/HardsploitAPI_SWD_STM32.rb +32 -15
  28. data/lib/HardsploitAPI/{HardsploitAPI_TEST_INTERACT.rb → Modules/TEST/HardsploitAPI_TEST_INTERACT.rb} +1 -1
  29. data/lib/HardsploitAPI/Modules/UART/HardsploitAPI_UART.rb +196 -0
  30. data/lib/Hardsploit_gui.rb +96 -0
  31. data/lib/class/Chip_editor.rb +186 -330
  32. data/lib/class/Chip_management.rb +496 -0
  33. data/lib/class/Command_editor.rb +130 -182
  34. data/lib/class/Command_table.rb +16 -22
  35. data/lib/class/Console.rb +0 -2
  36. data/lib/class/ErrorMsg.rb +312 -0
  37. data/lib/class/Export.rb +140 -0
  38. data/lib/class/Export_manager.rb +43 -43
  39. data/lib/class/Firmware.rb +52 -11
  40. data/lib/class/Generic_commands.rb +180 -190
  41. data/lib/class/Import.rb +193 -0
  42. data/lib/class/Progress_bar.rb +1 -0
  43. data/lib/class/Signal_mapper.rb +120 -0
  44. data/lib/class/Wire_helper.rb +132 -148
  45. data/lib/class/{I2C → i2c}/I2c_command.rb +16 -13
  46. data/lib/class/i2c/I2c_export.rb +95 -0
  47. data/lib/class/i2c/I2c_import.rb +117 -0
  48. data/lib/class/i2c/I2c_scanner.rb +114 -0
  49. data/lib/class/i2c/I2c_settings.rb +148 -0
  50. data/lib/class/parallel/Parallel_export.rb +118 -0
  51. data/lib/class/parallel/Parallel_import.rb +113 -0
  52. data/lib/class/parallel/Parallel_settings.rb +81 -0
  53. data/lib/class/spi/Spi_export.rb +108 -0
  54. data/lib/class/spi/Spi_import.rb +159 -0
  55. data/lib/class/spi/Spi_settings.rb +108 -0
  56. data/lib/class/spi/Spi_sniffer.rb +101 -0
  57. data/lib/class/swd/Swd.rb +125 -0
  58. data/lib/class/swd/Swd_scanner.rb +121 -0
  59. data/lib/class/swd/Swd_settings.rb +76 -0
  60. data/lib/class/uart/Uart_baudrate.rb +62 -0
  61. data/lib/class/uart/Uart_console.rb +115 -0
  62. data/lib/class/uart/Uart_settings.rb +102 -0
  63. data/lib/db/associations.rb +42 -29
  64. data/lib/db/database.rb +4 -0
  65. data/lib/db/development.sqlite3 +0 -0
  66. data/lib/db/migrate/004_create_manufacturers.rb +13 -0
  67. data/lib/db/migrate/005_create_packages.rb +13 -0
  68. data/lib/db/migrate/006_create_chip_types.rb +11 -0
  69. data/lib/db/migrate/007_create_buses.rb +11 -0
  70. data/lib/db/migrate/008_create_signals.rb +14 -0
  71. data/lib/db/migrate/009_create_chips.rb +25 -0
  72. data/lib/db/migrate/010_create_commands.rb +21 -0
  73. data/lib/db/migrate/011_create_bytes.rb +19 -0
  74. data/lib/db/migrate/012_create_i2c_settings.rb +21 -0
  75. data/lib/db/migrate/013_create_spi_settings.rb +26 -0
  76. data/lib/db/migrate/014_create_parallel_settings.rb +21 -0
  77. data/lib/db/migrate/015_create_pins.rb +19 -0
  78. data/lib/db/migrate/016_create_uses.rb +17 -0
  79. data/lib/db/migrate/017_create_swd_settings.rb +19 -0
  80. data/lib/db/migrate/018_create_uart_settings.rb +22 -0
  81. data/lib/db/schema.rb +157 -0
  82. data/lib/db/seeds.rb +161 -0
  83. data/lib/gui/gui_chip_editor.rb +23 -22
  84. data/lib/gui/gui_chip_management.rb +43 -38
  85. data/lib/gui/gui_command_editor.rb +2 -1
  86. data/lib/gui/gui_export.rb +132 -0
  87. data/lib/gui/gui_generic_commands.rb +69 -31
  88. data/lib/gui/gui_generic_export.rb +18 -2
  89. data/lib/gui/gui_generic_import.rb +18 -2
  90. data/lib/gui/gui_i2c_command.rb +2 -1
  91. data/lib/gui/gui_i2c_settings.rb +2 -2
  92. data/lib/gui/gui_import.rb +131 -0
  93. data/lib/gui/gui_parallel_settings.rb +2 -1
  94. data/lib/gui/gui_progress_bar.rb +2 -1
  95. data/lib/gui/gui_signal_mapper.rb +121 -0
  96. data/lib/gui/gui_signal_scanner.rb +146 -0
  97. data/lib/gui/gui_spi_settings.rb +6 -2
  98. data/lib/gui/gui_spi_sniffer.rb +112 -0
  99. data/lib/gui/gui_swd_settings.rb +166 -0
  100. data/lib/gui/gui_uart_baudrate.rb +114 -0
  101. data/lib/gui/gui_uart_console.rb +164 -0
  102. data/lib/gui/gui_uart_settings.rb +243 -0
  103. data/lib/gui_designer/gui_chip_editor.ui +9 -6
  104. data/lib/gui_designer/gui_chip_management.ui +79 -35
  105. data/lib/gui_designer/gui_command_editor.ui +3 -0
  106. data/lib/gui_designer/gui_export.ui +171 -0
  107. data/lib/gui_designer/gui_generic_commands.ui +274 -190
  108. data/lib/gui_designer/gui_generic_export.ui +24 -1
  109. data/lib/gui_designer/gui_generic_import.ui +25 -2
  110. data/lib/gui_designer/gui_i2c_command.ui +3 -0
  111. data/lib/gui_designer/gui_i2c_settings.ui +2 -2
  112. data/lib/gui_designer/gui_import.ui +168 -0
  113. data/lib/gui_designer/gui_parallel_settings.ui +4 -1
  114. data/lib/gui_designer/gui_progress_bar.ui +3 -0
  115. data/lib/gui_designer/gui_signal_mapper.ui +179 -0
  116. data/lib/gui_designer/gui_signal_scanner.ui +261 -0
  117. data/lib/gui_designer/gui_spi_settings.ui +15 -2
  118. data/lib/gui_designer/gui_spi_sniffer.ui +156 -0
  119. data/lib/gui_designer/gui_swd_settings.ui +189 -0
  120. data/lib/gui_designer/gui_uart_baudrate.ui +161 -0
  121. data/lib/gui_designer/gui_uart_console.ui +284 -0
  122. data/lib/gui_designer/gui_uart_settings.ui +280 -0
  123. data/lib/logs/error.log +63 -0
  124. data/lib/models/bus.rb +19 -0
  125. data/lib/models/byte.rb +29 -0
  126. data/lib/models/chip.rb +41 -0
  127. data/lib/models/chip_type.rb +14 -0
  128. data/lib/models/command.rb +20 -0
  129. data/lib/models/i2c_setting.rb +41 -0
  130. data/lib/models/manufacturer.rb +14 -0
  131. data/lib/models/package.rb +26 -0
  132. data/lib/models/parallel_setting.rb +37 -0
  133. data/lib/models/pin.rb +14 -0
  134. data/lib/models/signall.rb +20 -0
  135. data/lib/models/spi_setting.rb +67 -0
  136. data/lib/models/swd_setting.rb +25 -0
  137. data/lib/models/uart_setting.rb +52 -0
  138. data/lib/models/use.rb +6 -0
  139. data/lib/startHardsploit.rb +2 -2
  140. metadata +106 -41
  141. data/lib/Firmware/FPGA/PARALLEL/NO_MUX_PARALLEL_MEMORY/HARDSPLOIT_FIRMWARE_FPGA_NO_MUX_PARALLEL_MEMORY.rpd +0 -0
  142. data/lib/HardsploitAPI/HardsploitAPI.rb +0 -133
  143. data/lib/HardsploitAPI/HardsploitAPI_CONSTANT.rb +0 -145
  144. data/lib/HardsploitAPI/HardsploitAPI_ERROR.rb +0 -38
  145. data/lib/HardsploitAPI/HardsploitAPI_FIRMWARE.rb +0 -311
  146. data/lib/HardsploitAPI/HardsploitAPI_I2C.rb +0 -360
  147. data/lib/HardsploitAPI/HardsploitAPI_SPI.rb +0 -369
  148. data/lib/HardsploitAPI/HardsploitAPI_USB_COMMUNICATION.rb +0 -148
  149. data/lib/HardsploitAPI/LICENSE.txt +0 -674
  150. data/lib/HardsploitAPI/README.md +0 -22
  151. data/lib/HardsploitAPI/SWD/HardsploitAPI_SWD.rb +0 -249
  152. data/lib/HardsploitAPI/SWD/HardsploitAPI_SWD_DEBUG.rb +0 -102
  153. data/lib/HardsploitAPI/SWD/HardsploitAPI_SWD_MEM_AP.rb +0 -78
  154. data/lib/HardsploitAPI/TRADEMARK +0 -3
  155. data/lib/class/HardsploitGUI.rb +0 -463
  156. data/lib/class/I2C/I2c_export.rb +0 -118
  157. data/lib/class/I2C/I2c_import.rb +0 -79
  158. data/lib/class/I2C/I2c_settings.rb +0 -129
  159. data/lib/class/PARALLEL/Parallel_export.rb +0 -146
  160. data/lib/class/PARALLEL/Parallel_import.rb +0 -88
  161. data/lib/class/PARALLEL/Parallel_settings.rb +0 -102
  162. data/lib/class/SPI/Spi_export.rb +0 -138
  163. data/lib/class/SPI/Spi_import.rb +0 -113
  164. data/lib/class/SPI/Spi_settings.rb +0 -134
  165. data/lib/db/hs.db +0 -0
  166. data/lib/hardsploit.rb +0 -131
@@ -0,0 +1,76 @@
1
+ #===================================================
2
+ # Hardsploit GUI - By Opale Security
3
+ # www.opale-security.com || www.hardsploit.io
4
+ # License: GNU General Public License v3
5
+ # License URI: http://www.gnu.org/licenses/gpl.txt
6
+ #===================================================
7
+
8
+ require_relative '../../gui/gui_swd_settings'
9
+ class Swd_settings < Qt::Widget
10
+ slots 'save_settings()'
11
+
12
+ def initialize(chip)
13
+ super()
14
+ @view = Ui_Swd_settings.new
15
+ centerWindow(self)
16
+ @view.setupUi(self)
17
+ @view.lbl_chip.setText(chip.reference)
18
+ inputRestrict(@view.lie_cpu_id_address, 4)
19
+ inputRestrict(@view.lie_device_id_address, 4)
20
+ inputRestrict(@view.lie_size_address, 4)
21
+ inputRestrict(@view.lie_start_address, 4)
22
+ @chip = chip
23
+ feed_settings_form unless chip.swd_setting.nil?
24
+ end
25
+
26
+ def save_settings
27
+ @chip.swd_setting.nil? ? create : update
28
+ @chip.reload
29
+ rescue Exception => msg
30
+ ErrorMsg.new.unknown(msg)
31
+ end
32
+
33
+ def feed_settings_form
34
+ @view.lie_cpu_id_address.setText(@chip.swd_setting.cpu_id_address)
35
+ @view.lie_device_id_address.setText(@chip.swd_setting.device_id_address)
36
+ @view.lie_size_address.setText(@chip.swd_setting.memory_size_address)
37
+ @view.lie_start_address.setText(@chip.swd_setting.memory_start_address)
38
+ rescue Exception => msg
39
+ ErrorMsg.new.unknown(msg)
40
+ end
41
+
42
+ def create
43
+ chip_settings = SwdSetting.create(
44
+ cpu_id_address: @view.lie_cpu_id_address.text,
45
+ device_id_address: @view.lie_device_id_address.text,
46
+ memory_size_address: @view.lie_size_address.text,
47
+ memory_start_address: @view.lie_start_address.text,
48
+ chip_id: @chip.id
49
+ )
50
+ unless check_for_errors(chip_settings)
51
+ Qt::MessageBox.new(
52
+ Qt::MessageBox::Information,
53
+ 'Succes',
54
+ 'SWD settings saved'
55
+ ).exec
56
+ close
57
+ end
58
+ end
59
+
60
+ def update
61
+ @chip.swd_setting.update(
62
+ cpu_id_address: @view.lie_cpu_id_address.text,
63
+ device_id_address: @view.lie_device_id_address.text,
64
+ memory_size_address: @view.lie_size_address.text,
65
+ memory_start_address: @view.lie_start_address.text,
66
+ )
67
+ unless check_for_errors(@chip.swd_setting)
68
+ Qt::MessageBox.new(
69
+ Qt::MessageBox::Information,
70
+ 'Succes',
71
+ 'SWD settings updated'
72
+ ).exec
73
+ close
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,62 @@
1
+ #===================================================
2
+ # Hardsploit GUI - By Opale Security
3
+ # www.opale-security.com || www.hardsploit.io
4
+ # License: GNU General Public License v3
5
+ # License URI: http://www.gnu.org/licenses/gpl.txt
6
+ #===================================================
7
+
8
+ require_relative '../../gui/gui_uart_baudrate'
9
+ require_relative '../../HardsploitAPI/Modules/UART/HardsploitAPI_UART'
10
+
11
+ class Uart_baudrate < Qt::Widget
12
+ slots 'start_detect()'
13
+ slots 'stop_detect()'
14
+ slots 'copy()'
15
+
16
+ def initialize(parent_view)
17
+ super()
18
+ Firmware.new('UART')
19
+ @view = Ui_Uart_baudrate.new
20
+ centerWindow(self)
21
+ @view.setupUi(self)
22
+ @parent_view = parent_view
23
+ end
24
+
25
+ def start_detect
26
+ @view.btn_start.setEnabled(false)
27
+ $app.processEvents
28
+ @uart = HardsploitAPI_UART.new(
29
+ baud_rate: 115200,
30
+ word_width: 8,
31
+ use_parity_bit: 0,
32
+ parity_type: 0,
33
+ nb_stop_bits: 1,
34
+ idle_line_level: 1
35
+ )
36
+ @uart.enableMeasureBaudRate
37
+ @view.btn_stop.setEnabled(true)
38
+ end
39
+
40
+ def stop_detect
41
+ @view.btn_stop.setEnabled(false)
42
+ @baudrate = @uart.measureBaudRate
43
+ @uart.disableMeasureBaudRate
44
+ @view.btn_start.setEnabled(true)
45
+ unless @baudrate.zero?
46
+ @view.lbl_baudrate.setText("Baud rate detected: #{@baudrate} Hz")
47
+ else
48
+ @view.lbl_baudrate.setText("Baud rate detected: None.")
49
+ end
50
+ rescue HardsploitAPI::ERROR::HARDSPLOIT_NOT_FOUND
51
+ ErrorMsg.new.hardsploit_not_found
52
+ rescue HardsploitAPI::ERROR::USB_ERROR
53
+ ErrorMsg.new.usb_error
54
+ rescue Exception => msg
55
+ ErrorMsg.new.unknown(msg)
56
+ end
57
+
58
+ def copy
59
+ @parent_view.lie_baud_rate.setText(@baudrate.to_s)
60
+ close
61
+ end
62
+ end
@@ -0,0 +1,115 @@
1
+ #===================================================
2
+ # Hardsploit API - By Opale Security
3
+ # www.opale-security.com || www.hardsploit.io
4
+ # License: GNU General Public License v3
5
+ # License URI: http://www.gnu.org/licenses/gpl.txt
6
+ #===================================================
7
+
8
+ require_relative '../../gui/gui_uart_console'
9
+ require_relative '../../gui/gui_uart_settings'
10
+ require_relative '../../HardsploitAPI/Modules/UART/HardsploitAPI_UART'
11
+ class Uart_console < Qt::Widget
12
+ slots 'send()'
13
+ slots 'update()'
14
+ slots 'connect()'
15
+ slots 'disconnect()'
16
+ slots 'clear_console()'
17
+ slots 'open_settings()'
18
+
19
+ def initialize(chip)
20
+ super()
21
+ Firmware.new('UART')
22
+ @view = Ui_Uart_console.new
23
+ centerWindow(self)
24
+ @view.setupUi(self)
25
+ @view.lbl_chip.setText(chip.reference)
26
+ @chip = chip
27
+ @data = ''
28
+ end
29
+
30
+ def closeEvent(event)
31
+ @timer.killTimer(@timer.timerId) unless @timer.nil?
32
+ end
33
+
34
+ def keyPressEvent(event)
35
+ send if event.key() == Qt::Key_Enter or event.key() == Qt::Key_Return
36
+ end
37
+
38
+ def connect
39
+ @uart = HardsploitAPI_UART.new(
40
+ baud_rate: @chip.uart_setting.baud_rate,
41
+ word_width: @chip.uart_setting.word_size,
42
+ use_parity_bit: @chip.uart_setting.parity_bit,
43
+ parity_type: @chip.uart_setting.parity_type,
44
+ nb_stop_bits: @chip.uart_setting.stop_bits_nbr,
45
+ idle_line_level: @chip.uart_setting.idle_line
46
+ )
47
+ @timer = Qt::Timer.new
48
+ Qt::Object.connect(@timer, SIGNAL('timeout()'), self, SLOT('update()'))
49
+ @timer.start(100)
50
+ @data << 'Listening and ready to go !' + 0x0d.chr
51
+ @view.console.setPlainText(@data)
52
+ scroll_down
53
+ sender.setEnabled(false)
54
+ @view.btn_disconnect.setEnabled(true)
55
+ end
56
+
57
+ def disconnect
58
+ @timer.killTimer(@timer.timerId)
59
+ @data << 'Disconnected' + 0x0d.chr
60
+ @view.console.setPlainText(@data)
61
+ scroll_down
62
+ sender.setEnabled(false)
63
+ @view.btn_connect.setEnabled(true)
64
+ end
65
+
66
+ def send
67
+ return false if @uart.nil? or @timer.nil?
68
+ return ErrorMsg.new.ascii_only unless @view.lie_cmd.text.ascii_only?
69
+ packet = []
70
+ @view.lie_cmd.text.each_byte do |x|
71
+ packet.push x
72
+ end
73
+ packet.push 13 if @chip.uart_setting.return_type == 0
74
+ packet.push 10 if @chip.uart_setting.return_type == 1
75
+ if @chip.uart_setting.return_type == 2
76
+ packet.push 13
77
+ packet.push 10
78
+ end
79
+ @view.lie_cmd.clear
80
+ @uart.write(payload: packet)
81
+ #Rescue
82
+ end
83
+
84
+ def update
85
+ received = @uart.sendAndReceived.collect{|i| i.chr}
86
+ unless received.empty?
87
+ @data << "#{received.join('')}"
88
+ @view.console.setPlainText(@data)
89
+ end
90
+ scroll_down
91
+ rescue HardsploitAPI::ERROR::HARDSPLOIT_NOT_FOUND
92
+ ErrorMsg.new.hardsploit_not_found
93
+ rescue HardsploitAPI::ERROR::USB_ERROR
94
+ ErrorMsg.new.usb_error
95
+ rescue Exception => msg
96
+ ErrorMsg.new.unknown(msg)
97
+ end
98
+
99
+ def clear_console
100
+ @view.console.clear
101
+ @data = ''
102
+ end
103
+
104
+ def open_settings
105
+ settingsUART = Uart_settings.new(@chip)
106
+ settingsUART.setWindowModality(Qt::ApplicationModal)
107
+ settingsUART.show
108
+ end
109
+
110
+ def scroll_down
111
+ sb = Qt::ScrollBar.new
112
+ sb = @view.console.verticalScrollBar
113
+ sb.setValue(sb.maximum())
114
+ end
115
+ end
@@ -0,0 +1,102 @@
1
+ #===================================================
2
+ # Hardsploit GUI - By Opale Security
3
+ # www.opale-security.com || www.hardsploit.io
4
+ # License: GNU General Public License v3
5
+ # License URI: http://www.gnu.org/licenses/gpl.txt
6
+ #===================================================
7
+
8
+ require_relative '../../gui/gui_uart_settings'
9
+ class Uart_settings < Qt::Widget
10
+ slots 'save_settings()'
11
+ slots 'autodetect()'
12
+
13
+ def initialize(chip)
14
+ super()
15
+ @view = Ui_Uart_settings.new
16
+ centerWindow(self)
17
+ @view.setupUi(self)
18
+ @view.lbl_chip.setText(chip.reference)
19
+ inputRestrict(@view.lie_baud_rate, 0)
20
+ inputRestrict(@view.lie_idle_line_lvl, 0)
21
+ inputRestrict(@view.lie_parity_bit, 0)
22
+ inputRestrict(@view.lie_parity_type, 0)
23
+ inputRestrict(@view.lie_stop_bits_nbr, 0)
24
+ inputRestrict(@view.lie_word_size, 0)
25
+ @chip = chip
26
+ feed_settings_form unless chip.uart_setting.nil?
27
+ end
28
+
29
+ def save_settings
30
+ @chip.uart_setting.nil? ? create : update
31
+ @chip.reload
32
+ rescue Exception => msg
33
+ ErrorMsg.new.unknown(msg)
34
+ end
35
+
36
+ def feed_settings_form
37
+ @view.lie_baud_rate.setText(@chip.uart_setting.baud_rate.to_s)
38
+ @view.lie_idle_line_lvl.setText(@chip.uart_setting.idle_line.to_s)
39
+ @view.lie_parity_bit.setText(@chip.uart_setting.parity_bit.to_s)
40
+ @view.lie_parity_type.setText(@chip.uart_setting.parity_type.to_s)
41
+ @view.lie_stop_bits_nbr.setText(@chip.uart_setting.stop_bits_nbr.to_s)
42
+ @view.lie_word_size.setText(@chip.uart_setting.word_size.to_s)
43
+ @view.rbn_cr.setChecked(true) if @chip.uart_setting.return_type == 0
44
+ @view.rbn_lf.setChecked(true) if @chip.uart_setting.return_type == 1
45
+ @view.rbn_both.setChecked(true) if @chip.uart_setting.return_type == 2
46
+ rescue Exception => msg
47
+ ErrorMsg.new.unknown(msg)
48
+ end
49
+
50
+ def create
51
+ chip_settings = UartSetting.create(
52
+ baud_rate: @view.lie_baud_rate.text.to_i,
53
+ idle_line: @view.lie_idle_line_lvl.text.to_i,
54
+ parity_bit: @view.lie_parity_bit.text.to_i,
55
+ parity_type: @view.lie_parity_type.text.to_i,
56
+ stop_bits_nbr: @view.lie_stop_bits_nbr.text.to_i,
57
+ word_size: @view.lie_word_size.text.to_i,
58
+ return_type: get_return_type,
59
+ chip_id: @chip.id
60
+ )
61
+ unless check_for_errors(chip_settings)
62
+ Qt::MessageBox.new(
63
+ Qt::MessageBox::Information,
64
+ 'Succes',
65
+ 'UART settings saved'
66
+ ).exec
67
+ close
68
+ end
69
+ end
70
+
71
+ def update
72
+ @chip.uart_setting.update(
73
+ baud_rate: @view.lie_baud_rate.text.to_i,
74
+ idle_line: @view.lie_idle_line_lvl.text.to_i,
75
+ parity_bit: @view.lie_parity_bit.text.to_i,
76
+ parity_type: @view.lie_parity_type.text.to_i,
77
+ stop_bits_nbr: @view.lie_stop_bits_nbr.text.to_i,
78
+ word_size: @view.lie_word_size.text.to_i,
79
+ return_type: get_return_type
80
+ )
81
+ unless check_for_errors(@chip.uart_setting)
82
+ Qt::MessageBox.new(
83
+ Qt::MessageBox::Information,
84
+ 'Succes',
85
+ 'UART settings updated'
86
+ ).exec
87
+ close
88
+ end
89
+ end
90
+
91
+ def get_return_type
92
+ return 0 if @view.rbn_cr.isChecked
93
+ return 1 if @view.rbn_lf.isChecked
94
+ return 2 if @view.rbn_both.isChecked
95
+ end
96
+
97
+ def autodetect
98
+ baudUART = Uart_baudrate.new(@view)
99
+ baudUART.setWindowModality(Qt::ApplicationModal)
100
+ baudUART.show
101
+ end
102
+ end
@@ -14,67 +14,78 @@ ActiveRecord::Base.establish_connection(
14
14
  )
15
15
 
16
16
  class Package < ActiveRecord::Base
17
- self.table_name = "HS_PACKAGE"
17
+ self.table_name = "HS_PACKAGES"
18
+ validates :package_name, uniqueness: true
18
19
  has_many :chips,
19
20
  foreign_key: "chip_package",
20
- :dependent => :delete_all
21
+ :dependent => :destroy
21
22
  end
22
23
 
23
24
  class Manufacturer < ActiveRecord::Base
24
- self.table_name = "HS_MANUFACTURER"
25
+ self.table_name = "HS_MANUFACTURERS"
25
26
  validates :manufacturer_name, uniqueness: true
26
27
  has_many :chips,
27
28
  foreign_key: "chip_manufacturer",
28
- :dependent => :delete_all
29
+ :dependent => :destroy
29
30
  end
30
31
 
31
32
  class CType < ActiveRecord::Base
32
- self.table_name = "HS_CHIP_TYPE"
33
+ self.table_name = "HS_CHIP_TYPES"
33
34
  validates :cType_name, uniqueness: true
34
35
  has_many :chips,
35
36
  foreign_key: "chip_type",
36
- :dependent => :delete_all
37
+ :dependent => :destroy
37
38
  end
38
39
 
39
40
  class Chip < ActiveRecord::Base
40
- self.table_name = "HS_CHIP"
41
- belongs_to :package
41
+ self.table_name = "HS_CHIPS"
42
+ belongs_to :package,
43
+ foreign_key: "chip_package"
42
44
  belongs_to :manufacturer,
43
45
  foreign_key: "chip_manufacturer"
44
46
  belongs_to :ctype,
45
47
  class_name: "CType",
46
48
  foreign_key: "chip_type"
47
- has_many :pin,
49
+ has_many :pins,
48
50
  foreign_key: "pin_chip",
49
- :dependent => :delete_all
50
- has_many :cmd,
51
+ :dependent => :destroy
52
+ has_many :cmds,
51
53
  foreign_key: "cmd_chip",
52
- :dependent => :delete_all
54
+ :dependent => :destroy
55
+ has_many :parallel,
56
+ foreign_key: "parallel_chip",
57
+ :dependent => :destroy
58
+ has_many :spi,
59
+ foreign_key: "spi_chip",
60
+ :dependent => :destroy
61
+ has_many :I2C,
62
+ foreign_key: "i2c_chip",
63
+ :dependent => :destroy
53
64
  end
54
65
 
55
66
  class Parallel < ActiveRecord::Base
56
- self.table_name = "HS_PARAM_PARA"
67
+ self.table_name = "HS_PARALLEL_SETTINGS"
57
68
  belongs_to :chip,
58
69
  class_name: "Chip",
59
70
  foreign_key: "parallel_chip"
60
71
  end
61
72
 
62
73
  class Spi < ActiveRecord::Base
63
- self.table_name = "HS_PARAM_SPI"
74
+ self.table_name = "HS_SPI_SETTINGS"
64
75
  belongs_to :chip,
65
76
  class_name: "Chip",
66
77
  foreign_key: "spi_chip"
67
78
  end
68
79
 
69
80
  class I2C < ActiveRecord::Base
70
- self.table_name = "HS_PARAM_I2C"
81
+ self.table_name = "HS_I2C_SETTINGS"
71
82
  belongs_to :chip,
72
83
  class_name: "Chip",
73
84
  foreign_key: "i2c_chip"
74
85
  end
75
86
 
76
87
  class Pin < ActiveRecord::Base
77
- self.table_name = "HS_PIN"
88
+ self.table_name = "HS_PINS"
78
89
  belongs_to :chip
79
90
  belongs_to :signall,
80
91
  class_name: "Signall",
@@ -82,16 +93,16 @@ class Pin < ActiveRecord::Base
82
93
  end
83
94
 
84
95
  class Signall < ActiveRecord::Base
85
- self.table_name = "HS_SIGNAL"
86
- has_many :use,
96
+ self.table_name = "HS_SIGNALS"
97
+ has_many :uses,
87
98
  class_name: "Use",
88
99
  foreign_key: "signal_id"
89
- has_many :bus, through: :use
90
- has_many :pin
100
+ has_many :buses, through: :uses
101
+ has_many :pins
91
102
  end
92
103
 
93
104
  class Use < ActiveRecord::Base
94
- self.table_name = "HS_USE"
105
+ self.table_name = "HS_USES"
95
106
  belongs_to :signall,
96
107
  class_name: "Signall",
97
108
  foreign_key: "signal_id"
@@ -101,24 +112,26 @@ class Use < ActiveRecord::Base
101
112
  end
102
113
 
103
114
  class Bus < ActiveRecord::Base
104
- self.table_name = "HS_BUS"
105
- has_many :signall, through: :use
106
- has_many :cmd
115
+ self.table_name = "HS_BUSES"
116
+ has_many :signalls, through: :uses
117
+ has_many :cmds
107
118
  end
108
119
 
109
120
  class Cmd < ActiveRecord::Base
110
- self.table_name = "HS_CMD"
111
- has_many :byte,
121
+ self.table_name = "HS_COMMANDS"
122
+ has_many :bytes,
112
123
  foreign_key: "byte_cmd",
113
- :dependent => :delete_all
124
+ :dependent => :destroy
114
125
  belongs_to :bus,
115
126
  class_name: "Bus",
116
127
  foreign_key: "cmd_bus"
117
- belongs_to :chip
128
+ belongs_to :chip,
129
+ class_name: "Chip",
130
+ foreign_key: "cmd_chip"
118
131
  end
119
132
 
120
133
  class Byte < ActiveRecord::Base
121
- self.table_name = "HS_CMD_BYTE"
134
+ self.table_name = "HS_CMD_BYTES"
122
135
  belongs_to :cmd,
123
136
  class_name: "Cmd",
124
137
  foreign_key: "byte_cmd"