Skip to content

Commit

Permalink
hardware module backend (not work now)
Browse files Browse the repository at this point in the history
  • Loading branch information
nazarov-andrey committed Sep 17, 2012
1 parent 18e46be commit de55fc3
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 4 deletions.
9 changes: 7 additions & 2 deletions src/Hardware.ml
Expand Up @@ -5,11 +5,16 @@ external hwmodel: unit -> string = "ml_hwmodel";
external cpu_frequency: unit -> int = "ml_cpuFrequency";
external total_memory: unit -> int = "ml_totalMemory";
external user_memory: unit -> int = "ml_userMemory";
ELSE IFDEF ANDROID THEN
external platform: unit -> string = "ml_platform";
external hwmodel: unit -> string = "ml_hwmodel";
external total_memory: unit -> int = "ml_totalMemory";
ELSE
value platform () = "PLATFORM";
value hwmodel () = "HWMODEL";
value cpu_frequency () = 0;
value total_memory () = 0;
ENDIF;
value cpu_frequency () = 0;
value internal_user_memory = ref 0;
value user_memory () = !internal_user_memory;
ENDIF;
ENDIF;
34 changes: 34 additions & 0 deletions src/android/java/src/ru/redspell/lightning/LightView.java
Expand Up @@ -228,6 +228,7 @@ public void run() {
public void onResume() {
Log.d("LIGHTNING", "VIEW.onResume");
//super.onResume();

queueEvent(new Runnable() {
@Override
public void run() {
Expand Down Expand Up @@ -660,4 +661,37 @@ public ExpansionsCallbackRunnable(int cb) {
public void callExpansionsComplete(int cb) {
queueEvent(new ExpansionsCallbackRunnable(cb));
}


public static String platform() {
return android.os.Build.VERSION.RELEASE;
}

public static String hwmodel() {
return android.os.Build.MODEL;
}

public static long totalMemory() {
String meminfo;

try {
java.io.RandomAccessFile f = new java.io.RandomAccessFile("/proc/meminfo", "r");
java.util.regex.Pattern regex = java.util.regex.Pattern.compile("^MemTotal:[\\s]*([\\d]+).*$");

while ((meminfo = f.readLine()) != null) {
java.util.regex.Matcher matcher = regex.matcher(meminfo);

if (matcher.find()) {
meminfo = matcher.group(1);
break;
}
}

f.close();
} catch (Exception e) {
meminfo = null;
}

return meminfo == null ? 0 : (new Long(meminfo)).longValue() * 1024;
}
}
45 changes: 45 additions & 0 deletions src/android/mlwrapper_android.c
Expand Up @@ -1605,4 +1605,49 @@ JNIEXPORT jobject JNICALL Java_ru_redspell_lightning_LightMediaPlayer_getOffsetS

(*env)->ReleaseStringUTFChars(env, path, cpath);
return retval;
}

value ml_platform() {
JNIEnv *env;
(*gJavaVM)->GetEnv(gJavaVM, (void **)&env, JNI_VERSION_1_4);

static mid;
if (!mid) mid = (*env)->GetMethodID(env, jViewCls, "platform", "()Ljava/lang/String;");

jstring jplat = (*env)->CallObjectMethod(env, jView, mid);
char* cplat = (*env)->GetStringUTFChars(env, jplat, JNI_FALSE);
value retval = caml_copy_string(cplat);

(*env)->ReleaseStringUTFChars(env, jplat, cplat);
(*env)->DeleteLocalRef(env, jplat);

return retval;
}

value ml_hwmodel() {
JNIEnv *env;
(*gJavaVM)->GetEnv(gJavaVM, (void **)&env, JNI_VERSION_1_4);

static mid;
if (!mid) mid = (*env)->GetMethodID(env, jViewCls, "hwmodel", "()Ljava/lang/String;");

jstring jmodel = (*env)->CallObjectMethod(env, jView, mid);
char* cmodel = (*env)->GetStringUTFChars(env, jmodel, JNI_FALSE);
value retval = caml_copy_string(cmodel);

(*env)->ReleaseStringUTFChars(env, jmodel, cmodel);
(*env)->DeleteLocalRef(env, jmodel);

return retval;
}

value ml_totalMemory() {
JNIEnv *env;
(*gJavaVM)->GetEnv(gJavaVM, (void **)&env, JNI_VERSION_1_4);

static mid;
if (!mid) mid = (*env)->GetMethodID(env, jViewCls, "hwmodel", "()J");
jlong jtotalmem = (*env)->CallLongMethod(env, jView, mid);

return Val_int(jtotalmem);
}
5 changes: 3 additions & 2 deletions test/example.ml
Expand Up @@ -1375,11 +1375,12 @@ let stage width height =
value bgColor = 0xCCCCCC;
initializer begin

debug "pizda";
debug "%s %s %d" (Hardware.platform ()) (Hardware.hwmodel ()) (Hardware.total_memory ());
(* debug "pizda";
debug "back handler %d" (self#addEventListener Stage.ev_BACK_PRESSED (fun _ _ _ -> debug "back pressed"));
debug "bg handler %d" (self#addEventListener Stage.ev_BACKGROUND (fun _ _ _ -> debug "background"));
debug "fg handler %d" (self#addEventListener Stage.ev_FOREGROUND (fun _ _ _ -> debug "foreground"));
debug "fg handler %d" (self#addEventListener Stage.ev_FOREGROUND (fun _ _ _ -> debug "foreground")); *)



Expand Down

0 comments on commit de55fc3

Please sign in to comment.