Skip to content

Commit de9feff

Browse files
committed
ANDROID: added experimental usb communication support
1 parent 345d3a7 commit de9feff

File tree

3 files changed

+13
-17
lines changed

3 files changed

+13
-17
lines changed

src/include/var.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ typedef struct var_s {
8080

8181
// associative array/map
8282
struct {
83-
// pointer the map structure
83+
// pointer to the map structure
8484
void *map;
8585

8686
uint32_t count;
@@ -132,7 +132,7 @@ typedef struct var_s {
132132
// non-zero if constant
133133
uint8_t const_flag;
134134

135-
// whether help in pooled memory
135+
// whether held in pooled memory
136136
uint8_t pooled;
137137
} var_t;
138138

src/platform/android/app/src/main/java/net/sourceforge/smallbasic/MainActivity.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -664,7 +664,7 @@ public String usbConnect(int vendorId) {
664664
_usbConnection = new UsbConnection(getApplicationContext(), vendorId);
665665
result = "[connected]";
666666
} catch (IOException e) {
667-
result = e.toString();
667+
result = e.getLocalizedMessage();
668668
}
669669
return result;
670670
}

src/platform/android/jni/module.cpp

+10-14
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,13 @@ static bool is_object(var_p_t var) {
2020
return var != nullptr && v_is_type(var, V_MAP) && (var->v.m.id == USB_OBJECT_ID);
2121
}
2222

23-
static bool usb_close() {
24-
return runtime->getBoolean("usbClose");
25-
}
26-
2723
static int cmd_usb_close(var_s *self, int argc, slib_par_t *args, var_s *retval) {
2824
int result;
2925
if (argc != 0 || !is_object(self)) {
3026
v_setstr(retval, ERR_PARAM);
3127
result = 0;
3228
} else {
33-
usb_close();
29+
runtime->getBoolean("usbClose");
3430
result = 1;
3531
}
3632
return result;
@@ -247,11 +243,11 @@ const char *lib_funcs[] = {
247243
"USBCONNECT"
248244
};
249245

250-
int sblib_proc_count(void) {
246+
extern "C" int sblib_proc_count(void) {
251247
return (sizeof(lib_procs) / sizeof(lib_procs[0]));
252248
}
253249

254-
int sblib_proc_getname(int index, char *proc_name) {
250+
extern "C" int sblib_proc_getname(int index, char *proc_name) {
255251
int result;
256252
if (index < sblib_proc_count()) {
257253
strcpy(proc_name, lib_procs[index].name);
@@ -262,7 +258,7 @@ int sblib_proc_getname(int index, char *proc_name) {
262258
return result;
263259
}
264260

265-
int sblib_proc_exec(int index, int argc, slib_par_t *args, var_t *retval) {
261+
extern "C" int sblib_proc_exec(int index, int argc, slib_par_t *args, var_t *retval) {
266262
int result;
267263
if (index < sblib_proc_count()) {
268264
result = lib_procs[index].command(argc, args, retval);
@@ -272,11 +268,11 @@ int sblib_proc_exec(int index, int argc, slib_par_t *args, var_t *retval) {
272268
return result;
273269
}
274270

275-
int sblib_func_count(void) {
271+
extern "C" int sblib_func_count(void) {
276272
return (sizeof(lib_funcs) / sizeof(lib_funcs[0]));
277273
}
278274

279-
int sblib_func_getname(int index, char *proc_name) {
275+
extern "C" int sblib_func_getname(int index, char *proc_name) {
280276
int result;
281277
if (index < sblib_func_count()) {
282278
strcpy(proc_name, lib_funcs[index]);
@@ -287,7 +283,7 @@ int sblib_func_getname(int index, char *proc_name) {
287283
return result;
288284
}
289285

290-
int sblib_func_exec(int index, int argc, slib_par_t *args, var_t *retval) {
286+
extern "C" int sblib_func_exec(int index, int argc, slib_par_t *args, var_t *retval) {
291287
int result;
292288
switch (index) {
293289
case 0:
@@ -311,14 +307,14 @@ int sblib_func_exec(int index, int argc, slib_par_t *args, var_t *retval) {
311307
return result;
312308
}
313309

314-
void sblib_free(int cls_id, int id) {
310+
extern "C" void sblib_free(int cls_id, int id) {
315311
if (cls_id == USB_CLASS_ID && id == USB_OBJECT_ID) {
316312
// when the 'usb' variable falls out of scope
317-
usb_close();
313+
runtime->getBoolean("usbClose");
318314
}
319315
}
320316

321-
void sblib_close() {
317+
extern "C" void sblib_close() {
322318
runtime->getBoolean("closeLibHandlers");
323319
runtime->disableSensor();
324320
}

0 commit comments

Comments
 (0)