Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 1282 → Rev 1283

/demos/trunk/joy/joy_test.c
0,0 → 1,131
 
/*
* Project: S.Ha.R.K.
*
* Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
*
* Authors : Paolo Gai <pj@hartik.sssup.it>
* (see authors.txt for full list of hartik's authors)
*
* ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
*
* http://www.sssup.it
* http://retis.sssup.it
* http://shark.sssup.it
*/
 
/*
* Copyright (C) 2000 Paolo Gai
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
 
#include <kernel/kern.h>
#include <kernel/func.h>
#include <stdlib.h>
#include <drivers/keyb.h>
#include <math.h>
 
#include "joy.h"
 
PID pid;
 
void endfun(KEY_EVT *k)
{
cprintf("Ctrl-Brk pressed! Ending...\n");
sys_end();
}
 
void my_close(void *arg)
{
int i;
TIME tmp;
 
kern_printf("Taskset Execution Time\n\n");
for (i=3; i<MAX_PROC; i++){
if (!jet_getstat(i, NULL, &tmp, NULL, NULL))
kern_printf("Task Name : %s - Max Time : %d\n", proc_table[i].name, (int)tmp);
}
}
 
 
TASK write()
{
JOY_STATE jsa;
 
while (1) {
get_joystick_A(&jsa);
place(2,4);
cprintf("The X coord. is: %3d and the Y coord. is: %3d of the joystick1\n", jsa.x, jsa.y);
place(2,12);
cprintf("The button 1, joystick 1 is: %3d\n", jsa.b1);
place(2,14);
cprintf("The button 2, joystick 1 is: %3d\n", jsa.b2);
 
task_endcycle();
}
return 0;
}
 
int main(int argc, char **argv)
{
SOFT_TASK_MODEL ms;
KEY_EVT k;
TIME seme;
 
JOY_BOUND jb;
 
k.flag = CNTR_BIT;
k.scan = KEY_C;
k.ascii = 'c';
keyb_hook(k,endfun);
 
k.flag = CNTL_BIT;
k.scan = KEY_C;
k.ascii = 'c';
keyb_hook(k,endfun);
 
seme = sys_gettime(NULL);
srand(seme);
 
sys_atrunlevel(my_close, NULL, RUNLEVEL_BEFORE_EXIT);
 
clear();
 
if (get_joystick_bound_A(&jb)) {
perror("Could not find Joystick.");
sys_end();
}
 
place(2,2);
cprintf("The X bounds are: [ %3d - %3d ] and the Y bounds are: [ %3d - %3d ]\n", jb.x_min,jb.x_max,jb.y_min,jb.y_max);
 
soft_task_default_model(ms);
soft_task_def_level(ms,1);
soft_task_def_ctrl_jet(ms);
soft_task_def_met(ms,100);
soft_task_def_period(ms,10000);
soft_task_def_usemath(ms);
pid = task_create("Write", write, &ms, NULL);
if (pid == NIL) {
perror("Could not create task <Write>");
sys_end();
} else {
task_activate(pid);
}
 
return 0;
}
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: joy/joy_grx.c
===================================================================
--- joy/joy_grx.c (nonexistent)
+++ joy/joy_grx.c (revision 1283)
@@ -0,0 +1,177 @@
+
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ *
+ * Authors : Paolo Gai <pj@hartik.sssup.it>
+ * (see authors.txt for full list of hartik's authors)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <kernel/kern.h>
+#include <kernel/func.h>
+#include <stdlib.h>
+#include <drivers/keyb.h>
+#include <drivers/glib.h>
+#include <semaphore.h>
+#include "modules/sem.h"
+#include "modules/hartport.h"
+
+#include <math.h>
+
+#include "joy.h"
+
+#define RGB_BLACK rgb16( 0, 0, 0)
+#define RGB_GRAY rgb16(127,127,127)
+#define RGB_WHITE rgb16(255,255,255)
+#define RGB_RED rgb16(255, 0, 0)
+#define RGB_GREEN rgb16( 0,255, 0)
+#define RGB_BLUE rgb16( 0, 0,255)
+#define RGB_YELLOW rgb16(255,255, 0)
+#define RGB_MAGENTA rgb16(255, 0,255)
+#define RGB_CYAN rgb16( 0,255,255)
+#define RGB_D_RED rgb16(127, 0, 0)
+#define RGB_D_GREEN rgb16( 0,127, 0)
+#define RGB_D_BLUE rgb16( 0, 0,127)
+#define RGB_D_YELLOW rgb16(127,127, 0)
+#define RGB_D_MAGENTA rgb16(127, 0,127)
+#define RGB_D_CYAN rgb16( 0,127,127)
+
+sem_t mx_mat, mx_grf; /* mutex semaphores */
+PID pid;
+JOY_BOUND jb;
+
+
+TASK write()
+{
+ int x = 319, y = 239;
+ float dx, dy;
+ JOY_STATE jsa;
+
+ clear();
+
+ dx = 640 / (jb.x_max - jb.x_min);
+ dy = 480 / (jb.y_max - jb.y_min);
+
+ while (1) {
+ sem_wait(&mx_grf);
+ grx_circle(10 + x, 10 + y, 9, RGB_BLACK);
+ sem_post(&mx_grf);
+
+ get_joystick_A(&jsa);
+
+ x = (jsa.x - jb.x_min) * dx;
+ y = (jsa.y - jb.y_min) * dy;
+
+ sem_wait(&mx_grf);
+ if (jsa.b1==1)
+ grx_circle(10 + dx * x, 10 + dy * y, 9, RGB_RED);
+ else
+ grx_circle(10 + dx * x, 10 + dy * y, 9, RGB_YELLOW);
+ sem_post(&mx_grf);
+
+ task_endcycle();
+ }
+ return 0;
+}
+
+void endfun(KEY_EVT *k)
+{
+ cprintf("Ctrl-Brk pressed! Ending...\n");
+ sys_end();
+}
+
+void my_close(void *arg)
+{
+ int i;
+ TIME tmp;
+
+ grx_close();
+ kern_printf("Taskset Execution Time\n\n");
+ for (i=3; i<MAX_PROC; i++){
+ if (!jet_getstat(i, NULL, &tmp, NULL, NULL))
+ kern_printf("Task Name : %s - Max Time : %d\n", proc_table[i].name, (int)tmp);
+ }
+}
+
+void init_graph() {
+ grx_box( 0, 0,639,479,RGB_BLACK);
+}
+
+int main(int argc, char **argv)
+{
+ SOFT_TASK_MODEL ms;
+ KEY_EVT k;
+ TIME seme;
+ int modenum;
+
+ k.flag = CNTR_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ keyb_hook(k,endfun);
+
+ k.flag = CNTL_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ keyb_hook(k,endfun);
+
+ sem_init(&mx_mat,0,1);
+ sem_init(&mx_grf,0,1);
+
+ seme = sys_gettime(NULL);
+ srand(seme);
+
+ sys_atrunlevel(my_close, NULL, RUNLEVEL_BEFORE_EXIT);
+
+ if (get_joystick_bound_A(&jb)) {
+ perror("Could not find Joystick.");
+ sys_end();
+ }
+
+ grx_init();
+ modenum = grx_getmode(640, 480, 16);
+ grx_setmode(modenum);
+ init_graph();
+
+ soft_task_default_model(ms);
+ soft_task_def_level(ms,1);
+ soft_task_def_ctrl_jet(ms);
+ soft_task_def_met(ms,100);
+ soft_task_def_period(ms,10000);
+ soft_task_def_usemath(ms);
+ pid = task_create("Write", write, &ms, NULL);
+ if (pid == NIL) {
+ grx_close();
+ perror("Could not create task <Write>");
+ sys_end();
+ } else {
+ task_activate(pid);
+ }
+
+ return 0;
+}
/joy/joy_grx.c
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: joy/initfile.c
===================================================================
--- joy/initfile.c (nonexistent)
+++ joy/initfile.c (revision 1283)
@@ -0,0 +1,85 @@
+/*
+ * Project: HARTIK (HA-rd R-eal TI-me K-ernel)
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ * Gerardo Lamastra <gerardo@sssup.it>
+ *
+ * Authors : Paolo Gai <pj@hartik.sssup.it>
+ * (see authors.txt for full list of hartik's authors)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://hartik.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <kernel/kern.h>
+#include <kernel/func.h>
+#include <stdlib.h>
+#include <drivers/keyb.h>
+#include <drivers/glib.h>
+#include <semaphore.h>
+#include "modules/sem.h"
+#include "modules/hartport.h"
+
+#include "modules/edf.h"
+#include "modules/cbs.h"
+#include "modules/rr.h"
+#include "modules/dummy.h"
+
+/*+ sysyem tick in us +*/
+#define TICK 0 //300
+
+/*+ RR tick in us +*/
+#define RRTICK 300
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ EDF_register_level(EDF_ENABLE_ALL);
+ CBS_register_level(CBS_ENABLE_ALL, 0);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ HARTPORT_init();
+
+ //keyb_set_map(itaMap);
+ keyb_def_ctrlC(kparms, NULL);
+ KEYB_init(&kparms);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
/joy/initfile.c
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: joy/README
===================================================================
--- joy/README (nonexistent)
+++ joy/README (revision 1283)
@@ -0,0 +1,2 @@
+TODO
+
Index: joy/makefile
===================================================================
--- joy/makefile (nonexistent)
+++ joy/makefile (revision 1283)
@@ -0,0 +1,18 @@
+#
+#
+#
+
+ifndef BASE
+BASE=../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS= joy_hex joy_test joy_grx
+
+include $(BASE)/config/example.mk
+
+joy_grx:
+ make -f $(SUBMAKE) APP=joy_grx INIT= OTHEROBJS="initfile.o" SHARKOPT="__OLDCHAR__ __GRX__ __JOY__"
+
+joy_test:
+ make -f $(SUBMAKE) APP=joy_test INIT= OTHEROBJS="initfile.o" SHARKOPT="__OLDCHAR__ __JOY__"
/joy/makefile
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property