Loading ccsrc/EncDec/LibItsGeoNetworking_Encdec.cc +11 −0 Original line number Diff line number Diff line #include "LibItsGeoNetworking_EncdecDeclarations.hh" #include "GeoNetworkingCodec.hh" #include "UpperTesterCodec.hh" #include "loggers.hh" namespace LibItsGeoNetworking__EncdecDeclarations { Loading Loading @@ -226,4 +227,14 @@ namespace LibItsGeoNetworking__EncdecDeclarations { return -1; } BITSTRING fx__enc__UtGnInitialize (const LibItsGeoNetworking__TypesAndValues::UtGnInitialize& p_utGnInitialize) { loggers::get_instance().log_msg(">>> fx__enc__UtGnInitialize: ", p_utGnInitialize); UpperTesterCodec codec; OCTETSTRING os; codec.encode(p_utGnInitialize, os); return oct2bit(os); } } //end namespace ccsrc/Ports/LibIts_ports/GN_ports/UpperTesterPort_GN.partC +5 −1 Original line number Diff line number Diff line Loading @@ -82,7 +82,7 @@ void UpperTesterPort::user_stop() } void UpperTesterPort::outgoing_send(const LibItsCommon__TypesAndValues::UtInitialize& send_par) void UpperTesterPort::outgoing_send(const LibItsGeoNetworking__TypesAndValues::UtGnInitialize& send_par) { loggers::get_instance().log_msg(">>> UppertesterPort::outgoing_send: payload=", send_par); Loading Loading @@ -115,6 +115,10 @@ void UpperTesterPort::receiveMsg (const Base_Type& p_ind, const Params& p_params return; } //loggers::get_instance().log("UpperTesterPort::receive_msg: %s", p_ind.get_descriptor()->name); if (std::string(p_ind.get_descriptor()->name).compare("@LibItsGeoNetworking_TypesAndValues.UtGnResults") == 0) { // TODO To be refined incoming_message((LibItsGeoNetworking__TypesAndValues::UtGnResults&)p_ind); } } } /* end of namespace */ ccsrc/Ports/LibIts_ports/GN_ports/UpperTesterPort_GN.partH +3 −1 Original line number Diff line number Diff line Loading @@ -3,6 +3,8 @@ //============================================================================= #include "LibItsGeoNetworking_TestSystem.hh" #include "LibItsGeoNetworking_TypesAndValues.hh" namespace LibItsGeoNetworking__TestSystem { class UpperTesterPort : public UpperTesterPort_BASE { Loading Loading @@ -34,7 +36,7 @@ protected: void user_start(); void user_stop(); void outgoing_send(const LibItsCommon__TypesAndValues::UtInitialize& send_par); void outgoing_send(const LibItsGeoNetworking__TypesAndValues::UtGnInitialize& send_par); void outgoing_send(const LibItsCommon__TypesAndValues::UtChangePosition& send_par); Loading ccsrc/Protocols/GeoNetworking/GeoNetworkingLayer.cc +13 −12 Original line number Diff line number Diff line Loading @@ -171,23 +171,23 @@ void GeoNetworkingLayer::start_beaconing() { loggers::get_instance().log(">>> GeoNetworkingLayer::start_beaconing"); // Establish handler for timer signal loggers::get_instance().log("GeoNetworkingLayer::start_beaconing: Establishing handler for signal %d\n", SIGALRM); loggers::get_instance().log("GeoNetworkingLayer::start_beaconing: Establishing handler for signal %d\n", _signal_id); _sa.sa_flags = SA_SIGINFO; _sa.sa_sigaction = timer_irq_sigalrm_handler; sigemptyset(&_sa.sa_mask); if (sigaction(SIGALRM, &_sa, NULL) == -1) { if (sigaction(_signal_id, &_sa, NULL) == -1) { loggers::get_instance().error("GeoNetworkingLayer::start_beaconing: Sigaction failure: %d", errno); } // Block timer signal temporarily loggers::get_instance().log("GeoNetworkingLayer::start_beaconing: Blocking signal %d\n", SIGALRM); loggers::get_instance().log("GeoNetworkingLayer::start_beaconing: Blocking signal %d\n", _signal_id); sigemptyset(&_mask); sigaddset(&_mask, SIGALRM); sigaddset(&_mask, _signal_id); if (sigprocmask(SIG_SETMASK, &_mask, NULL) == -1) { loggers::get_instance().error("GeoNetworkingLayer::start_beaconing: Sigprocmask failure: %d", errno); } // Create the timer _sev.sigev_notify = SIGEV_SIGNAL; _sev.sigev_signo = SIGALRM; // Use signal alarm _sev.sigev_signo = _signal_id; // Use signal alarm _sev.sigev_value.sival_ptr = this; // The GeoNetworkingLayer object address if (timer_create(CLOCK_REALTIME, &_sev, &_timerid) == -1) { loggers::get_instance().error("GeoNetworkingLayer::start_beaconing: Timer failure: %d", errno); Loading @@ -208,7 +208,7 @@ void GeoNetworkingLayer::start_beaconing() { loggers::get_instance().error("GeoNetworkingLayer::start_beaconing: Sigprocmask failure: %d", errno); } // Unlock the timer signal, so that timer notification can be delivered loggers::get_instance().log("GeoNetworkingLayer::start_beaconing: Unblocking signal %d\n", SIGALRM); loggers::get_instance().log("GeoNetworkingLayer::start_beaconing: Unblocking signal %d\n", _signal_id); if (sigprocmask(SIG_UNBLOCK, &_mask, NULL) == -1) { loggers::get_instance().error("GeoNetworkingLayer::start_beaconing: Sigprocmask failure: %d", errno); } Loading @@ -218,9 +218,9 @@ void GeoNetworkingLayer::stop_beaconing() { loggers::get_instance().log(">>> GeoNetworkingLayer::stop_beaconing"); // Block timer signal temporarily loggers::get_instance().log("GeoNetworkingLayer::stop_beaconing: Blocking signal %d\n", SIGALRM); loggers::get_instance().log("GeoNetworkingLayer::stop_beaconing: Blocking signal %d\n", _signal_id); sigemptyset(&_mask); sigaddset(&_mask, SIGALRM); sigaddset(&_mask, _signal_id); if (sigprocmask(SIG_SETMASK, &_mask, NULL) == -1) { loggers::get_instance().error("GeoNetworkingLayer::stop_beaconing: Sigprocmask failure: %d", errno); } Loading @@ -237,7 +237,8 @@ void GeoNetworkingLayer::send_beacon() { } // Update timestamp unsigned long long ms = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count() - 1072911600000L; // TODO Add method such as its_tme() & its_time_mod() eh->beaconHeader().srcPosVector().timestamp__() = ms; eh->beaconHeader().srcPosVector().timestamp__().set_long_long_val(static_cast<unsigned int>(ms)); //loggers::get_instance().log_msg("GeoNetworkingLayer::send_beacon: ", *_beacon); // Encode message using TITAN because of payload in omited TTCN_Buffer encoding_buffer; _beacon->encode(*(_beacon->get_descriptor()), encoding_buffer, TTCN_EncDec::CT_RAW); Loading @@ -246,7 +247,7 @@ void GeoNetworkingLayer::send_beacon() { Params params(_params); sendData(data, params); loggers::get_instance().log("<<< GeoNetworkingLayer::send_beacon"); //loggers::get_instance().log("<<< GeoNetworkingLayer::send_beacon"); } // End of send_beacon method void GeoNetworkingLayer::fill_beacon(INTEGER& p_latitude, INTEGER& p_longitude, OCTETSTRING& p_ll_address) Loading Loading @@ -313,7 +314,7 @@ void GeoNetworkingLayer::fill_beacon(INTEGER& p_latitude, INTEGER& p_longitude, void GeoNetworkingLayer::timer_irq_sigalrm_handler(int p_signal, siginfo_t *p_signal_info, void *p_uc) { loggers::get_instance().log("GeoNetworkingLayer::timer_irq_sigalrm_handler: Caught signal %d\n", p_signal); //loggers::get_instance().log(">>> GeoNetworkingLayer::timer_irq_sigalrm_handler: Caught signal %d", p_signal); static_cast<GeoNetworkingLayer *>(p_signal_info->si_value.sival_ptr)->send_beacon(); } // End of method timer_irq_sigalrm_handler Loading ccsrc/Protocols/GeoNetworking/GeoNetworkingLayer.hh +1 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ public: void start_beaconing(); void stop_beaconing(); void send_beacon(); const int _signal_id = SIGTERM; }; #endif Loading
ccsrc/EncDec/LibItsGeoNetworking_Encdec.cc +11 −0 Original line number Diff line number Diff line #include "LibItsGeoNetworking_EncdecDeclarations.hh" #include "GeoNetworkingCodec.hh" #include "UpperTesterCodec.hh" #include "loggers.hh" namespace LibItsGeoNetworking__EncdecDeclarations { Loading Loading @@ -226,4 +227,14 @@ namespace LibItsGeoNetworking__EncdecDeclarations { return -1; } BITSTRING fx__enc__UtGnInitialize (const LibItsGeoNetworking__TypesAndValues::UtGnInitialize& p_utGnInitialize) { loggers::get_instance().log_msg(">>> fx__enc__UtGnInitialize: ", p_utGnInitialize); UpperTesterCodec codec; OCTETSTRING os; codec.encode(p_utGnInitialize, os); return oct2bit(os); } } //end namespace
ccsrc/Ports/LibIts_ports/GN_ports/UpperTesterPort_GN.partC +5 −1 Original line number Diff line number Diff line Loading @@ -82,7 +82,7 @@ void UpperTesterPort::user_stop() } void UpperTesterPort::outgoing_send(const LibItsCommon__TypesAndValues::UtInitialize& send_par) void UpperTesterPort::outgoing_send(const LibItsGeoNetworking__TypesAndValues::UtGnInitialize& send_par) { loggers::get_instance().log_msg(">>> UppertesterPort::outgoing_send: payload=", send_par); Loading Loading @@ -115,6 +115,10 @@ void UpperTesterPort::receiveMsg (const Base_Type& p_ind, const Params& p_params return; } //loggers::get_instance().log("UpperTesterPort::receive_msg: %s", p_ind.get_descriptor()->name); if (std::string(p_ind.get_descriptor()->name).compare("@LibItsGeoNetworking_TypesAndValues.UtGnResults") == 0) { // TODO To be refined incoming_message((LibItsGeoNetworking__TypesAndValues::UtGnResults&)p_ind); } } } /* end of namespace */
ccsrc/Ports/LibIts_ports/GN_ports/UpperTesterPort_GN.partH +3 −1 Original line number Diff line number Diff line Loading @@ -3,6 +3,8 @@ //============================================================================= #include "LibItsGeoNetworking_TestSystem.hh" #include "LibItsGeoNetworking_TypesAndValues.hh" namespace LibItsGeoNetworking__TestSystem { class UpperTesterPort : public UpperTesterPort_BASE { Loading Loading @@ -34,7 +36,7 @@ protected: void user_start(); void user_stop(); void outgoing_send(const LibItsCommon__TypesAndValues::UtInitialize& send_par); void outgoing_send(const LibItsGeoNetworking__TypesAndValues::UtGnInitialize& send_par); void outgoing_send(const LibItsCommon__TypesAndValues::UtChangePosition& send_par); Loading
ccsrc/Protocols/GeoNetworking/GeoNetworkingLayer.cc +13 −12 Original line number Diff line number Diff line Loading @@ -171,23 +171,23 @@ void GeoNetworkingLayer::start_beaconing() { loggers::get_instance().log(">>> GeoNetworkingLayer::start_beaconing"); // Establish handler for timer signal loggers::get_instance().log("GeoNetworkingLayer::start_beaconing: Establishing handler for signal %d\n", SIGALRM); loggers::get_instance().log("GeoNetworkingLayer::start_beaconing: Establishing handler for signal %d\n", _signal_id); _sa.sa_flags = SA_SIGINFO; _sa.sa_sigaction = timer_irq_sigalrm_handler; sigemptyset(&_sa.sa_mask); if (sigaction(SIGALRM, &_sa, NULL) == -1) { if (sigaction(_signal_id, &_sa, NULL) == -1) { loggers::get_instance().error("GeoNetworkingLayer::start_beaconing: Sigaction failure: %d", errno); } // Block timer signal temporarily loggers::get_instance().log("GeoNetworkingLayer::start_beaconing: Blocking signal %d\n", SIGALRM); loggers::get_instance().log("GeoNetworkingLayer::start_beaconing: Blocking signal %d\n", _signal_id); sigemptyset(&_mask); sigaddset(&_mask, SIGALRM); sigaddset(&_mask, _signal_id); if (sigprocmask(SIG_SETMASK, &_mask, NULL) == -1) { loggers::get_instance().error("GeoNetworkingLayer::start_beaconing: Sigprocmask failure: %d", errno); } // Create the timer _sev.sigev_notify = SIGEV_SIGNAL; _sev.sigev_signo = SIGALRM; // Use signal alarm _sev.sigev_signo = _signal_id; // Use signal alarm _sev.sigev_value.sival_ptr = this; // The GeoNetworkingLayer object address if (timer_create(CLOCK_REALTIME, &_sev, &_timerid) == -1) { loggers::get_instance().error("GeoNetworkingLayer::start_beaconing: Timer failure: %d", errno); Loading @@ -208,7 +208,7 @@ void GeoNetworkingLayer::start_beaconing() { loggers::get_instance().error("GeoNetworkingLayer::start_beaconing: Sigprocmask failure: %d", errno); } // Unlock the timer signal, so that timer notification can be delivered loggers::get_instance().log("GeoNetworkingLayer::start_beaconing: Unblocking signal %d\n", SIGALRM); loggers::get_instance().log("GeoNetworkingLayer::start_beaconing: Unblocking signal %d\n", _signal_id); if (sigprocmask(SIG_UNBLOCK, &_mask, NULL) == -1) { loggers::get_instance().error("GeoNetworkingLayer::start_beaconing: Sigprocmask failure: %d", errno); } Loading @@ -218,9 +218,9 @@ void GeoNetworkingLayer::stop_beaconing() { loggers::get_instance().log(">>> GeoNetworkingLayer::stop_beaconing"); // Block timer signal temporarily loggers::get_instance().log("GeoNetworkingLayer::stop_beaconing: Blocking signal %d\n", SIGALRM); loggers::get_instance().log("GeoNetworkingLayer::stop_beaconing: Blocking signal %d\n", _signal_id); sigemptyset(&_mask); sigaddset(&_mask, SIGALRM); sigaddset(&_mask, _signal_id); if (sigprocmask(SIG_SETMASK, &_mask, NULL) == -1) { loggers::get_instance().error("GeoNetworkingLayer::stop_beaconing: Sigprocmask failure: %d", errno); } Loading @@ -237,7 +237,8 @@ void GeoNetworkingLayer::send_beacon() { } // Update timestamp unsigned long long ms = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count() - 1072911600000L; // TODO Add method such as its_tme() & its_time_mod() eh->beaconHeader().srcPosVector().timestamp__() = ms; eh->beaconHeader().srcPosVector().timestamp__().set_long_long_val(static_cast<unsigned int>(ms)); //loggers::get_instance().log_msg("GeoNetworkingLayer::send_beacon: ", *_beacon); // Encode message using TITAN because of payload in omited TTCN_Buffer encoding_buffer; _beacon->encode(*(_beacon->get_descriptor()), encoding_buffer, TTCN_EncDec::CT_RAW); Loading @@ -246,7 +247,7 @@ void GeoNetworkingLayer::send_beacon() { Params params(_params); sendData(data, params); loggers::get_instance().log("<<< GeoNetworkingLayer::send_beacon"); //loggers::get_instance().log("<<< GeoNetworkingLayer::send_beacon"); } // End of send_beacon method void GeoNetworkingLayer::fill_beacon(INTEGER& p_latitude, INTEGER& p_longitude, OCTETSTRING& p_ll_address) Loading Loading @@ -313,7 +314,7 @@ void GeoNetworkingLayer::fill_beacon(INTEGER& p_latitude, INTEGER& p_longitude, void GeoNetworkingLayer::timer_irq_sigalrm_handler(int p_signal, siginfo_t *p_signal_info, void *p_uc) { loggers::get_instance().log("GeoNetworkingLayer::timer_irq_sigalrm_handler: Caught signal %d\n", p_signal); //loggers::get_instance().log(">>> GeoNetworkingLayer::timer_irq_sigalrm_handler: Caught signal %d", p_signal); static_cast<GeoNetworkingLayer *>(p_signal_info->si_value.sival_ptr)->send_beacon(); } // End of method timer_irq_sigalrm_handler Loading
ccsrc/Protocols/GeoNetworking/GeoNetworkingLayer.hh +1 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ public: void start_beaconing(); void stop_beaconing(); void send_beacon(); const int _signal_id = SIGTERM; }; #endif