hardsploit_gui 2.3 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (149) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +22 -22
  3. data/Rakefile +1 -1
  4. data/bin/hardsploit_gui +3 -3
  5. data/lib/Firmwares/FPGA/I2C/I2C_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_I2C_INTERACT.rpd +0 -0
  6. data/lib/Firmwares/FPGA/PARALLEL/NO_MUX_PARALLEL_MEMORY/HARDSPLOIT_FIRMWARE_FPGA_NO_MUX_PARALLEL_MEMORY.rpd +0 -0
  7. data/lib/Firmwares/FPGA/SPI/SPI_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_SPI_INTERACT.rpd +0 -0
  8. data/lib/Firmwares/FPGA/SPI/SPI_SNIFFER/HARDSPLOIT_FIRMWARE_FPGA_SPI_SNIFFER.rpd +0 -0
  9. data/lib/Firmwares/FPGA/SWD/SWD_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_SWD_INTERACT.rpd +0 -0
  10. data/lib/Firmwares/FPGA/UART/UART_INTERACT/HARDSPLOIT_FIRMWARE_FPGA_UART_INTERACT.rpd +0 -0
  11. data/lib/Firmwares/FPGA/VersionFPGA.rb +5 -5
  12. data/lib/Firmwares/UC/VersionUC.rb +12 -12
  13. data/lib/HardsploitAPI/Core/HardsploitAPI.rb +210 -210
  14. data/lib/HardsploitAPI/Core/HardsploitAPI_CONSTANT.rb +150 -150
  15. data/lib/HardsploitAPI/Core/HardsploitAPI_ERROR.rb +109 -109
  16. data/lib/HardsploitAPI/Core/HardsploitAPI_FIRMWARE.rb +305 -305
  17. data/lib/HardsploitAPI/Core/HardsploitAPI_PROGRESS.rb +28 -28
  18. data/lib/HardsploitAPI/Core/HardsploitAPI_USB_COMMUNICATION.rb +166 -166
  19. data/lib/HardsploitAPI/Modules/I2C/HardsploitAPI_I2C.rb +356 -356
  20. data/lib/HardsploitAPI/Modules/NO_MUX_PARALLEL_MEMORY/HardsploitAPI_NO_MUX_PARALLEL_MEMORY.rb +206 -206
  21. data/lib/HardsploitAPI/Modules/NRF24L01/HardsploitAPI_NRF24L01.rb +306 -306
  22. data/lib/HardsploitAPI/Modules/SPI/HardsploitAPI_SPI.rb +340 -340
  23. data/lib/HardsploitAPI/Modules/SPI_SNIFFER/HardsploitAPI_SPI_SNIFFER.rb +83 -83
  24. data/lib/HardsploitAPI/Modules/SWD/HardsploitAPI_SWD.rb +367 -367
  25. data/lib/HardsploitAPI/Modules/SWD/HardsploitAPI_SWD_DEBUG.rb +89 -89
  26. data/lib/HardsploitAPI/Modules/SWD/HardsploitAPI_SWD_MEM_AP.rb +61 -61
  27. data/lib/HardsploitAPI/Modules/SWD/HardsploitAPI_SWD_STM32.rb +121 -121
  28. data/lib/HardsploitAPI/Modules/TEST/HardsploitAPI_TEST_INTERACT.rb +98 -98
  29. data/lib/HardsploitAPI/Modules/UART/HardsploitAPI_UART.rb +196 -196
  30. data/lib/Hardsploit_gui.rb +96 -96
  31. data/lib/LICENSE.txt +674 -674
  32. data/lib/README.md +22 -22
  33. data/lib/TRADEMARK +2 -2
  34. data/lib/class/Chip_editor.rb +304 -304
  35. data/lib/class/Chip_management.rb +496 -496
  36. data/lib/class/Command_editor.rb +216 -216
  37. data/lib/class/Command_table.rb +233 -233
  38. data/lib/class/Console.rb +26 -26
  39. data/lib/class/ErrorMsg.rb +312 -312
  40. data/lib/class/Export.rb +140 -140
  41. data/lib/class/Export_manager.rb +124 -124
  42. data/lib/class/Firmware.rb +70 -70
  43. data/lib/class/Generic_commands.rb +260 -260
  44. data/lib/class/{i2c → I2C}/I2c_command.rb +51 -51
  45. data/lib/class/{i2c → I2C}/I2c_export.rb +95 -95
  46. data/lib/class/{i2c → I2C}/I2c_import.rb +117 -117
  47. data/lib/class/{i2c → I2C}/I2c_scanner.rb +114 -114
  48. data/lib/class/{i2c → I2C}/I2c_settings.rb +148 -148
  49. data/lib/class/Import.rb +193 -193
  50. data/lib/class/{parallel → PARALLEL}/Parallel_export.rb +118 -118
  51. data/lib/class/{parallel → PARALLEL}/Parallel_import.rb +113 -113
  52. data/lib/class/{parallel → PARALLEL}/Parallel_settings.rb +81 -81
  53. data/lib/class/Progress_bar.rb +32 -32
  54. data/lib/class/{spi → SPI}/Spi_export.rb +108 -108
  55. data/lib/class/{spi → SPI}/Spi_import.rb +159 -159
  56. data/lib/class/{spi → SPI}/Spi_settings.rb +108 -108
  57. data/lib/class/{spi → SPI}/Spi_sniffer.rb +101 -101
  58. data/lib/class/Signal_mapper.rb +120 -120
  59. data/lib/class/Wire_helper.rb +230 -230
  60. data/lib/class/swd/Swd.rb +125 -125
  61. data/lib/class/swd/Swd_scanner.rb +121 -121
  62. data/lib/class/swd/Swd_settings.rb +76 -76
  63. data/lib/class/uart/Uart_baudrate.rb +62 -62
  64. data/lib/class/uart/Uart_console.rb +115 -115
  65. data/lib/class/uart/Uart_settings.rb +102 -102
  66. data/lib/db/associations.rb +138 -138
  67. data/lib/db/database.rb +4 -4
  68. data/lib/db/development.sqlite3 +0 -0
  69. data/lib/db/migrate/004_create_manufacturers.rb +13 -13
  70. data/lib/db/migrate/005_create_packages.rb +13 -13
  71. data/lib/db/migrate/006_create_chip_types.rb +11 -11
  72. data/lib/db/migrate/007_create_buses.rb +11 -11
  73. data/lib/db/migrate/008_create_signals.rb +14 -14
  74. data/lib/db/migrate/009_create_chips.rb +25 -25
  75. data/lib/db/migrate/010_create_commands.rb +21 -21
  76. data/lib/db/migrate/011_create_bytes.rb +19 -19
  77. data/lib/db/migrate/012_create_i2c_settings.rb +21 -21
  78. data/lib/db/migrate/013_create_spi_settings.rb +26 -26
  79. data/lib/db/migrate/014_create_parallel_settings.rb +21 -21
  80. data/lib/db/migrate/015_create_pins.rb +19 -19
  81. data/lib/db/migrate/016_create_uses.rb +17 -17
  82. data/lib/db/migrate/017_create_swd_settings.rb +19 -19
  83. data/lib/db/migrate/018_create_uart_settings.rb +22 -22
  84. data/lib/db/schema.rb +157 -157
  85. data/lib/db/seeds.rb +161 -161
  86. data/lib/gui/gui_chip_editor.rb +349 -349
  87. data/lib/gui/gui_chip_management.rb +377 -377
  88. data/lib/gui/gui_command_editor.rb +219 -219
  89. data/lib/gui/gui_export.rb +132 -132
  90. data/lib/gui/gui_export_manager.rb +93 -93
  91. data/lib/gui/gui_generic_commands.rb +202 -202
  92. data/lib/gui/gui_generic_export.rb +164 -164
  93. data/lib/gui/gui_generic_import.rb +142 -142
  94. data/lib/gui/gui_i2c_command.rb +116 -116
  95. data/lib/gui/gui_i2c_settings.rb +230 -230
  96. data/lib/gui/gui_import.rb +131 -131
  97. data/lib/gui/gui_parallel_settings.rb +195 -195
  98. data/lib/gui/gui_progress_bar.rb +85 -85
  99. data/lib/gui/gui_signal_mapper.rb +121 -121
  100. data/lib/gui/gui_signal_scanner.rb +146 -146
  101. data/lib/gui/gui_spi_import.rb +126 -126
  102. data/lib/gui/gui_spi_settings.rb +313 -313
  103. data/lib/gui/gui_spi_sniffer.rb +112 -112
  104. data/lib/gui/gui_swd_settings.rb +166 -166
  105. data/lib/gui/gui_uart_baudrate.rb +114 -114
  106. data/lib/gui/gui_uart_console.rb +164 -164
  107. data/lib/gui/gui_uart_settings.rb +243 -243
  108. data/lib/gui/gui_wire_helper.rb +99 -99
  109. data/lib/gui_designer/gui_chip_editor.ui +549 -549
  110. data/lib/gui_designer/gui_chip_management.ui +886 -886
  111. data/lib/gui_designer/gui_command_editor.ui +350 -350
  112. data/lib/gui_designer/gui_export.ui +171 -171
  113. data/lib/gui_designer/gui_export_manager.ui +115 -115
  114. data/lib/gui_designer/gui_generic_commands.ui +342 -342
  115. data/lib/gui_designer/gui_generic_export.ui +202 -202
  116. data/lib/gui_designer/gui_generic_import.ui +165 -165
  117. data/lib/gui_designer/gui_i2c_command.ui +148 -148
  118. data/lib/gui_designer/gui_i2c_settings.ui +292 -292
  119. data/lib/gui_designer/gui_import.ui +168 -168
  120. data/lib/gui_designer/gui_parallel_settings.ui +247 -247
  121. data/lib/gui_designer/gui_progress_bar.ui +86 -86
  122. data/lib/gui_designer/gui_signal_mapper.ui +179 -179
  123. data/lib/gui_designer/gui_signal_scanner.ui +261 -261
  124. data/lib/gui_designer/gui_spi_settings.ui +446 -446
  125. data/lib/gui_designer/gui_spi_sniffer.ui +156 -156
  126. data/lib/gui_designer/gui_swd_settings.ui +189 -189
  127. data/lib/gui_designer/gui_uart_baudrate.ui +161 -161
  128. data/lib/gui_designer/gui_uart_console.ui +284 -284
  129. data/lib/gui_designer/gui_uart_settings.ui +280 -280
  130. data/lib/gui_designer/gui_wire_helper.ui +117 -117
  131. data/lib/images/search.png +0 -0
  132. data/lib/logs/error.log +0 -63
  133. data/lib/models/bus.rb +19 -19
  134. data/lib/models/byte.rb +29 -29
  135. data/lib/models/chip.rb +41 -41
  136. data/lib/models/chip_type.rb +14 -14
  137. data/lib/models/command.rb +20 -20
  138. data/lib/models/i2c_setting.rb +41 -41
  139. data/lib/models/manufacturer.rb +14 -14
  140. data/lib/models/package.rb +26 -26
  141. data/lib/models/parallel_setting.rb +37 -37
  142. data/lib/models/pin.rb +14 -14
  143. data/lib/models/signall.rb +20 -20
  144. data/lib/models/spi_setting.rb +67 -67
  145. data/lib/models/swd_setting.rb +25 -25
  146. data/lib/models/uart_setting.rb +52 -52
  147. data/lib/models/use.rb +6 -6
  148. data/lib/startHardsploit.rb +10 -10
  149. metadata +14 -14
@@ -1,14 +1,14 @@
1
- class ChipType < ActiveRecord::Base
2
- # Validations
3
- validates :name,
4
- length: {
5
- in: 2..20,
6
- message: "must be between 2 and 20 characters (chip type)"
7
- },
8
- presence: true,
9
- uniqueness: true
10
-
11
- # Associations
12
- has_many :chips,
13
- dependent: :destroy
14
- end
1
+ class ChipType < ActiveRecord::Base
2
+ # Validations
3
+ validates :name,
4
+ length: {
5
+ in: 2..20,
6
+ message: "must be between 2 and 20 characters (chip type)"
7
+ },
8
+ presence: true,
9
+ uniqueness: true
10
+
11
+ # Associations
12
+ has_many :chips,
13
+ dependent: :destroy
14
+ end
@@ -1,20 +1,20 @@
1
- class Command < ActiveRecord::Base
2
- # Validations
3
- validates :name,
4
- length: {
5
- in: 2..25,
6
- wrong_length: "Name needs to be between 2 and 25 characters"
7
- },
8
- presence: true
9
- validates :description,
10
- length: {
11
- maximum: 140,
12
- too_long: "%{count} characters maximum for the description"
13
- }
14
-
15
- # Associations
16
- has_many :bytes,
17
- dependent: :destroy
18
- belongs_to :chip
19
- belongs_to :bus
20
- end
1
+ class Command < ActiveRecord::Base
2
+ # Validations
3
+ validates :name,
4
+ length: {
5
+ in: 2..25,
6
+ wrong_length: "Name needs to be between 2 and 25 characters"
7
+ },
8
+ presence: true
9
+ validates :description,
10
+ length: {
11
+ maximum: 140,
12
+ too_long: "%{count} characters maximum for the description"
13
+ }
14
+
15
+ # Associations
16
+ has_many :bytes,
17
+ dependent: :destroy
18
+ belongs_to :chip
19
+ belongs_to :bus
20
+ end
@@ -1,41 +1,41 @@
1
- class I2cSetting < ActiveRecord::Base
2
- # Validations
3
- validates :address_w,
4
- format: {
5
- with: /[A-Fa-f0-9]{2}/,
6
- message: "Write address only allow hexadecimal values"
7
- }
8
- validates :address_r,
9
- format: {
10
- with: /[A-Fa-f0-9]{2}/,
11
- message: "Read address only allow hexadecimal values"
12
- }
13
- validates :frequency,
14
- numericality: {
15
- only_integer: true,
16
- greater_than_or_equal_to: 100,
17
- less_than_or_equal_to: 1000,
18
- allow_nil: true
19
- }
20
- validates :write_page_latency,
21
- numericality: {
22
- only_integer: true,
23
- greater_than_or_equal_to: 0,
24
- allow_nil: true
25
- }
26
- validates :page_size,
27
- numericality: {
28
- only_integer: true,
29
- greater_than_or_equal_to: 0,
30
- allow_nil: true
31
- }
32
- validates :total_size,
33
- numericality: {
34
- only_integer: true,
35
- greater_than_or_equal_to: 0,
36
- allow_nil: true
37
- }
38
-
39
- # Associations
40
- belongs_to :chip
41
- end
1
+ class I2cSetting < ActiveRecord::Base
2
+ # Validations
3
+ validates :address_w,
4
+ format: {
5
+ with: /[A-Fa-f0-9]{2}/,
6
+ message: "Write address only allow hexadecimal values"
7
+ }
8
+ validates :address_r,
9
+ format: {
10
+ with: /[A-Fa-f0-9]{2}/,
11
+ message: "Read address only allow hexadecimal values"
12
+ }
13
+ validates :frequency,
14
+ numericality: {
15
+ only_integer: true,
16
+ greater_than_or_equal_to: 100,
17
+ less_than_or_equal_to: 1000,
18
+ allow_nil: true
19
+ }
20
+ validates :write_page_latency,
21
+ numericality: {
22
+ only_integer: true,
23
+ greater_than_or_equal_to: 0,
24
+ allow_nil: true
25
+ }
26
+ validates :page_size,
27
+ numericality: {
28
+ only_integer: true,
29
+ greater_than_or_equal_to: 0,
30
+ allow_nil: true
31
+ }
32
+ validates :total_size,
33
+ numericality: {
34
+ only_integer: true,
35
+ greater_than_or_equal_to: 0,
36
+ allow_nil: true
37
+ }
38
+
39
+ # Associations
40
+ belongs_to :chip
41
+ end
@@ -1,14 +1,14 @@
1
- class Manufacturer < ActiveRecord::Base
2
- #Validations
3
- validates :name,
4
- length: {
5
- in: 2..25,
6
- message: "must be between 2 and 25 characters (manufacturer)"
7
- },
8
- presence: true,
9
- uniqueness: true
10
-
11
- # Associations
12
- has_many :chips,
13
- dependent: :destroy
14
- end
1
+ class Manufacturer < ActiveRecord::Base
2
+ #Validations
3
+ validates :name,
4
+ length: {
5
+ in: 2..25,
6
+ message: "must be between 2 and 25 characters (manufacturer)"
7
+ },
8
+ presence: true,
9
+ uniqueness: true
10
+
11
+ # Associations
12
+ has_many :chips,
13
+ dependent: :destroy
14
+ end
@@ -1,26 +1,26 @@
1
- class Package < ActiveRecord::Base
2
- # Validations
3
- validates :name,
4
- length: {
5
- in: 2..25,
6
- message: "must be between 2 and 25 characters (package)"
7
- },
8
- presence: true
9
- validates :pin_number,
10
- numericality: {
11
- only_integer: true,
12
- greater_than_or_equal_to: 4
13
- },
14
- presence: true
15
- validates :shape,
16
- numericality: {
17
- only_integer: true,
18
- greater_than_or_equal_to: 0,
19
- less_than_or_equal_to: 1
20
- },
21
- presence: true
22
-
23
- # Associations
24
- has_many :chips,
25
- dependent: :destroy
26
- end
1
+ class Package < ActiveRecord::Base
2
+ # Validations
3
+ validates :name,
4
+ length: {
5
+ in: 2..25,
6
+ message: "must be between 2 and 25 characters (package)"
7
+ },
8
+ presence: true
9
+ validates :pin_number,
10
+ numericality: {
11
+ only_integer: true,
12
+ greater_than_or_equal_to: 4
13
+ },
14
+ presence: true
15
+ validates :shape,
16
+ numericality: {
17
+ only_integer: true,
18
+ greater_than_or_equal_to: 0,
19
+ less_than_or_equal_to: 1
20
+ },
21
+ presence: true
22
+
23
+ # Associations
24
+ has_many :chips,
25
+ dependent: :destroy
26
+ end
@@ -1,37 +1,37 @@
1
- class ParallelSetting < ActiveRecord::Base
2
- # Validations
3
- validates :total_size,
4
- numericality: {
5
- only_integer: true,
6
- greater_than_or_equal_to: 0,
7
- allow_nil: true
8
- }
9
- validates :page_size,
10
- numericality: {
11
- only_integer: true,
12
- greater_than_or_equal_to: 0,
13
- allow_nil: true
14
- }
15
- validates :word_size,
16
- numericality: {
17
- only_integer: true,
18
- greater_than_or_equal_to: 0,
19
- allow_nil: true
20
- }
21
- validates :read_latency,
22
- numericality: {
23
- only_integer: true,
24
- greater_than_or_equal_to: 0,
25
- less_than_or_equal_to: 1600,
26
- allow_nil: true
27
- }
28
- validates :write_latency,
29
- numericality: {
30
- only_integer: true,
31
- greater_than_or_equal_to: 0,
32
- allow_nil: true
33
- }
34
-
35
- # Associations
36
- belongs_to :chip
37
- end
1
+ class ParallelSetting < ActiveRecord::Base
2
+ # Validations
3
+ validates :total_size,
4
+ numericality: {
5
+ only_integer: true,
6
+ greater_than_or_equal_to: 0,
7
+ allow_nil: true
8
+ }
9
+ validates :page_size,
10
+ numericality: {
11
+ only_integer: true,
12
+ greater_than_or_equal_to: 0,
13
+ allow_nil: true
14
+ }
15
+ validates :word_size,
16
+ numericality: {
17
+ only_integer: true,
18
+ greater_than_or_equal_to: 0,
19
+ allow_nil: true
20
+ }
21
+ validates :read_latency,
22
+ numericality: {
23
+ only_integer: true,
24
+ greater_than_or_equal_to: 0,
25
+ less_than_or_equal_to: 1600,
26
+ allow_nil: true
27
+ }
28
+ validates :write_latency,
29
+ numericality: {
30
+ only_integer: true,
31
+ greater_than_or_equal_to: 0,
32
+ allow_nil: true
33
+ }
34
+
35
+ # Associations
36
+ belongs_to :chip
37
+ end
data/lib/models/pin.rb CHANGED
@@ -1,14 +1,14 @@
1
- class Pin < ActiveRecord::Base
2
- # Validations
3
- validates :number,
4
- numericality: {
5
- only_integer: true,
6
- greater_than_or_equal_to: 1,
7
- },
8
- presence: true
9
-
10
- # Associations
11
- belongs_to :chip
12
- belongs_to :signall,
13
- foreign_key: "signal_id"
14
- end
1
+ class Pin < ActiveRecord::Base
2
+ # Validations
3
+ validates :number,
4
+ numericality: {
5
+ only_integer: true,
6
+ greater_than_or_equal_to: 1,
7
+ },
8
+ presence: true
9
+
10
+ # Associations
11
+ belongs_to :chip
12
+ belongs_to :signall,
13
+ foreign_key: "signal_id"
14
+ end
@@ -1,20 +1,20 @@
1
- class Signall < ActiveRecord::Base
2
- self.table_name = "signals"
3
-
4
- # Validations
5
- validates :name,
6
- length: {
7
- in: 1..10,
8
- wrong_length: "Signal name needs to be between 1 and 10 characters"
9
- },
10
- presence: true,
11
- uniqueness: true
12
-
13
- # Associations
14
- has_many :uses,
15
- foreign_key: "signal_id"
16
- has_many :buses,
17
- through: :uses,
18
- foreign_key: "signal_id"
19
- has_many :pins
20
- end
1
+ class Signall < ActiveRecord::Base
2
+ self.table_name = "signals"
3
+
4
+ # Validations
5
+ validates :name,
6
+ length: {
7
+ in: 1..10,
8
+ wrong_length: "Signal name needs to be between 1 and 10 characters"
9
+ },
10
+ presence: true,
11
+ uniqueness: true
12
+
13
+ # Associations
14
+ has_many :uses,
15
+ foreign_key: "signal_id"
16
+ has_many :buses,
17
+ through: :uses,
18
+ foreign_key: "signal_id"
19
+ has_many :pins
20
+ end
@@ -1,67 +1,67 @@
1
- class SpiSetting < ActiveRecord::Base
2
- # Validations
3
- validates :mode,
4
- numericality: {
5
- only_integer: true,
6
- greater_than_or_equal_to: 0,
7
- less_than_or_equal_to: 3,
8
- allow_nil: true
9
- }
10
- validates :write_page_latency,
11
- numericality: {
12
- only_integer: true,
13
- greater_than_or_equal_to: 0,
14
- allow_nil: true
15
- }
16
- validates :command_read,
17
- numericality: {
18
- only_integer: true,
19
- greater_than_or_equal_to: 0,
20
- allow_nil: true
21
- }
22
- validates :command_write,
23
- numericality: {
24
- only_integer: true,
25
- greater_than_or_equal_to: 0,
26
- allow_nil: true
27
- }
28
- validates :command_write_enable,
29
- numericality: {
30
- only_integer: true,
31
- greater_than_or_equal_to: 0,
32
- allow_nil: true
33
- }
34
- validates :command_erase,
35
- numericality: {
36
- only_integer: true,
37
- greater_than_or_equal_to: 0,
38
- allow_nil: true
39
- }
40
- validates :erase_time,
41
- numericality: {
42
- only_integer: true,
43
- greater_than_or_equal_to: 0,
44
- allow_nil: true
45
- }
46
- validates :page_size,
47
- numericality: {
48
- only_integer: true,
49
- greater_than_or_equal_to: 0,
50
- allow_nil: true
51
- }
52
- validates :total_size,
53
- numericality: {
54
- only_integer: true,
55
- greater_than_or_equal_to: 0,
56
- allow_nil: true
57
- }
58
- validates :is_flash,
59
- numericality: {
60
- only_integer: true,
61
- greater_than_or_equal_to: 0,
62
- less_than_or_equal_to: 1,
63
- allow_nil: true
64
- }
65
- # Associations
66
- belongs_to :chip
67
- end
1
+ class SpiSetting < ActiveRecord::Base
2
+ # Validations
3
+ validates :mode,
4
+ numericality: {
5
+ only_integer: true,
6
+ greater_than_or_equal_to: 0,
7
+ less_than_or_equal_to: 3,
8
+ allow_nil: true
9
+ }
10
+ validates :write_page_latency,
11
+ numericality: {
12
+ only_integer: true,
13
+ greater_than_or_equal_to: 0,
14
+ allow_nil: true
15
+ }
16
+ validates :command_read,
17
+ numericality: {
18
+ only_integer: true,
19
+ greater_than_or_equal_to: 0,
20
+ allow_nil: true
21
+ }
22
+ validates :command_write,
23
+ numericality: {
24
+ only_integer: true,
25
+ greater_than_or_equal_to: 0,
26
+ allow_nil: true
27
+ }
28
+ validates :command_write_enable,
29
+ numericality: {
30
+ only_integer: true,
31
+ greater_than_or_equal_to: 0,
32
+ allow_nil: true
33
+ }
34
+ validates :command_erase,
35
+ numericality: {
36
+ only_integer: true,
37
+ greater_than_or_equal_to: 0,
38
+ allow_nil: true
39
+ }
40
+ validates :erase_time,
41
+ numericality: {
42
+ only_integer: true,
43
+ greater_than_or_equal_to: 0,
44
+ allow_nil: true
45
+ }
46
+ validates :page_size,
47
+ numericality: {
48
+ only_integer: true,
49
+ greater_than_or_equal_to: 0,
50
+ allow_nil: true
51
+ }
52
+ validates :total_size,
53
+ numericality: {
54
+ only_integer: true,
55
+ greater_than_or_equal_to: 0,
56
+ allow_nil: true
57
+ }
58
+ validates :is_flash,
59
+ numericality: {
60
+ only_integer: true,
61
+ greater_than_or_equal_to: 0,
62
+ less_than_or_equal_to: 1,
63
+ allow_nil: true
64
+ }
65
+ # Associations
66
+ belongs_to :chip
67
+ end