Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 1418 → Rev 1419

/demos/trunk/rtw/sensors.c
5,30 → 5,28
 
#include "rtw.h"
 
extern CAB input_cid[NINPUTCAB];
extern CAB output_cid[NOUTPUTCAB];
 
TASK SENSOR_body(void *input_port) {
TASK SENSOR_body(void *output_port) {
 
real_T *p;
int in = (int)(input_port);
char cname[20];
real_T *p, value;
int out = (int)(output_port);
if (in >= NINPUTCAB) return NULL;
if (out >= NOUTPUTCAB) return NULL;
sprintf(cname,"INPUT%d",in);
input_cid[in] = cab_create(cname, sizeof(real_T), 2);
while(1) {
/* Get CAB message */
p = (real_T *)cab_getmes(output_cid[out]);
/* Reserve a message */
p = (real_T *)cab_reserve(input_cid[in]);
/* Set value */
value = *p;
/* Save data */
*p = 1000.0;
/* Put CAB message */
cab_putmes(input_cid[in], p);
/* Release CAB message */
cab_unget(output_cid[out], p);
 
cprintf("Value %d = %lf\n",out,value);
task_endcycle();
}
40,24 → 38,39
void activate_sensors() {
 
HARD_TASK_MODEL SENSOR_task;
PID SENSOR_pid;
PID DISTANCE_pid,ANGLE_pid,CURVE_pid;
 
hard_task_default_model(SENSOR_task);
hard_task_def_mit(SENSOR_task,10000);
hard_task_def_wcet(SENSOR_task,1000);
/* Set sensor port number */
hard_task_def_arg(SENSOR_task,(void *)(0));
hard_task_def_mit(SENSOR_task,60000);
hard_task_def_wcet(SENSOR_task,4000);
hard_task_def_usemath(SENSOR_task);
hard_task_def_ctrl_jet(SENSOR_task);
SENSOR_pid = task_create("SENSOR0",SENSOR_body,&SENSOR_task,NULL);
if (SENSOR_pid == NIL) {
cprintf("Error: Cannot create RealTime Workshop [SENSOR0] Task\n");
hard_task_def_arg(SENSOR_task,(void *)(0));
DISTANCE_pid = task_create("DISTANCE",SENSOR_body,&SENSOR_task,NULL);
if (DISTANCE_pid == NIL) {
cprintf("Error: Cannot create RealTime Workshop [DISTACE] Task\n");
sys_end();
}
 
task_activate(SENSOR_pid);
hard_task_def_arg(SENSOR_task,(void *)(1));
ANGLE_pid = task_create("ANGLE",SENSOR_body,&SENSOR_task,NULL);
if (DISTANCE_pid == NIL) {
cprintf("Error: Cannot create RealTime Workshop [DISTACE] Task\n");
sys_end();
}
 
hard_task_def_arg(SENSOR_task,(void *)(2));
CURVE_pid = task_create("CURVE",SENSOR_body,&SENSOR_task,NULL);
if (CURVE_pid == NIL) {
cprintf("Error: Cannot create RealTime Workshop [CURVE] Task\n");
sys_end();
}
task_activate(DISTANCE_pid);
task_activate(ANGLE_pid);
task_activate(CURVE_pid);
 
}