// This C++ header file was generated by the TTCN-3 compiler
// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019

// Copyright (c) 2000-2019 Ericsson Telecom AB

// Do not edit this file unless you know what you are doing.

#ifndef SocketCAN__RAW__test_HH
#define SocketCAN__RAW__test_HH

#ifdef TITAN_RUNTIME_2
#error Generated code does not match with used runtime.\
 Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
#endif

/* Header file includes */

#include <TTCN3.hh>
#include "SocketCANtest.hh"
#include "CanError.hh"

#if TTCN3_VERSION != 60600
#error Version mismatch detected.\
 Please check the version of the TTCN-3 compiler and the base library.\
 Run make clean and rebuild the project if the version of the compiler changed recently.
#endif

#ifndef LINUX
#error This file should be compiled on LINUX
#endif

namespace SocketCAN__RAW__test {

/* Function prototypes */

extern verdicttype testcase_tc__can__raw__send__and__receive__can__frame(boolean has_timer, double timer_value);
extern verdicttype testcase_tc__can__raw__send__and__receive__canfd__frame(boolean has_timer, double timer_value);
extern verdicttype testcase_tc__can__raw__setsockopt__CAN__RAW__FILTER(boolean has_timer, double timer_value);
extern verdicttype testcase_tc__can__raw__setsockopt__CAN__RAW__ERR__FILTER(boolean has_timer, double timer_value);
extern verdicttype testcase_tc__can__raw__setsockopt__CAN__RAW__LOOPBACK(boolean has_timer, double timer_value);
extern verdicttype testcase_tc__can__raw__setsockopt__CAN__RAW__RECV__OWN__MSGS(boolean has_timer, double timer_value);
extern verdicttype testcase_tc__can__raw__setsockopt__CAN__RAW__FD__FRAMES(boolean has_timer, double timer_value);
extern verdicttype testcase_tc__can__raw__setsockopt__CAN__RAW__JOIN__FILTERS(boolean has_timer, double timer_value);

/* Global variable declarations */

extern TTCN_Module module_object;

} /* end of namespace */

#endif
