robofsm_orte.h

00001 #include <orte.h>
00002 
00003 #ifdef CONFIG_ORTE_RTL
00004 #include <linux/module.h>
00005 #include <posix/pthread.h>
00006 #define printf rtl_printf
00007 #elif defined CONFIG_ORTE_RTAI
00008 #include <linux/module.h>
00009 #include <rtai/compat.h>  
00010 #define printf rt_printk
00011 #else
00012 #include <stdio.h>
00013 #endif
00014 
00015 ORTEDomain *d=NULL;
00016 ORTEPublication *publisherMotor;
00017 
00018 uint16_t laserRecv[12];
00019 int16_t motorSpeedCmd[2];
00020 
00021 void *subscriberLaserCreate(void *arg) {
00022         ORTESubscription    *s;
00023         NtpTime             deadline,minimumSeparation;
00024 
00025         ORTETypeRegisterAdd(d,"LaserMsg",NULL,NULL,NULL,sizeof(laserRecv));
00026         NTPTIME_BUILD(deadline,10);
00027         NTPTIME_BUILD(minimumSeparation,0);
00028         s=ORTESubscriptionCreate(d, IMMEDIATE, BEST_EFFORTS, "laser", "LaserMsg", &laserRecv, &deadline, &minimumSeparation, recvCallBackMotor, NULL, IPADDRESS_INVALID);
00029         return arg;
00030 }
00031 
00032 void *publisherMotorCreate(void *arg) {
00033         ORTEPublication     *p;
00034         NtpTime             persistence, delay;
00035 
00036         ORTETypeRegisterAdd(d,"MotorCmdMsg",NULL,NULL,NULL,sizeof(motorSpeedCmd));
00037         NTPTIME_BUILD(persistence,3);
00038         NTPTIME_BUILD(delay,1); 
00039         publisherMotor=ORTEPublicationCreate(d, "motor", "MotorCmdMsg", &motorSpeedCmd, &persistence, 1, NULL,  NULL, &delay);
00040         return arg;
00041 }
00042 
00043 void recvCallBackLaser(const ORTERecvInfo *info,void *vinstance, void *recvCallBackParam) {
00044         uint16_t *instance=(uint16_t *)vinstance;
00045 
00046         switch (info->status) {
00047                 case NEW_DATA:
00048                         break;
00049                 case DEADLINE:
00050                         printf("deadline occurred\n");
00051                         break;
00052         }
00053 }
00054 
00055 void initOrte() {
00056         ORTEInit();
00057 
00058         ORTEVerbositySetOptions("ALL.0");
00059         d=ORTEDomainAppCreate(ORTE_DEFAULT_DOMAIN,NULL,NULL,ORTE_FALSE);
00060         if (!d) {
00061                 printf("ORTEDomainAppCreate failed!\n");
00062         }
00063         subscriberLaserCreate(NULL);
00064         publisherMotorCreate(NULL);
00065 }

Generated on Thu Sep 13 11:28:28 2007 for DCE-Eurobot by  doxygen 1.5.3