]> rtime.felk.cvut.cz Git - eurobot/public.git/blobdiff - src/types/roboortegen.pl
Get rid of warnings in roboorte generated code
[eurobot/public.git] / src / types / roboortegen.pl
index b10eec2da208b26b7dbac20403d27f2510f03c2c..3f4e03f03f84d2eec7adbba26faf6abf5f165ffe 100755 (executable)
@@ -205,17 +205,9 @@ print OUTFILE << "(END)";
 #include <orte.h>
 #include <robottype.h>
 #include <$ortegenfilename.h>
-#include <roboorte.h>
-
-#undef ROBOORTE_ROBOT_NAME
-#define ROBOORTE_ROBOT_NAME    $roboorte_name
-
-#ifndef ROBOORTE_ROBOT_NAME
-#error No ROBOORTE_ROBOT_NAME defined!
-#endif
 
 /* ORTE data */
-ROBOORTE_DATA {
+struct ${roboorte_name}_orte_data {
 \tORTEDomain *$orte_domain;
 \tint strength;
 
@@ -244,15 +236,15 @@ print OUTFILE << "(END)";
 
 #ifdef __cplusplus
 extern "C" {
-#endif 
-ROBOORTE_INIT();
-ROBOORTE_DESTROY();
+#endif
+int ${roboorte_name}_roboorte_init(struct ${roboorte_name}_orte_data *data) __attribute ((warn_unused_result));
+int ${roboorte_name}_roboorte_destroy(struct ${roboorte_name}_orte_data *data);
 
 (END)
 
        foreach $var (@ortegen) {
 print OUTFILE << "(END)";
-ROBOORTE_PUBLISHER_CREATE($var->{"topic"});
+void ${roboorte_name}_publisher_$var->{"topic"}_create(struct ${roboorte_name}_orte_data *data, ORTESendCallBack callback, void *arg);
 (END)
        }
 
@@ -262,7 +254,7 @@ print OUTFILE << "(END)";
 
        foreach $var (@ortegen) {
 print OUTFILE << "(END)";
-ROBOORTE_PUBLISHER_DESTROY($var->{"topic"});
+void ${roboorte_name}_publisher_$var->{"topic"}_destroy(struct ${roboorte_name}_orte_data *data);
 (END)
        }
 
@@ -272,7 +264,7 @@ print OUTFILE << "(END)";
 
        foreach $var (@ortegen) {
 print OUTFILE << "(END)";
-ROBOORTE_SUBSCRIBER_CREATE($var->{"topic"});
+ORTESubscription *${roboorte_name}_subscriber_$var->{"topic"}_create(struct ${roboorte_name}_orte_data *data, ORTERecvCallBack callback, void *arg);
 (END)
        }
 
@@ -308,6 +300,7 @@ print OUTFILE << "(END)";
  */
 
 #include "$library_name_prefix$roboorte_name.h"
+#include <stdlib.h>
 
 /* ---------------------------------------------------------------------- 
  * CREATE PUBLISHERS
@@ -321,7 +314,7 @@ print OUTFILE << "(END)";
            ($dmsec, $dsec) = POSIX::modf($var->{"pubdelay"});
            $dmsec = POSIX::floor($dmsec*1000);
 print OUTFILE << "(END)";
-ROBOORTE_PUBLISHER_CREATE($var->{"topic"})
+void ${roboorte_name}_publisher_$var->{"topic"}_create(struct ${roboorte_name}_orte_data *data, ORTESendCallBack callback, void *arg)
 {
 \tNtpTime persistence, delay;
 
@@ -347,7 +340,7 @@ print OUTFILE << "(END)";
 
        foreach $var (@ortegen) {
 print OUTFILE << "(END)";
-ROBOORTE_PUBLISHER_DESTROY($var->{"topic"})
+void ${roboorte_name}_publisher_$var->{"topic"}_destroy(struct ${roboorte_name}_orte_data *data)
 {
 \tORTEPublicationDestroy($data_arg_name->$publication_prefix$var->{"topic"});
 }
@@ -369,16 +362,15 @@ print OUTFILE << "(END)";
            ($dmsec, $dsec) = POSIX::modf($var->{"deadline"});
            $dmsec = POSIX::floor($dmsec*1000);
 print OUTFILE << "(END)";
-ROBOORTE_SUBSCRIBER_CREATE($var->{"topic"})
+ORTESubscription * ${roboorte_name}_subscriber_$var->{"topic"}_create(struct ${roboorte_name}_orte_data *data, ORTERecvCallBack callback, void *arg)
 {
-\tORTESubscription *s;
 \tNtpTime deadline, minimumSeparation;
 \t
 \t$var->{"type"}_type_register($data_arg_name->$orte_domain);
 \t
 \tNtpTimeAssembFromMs(deadline, $dsec, $dmsec);
 \tNtpTimeAssembFromMs(minimumSeparation, $msec, $mmsec);
-\ts = ORTESubscriptionCreate(
+\treturn ORTESubscriptionCreate(
 \t\t\t$data_arg_name->$orte_domain, $subscription_mode, $subscription_type, 
 \t\t\t"$var->{"topic"}", "$var->{"type"}", 
 \t\t\t&$data_arg_name->$var->{"topic"}, &deadline, &minimumSeparation,
@@ -395,18 +387,29 @@ print OUTFILE << "(END)";
  * ORTE INITILIZATION AND DESTROY
  * ---------------------------------------------------------------------- */
 
-ROBOORTE_INIT()
+int ${roboorte_name}_roboorte_init(struct ${roboorte_name}_orte_data *data)
 {
 \tint rv = 0;
-\t
+\tconst char *s;
+\tORTEDomainProp prop;
 \tORTEInit();
 
-\tif ($data_arg_name->strength < 0)
+\tif ($data_arg_name->strength <= 0)
 \t\t$data_arg_name->strength = $publication_strength;
 
+       if ((s = getenv("ORTE_STRENGTH"))) {
+               char *end;
+               long l = strtol(s, &end, 10);
+               if (s != end)
+                       data->strength = l;
+       }
+
 \tORTEVerbositySetOptions("ALL.0");
+\tORTEDomainPropDefaultGet(&prop);
+\tNTPTIME_BUILD(prop.baseProp.refreshPeriod, $refresh_period);
+\tNTPTIME_BUILD(prop.baseProp.expirationTime, $expiration_time);
 \t$data_arg_name->$orte_domain = ORTEDomainAppCreate(ORTE_DEFAULT_DOMAIN,
-\t                                     NULL, NULL, ORTE_FALSE);
+\t                                     &prop, NULL, ORTE_FALSE);
 \tif (!$data_arg_name->$orte_domain) {
 \t\tprintf("ORTEDomainAppCreate failed!\\n");
 \t\trv = -1;
@@ -415,7 +418,7 @@ ROBOORTE_INIT()
 \treturn rv;
 }
 
-ROBOORTE_DESTROY()
+int ${roboorte_name}_roboorte_destroy(struct ${roboorte_name}_orte_data *data)
 {
 \treturn ORTEDomainAppDestroy($data_arg_name->$orte_domain);
 }