Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 1418 → Rev 1417

/demos/trunk/rtw/rtw.h
File deleted
/demos/trunk/rtw/sensors.c
File deleted
/demos/trunk/rtw/makefile
35,8 → 35,3
rtw:
make -f $(SUBMAKE) OTHERLIBS=$(DEFINE_RTWLIB) OTHERINCL=$(RTW_CFG) APP=rtw INIT= OTHEROBJS="initfile.o sensors.o actuators.o rt_sim_shark.o $(RTW_OBJS)" SHARKOPT="__OLDCHAR__"
 
clean_total:
rm -rf *.o
rm -rf $(PROGS)
rm -rf $(RTW_OBJS)
 
/demos/trunk/rtw/rtw.c
8,10 → 8,7
#include "rt_nonfinite.h"
 
#include "kernel/kern.h"
#include "modules/cabs.h"
 
#include "rtw.h"
 
/*=========*
* Defines *
*=========*/
50,9 → 47,6
real_T rtMinusInf;
real_T rtNaN;
 
CAB input_cid[NINPUTCAB];
CAB output_cid[NOUTPUTCAB];
 
#ifdef EXT_MODE
# define rtExtModeSingleTaskUpload(S) \
{ \
395,26 → 389,20
 
}
 
TASK INPUT_body(void *input_port) {
TASK INPUT_body(void *arg) {
 
real_T *input, *p;
int in = (int)(input_port);
int input_ports = rtmGetNumU(S);
real_T *input;
 
if (in >= NINPUTCAB) return NULL;
cprintf("Number of Inputs = %d\n",input_ports);
 
input = (real_T *)rtmGetU(S);
 
while(1) {
 
/* Get CAB message */
p = (real_T *)cab_getmes(input_cid[in]);
input[0] = 1000.0;
input[1] = 1000.0;
 
/* Set INPUT port */
input[in] = *p;
 
/* Release CAB message */
cab_unget(input_cid[in], p);
 
task_endcycle();
 
}
423,29 → 411,22
 
}
 
TASK OUTPUT_body(void *output_port) {
 
real_T *output, *p;
int out = (int)(output_port);
char cname[20];
 
if (out >= NOUTPUTCAB) return NULL;
sprintf(cname,"OUTPUT%d",out);
output_cid[out] = cab_create(cname, sizeof(real_T), 2);
TASK OUTPUT_body(void *arg) {
int output_ports = rtmGetNumY(S),i;
real_T *output;
cprintf("Number of Outputs = %d\n",output_ports);
output = (real_T *)rtmGetY(S);
while(1) {
/* Reserve a message */
p = (real_T *)cab_reserve(output_cid[out]);
 
/* Save data */
*p = output[out];
 
/* Put CAB message */
cab_putmes(output_cid[out], p);
cprintf("T=%6lf ",rtmGetT(S));
for (i=0;i<output_ports;i++)
cprintf("O[%d]=%6lf ",i,output[i]);
cprintf("\n");
task_endcycle();
460,8 → 441,6
HARD_TASK_MODEL RTW_task,INPUT_task,OUTPUT_task;
PID RTW_pid,INPUT_pid,OUTPUT_pid;
 
int i;
 
int RTW_period;
int RTW_wcet;
 
473,17 → 452,14
 
Init_RealTime_Workshop();
 
for (i=0;i<NINPUTCAB;i++) input_cid[i] = -1;
for (i=0;i<NOUTPUTCAB;i++) output_cid[i] = -1;
 
RTW_period =(int)(rtmGetStepSize(S) * 1000000.0);
RTW_wcet = (int)(rtmGetStepSize(S) * 1000000.0 * 0.45);
 
INPUT_period = (int)(10000.0);
INPUT_wcet = (int)(10000.0 * 0.10);
INPUT_wcet = (int)(10000.0 * 0.20);
 
OUTPUT_period = (int)(10000.0);
OUTPUT_wcet = (int)(10000.0 * 0.10);
OUTPUT_period = (int)(20000.0);
OUTPUT_wcet = (int)(20000.0 * 0.25);
 
cprintf("Task Setup\n");
cprintf("RTW (P %8d W %8d)\n",RTW_period,RTW_wcet);
505,14 → 481,12
hard_task_default_model(INPUT_task);
hard_task_def_mit(INPUT_task,INPUT_period);
hard_task_def_wcet(INPUT_task,INPUT_wcet);
/* Set input port number */
hard_task_def_arg(INPUT_task,(void *)(0));
hard_task_def_usemath(INPUT_task);
hard_task_def_ctrl_jet(INPUT_task);
INPUT_pid = task_create("INPUT0",INPUT_body,&INPUT_task,NULL);
INPUT_pid = task_create("INPUT",INPUT_body,&INPUT_task,NULL);
if (INPUT_pid == NIL) {
cprintf("Error: Cannot create RealTime Workshop [INPUT0] Task\n");
cprintf("Error: Cannot create RealTime Workshop [INPUT] Task\n");
sys_end();
}
 
519,14 → 493,12
hard_task_default_model(OUTPUT_task);
hard_task_def_mit(OUTPUT_task,OUTPUT_period);
hard_task_def_wcet(OUTPUT_task,OUTPUT_wcet);
/* Set output port number */
hard_task_def_arg(OUTPUT_task,(void *)(0));
hard_task_def_usemath(OUTPUT_task);
hard_task_def_ctrl_jet(OUTPUT_task);
OUTPUT_pid = task_create("OUTPUT0",OUTPUT_body,&OUTPUT_task,NULL);
OUTPUT_pid = task_create("OUTPUT",OUTPUT_body,&OUTPUT_task,NULL);
if (OUTPUT_pid == NIL) {
cprintf("Error: Cannot create RealTime Workshop [OUTPUT0] Task\n");
cprintf("Error: Cannot create RealTime Workshop [OUTPUT] Task\n");
sys_end();
}
 
534,9 → 506,6
task_activate(RTW_pid);
task_activate(OUTPUT_pid);
 
activate_sensors();
activate_actuators();
 
while(simulation_run);
Close_RealTime_Workshop();