00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include <orte.h>
00013 #ifdef CONFIG_ORTE_RTL
00014 #include <linux/module.h>
00015 #include <posix/pthread.h>
00016 #define printf rtl_printf
00017 #elif defined CONFIG_ORTE_RTAI
00018 #include <linux/module.h>
00019 #include <rtai/compat.h>
00020 #define printf rt_printk
00021 #else
00022 #include <stdio.h>
00023 #endif
00024
00025 #include <RobotType.h>
00026 #include <RobotTypeArr.h>
00027
00028 ORTEDomain *d;
00029 ORTEPublication *publisherDO;
00030 ORTEPublication *publisherMotor;
00031 ORTEPublication *publisherServa;
00032 ORTEPublication *publisherJoy;
00033
00034
00035 unsigned int accelRecv[3];
00036 stateDigIn stateDI;
00037 uint16_t stateIR;
00038 unsigned char stateIR2;
00039 bool stateDO[8];
00040 short int motorSpeedCmd[2];
00041 uint16_t sharpToRecv[4];
00042
00043
00044 motionStatus ms;
00045 motionSpeed mspeed;
00046 stateInnerIR sir;
00047 sharpLongs ss1;
00048 sharpShorts ss2;
00049 stateServa serva;
00050 position pozice;
00051 joyData joy;
00052
00053 void sendCallBackServo(const ORTESendInfo *info,void *vinstance, void *sendCallBackParam);
00054
00055 void *publisherCreateServo(void *arg) {
00056 ORTEPublication *p;
00057 NtpTime persistence, delay;
00058
00059 stateServa_type_register(d);
00060 NTPTIME_BUILD(persistence,3);
00061 NTPTIME_BUILD(delay,1);
00062 publisherServa=ORTEPublicationCreate(d, "serva", "stateServa", &serva, &persistence, 2, NULL, arg, &delay);
00063 return arg;
00064 }
00065
00066 void *publisherCreateJoy(void *arg) {
00067 ORTEPublication *p;
00068 NtpTime persistence, delay;
00069
00070 joyData_type_register(d);
00071 NTPTIME_BUILD(persistence,3);
00072 NTPTIME_BUILD(delay,1);
00073 publisherJoy=ORTEPublicationCreate(d, "joy", "joyData", &joy, &persistence, 1, NULL, arg, &delay);
00074 return arg;
00075 }
00076
00077 void *publisherDOCreate(void *arg) {
00078 ORTEPublication *p;
00079 NtpTime persistence, delay;
00080
00081 ORTETypeRegisterAdd(d,"DOMsg",NULL,NULL,NULL,sizeof(stateDO));
00082 NTPTIME_BUILD(persistence,3);
00083 NTPTIME_BUILD(delay,1);
00084 publisherDO=ORTEPublicationCreate(d, "DO", "DOMsg", &stateDO, &persistence, 1, NULL, NULL, &delay);
00085 return arg;
00086 }
00087
00088 void *publisherMotorCreate(void *arg) {
00089 ORTEPublication *p;
00090 NtpTime persistence, delay;
00091
00092 motionSpeed_type_register(d);
00093
00094 NTPTIME_BUILD(persistence,3);
00095 NTPTIME_BUILD(delay,1);
00096 publisherMotor=ORTEPublicationCreate(d, "motor", "motionSpeed", &mspeed, &persistence, 2, NULL, NULL, &delay);
00097 return arg;
00098 }
00099
00100
00101 void *orte_function( void *ptr )
00102 {
00103 ORTEInit();
00104 ORTEVerbositySetOptions("ALL.0");
00105 d=ORTEDomainAppCreate(ORTE_DEFAULT_DOMAIN,NULL,NULL,ORTE_FALSE);
00106
00107 if (!d) {
00108 printf("ORTEDomainAppCreate failed!\n");
00109 }
00110
00111 publisherCreateJoy(ptr);
00112
00113 publisherMotorCreate(NULL);
00114 return NULL;
00115 }