Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: rosserial_mbed_lib mbed Servo
ros/service_server.h@0:06fc856e99ca, 2011-08-19 (annotated)
- Committer:
- nucho
- Date:
- Fri Aug 19 09:06:16 2011 +0000
- Revision:
- 0:06fc856e99ca
- Child:
- 1:098e75fd5ad2
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| nucho | 0:06fc856e99ca | 1 | /* |
| nucho | 0:06fc856e99ca | 2 | * service_server.h |
| nucho | 0:06fc856e99ca | 3 | * |
| nucho | 0:06fc856e99ca | 4 | * Created on: Aug 5, 2011 |
| nucho | 0:06fc856e99ca | 5 | * Author: astambler |
| nucho | 0:06fc856e99ca | 6 | */ |
| nucho | 0:06fc856e99ca | 7 | |
| nucho | 0:06fc856e99ca | 8 | |
| nucho | 0:06fc856e99ca | 9 | #ifndef SERVICE_SERVER_H_ |
| nucho | 0:06fc856e99ca | 10 | #define SERVICE_SERVER_H_ |
| nucho | 0:06fc856e99ca | 11 | |
| nucho | 0:06fc856e99ca | 12 | |
| nucho | 0:06fc856e99ca | 13 | #include "node_output.h" |
| nucho | 0:06fc856e99ca | 14 | |
| nucho | 0:06fc856e99ca | 15 | namespace ros{ |
| nucho | 0:06fc856e99ca | 16 | template<typename SrvRequest , typename SrvResponse> |
| nucho | 0:06fc856e99ca | 17 | class ServiceServer : MsgReceiver{ |
| nucho | 0:06fc856e99ca | 18 | public: |
| nucho | 0:06fc856e99ca | 19 | typedef void(*CallbackT)(const SrvRequest&, SrvResponse&); |
| nucho | 0:06fc856e99ca | 20 | |
| nucho | 0:06fc856e99ca | 21 | private: |
| nucho | 0:06fc856e99ca | 22 | CallbackT cb_; |
| nucho | 0:06fc856e99ca | 23 | |
| nucho | 0:06fc856e99ca | 24 | public: |
| nucho | 0:06fc856e99ca | 25 | ServiceServer(const char* topic_name, CallbackT cb){ |
| nucho | 0:06fc856e99ca | 26 | this->topic_ = topic_name; |
| nucho | 0:06fc856e99ca | 27 | this->cb_ = cb; |
| nucho | 0:06fc856e99ca | 28 | } |
| nucho | 0:06fc856e99ca | 29 | |
| nucho | 0:06fc856e99ca | 30 | ServiceServer(ServiceServer& srv){ |
| nucho | 0:06fc856e99ca | 31 | this->topic_ = srv.topic_; |
| nucho | 0:06fc856e99ca | 32 | this->cb_ = srv.cb_; |
| nucho | 0:06fc856e99ca | 33 | } |
| nucho | 0:06fc856e99ca | 34 | virtual void receive(unsigned char * data){ |
| nucho | 0:06fc856e99ca | 35 | req.deserialize(data); |
| nucho | 0:06fc856e99ca | 36 | this->cb_(req, resp); |
| nucho | 0:06fc856e99ca | 37 | no_->publish(id_, &resp); |
| nucho | 0:06fc856e99ca | 38 | } |
| nucho | 0:06fc856e99ca | 39 | |
| nucho | 0:06fc856e99ca | 40 | virtual int _getType(){ |
| nucho | 0:06fc856e99ca | 41 | return 3; |
| nucho | 0:06fc856e99ca | 42 | } |
| nucho | 0:06fc856e99ca | 43 | virtual const char * getMsgType(){ |
| nucho | 0:06fc856e99ca | 44 | return req.getType(); |
| nucho | 0:06fc856e99ca | 45 | } |
| nucho | 0:06fc856e99ca | 46 | |
| nucho | 0:06fc856e99ca | 47 | SrvRequest req; |
| nucho | 0:06fc856e99ca | 48 | SrvResponse resp; |
| nucho | 0:06fc856e99ca | 49 | NodeOutput_ * no_; |
| nucho | 0:06fc856e99ca | 50 | |
| nucho | 0:06fc856e99ca | 51 | }; |
| nucho | 0:06fc856e99ca | 52 | } |
| nucho | 0:06fc856e99ca | 53 | |
| nucho | 0:06fc856e99ca | 54 | #endif /* SERVICE_SERVER_H_ */ |