embox

Форк
0
84 строки · 1.5 Кб
1
/**
2
 * @file
3
 * @brief phoneME MIDP glue layer
4
 *
5
 * @date 11.01.2013
6
 * @author Felix Sulima
7
 */
8

9
#include <javacall_events.h>
10
#include <kernel/task.h>
11

12
#include "midp.h"
13
#include "cldc.h"
14

15
#include <stdio.h>
16
#include <unistd.h>
17
#include <fcntl.h>
18
#include <drivers/input/input_dev.h>
19

20
#include <javacall_lifecycle.h>
21

22

23
static void *phoneme_run(void *data) {
24
	//ToDo:
25
	printf("NOT IMPLEMENTED\n");
26
	JavaTask();
27
	return NULL;
28
}
29

30
struct __jvm_params {
31
	int argc;
32
	char **argv;
33
	int code;
34
};
35

36
/* Notify java task about system events. */
37
static void notify_loop(void) {
38
	int fd;
39
	struct input_event buf[16];
40

41
	if (0 > (fd = open("/dev/input/keyboard", 0))) {
42
		return;
43
	}
44

45
	while(!list_empty(&task_self()->children)) { /* XXX make it throw signals */
46
		size_t len, i, event_size = sizeof(struct input_event);
47
		if ((len = read(fd, buf, event_size * 16)) > 0) {
48
			/* Send all events we read to java task. */
49
			for (i = 0; i < len / event_size; i++) {
50
				/*javacall_event_send(buf[i], event_size);*/
51
			}
52
		}
53
	}
54
}
55

56
int phoneme_midp(int argc, char **argv) {
57
	struct __jvm_params params = {
58
			.argc = argc,
59
			.argv = argv,
60
			.code = -1
61
	};
62

63
	if (JAVACALL_OK != javacall_events_init()) {
64
		return -1;
65
	}
66

67
	new_task("", phoneme_run, &params);
68
	notify_loop();
69

70
	return params.code;
71
}
72

73
int phoneme_cldc(int argc, char **argv) {
74
	struct __jvm_params params = {
75
			.argc = argc,
76
			.argv = argv,
77
			.code = -1
78
	};
79

80
	new_task("", phoneme_run, &params);
81
	while(!list_empty(&task_self()->children)) { } /* XXX make it throw waitpid() */
82

83
	return params.code;
84
}
85

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.