#ifndef GEONETWORKING_LAYER_H #define GEONETWORKING_LAYER_H #include #include #include "Layer.hh" #include "GeoNetworkingCodec.hh" namespace LibItsGeoNetworking__TestSystem { class GeoNetworkingPort; class GeoNetworkingReq; class GeoNetworkingInd; } namespace LibItsGeoNetworking__TypesAndValues { class GeoNetworkingPdu; } class GeoNetworkingLayer : public TLayer { Params _params; GeoNetworkingCodec _codec; LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu* _beacon; std::thread* _thread; std::mutex _sendData; bool _running; void fill_beacon(INTEGER& p_latitude, INTEGER& p_longitude, OCTETSTRING& p_ll_address); static void* run_beaconing(void* p_this); public: GeoNetworkingLayer() : TLayer(), _params(), _codec(), _beacon(NULL), _thread(NULL), _sendData(), _running(FALSE) {}; GeoNetworkingLayer(const std::string& p_type, const std::string& param); virtual ~GeoNetworkingLayer(); void sendMsg(const LibItsGeoNetworking__TestSystem::GeoNetworkingReq&, Params& param); virtual void sendData(OCTETSTRING& data, Params& params); virtual void receiveData(OCTETSTRING& data, Params& params); void start_beaconing(); void stop_beaconing(); }; #endif