35
35
36
36
import cc .arduino .cli .commands .ArduinoCoreGrpc ;
37
37
import cc .arduino .cli .commands .ArduinoCoreGrpc .ArduinoCoreBlockingStub ;
38
- import cc .arduino .cli .commands .Commands .Configuration ;
39
38
import cc .arduino .cli .commands .Commands .InitReq ;
40
39
import cc .arduino .cli .commands .Commands .InitResp ;
41
40
import 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 ;
42
47
import io .grpc .ManagedChannel ;
43
48
import io .grpc .ManagedChannelBuilder ;
44
49
import processing .app .BaseNoGui ;
48
53
public class ArduinoCore {
49
54
50
55
private Process cliProcess ;
51
- private ArduinoCoreBlockingStub blocking ;
56
+ private ArduinoCoreBlockingStub coreBlocking ;
57
+ private SettingsBlockingStub settingsBlocking ;
52
58
// private ArduinoCoreStub async;
53
59
54
60
public ArduinoCore () throws IOException {
@@ -82,17 +88,35 @@ public ArduinoCore() throws IOException {
82
88
.usePlaintext () //
83
89
.maxInboundMessageSize (Integer .MAX_VALUE ) //
84
90
.build ();
85
- blocking = ArduinoCoreGrpc .newBlockingStub (channel );
91
+ coreBlocking = ArduinoCoreGrpc .newBlockingStub (channel );
92
+ settingsBlocking = SettingsGrpc .newBlockingStub (channel );
86
93
// async = ArduinoCoreGrpc.newStub(channel);
87
94
}
88
95
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
+
89
116
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 ());
96
120
Instance instance = null ;
97
121
while (resp .hasNext ()) {
98
122
InitResp r = resp .next ();
@@ -110,14 +134,14 @@ public ArduinoCoreInstance init(File dataDir, File sketchbookDir) {
110
134
instance = r .getInstance ();
111
135
}
112
136
}
113
- return new ArduinoCoreInstance (instance , blocking );
137
+ return new ArduinoCoreInstance (instance , coreBlocking );
114
138
}
115
139
116
140
public static void main (String [] args ) {
117
141
try {
118
142
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" ));
121
145
instance .boardDetails ("arduino:samd:mkr1000" );
122
146
instance .compile ("arduino:samd:mkr1000" ,
123
147
"/home/megabug/Arduino/alloc_check" );
0 commit comments