3535
3636import cc .arduino .cli .commands .ArduinoCoreGrpc ;
3737import cc .arduino .cli .commands .ArduinoCoreGrpc .ArduinoCoreBlockingStub ;
38- import cc .arduino .cli .commands .Commands .Configuration ;
3938import cc .arduino .cli .commands .Commands .InitReq ;
4039import cc .arduino .cli .commands .Commands .InitResp ;
4140import cc .arduino .cli .commands .Common .Instance ;
41+ import cc .arduino .cli .settings .SettingsGrpc ;
42+ import cc .arduino .cli .settings .SettingsOuterClass ;
43+ import cc .arduino .cli .settings .SettingsOuterClass .GetAllRequest ;
44+ import cc .arduino .cli .settings .SettingsOuterClass .RawData ;
45+ import cc .arduino .cli .settings .SettingsOuterClass .SetValueResponse ;
46+ import cc .arduino .cli .settings .SettingsGrpc .SettingsBlockingStub ;
4247import io .grpc .ManagedChannel ;
4348import io .grpc .ManagedChannelBuilder ;
4449import processing .app .BaseNoGui ;
4853public class ArduinoCore {
4954
5055 private Process cliProcess ;
51- private ArduinoCoreBlockingStub blocking ;
56+ private ArduinoCoreBlockingStub coreBlocking ;
57+ private SettingsBlockingStub settingsBlocking ;
5258 // private ArduinoCoreStub async;
5359
5460 public ArduinoCore () throws IOException {
@@ -82,17 +88,35 @@ public ArduinoCore() throws IOException {
8288 .usePlaintext () //
8389 .maxInboundMessageSize (Integer .MAX_VALUE ) //
8490 .build ();
85- blocking = ArduinoCoreGrpc .newBlockingStub (channel );
91+ coreBlocking = ArduinoCoreGrpc .newBlockingStub (channel );
92+ settingsBlocking = SettingsGrpc .newBlockingStub (channel );
8693 // async = ArduinoCoreGrpc.newStub(channel);
8794 }
8895
96+ public void setDataDir (File dataDir ) {
97+ settingsBlocking
98+ .setValue (SettingsOuterClass .Value .newBuilder ().setKey ("directories" ) //
99+ .setJsonData ("{ \" data\" : \" " + dataDir .getAbsolutePath () + "\" }" ) //
100+ .build ());
101+ File downloadsDir = new File (dataDir , "staging" );
102+ settingsBlocking
103+ .setValue (SettingsOuterClass .Value .newBuilder ().setKey ("directories" ) //
104+ .setJsonData ("{ \" downloads\" : \" " + downloadsDir .getAbsolutePath ()
105+ + "\" }" ) //
106+ .build ());
107+ }
108+
109+ public void setSketchbookDir (File dataDir ) {
110+ settingsBlocking
111+ .setValue (SettingsOuterClass .Value .newBuilder ().setKey ("directories" ) //
112+ .setJsonData ("{ \" user\" : \" " + dataDir .getAbsolutePath () + "\" }" ) //
113+ .build ());
114+ }
115+
89116 public ArduinoCoreInstance init (File dataDir , File sketchbookDir ) {
90- InitReq req = InitReq .newBuilder ()
91- .setConfiguration (Configuration .newBuilder () //
92- .setDataDir (dataDir .getAbsolutePath ()) //
93- .setSketchbookDir (sketchbookDir .getAbsolutePath ()))
94- .build ();
95- Iterator <InitResp > resp = blocking .init (req );
117+ setDataDir (dataDir );
118+ setSketchbookDir (sketchbookDir );
119+ Iterator <InitResp > resp = coreBlocking .init (InitReq .getDefaultInstance ());
96120 Instance instance = null ;
97121 while (resp .hasNext ()) {
98122 InitResp r = resp .next ();
@@ -110,14 +134,14 @@ public ArduinoCoreInstance init(File dataDir, File sketchbookDir) {
110134 instance = r .getInstance ();
111135 }
112136 }
113- return new ArduinoCoreInstance (instance , blocking );
137+ return new ArduinoCoreInstance (instance , coreBlocking );
114138 }
115139
116140 public static void main (String [] args ) {
117141 try {
118142 ArduinoCore core = new ArduinoCore ();
119- ArduinoCoreInstance instance = core . init ( new File ( "/mnt/ramdisk" ),
120- new File ("/mnt/ramdisk/sketchbook" ));
143+ ArduinoCoreInstance instance = core
144+ . init ( new File ( "/mnt/ramdisk" ), new File ("/mnt/ramdisk/sketchbook" ));
121145 instance .boardDetails ("arduino:samd:mkr1000" );
122146 instance .compile ("arduino:samd:mkr1000" ,
123147 "/home/megabug/Arduino/alloc_check" );
0 commit comments