2 * $Id: h_publisher.c,v 0.0.1.0 2005/01/03
4 * DEBUG: section h_publisher
5 * AUTHOR: Petr Smolik petr.smolik@wo.cz
7 * ORTE - OCERA Real-Time Ethernet http://www.ocera.org/
8 * --------------------------------------------------------------------
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
22 #ifdef CONFIG_ORTE_RTL
23 #include <linux/module.h>
24 #include <posix/pthread.h>
25 #define printf rtl_printf
26 #elif defined CONFIG_ORTE_RTAI
27 #include <linux/module.h>
28 #include <rtai/compat.h>
29 #define printf rt_printk
35 char instance2Send[64];
39 sendCallBack(const ORTESendInfo *info,void *vinstance, void *sendCallBackParam) {
40 char *instance=(char*)vinstance;
42 switch (info->status) {
44 printf("Sampling publication, count %d\n", counter);
45 sprintf(instance,"Hello Universe! (%d)",counter++);
47 case CQL: //criticalQueueLevel
53 publisherCreate(void *arg) {
55 NtpTime persistence, delay;
57 ORTETypeRegisterAdd(d,"HelloMsg",NULL,NULL,NULL,sizeof(instance2Send));
58 NTPTIME_BUILD(persistence,3);
59 NTPTIME_BUILD(delay,1);
60 p=ORTEPublicationCreate(
74 #ifndef CONFIG_ORTE_RT
77 main(int argc, char *args[]) {
79 ORTEVerbositySetOptions("ALL.10");
80 d=ORTEDomainAppCreate(ORTE_DEFAULT_DOMAIN,NULL,NULL,ORTE_FALSE);
82 printf("ORTEDomainAppCreate failed!\n");
85 publisherCreate((void*)d);
90 printf("finnished!\n");
91 ORTEDomainAppDestroy(d);
97 MODULE_PARM(verbosity,"1s");
98 MODULE_PARM_DESC(verbosity,"set verbosity level SECTION, up to LEVEL:...");
99 char *manager="127.0.0.1";
100 MODULE_PARM(manager,"1s");
101 MODULE_PARM_DESC(manager,"IP address of local manager");
102 MODULE_LICENSE("GPL");
106 domainInit(void *arg) {
109 ORTEVerbositySetOptions(verbosity);
110 ORTEDomainPropDefaultGet(&dp);
111 dp.appLocalManager=StringToIPAddress(manager);
112 d=ORTEDomainAppCreate(ORTE_DEFAULT_DOMAIN,&dp,NULL,ORTE_TRUE);
117 domainDestroy(void *arg) {
119 ORTEDomainAppDestroy(d);
127 pthread_create(&thread,NULL,&domainInit,NULL); //allocate resources in RT
128 pthread_join(thread,NULL);
130 ORTEDomainStart(d,ORTE_TRUE,ORTE_FALSE,ORTE_TRUE,ORTE_FALSE,ORTE_TRUE); //application start
131 if (pthread_create(&thread,NULL,&publisherCreate,NULL)!=0)
132 printf("pthread_create failed!\n");
134 printf("ORTEDomainAppCreate failed!\n");
140 cleanup_module(void) {
142 pthread_join(thread,NULL);
143 pthread_create(&thread,NULL,&domainDestroy,NULL);
144 pthread_join(thread,NULL);