Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Eclipse Projects
Eclipse Titan
titan.TestPorts.SocketCANasp
Commits
f9321b07
Commit
f9321b07
authored
Oct 15, 2016
by
Elemer Lelik
Browse files
update 15.10.2016
parent
7f806518
Changes
5
Hide whitespace changes
Inline
Side-by-side
demo/Makefile
View file @
f9321b07
# This Makefile was generated by the
TITAN Designer eclipse plug-in
# of the TTCN-3 Test
e
xecutor version CRL 113 200/
5
R
5
A
# for
(michael@michael-desktop) on Sun Sep 18 22:14:13 CEST
2016
# This Makefile was generated by the
Makefile Generator
# of the TTCN-3 Test
E
xecutor version CRL 113 200/
6
R
1
A
# for
Elemer Lelik (ethlel@esekilxxen1841) on Sat Oct 15 09:22:38
2016
# Copyright (c) 2000-2016 Ericsson Telecom AB
# The following make commands are available:
# - make, make all Builds the executable test suite.
# - make archive Archives all source files.
# - make check Checks the semantics of TTCN-3 and ASN.1 modules.
# - make clean Removes all generated files.
# - make check Checks the semantics of TTCN-3 and ASN.1modules.
# - make port Generates port skeletons.
# - make clean Removes all generated files.
# - make compile Translates TTCN-3 and ASN.1 modules to C++.
# - make dep Creates/updates dependency list.
# - make executable Builds the executable test suite.
# - make library Builds the library archive
: 'SocketCAN.a'
.
# - make library Builds the library archive.
# - make objects Builds the object files without linking the executable.
# WARNING! This Makefile can be used with GNU make only.
# Other versions of make may report syntax errors in it.
...
...
@@ -21,7 +21,7 @@
#
# Do NOT touch this line...
#
.PHONY
:
all executable library objects check port clean dep archive
.PHONY
:
all
shared_objects
executable library objects check port clean dep archive
.SUFFIXES
:
.d
...
...
@@ -31,23 +31,23 @@
# The path of your TTCN-3 Test Executor installation:
# Uncomment this line to override the environment variable.
# TTCN3_DIR =
# TTCN3_DIR =
# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32)
PLATFORM
=
LINUX
# Your C++ compiler:
# (if you change the platform, you may need to change the compiler)
CXX
=
g++
# Flags for dependency generation
CXXDEPFLAGS
:=
-MM
CXX
=
g++
# Flags for the C++ preprocessor (and makedepend as well):
CPPFLAGS
=
-D
$(PLATFORM)
-I
.
-I
$(TTCN3_DIR)
/include
-I
.
-I
../src
CPPFLAGS
=
-D
$(PLATFORM)
-I
$(TTCN3_DIR)
/include
-I
.
-I
../src
# Flags for dependency generation
CXXDEPFLAGS
=
-MM
# Flags for the C++ compiler:
CXXFLAGS
=
-Wall
-O2
CXXFLAGS
=
-Wall
# Flags for the linker:
LDFLAGS
=
...
...
@@ -62,7 +62,7 @@ AR = ar
ARFLAGS
=
# Flags for the TTCN-3 and ASN.1 compiler:
COMPILER_FLAGS
=
-
l
L
COMPILER_FLAGS
=
-L
# Execution mode: (either ttcn3 or ttcn3-parallel)
TTCN3_LIB
=
ttcn3-parallel
...
...
@@ -83,30 +83,29 @@ ARCHIVE_DIR = backup
#
# TTCN-3 modules of this project:
TTCN3_MODULES
=
../src/Bcm.ttcn ../src/Can.ttcn ../src/CanError.ttcn ../src/General_Types.ttcn ../src/Raw.ttcn
SocketCAN_BCM_test.ttcn ../src/SocketCAN_PortType.ttcn SocketCAN_RAW_test.ttcn ../src/SocketCAN_Types.ttcn SocketCANtest.ttcn
TTCN3_MODULES
=
../src/Bcm.ttcn ../src/Can.ttcn ../src/CanError.ttcn ../src/General_Types.ttcn ../src/Raw.ttcn SocketCAN_BCM_test.ttcn ../src/SocketCAN_PortType.ttcn SocketCAN_RAW_test.ttcn
SocketCAN_Templates.ttcn
../src/SocketCAN_Types.ttcn SocketCANtest.ttcn
# ASN.1 modules of this project:
ASN1_MODULES
=
# C++ source & header files generated from the TTCN-3 & ASN.1 modules of
# this project:
GENERATED_SOURCES
=
Bcm.cc Can.cc CanError.cc General_Types.cc Raw.cc SocketCAN_BCM_test.cc SocketCAN_PortType.cc SocketCAN_RAW_test.cc SocketCAN_Types.cc SocketCANtest.cc
GENERATED_SOURCES
=
Bcm.cc Can.cc CanError.cc General_Types.cc Raw.cc SocketCAN_BCM_test.cc SocketCAN_PortType.cc SocketCAN_RAW_test.cc
SocketCAN_Templates.cc
SocketCAN_Types.cc SocketCANtest.cc
$(ASN1_MODULES:.asn=.cc)
GENERATED_HEADERS
=
$(GENERATED_SOURCES:.cc=.hh)
# C/C++ Source & header files of Test Ports, external functions and
# other modules:
USER_SOURCES
=
../src/SocketCAN_PT.cc
USER_HEADERS
=
../src/SocketCAN_PT
.hh
USER_SOURCES
=
../src/SocketCAN_PT.cc
USER_HEADERS
=
$(USER_SOURCES:.cc=
.hh
)
# Object files of this project that are needed for the executable test suite:
OBJECTS
=
$(GENERATED_OBJECTS)
$(USER_OBJECTS)
GENERATED_OBJECTS
=
$(GENERATED_SOURCES:.cc=.o)
USER_OBJECTS
=
SocketCAN_PT
.o
USER_OBJECTS
=
$(USER_SOURCES:.cc=
.o
)
# Dependency files of this project that are needed for the executable test suite:
DEPFILES
=
$(USER_OBJECTS:.o=.d)
$(GENERATED_OBJECTS:.o=.d)
DEPFILES
=
$(USER_OBJECTS:.o=.d)
$(GENERATED_OBJECTS:.o=.d)
# Other files of the project (Makefile, configuration files, etc.)
# that will be added to the archived source files:
...
...
@@ -114,6 +113,8 @@ OTHER_FILES = ../src/Makefile Makefile ../demo/README.md SocketCAN.cfg SocketCAN
# The name of the executable test suite:
EXECUTABLE
=
SocketCAN
LIBRARY
=
SocketCAN.a
TARGET
=
$(EXECUTABLE)
...
...
@@ -122,11 +123,11 @@ TARGET = $(EXECUTABLE)
# Do not modify these unless you know what you are doing...
# Platform specific additional libraries:
#
SOLARIS_LIBS
=
-lsocket
-lnsl
-lxml2
-lresolv
SOLARIS8_LIBS
=
-lsocket
-lnsl
-lxml2
-lresolv
LINUX_LIBS
=
-lxml2
-lpthread
-lrt
FREEBSD_LIBS
=
-lxml2
WIN32_LIBS
=
-lxml2
SOLARIS_LIBS
=
-lsocket
-lnsl
-lxml2
-lresolv
SOLARIS8_LIBS
=
-lsocket
-lnsl
-lxml2
-lresolv
LINUX_LIBS
=
-lxml2
-lpthread
-lrt
FREEBSD_LIBS
=
-lxml2
WIN32_LIBS
=
-lxml2
#
# Rules for building the executable...
...
...
@@ -141,27 +142,21 @@ library: $(LIBRARY) ;
objects
:
$(OBJECTS) compile;
$(EXECUTABLE)
:
$(OBJECTS)
$(CXX)
$(LDFLAGS)
-o
$@
$^
\
-L
$(TTCN3_DIR)
/lib
-
L
$(
OPENSSL_DIR)
/lib
-L
$(XMLDIR)
/lib
\
-
l
$(
TTCN3_LIB)
-lcrypto
\
$
(
$(PLATFORM)
_LIBS
)
\
||
if
[
-f
$(TTCN3_DIR)
/bin/titanver
]
;
then
$(TTCN3_DIR)
/bin/titanver
$
^
;
else
:
;
fi
if
$(CXX)
$(LDFLAGS)
-o
$@
$^
\
-L
$(TTCN3_DIR)
/lib
-
l
$(
TTCN3_LIB)
\
-
L
$(
OPENSSL_DIR)
/lib
-lcrypto
\
-L
$(XMLDIR)
/lib
$
(
$(PLATFORM)
_LIBS
)
;
\
then
:
;
else
$(TTCN3_DIR)
/bin/titanver
$
(OBJECTS)
;
exit
1
;
fi
$(LIBRARY)
:
$(OBJECTS)
$(AR)
-r
$(ARFLAGS)
$(LIBRARY)
$(OBJECTS)
SocketCAN_PT
.o
:
../src/SocketCAN_PT.cc
%
.o
:
%.c $(GENERATED_HEADERS)
$(CXX)
-c
$(CPPFLAGS)
$(CXXFLAGS)
-o
$@
$<
.cc.o .c.o
:
%.o
:
%.cc $(GENERATED_HEADERS)
$(CXX)
-c
$(CPPFLAGS)
$(CXXFLAGS)
-o
$@
$<
SocketCAN_PT.d
:
../src/SocketCAN_PT.cc
@
echo
Creating dependency file
for
'$<'
;
set
-e
;
\
$(CXX)
$(CXXDEPFLAGS)
$(CPPFLAGS)
$(CXXFLAGS)
$<
\
|
sed
's/\($*\)\.o[ :]*/\1.o $@ : /g'
>
$@
;
\
[
-s
$@
]
||
rm
-f
$@
.cc.d .c.d
:
@
echo
Creating dependency file
for
'$<'
;
set
-e
;
\
$(CXX)
$(CXXDEPFLAGS)
$(CPPFLAGS)
$(CXXFLAGS)
$<
\
...
...
@@ -174,28 +169,25 @@ $(GENERATED_SOURCES) $(GENERATED_HEADERS): compile
check
:
$(TTCN3_MODULES) $(ASN1_MODULES)
$(TTCN3_DIR)
/bin/compiler
-s
$(COMPILER_FLAGS)
$^
port
:
$(TTCN3_MODULES)
port
:
$(TTCN3_MODULES)
$(TTCN3_DIR)
/bin/compiler
-t
$(COMPILER_FLAGS)
$^
compile
:
$(TTCN3_MODULES) $(ASN1_MODULES)
compile
:
$(TTCN3_MODULES)
$(ASN1_MODULES)
$(TTCN3_DIR)
/bin/compiler
$(COMPILER_FLAGS)
$^
-
$?
touch
$@
browserdata.dat
:
$(TTCN3_MODULES) $(ASN1_MODULES)
$(TTCN3_DIR)
/bin/compiler
-B
-s
$(COMPILER_FLAGS)
$^
clean
:
-
$(RM)
$(EXECUTABLE)
$(
OBJECTS)
$(LIBRARY
)
$(GENERATED_HEADERS)
$(DEPFILES)
\
$(GENERATED_SOURCES)
compile
\
browserdata.dat tags
*
.log
$(DEPFILES)
-
$(RM)
$(EXECUTABLE)
$(
LIBRARY)
$(OBJECTS
)
$(GENERATED_HEADERS)
\
$(GENERATED_SOURCES)
compile
$(DEPFILES)
\
tags
*
.log
dep
:
$(GENERATED_SOURCES) $(USER_SOURCES)
$(DEPFILES)
;
dep
:
$(GENERATED_SOURCES) $(USER_SOURCES) ;
ifeq
($(filter clean check port compile archive,$(MAKECMDGOALS)),)
ifeq
($(findstring n,$(MAKEFLAGS)),)
ifeq
($(filter clean check port compile archive diag,$(MAKECMDGOALS)),)
-include
$(DEPFILES)
endif
endif
archive
:
mkdir
-p
$(ARCHIVE_DIR)
...
...
demo/SocketCAN_Templates.ttcn
0 → 100644
View file @
f9321b07
/* Copyright (c) 2010, 2016 Ericsson AB
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Michael Josenhans
******************************************************************************/
//
// File: SocketCANtest.ttcn
// Description: SocketCAN port type test
//
module
SocketCAN_Templates
{
import
from
SocketCAN_Types
all
;
import
from
Bcm
all
import
from
Can
all
template
SocketCAN_Result
a_result
(
in
SocketCAN_Result_code
v_result_code
)
:=
{
result_code
:=
v_result_code
,
err
:=
*
,
err_text
:=
*
}
template
SocketCAN_socket_result
a_SocketCAN_socket_result
(
template
SocketCAN_Result
p_result
)
:=
{
id
:=
?
,
result
:=
p_result
}
template
SocketCAN_ioctl_result
a_SocketCAN_ioctl_result
(
template
SocketCAN_Result
p_result
)
:=
{
ifr
:=
?
,
result
:=
p_result
}
template
SocketCAN_connect_result
a_SocketCAN_connect_result
(
template
SocketCAN_Result
p_result
)
:=
{
result
:=
p_result
}
template
SocketCAN_bind_result
a_SocketCAN_bind_result
(
template
SocketCAN_Result
p_result
)
:=
{
result
:=
p_result
}
template
SocketCAN_send_data_result
a_SocketCAN_send_data_result
(
template
SocketCAN_Result
p_result
)
:=
{
result
:=
p_result
}
template
SocketCAN_write_data_result
a_SocketCAN_write_data_result
(
template
SocketCAN_Result
p_result
)
:=
{
result
:=
p_result
}
template
SocketCAN_receive_CAN_or_CAN_FD_frame
a_SocketCAN_receive_CAN_frame
(
template
SocketCAN_socketid
p_id
,
template
CAN_id
p_can_id
,
template
CAN_PDU
p_can_pdu
)
:=
{
// recieved CAN frame
id
:=
p_id
,
ifr
:=
?
,
frame
:=
{
can_frame
:=
{
can_id
:=
p_can_id
,
can_pdu
:=
p_can_pdu
}},
timestamp
:=
?
}
template
SocketCAN_receive_CAN_or_CAN_FD_frame
a_SocketCAN_receive_CAN_FD_frame
(
template
SocketCAN_socketid
p_id
,
template
CAN_id
p_can_id
,
template
CAN_PDU
p_can_pdu
)
:=
{
// recieved CAN or CAN FD frame
id
:=
p_id
,
ifr
:=
?
,
frame
:=
{
canfd_frame
:=
{
can_id
:=
p_can_id
,
can_pdu
:=
p_can_pdu
}},
timestamp
:=
?
}
template
SocketCAN_receive_CAN_or_CAN_FD_frame
a_SocketCAN_receive_CAN_or_CAN_FD_frame
(
template
SocketCAN_socketid
p_id
,
template
SocketCAN_CAN_or_CAN_FD_frame
p_frame
)
:=
{
// recieved CAN or CAN FD frame
id
:=
p_id
,
ifr
:=
?
,
frame
:=
p_frame
,
timestamp
:=
?
}
template
SocketCAN_receive_BCM_message
a_SocketCAN_receive_BCM_message
(
template
SocketCAN_socketid
p_id
,
template
SocketCAN_bcm_frame
p_frame
)
:=
{
// recieved CAN or CAN FD frame
id
:=
p_id
,
ifr
:=
?
,
frame
:=
p_frame
}
template
SocketCAN_setsockopt_result
a_SocketCAN_setsockopt_result
(
template
SocketCAN_Result
p_result
)
:=
{
result
:=
p_result
}
}
demo/SocketCANtest.ttcn
View file @
f9321b07
...
...
@@ -17,8 +17,8 @@ module SocketCANtest {
import
from
SocketCAN_Types
all
;
import
from
SocketCAN_PortType
all
;
import
from
SocketCAN_Templates
all
;
import
from
Bcm
all
import
from
Can
all
const
float
c_guard
:=
10.0
...
...
@@ -61,69 +61,6 @@ type record length (0 .. CAN_FRAME_MAX_NUMBER) of SocketCAN_CAN_or_CAN_FD_frame
const
e_Phase
c_firstPhase
:=
e_open_socket
const
e_Phase
c_testcase_complete
:=
e_testcase_complete
template
SocketCAN_Result
a_result
(
in
SocketCAN_Result_code
v_result_code
)
:=
{
result_code
:=
v_result_code
,
err
:=
*
,
err_text
:=
*
}
template
SocketCAN_socket_result
a_SocketCAN_socket_result
(
template
SocketCAN_Result
p_result
)
:=
{
id
:=
?
,
result
:=
p_result
}
template
SocketCAN_ioctl_result
a_SocketCAN_ioctl_result
(
template
SocketCAN_Result
p_result
)
:=
{
ifr
:=
?
,
result
:=
p_result
}
template
SocketCAN_connect_result
a_SocketCAN_connect_result
(
template
SocketCAN_Result
p_result
)
:=
{
result
:=
p_result
}
template
SocketCAN_bind_result
a_SocketCAN_bind_result
(
template
SocketCAN_Result
p_result
)
:=
{
result
:=
p_result
}
template
SocketCAN_send_data_result
a_SocketCAN_send_data_result
(
template
SocketCAN_Result
p_result
)
:=
{
result
:=
p_result
}
template
SocketCAN_write_data_result
a_SocketCAN_write_data_result
(
template
SocketCAN_Result
p_result
)
:=
{
result
:=
p_result
}
template
SocketCAN_receive_CAN_or_CAN_FD_frame
a_SocketCAN_receive_CAN_or_CAN_FD_frame
(
template
SocketCAN_socketid
p_id
,
template
SocketCAN_CAN_or_CAN_FD_frame
p_frame
)
:=
{
// recieved CAN or CAN FD frame
id
:=
p_id
,
ifr
:=
?
,
frame
:=
p_frame
,
timestamp
:=
?
}
template
SocketCAN_receive_BCM_message
a_SocketCAN_receive_BCM_message
(
template
SocketCAN_socketid
p_id
,
template
SocketCAN_bcm_frame
p_frame
)
:=
{
// recieved CAN or CAN FD frame
id
:=
p_id
,
ifr
:=
?
,
frame
:=
p_frame
}
template
SocketCAN_setsockopt_result
a_SocketCAN_setsockopt_result
(
template
SocketCAN_Result
p_result
)
:=
{
result
:=
p_result
}
type
record
PhaseStartReq
{
e_Phase
phase
,
integer
phase_int
...
...
@@ -391,7 +328,7 @@ runs on PTC {
[]
pt_socketCAN
.
receive
(
a_SocketCAN_receive_CAN_or_CAN_FD_frame
(
p_socket_id
,
p_frame_expected
))
->
value
v_result
{
log
(
"SocketCan:Expected frame received"
,
v_result
)}
[]
pt_socketCAN
.
receive
(
?
)
->
value
v_result
[]
pt_socketCAN
.
receive
(
SocketCAN_receive_CAN_or_CAN_FD_frame
:
?
)
->
value
v_result
{
log
(
"SocketCan:Unexpected frame received!"
,
v_result
)
setverdict
(
fail
)}
[]
t_guard
.
timeout
{
...
...
@@ -453,7 +390,7 @@ runs on PTC {
alt
{
[]
pt_socketCAN
.
receive
(
a_SocketCAN_receive_BCM_message
(
p_socket_id
,
p_BCM_message_expected
))
->
value
v_result
{
log
(
"SocketCan:Expected frame received"
,
v_result
)}
[]
pt_socketCAN
.
receive
(
?
)
->
value
v_result
[]
pt_socketCAN
.
receive
(
SocketCAN_receive_BCM_message
:
?
)
->
value
v_result
{
log
(
"SocketCan:Unexpected frame received!"
,
v_result
)
setverdict
(
fail
)}
[]
t_guard
.
timeout
{
...
...
src/Can.ttcn
View file @
f9321b07
...
...
@@ -27,6 +27,78 @@ const octetstring CAN_SFF_MASK := '000007FF'O // standard frame format (SFF)
const
octetstring
CAN_EFF_MASK
:=
'
1
FFFFFFF
'
O
// extended frame format (EFF)
const
octetstring
CAN_ERR_MASK
:=
'
1
FFFFFFF
'
O
// omit EFF, RTR, ERR flags
template
octetstring
t_CAN_EFF_FLAG
:=
(
'
80
???
'
O
,
'
81
???
'
O
,
'
82
???
'
O
,
'
83
???
'
O
,
'
84
???
'
O
,
'
85
???
'
O
,
'
86
???
'
O
,
'
87
???
'
O
,
'
88
???
'
O
,
'
89
???
'
O
,
'
8
A
???
'
O
,
'
8
B
???
'
O
,
'
8
C
???
'
O
,
'
8
D
???
'
O
,
'
8
E
???
'
O
,
'
8
F
???
'
O
,
'
90
???
'
O
,
'
91
???
'
O
,
'
92
???
'
O
,
'
93
???
'
O
,
'
94
???
'
O
,
'
95
???
'
O
,
'
96
???
'
O
,
'
97
???
'
O
,
'
98
???
'
O
,
'
99
???
'
O
,
'
9
A
???
'
O
,
'
9
B
???
'
O
,
'
9
C
???
'
O
,
'
9
D
???
'
O
,
'
9
E
???
'
O
,
'
9
F
???
'
O
,
'
A0
???
'
O
,
'
A1
???
'
O
,
'
A2
???
'
O
,
'
A3
???
'
O
,
'
A4
???
'
O
,
'
A5
???
'
O
,
'
A6
???
'
O
,
'
A7
???
'
O
,
'
A8
???
'
O
,
'
A9
???
'
O
,
'
AA
???
'
O
,
'
AB
???
'
O
,
'
AC
???
'
O
,
'
AD
???
'
O
,
'
AE
???
'
O
,
'
AF
???
'
O
,
'
B0
???
'
O
,
'
B1
???
'
O
,
'
B2
???
'
O
,
'
B3
???
'
O
,
'
B4
???
'
O
,
'
B5
???
'
O
,
'
B6
???
'
O
,
'
B7
???
'
O
,
'
B8
???
'
O
,
'
B9
???
'
O
,
'
BA
???
'
O
,
'
BB
???
'
O
,
'
BC
???
'
O
,
'
BD
???
'
O
,
'
BE
???
'
O
,
'
BF
???
'
O
,
'
C0
???
'
O
,
'
C1
???
'
O
,
'
C2
???
'
O
,
'
C3
???
'
O
,
'
C4
???
'
O
,
'
C5
???
'
O
,
'
C6
???
'
O
,
'
C7
???
'
O
,
'
C8
???
'
O
,
'
C9
???
'
O
,
'
CA
???
'
O
,
'
CB
???
'
O
,
'
CC
???
'
O
,
'
CD
???
'
O
,
'
CE
???
'
O
,
'
CF
???
'
O
,
'
D0
???
'
O
,
'
D1
???
'
O
,
'
D2
???
'
O
,
'
D3
???
'
O
,
'
D4
???
'
O
,
'
D5
???
'
O
,
'
D6
???
'
O
,
'
D7
???
'
O
,
'
D8
???
'
O
,
'
D9
???
'
O
,
'
DA
???
'
O
,
'
DB
???
'
O
,
'
DC
???
'
O
,
'
DD
???
'
O
,
'
DE
???
'
O
,
'
DF
???
'
O
,
'
E0
???
'
O
,
'
E1
???
'
O
,
'
E2
???
'
O
,
'
E3
???
'
O
,
'
E4
???
'
O
,
'
E5
???
'
O
,
'
E6
???
'
O
,
'
E7
???
'
O
,
'
E8
???
'
O
,
'
E9
???
'
O
,
'
EA
???
'
O
,
'
EB
???
'
O
,
'
EC
???
'
O
,
'
ED
???
'
O
,
'
EE
???
'
O
,
'
EF
???
'
O
,
'
F0
???
'
O
,
'
F1
???
'
O
,
'
F2
???
'
O
,
'
F3
???
'
O
,
'
F4
???
'
O
,
'
F5
???
'
O
,
'
F6
???
'
O
,
'
F7
???
'
O
,
'
F8
???
'
O
,
'
F9
???
'
O
,
'
FA
???
'
O
,
'
FB
???
'
O
,
'
FC
???
'
O
,
'
FD
???
'
O
,
'
FE
???
'
O
,
'
FF
???
'
O
);
template
octetstring
t_CAN_SFF_FLAG
:=
(
'
00
???
'
O
,
'
01
???
'
O
,
'
02
???
'
O
,
'
03
???
'
O
,
'
04
???
'
O
,
'
05
???
'
O
,
'
06
???
'
O
,
'
07
???
'
O
,
'
08
???
'
O
,
'
09
???
'
O
,
'
0
A
???
'
O
,
'
0
B
???
'
O
,
'
0
C
???
'
O
,
'
0
D
???
'
O
,
'
0
E
???
'
O
,
'
0
F
???
'
O
,
'
10
???
'
O
,
'
11
???
'
O
,
'
12
???
'
O
,
'
13
???
'
O
,
'
14
???
'
O
,
'
15
???
'
O
,
'
16
???
'
O
,
'
17
???
'
O
,
'
18
???
'
O
,
'
19
???
'
O
,
'
1
A
???
'
O
,
'
1
B
???
'
O
,
'
1
C
???
'
O
,
'
1
D
???
'
O
,
'
1
E
???
'
O
,
'
1
F
???
'
O
,
'
20
???
'
O
,
'
21
???
'
O
,
'
22
???
'
O
,
'
23
???
'
O
,
'
24
???
'
O
,
'
25
???
'
O
,
'
26
???
'
O
,
'
27
???
'
O
,
'
28
???
'
O
,
'
29
???
'
O
,
'
2
A
???
'
O
,
'
2
B
???
'
O
,
'
2
C
???
'
O
,
'
2
D
???
'
O
,
'
2
E
???
'
O
,
'
2
F
???
'
O
,
'
30
???
'
O
,
'
31
???
'
O
,
'
32
???
'
O
,
'
33
???
'
O
,
'
34
???
'
O
,
'
35
???
'
O
,
'
36
???
'
O
,
'
37
???
'
O
,
'
38
???
'
O
,
'
39
???
'
O
,
'
3
A
???
'
O
,
'
3
B
???
'
O
,
'
3
C
???
'
O
,
'
3
D
???
'
O
,
'
3
E
???
'
O
,
'
3
F
???
'
O
,
'
40
???
'
O
,
'
41
???
'
O
,
'
42
???
'
O
,
'
43
???
'
O
,
'
44
???
'
O
,
'
45
???
'
O
,
'
46
???
'
O
,
'
47
???
'
O
,
'
48
???
'
O
,
'
49
???
'
O
,
'
4
A
???
'
O
,
'
4
B
???
'
O
,
'
4
C
???
'
O
,
'
4
D
???
'
O
,
'
4
E
???
'
O
,
'
4
F
???
'
O
,
'
50
???
'
O
,
'
51
???
'
O
,
'
52
???
'
O
,
'
53
???
'
O
,
'
54
???
'
O
,
'
55
???
'
O
,
'
56
???
'
O
,
'
57
???
'
O
,
'
58
???
'
O
,
'
59
???
'
O
,
'
5
A
???
'
O
,
'
5
B
???
'
O
,
'
5
C
???
'
O
,
'
5
D
???
'
O
,
'
5
E
???
'
O
,
'
5
F
???
'
O
,
'
60
???
'
O
,
'
61
???
'
O
,
'
62
???
'
O
,
'
63
???
'
O
,
'
64
???
'
O
,
'
65
???
'
O
,
'
66
???
'
O
,
'
67
???
'
O
,
'
68
???
'
O
,
'
69
???
'
O
,
'
6
A
???
'
O
,
'
6
B
???
'
O
,
'
6
C
???
'
O
,
'
6
D
???
'
O
,
'
6
E
???
'
O
,
'
6
F
???
'
O
,
'
70
???
'
O
,
'
71
???
'
O
,
'
72
???
'
O
,
'
73
???
'
O
,
'
74
???
'
O
,
'
75
???
'
O
,
'
76
???
'
O
,
'
77
???
'
O
,
'
78
???
'
O
,
'
79
???
'
O
,
'
7
A
???
'
O
,
'
7
B
???
'
O
,
'
7
C
???
'
O
,
'
7
D
???
'
O
,
'
7
E
???
'
O
,
'
7
F
???
'
O
);
template
octetstring
t_CAN_RTR_FLAG
:=
(
'
40
???
'
O
,
'
41
???
'
O
,
'
42
???
'
O
,
'
43
???
'
O
,
'
44
???
'
O
,
'
45
???
'
O
,
'
46
???
'
O
,
'
47
???
'
O
,
'
48
???
'
O
,
'
49
???
'
O
,
'
4
A
???
'
O
,
'
4
B
???
'
O
,
'
4
C
???
'
O
,
'
4
D
???
'
O
,
'
4
E
???
'
O
,
'
4
F
???
'
O
,
'
50
???
'
O
,
'
51
???
'
O
,
'
52
???
'
O
,
'
53
???
'
O
,
'
54
???
'
O
,
'
55
???
'
O
,
'
56
???
'
O
,
'
57
???
'
O
,
'
58
???
'
O
,
'
59
???
'
O
,
'
5
A
???
'
O
,
'
5
B
???
'
O
,
'
5
C
???
'
O
,
'
5
D
???
'
O
,
'
5
E
???
'
O
,
'
5
F
???
'
O
,
'
60
???
'
O
,
'
61
???
'
O
,
'
62
???
'
O
,
'
63
???
'
O
,
'
64
???
'
O
,
'
65
???
'
O
,
'
66
???
'
O
,
'
67
???
'
O
,
'
68
???
'
O
,
'
69
???
'
O
,
'
6
A
???
'
O
,
'
6
B
???
'
O
,
'
6
C
???
'
O
,
'
6
D
???
'
O
,
'
6
E
???
'
O
,
'
6
F
???
'
O
,
'
70
???
'
O
,
'
71
???
'
O
,
'
72
???
'
O
,
'
73
???
'
O
,
'
74
???
'
O
,
'
75
???
'
O
,
'
76
???
'
O
,
'
77
???
'
O
,
'
78
???
'
O
,
'
79
???
'
O
,
'
7
A
???
'
O
,
'
7
B
???
'
O
,
'
7
C
???
'
O
,
'
7
D
???
'
O
,
'
7
E
???
'
O
,
'
7
F
???
'
O
,
'
C0
???
'
O
,
'
C1
???
'
O
,
'
C2
???
'
O
,
'
C3
???
'
O
,
'
C4
???
'
O
,
'
C5
???
'
O
,
'
C6
???
'
O
,
'
C7
???
'
O
,
'
C8
???
'
O
,
'
C9
???
'
O
,
'
CA
???
'
O
,
'
CB
???
'
O
,
'
CC
???
'
O
,
'
CD
???
'
O
,
'
CE
???
'
O
,
'
CF
???
'
O
,
'
D0
???
'
O
,
'
D1
???
'
O
,
'
D2
???
'
O
,
'
D3
???
'
O
,
'
D4
???
'
O
,
'
D5
???
'
O
,
'
D6
???
'
O
,
'
D7
???
'
O
,
'
D8
???
'
O
,
'
D9
???
'
O
,
'
DA
???
'
O
,
'
DB
???
'
O
,
'
DC
???
'
O
,
'
DD
???
'
O
,
'
DE
???
'
O
,
'
DF
???
'
O
,
'
E0
???
'
O
,
'
E1
???
'
O
,
'
E2
???
'
O
,
'
E3
???
'
O
,
'
E4
???
'
O
,
'
E5
???
'
O
,
'
E6
???
'
O
,
'
E7
???
'
O
,
'
E8
???
'
O
,
'
E9
???
'
O
,
'
EA
???
'
O
,
'
EB
???
'
O
,
'
EC
???
'
O
,
'
ED
???
'
O
,
'
EE
???
'
O
,
'
EF
???
'
O
,
'
F0
???
'
O
,
'
F1
???
'
O
,
'
F2
???
'
O
,
'
F3
???
'
O
,
'
F4
???
'
O
,
'
F5
???
'
O
,
'
F6
???
'
O
,
'
F7
???
'
O
,
'
F8
???
'
O
,
'
F9
???
'
O
,
'
FA
???
'
O
,
'
FB
???
'
O
,
'
FC
???
'
O
,
'
FD
???
'
O
,
'
FE
???
'
O
,
'
FF
???
'
O
);
template
octetstring
t_CAN_ERR_FLAG
:=
(
'
20
???
'
O
,
'
21
???
'
O
,
'
22
???
'
O
,
'
23
???
'
O
,
'
24
???
'
O
,
'
25
???
'
O
,
'
26
???
'
O
,
'
27
???
'
O
,
'
28
???
'
O
,
'
29
???
'
O
,
'
2
A
???
'
O
,
'
2
B
???
'
O
,
'
2
C
???
'
O
,
'
2
D
???
'
O
,
'
2
E
???
'
O
,
'
2
F
???
'
O
,
'
30
???
'
O
,
'
31
???
'
O
,
'
32
???
'
O
,
'
33
???
'
O
,
'
34
???
'
O
,
'
35
???
'
O
,
'
36
???
'
O
,
'
37
???
'
O
,
'
38
???
'
O
,
'
39
???
'
O
,
'
3
A
???
'
O
,
'
3
B
???
'
O
,
'
3
C
???
'
O
,
'
3
D
???
'
O
,
'
3
E
???
'
O
,
'
3
F
???
'
O
,
'
60
???
'
O
,
'
61
???
'
O
,
'
62
???
'
O
,
'
63
???
'
O
,
'
64
???
'
O
,
'
65
???
'
O
,
'
66
???
'
O
,
'
67
???
'
O
,
'
68
???
'
O
,
'
69
???
'
O
,
'
6
A
???
'
O
,
'
6
B
???
'
O
,
'
6
C
???
'
O
,
'
6
D
???
'
O
,
'
6
E
???
'
O
,
'
6
F
???
'
O
,
'
70
???
'
O
,
'
71
???
'
O
,
'
72
???
'
O
,
'
73
???
'
O
,
'
74
???
'
O
,
'
75
???
'
O
,
'
76
???
'
O
,
'
77
???
'
O
,
'
78
???
'
O
,
'
79
???
'
O
,
'
7
A
???
'
O
,
'
7
B
???
'
O
,
'
7
C
???
'
O
,
'
7
D
???
'
O
,
'
7
E
???
'
O
,
'
7
F
???
'
O
,
'
A0
???
'
O
,
'
A1
???
'
O
,
'
A2
???
'
O
,
'
A3
???
'
O
,
'
A4
???
'
O
,
'
A5
???
'
O
,
'
A6
???
'
O
,
'
A7
???
'
O
,
'
A8
???
'
O
,
'
A9
???
'
O
,
'
AA
???
'
O
,
'
AB
???
'
O
,
'
AC
???
'
O
,
'
AD
???
'
O
,
'
AE
???
'
O
,
'
AF
???
'
O
,
'
B0
???
'
O
,
'
B1
???
'
O
,
'
B2
???
'
O
,
'
B3
???
'
O
,
'
B4
???
'
O
,
'
B5
???
'
O
,
'
B6
???
'
O
,
'
B7
???
'
O
,
'
B8
???
'
O
,
'
B9
???
'
O
,
'
BA
???
'
O
,
'
BB
???
'
O
,
'
BC
???
'
O
,
'
BD
???
'
O
,
'
BE
???
'
O
,
'
BF
???
'
O
,
'
E0
???
'
O
,
'
E1
???
'
O
,
'
E2
???
'
O
,
'
E3
???
'
O
,
'
E4
???
'
O
,
'
E5
???
'
O
,
'
E6
???
'
O
,
'
E7
???
'
O
,
'
E8
???
'
O
,
'
E9
???
'
O
,
'
EA
???
'
O
,
'
EB
???
'
O
,
'
EC
???
'
O
,
'
ED
???
'
O
,
'
EE
???
'
O
,
'
EF
???
'
O
,
'
F0
???
'
O
,
'
F1
???
'
O
,
'
F2
???
'
O
,
'
F3
???
'
O
,
'
F4
???
'
O
,
'
F5
???
'
O
,
'
F6
???
'
O
,
'
F7
???
'
O
,
'
F8
???
'
O
,
'
F9
???
'
O
,
'
FA
???
'
O
,
'
FB
???
'
O
,
'
FC
???
'
O
,
'
FD
???
'
O
,
'
FE
???
'
O
,
'
FF
???
'
O
);
type
enumerated
AdresseFamily_enum
{
// Supported address families
...
...
src/SocketCAN_PT.cc
View file @
f9321b07
...
...
@@ -230,7 +230,8 @@ void SocketCAN__PT_PROVIDER::Handle_Fd_Event_Readable(int sock) {
parameters
.
ifr
().
if__name
()
=
ifr
.
ifr_name
;
parameters
.
id
()
=
a
;
const
INTEGER
can_id
=
frame
.
can_id
;
INTEGER
can_id
;
can_id
.
set_long_long_val
(
frame
.
can_id
);
#ifdef CANFD_FRAME_STRUCT_DEFINED
const
INTEGER
len
=
frame
.
len
;
#else //CANFD_FRAME_STRUCT_DEFINED
...
...
@@ -247,7 +248,7 @@ void SocketCAN__PT_PROVIDER::Handle_Fd_Event_Readable(int sock) {
parameters
.
ifr
().
if__index
()
=
ifr
.
ifr_ifindex
;
parameters
.
ifr
().
if__name
()
=
ifr
.
ifr_name
;
parameters
.
id
()
=
a
;
frameref
.
can__id
()
=
int2oct
(
frame
.
can_id
,
4
);
frameref
.
can__id
()
=
int2oct
(
can_id
,
4
);
frameref
.
can__pdu
()
=
OCTETSTRING
(
len
,
frame
.
data
);
}
else
{
// CAN FD frame received:
...
...
@@ -318,7 +319,9 @@ void SocketCAN__PT_PROVIDER::Handle_Fd_Event_Readable(int sock) {
parameters
.
ifr
().
if__name
()
=
ifr
.
ifr_name
;
uint32_t
nframes
=
bcm_msg
.
msg_head
.
nframes
;
parameters
.
frame
().
opcode
()
=
int2oct
(
bcm_msg
.
msg_head
.
opcode
,
4
);
INTEGER
opcode
;
opcode
.
set_long_long_val
(
bcm_msg
.
msg_head
.
opcode
);
parameters
.
frame
().
opcode
()
=
int2oct
(
opcode
,
4
);
parameters
.
frame
().
flags
()
=
BITSTRING
(
int2bit
(
INTEGER
(
msg_head_flags
),
BCM_FRAME_FLAGS_SIZE
));
...
...
@@ -331,7 +334,9 @@ void SocketCAN__PT_PROVIDER::Handle_Fd_Event_Readable(int sock) {
bcm_msg
.
msg_head
.
ival2
.
tv_sec
;
parameters
.
frame
().
ival2
().
tv__usec
()
=
bcm_msg
.
msg_head
.
ival2
.
tv_usec
;
parameters
.
frame
().
can__id
()
=
int2oct
(
bcm_msg
.
msg_head
.
can_id
,
4
);
INTEGER
bcm_head_can_id
;
bcm_head_can_id
.
set_long_long_val
(
bcm_msg
.
msg_head
.
can_id
);
parameters
.
frame
().
can__id
()
=
int2oct
(
bcm_head_can_id
,
4
);
#ifdef BCM_CANFD_SUPPORT
long
flags
=
bcm_msg
.
msg_head
.
flags
;
if
((
flags
&
CAN_FD_FRAME
)
==
CAN_FD_FRAME
)
{
...
...
@@ -344,8 +349,9 @@ void SocketCAN__PT_PROVIDER::Handle_Fd_Event_Readable(int sock) {
if
(
len
>
CANFD_MAX_DLEN
)
{
TTCN_error
(
"Writing data: CAN FD pdu size too large
\n
"
);
};
parameters
.
frame
().
frames
().
canfd__frame
()[
i
].
can__id
()
=
int2oct
(
bcm_msg
.
frame
[
i
].
can_id
,
4
);
INTEGER
can_id
;
can_id
.
set_long_long_val
(
bcm_msg
.
frame
[
i
].
can_id
);
parameters
.
frame
().
frames
().
canfd__frame
()[
i
].
can__id
()
=
int2oct
(
can_id
,
4
);
//Here the bitstring shall be stored into a
parameters
.
frame
().
frames
().
canfd__frame
()[
i
].
can__flags
()
=
BITSTRING
(
32
,
...
...
@@ -373,8 +379,9 @@ void SocketCAN__PT_PROVIDER::Handle_Fd_Event_Readable(int sock) {
TTCN_error
(
"Writing data: CAN pdu size too large
\n
"
);
len
=
CAN_MAX_DLEN
;
};
parameters
.
frame
().
frames
().
can__frame
()[
i
].
can__id
()
=
int2oct
(
bcm_msg
.
frame
[
i
].
can_id
,
4
);
INTEGER
can_id
;
can_id
.
set_long_long_val
(
bcm_msg
.
frame
[
i
].
can_id
);
parameters
.
frame
().
frames
().
can__frame
()[
i
].
can__id
()
=
int2oct
(
can_id
,
4
);
parameters
.
frame
().
frames
().
can__frame
()[
i
].
can__pdu
()
=
OCTETSTRING
(
len
,
(
const
unsigned
char
*
)
&
(
bcm_msg
.
frame
[
i
].
data
));
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment