Go to the documentation of this file.00001 #include "ros/ros.h"
00002 #include <iostream>
00003 #include <list>
00004 #include <map>
00005 #include "ros/time.h"
00006 #include "ros/duration.h"
00007 #include "ros/console.h"
00008 #include "CsAdvertiseService.h"
00009 <?messageIncludes?>
00010
00011 using namespace std;
00012
00013 list<ros::ServiceClient> client;
00014
00015 extern "C" void rosInit(char* name, int argc, char** argv, uint32_t initOptions) {
00016 ros::init(argc, argv, name,initOptions);
00017
00018
00019
00020
00021 }
00022 extern "C" void rosShutdown() {
00023 ros::shutdown();
00024 }
00025 extern "C" bool getRosOk() {
00026 return ros::ok();
00027 }
00028 extern "C" bool checkMaster() {
00029 return ros::master::check();
00030 }
00031
00032 extern "C" ros::NodeHandle* getService(char* name) {
00033 return new ros::NodeHandle(name);
00034 }
00035
00036 extern "C" void destroyService(ros::NodeHandle* node) {
00037 if(node!=NULL && node->ok()) {
00038 node->shutdown();
00039 delete node;
00040 }
00041 }
00042
00043 extern "C" ros::ServiceClient* serviceClient(ros::NodeHandle* node, char* topic, uint64_t messageId ) {
00044 ros::ServiceClient tmp;
00045
00046 <?cppServiceClient?>
00047
00048 client.push_back(tmp);
00049 return &(client.back());
00050 }
00051
00052 <?cppGetSizeOfMessage?>
00053
00054 <?cppArray2RosMethods?>
00055
00056 <?cppServiceHandleMethods?>
00057
00058 extern "C" bool callservice(ros::ServiceClient* service, uint64_t messageId, int* request, char** response) {
00059 switch(messageId) {
00060 <?cppCallServiceBody?>
00061 default:
00062 std::cerr << "Unknown message id in sendmsg: "<<messageId<<std::endl;
00063 return false;
00064 }
00065 }
00066
00067 extern "C" void advertiseService(ros::NodeHandle* node, char* topic, uint64_t messageId, bool (*handle)(char**,char**), void (*handleFree)(char*) ) {
00068 switch(messageId) {
00069 <?advertiseService?>
00070 default: std::cerr<<"Unknown message id: "<< messageId << std::endl;
00071 }
00072
00073 }
00074
00075 extern "C" void freePointer(char* pointer) {
00076 free(pointer);
00077 }
00078
00079 extern "C" bool isServiceOk(ros::NodeHandle* node) {
00080 return (node!=NULL && node->ok());
00081 }