2 * $Id: h_publisher.c,v 0.0.1.0 2005/01/03
4 * DEBUG: section h_publisher
6 * -------------------------------------------------------------------
8 * Open Real-Time Ethernet
10 * Copyright (C) 2001-2006
11 * Department of Control Engineering FEE CTU Prague, Czech Republic
12 * http://dce.felk.cvut.cz
13 * http://www.ocera.org
15 * Author: Petr Smolik petr@smoliku.cz
17 * Project Responsible: Zdenek Hanzalek
18 * --------------------------------------------------------------------
20 * This program is free software; you can redistribute it and/or modify
21 * it under the terms of the GNU General Public License as published by
22 * the Free Software Foundation; either version 2 of the License, or
23 * (at your option) any later version.
25 * This program is distributed in the hope that it will be useful,
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28 * GNU General Public License for more details.
32 #ifdef CONFIG_ORTE_RTL
33 #include <linux/module.h>
34 #include <posix/pthread.h>
35 #define printf rtl_printf
36 #elif defined CONFIG_ORTE_RTAI
37 #include <linux/module.h>
38 #include <rtai/compat.h>
39 #define printf rt_printk
45 #define main orte_h_publisher_main
49 static ORTEDomain *d=NULL;
50 static char instance2Send[64];
54 sendCallBack(const ORTESendInfo *info,void *vinstance, void *sendCallBackParam) {
55 char *instance=(char*)vinstance;
57 switch (info->status) {
59 printf("Sampling publication, count %d\n", counter);
60 sprintf(instance,"Hello Universe! (%d)",counter++);
62 case CQL: //criticalQueueLevel
68 publisherCreate(void *arg) {
70 NtpTime persistence, delay;
72 ORTETypeRegisterAdd(d,"HelloMsg",NULL,NULL,NULL,sizeof(instance2Send));
73 NTPTIME_BUILD(persistence,3);
74 NTPTIME_BUILD(delay,1);
75 p=ORTEPublicationCreate(
86 printf("ORTEPublicationCreate failed\n");
92 #ifndef CONFIG_ORTE_RT
95 main(int argc, char *args[]) {
97 ORTEVerbositySetOptions("ALL.10");
98 d=ORTEDomainAppCreate(ORTE_DEFAULT_DOMAIN,NULL,NULL,ORTE_FALSE);
100 printf("ORTEDomainAppCreate failed!\n");
103 publisherCreate((void*)d);
108 printf("finnished!\n");
109 ORTEDomainAppDestroy(d);
115 MODULE_PARM(verbosity,"1s");
116 MODULE_PARM_DESC(verbosity,"set verbosity level SECTION, up to LEVEL:...");
117 char *manager="127.0.0.1";
118 MODULE_PARM(manager,"1s");
119 MODULE_PARM_DESC(manager,"IP address of local manager");
120 MODULE_LICENSE("GPL");
124 domainInit(void *arg) {
127 ORTEVerbositySetOptions(verbosity);
128 ORTEDomainPropDefaultGet(&dp);
129 dp.appLocalManager=StringToIPAddress(manager);
130 d=ORTEDomainAppCreate(ORTE_DEFAULT_DOMAIN,&dp,NULL,ORTE_TRUE);
135 domainDestroy(void *arg) {
137 ORTEDomainAppDestroy(d);
145 pthread_create(&thread,NULL,&domainInit,NULL); //allocate resources in RT
146 pthread_join(thread,NULL);
148 ORTEDomainStart(d,ORTE_TRUE,ORTE_FALSE,ORTE_TRUE,ORTE_FALSE,ORTE_TRUE); //application start
149 if (pthread_create(&thread,NULL,&publisherCreate,NULL)!=0)
150 printf("pthread_create failed!\n");
152 printf("ORTEDomainAppCreate failed!\n");
158 cleanup_module(void) {
160 pthread_join(thread,NULL);
161 pthread_create(&thread,NULL,&domainDestroy,NULL);
162 pthread_join(thread,NULL);