@@ -28,6 +28,7 @@ public partial class PartTool : Form
2828 public static int Otad = 8 * 1024 ;
2929 public static bool OtaEnabled = false ;
3030 public static int Spiffs = 0 ;
31+ public static int Ffat = 0 ;
3132
3233 public PartTool ( int flashMB , ToolPartition partitionTool )
3334 {
@@ -47,8 +48,10 @@ private void PartTool_Load(object sender, EventArgs e)
4748 {
4849 trackBarOta . SmallChange = 64 ;
4950 trackBarOta1 . SmallChange = 64 ;
51+ trackBarOtaD . SmallChange = 1 ;
5052 trackBarOta . TickFrequency = 256 ;
5153 trackBarOta1 . TickFrequency = 256 ;
54+ trackBarOtaD . TickFrequency = 8 ;
5255
5356 trackBarEeprom . SmallChange = 4 ;
5457 trackBarNvs . SmallChange = 4 ;
@@ -57,6 +60,8 @@ private void PartTool_Load(object sender, EventArgs e)
5760
5861 trackBarSpiffs . SmallChange = 4 ;
5962 trackBarSpiffs . TickFrequency = 128 ;
63+ trackBarFfat . SmallChange = 4 ;
64+ trackBarFfat . TickFrequency = 128 ;
6065 Calculate ( ) ;
6166 }
6267
@@ -70,6 +75,7 @@ public int Calculate()
7075 else total += Ota0 ;
7176 if ( checkBoxEeprom . Checked ) total += Eeprom ;
7277 if ( checkBoxSpiffs . Checked ) total += Spiffs ;
78+ if ( checkBoxFfat . Checked ) total += Ffat ;
7379 total /= 1024 ;
7480 free = flashSizeKB - total ;
7581
@@ -94,9 +100,11 @@ public int Calculate()
94100 {
95101 labelOta1 . Text = trackBarOta1 . Value + "kb" ;
96102 }
103+ labelOtaD . Text = trackBarOtaD . Value + "kb" ;
97104 labelNvs . Text = ( checkBoxNvs . Checked ? trackBarNvs . Value . ToString ( ) : "0" ) + "kb" ;
98105 labelEeprom . Text = ( checkBoxEeprom . Checked ? trackBarEeprom . Value . ToString ( ) : "0" ) + "kb" ;
99106 labelSpiffs . Text = ( checkBoxSpiffs . Checked ? trackBarSpiffs . Value . ToString ( ) : "0" ) + "kb" ;
107+ labelFfat . Text = ( checkBoxFfat . Checked ? trackBarFfat . Value . ToString ( ) : "0" ) + "kb" ;
100108
101109 if ( free < 0 ) return free ;
102110
@@ -108,13 +116,15 @@ public int Calculate()
108116 trackBarOta . Maximum = trackBarOta . Value + free ;
109117 trackBarOta1 . Maximum = trackBarOta1 . Value + free ;
110118 trackBarSpiffs . Maximum = trackBarSpiffs . Value + free ;
119+ trackBarFfat . Maximum = trackBarFfat . Value + free ;
111120
112121 return free ;
113122 }
114123
115124 public void SetEeprom ( int size )
116125 {
117126 Eeprom = size ;
127+ if ( ! trackBarEeprom . Enabled ) checkBoxEeprom . Checked = true ;
118128 if ( size / 1024 > trackBarEeprom . Maximum ) trackBarEeprom . Maximum = size / 1024 ;
119129 trackBarEeprom . Value = size / 1024 ;
120130 Calculate ( ) ;
@@ -156,15 +166,34 @@ public void SetOta1(int size)
156166 OtaEnabled = true ;
157167 Calculate ( ) ;
158168 }
169+ public void SetOtaD ( int size )
170+ {
171+ //Otad = size;
172+ if ( size / 1024 > trackBarOtaD . Maximum ) trackBarOtaD . Maximum = size / 1024 ;
173+ trackBarOtaD . Minimum = 0 ;
174+ trackBarOtaD . Value = size / 1024 ;
175+ checkBoxOtaD . Checked = true ;
176+ Calculate ( ) ;
177+ }
159178
160179 public void SetSpiffs ( int size )
161180 {
162181 Spiffs = size ;
182+ if ( ! trackBarSpiffs . Enabled ) checkBoxSpiffs . Checked = true ;
163183 if ( size / 1024 > trackBarSpiffs . Maximum ) trackBarSpiffs . Maximum = size / 1024 ;
164184 trackBarSpiffs . Value = size / 1024 ;
165185 Calculate ( ) ;
166186 }
167187
188+ public void SetFfat ( int size )
189+ {
190+ Ffat = size ;
191+ if ( ! trackBarFfat . Enabled ) checkBoxFfat . Checked = true ;
192+ if ( size / 1024 > trackBarFfat . Maximum ) trackBarFfat . Maximum = size / 1024 ;
193+ trackBarFfat . Value = size / 1024 ;
194+ Calculate ( ) ;
195+ }
196+
168197 private void trackBarOta_ValueChanged ( object sender , EventArgs e )
169198 {
170199 Ota0 = ( trackBarOta . Value - trackBarOta . Value % 64 ) * 1024 ;
@@ -211,6 +240,13 @@ private void trackBarSpiffs_ValueChanged(object sender, EventArgs e)
211240 Calculate ( ) ;
212241 }
213242
243+ private void trackBarFfat_ValueChanged ( object sender , EventArgs e )
244+ {
245+ Ffat = ( trackBarFfat . Value - trackBarFfat . Value % 4 ) * 1024 ;
246+ trackBarFfat . Value = Ffat / 1024 ;
247+ Calculate ( ) ;
248+ }
249+
214250 private void checkBoxOta_CheckedChanged ( object sender , EventArgs e )
215251 {
216252 OtaEnabled = checkBoxOta . Checked ;
@@ -277,6 +313,22 @@ private void checkBoxSpiffs_CheckedChanged(object sender, EventArgs e)
277313 }
278314 }
279315
316+ private void checkBoxFfat_CheckedChanged ( object sender , EventArgs e )
317+ {
318+ if ( checkBoxFfat . Checked )
319+ {
320+ Ffat = trackBarFfat . Value * 1024 ;
321+ trackBarFfat . Enabled = true ;
322+ Calculate ( ) ;
323+ }
324+ else
325+ {
326+ Ffat = 0 ;
327+ trackBarFfat . Enabled = false ;
328+ Calculate ( ) ;
329+ }
330+ }
331+
280332 private void button3_Click ( object sender , EventArgs e )
281333 {
282334 if ( groupBox1 . Left == progressBar1 . Left )
@@ -311,7 +363,7 @@ private void button1_Click(object sender, EventArgs e)
311363
312364 private async void SavePartition ( string filename )
313365 {
314- await partition . CreatePartition ( Nvs , Ota0 , Ota1 , Eeprom , Spiffs ) ;
366+ await partition . CreatePartition ( Nvs , Ota0 , Ota1 , Eeprom , Spiffs , Ffat ) ;
315367 File . Copy ( partition . GetPartitionPath ( filename . EndsWith ( ".bin" ) ) , filename , true ) ;
316368 }
317369
@@ -320,6 +372,29 @@ private void checkBoxOtaLock_CheckedChanged(object sender, EventArgs e)
320372 trackBarOta1 . Enabled = ! checkBoxOtaLock . Checked ;
321373 }
322374
375+ private int convertCSVInteger ( string inString )
376+ {
377+ if ( inString . StartsWith ( "0x" ) )
378+ {
379+ return Convert . ToInt32 ( inString . Trim ( ) , 16 ) ;
380+ }
381+ else
382+ {
383+ int multiplier = 0 ;
384+ if ( inString . Contains ( "K" ) )
385+ {
386+ inString = inString . Replace ( "K" , "" ) ;
387+ multiplier = 1024 ;
388+ }
389+ else if ( inString . Contains ( "M" ) )
390+ {
391+ inString = inString . Replace ( "M" , "" ) ;
392+ multiplier = 1024 * 1024 ;
393+ }
394+ return Convert . ToInt32 ( inString . Trim ( ) , 10 ) * multiplier ;
395+ }
396+ }
397+
323398 private async void button4_Click ( object sender , EventArgs e )
324399 {
325400 openFileDialog1 . Title = "Import partition table" ;
@@ -336,12 +411,13 @@ private async void button4_Click(object sender, EventArgs e)
336411 if ( items . Count ( ) < 5 ) continue ;
337412 switch ( items [ 0 ] . Trim ( ) )
338413 {
339- case "nvs" : SetNvs ( Convert . ToInt32 ( items [ 4 ] . Trim ( ) , 16 ) ) ; break ;
340- case "app0" : SetOta0 ( Convert . ToInt32 ( items [ 4 ] . Trim ( ) , 16 ) , null ) ; break ;
341- case "app1" : SetOta1 ( Convert . ToInt32 ( items [ 4 ] . Trim ( ) , 16 ) ) ; break ;
342- case "eeprom" : SetEeprom ( Convert . ToInt32 ( items [ 4 ] . Trim ( ) , 16 ) ) ; break ;
343- case "spiffs" : SetSpiffs ( Convert . ToInt32 ( items [ 4 ] . Trim ( ) , 16 ) ) ; break ;
344- case "otadata" : Otad = Convert . ToInt32 ( items [ 4 ] . Trim ( ) , 16 ) ; break ;
414+ case "nvs" : SetNvs ( convertCSVInteger ( items [ 4 ] ) ) ; break ;
415+ case "app0" : SetOta0 ( convertCSVInteger ( items [ 4 ] ) , null ) ; break ;
416+ case "app1" : SetOta1 ( convertCSVInteger ( items [ 4 ] ) ) ; break ;
417+ case "eeprom" : SetEeprom ( convertCSVInteger ( items [ 4 ] ) ) ; break ;
418+ case "ffat" : SetFfat ( convertCSVInteger ( items [ 4 ] ) ) ; break ;
419+ case "spiffs" : SetSpiffs ( convertCSVInteger ( items [ 4 ] ) ) ; break ;
420+ case "otadata" : Otad = convertCSVInteger ( items [ 4 ] ) ; break ;
345421 default : MessageBox . Show ( "Error: can't import this partition: " + items [ 0 ] . Trim ( ) + " - it will be ignored" , "Import partitions" ) ; break ;
346422 }
347423
0 commit comments