Skip to content

Commit 75c41ff

Browse files
committed
add get/set for partner also
1 parent da82067 commit 75c41ff

File tree

6 files changed

+63
-17
lines changed

6 files changed

+63
-17
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ before_install:
1212
install:
1313
- python setup.py install
1414
script:
15-
- /home/travis/virtualenv/python2.7/bin/nosetests test/test_partner.py
15+
- sudo /home/travis/virtualenv/python2.7/bin/nosetests test/test_partner.py
1616
- /home/travis/virtualenv/python2.7/bin/nosetests test/test_server.py
1717
- nohup /home/travis/virtualenv/python2.7/bin/snap7-server.py &
1818
- nosetests test/test_client.py

snap7/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@ def set_param(self, number, value):
437437
byref(type_(value)))
438438

439439
def get_param(self, number):
440-
"""Reads an internal Server object parameter.
440+
"""Reads an internal Client object parameter.
441441
"""
442442
logger.debug("retreiving param number %s" % number)
443443
type_ = param_types[number]

snap7/partner.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import logging
1212
import re
1313
from snap7.common import load_library, check_error, ipv4
14-
from snap7.types import S7Object
14+
import snap7.types
1515
from snap7.exceptions import Snap7Exception
1616

1717
logger = logging.getLogger(__name__)
@@ -90,7 +90,7 @@ def create(self, active=False):
9090
:returns: a pointer to the partner object
9191
"""
9292
self.library.Par_Create.restype = ctypes.c_void_p
93-
return S7Object(self.library.Par_Create(int(active)))
93+
return snap7.types.S7Object(self.library.Par_Create(int(active)))
9494

9595
def destroy(self):
9696
"""
@@ -109,11 +109,17 @@ def get_last_error(self):
109109
check_error(result, "partner")
110110
return error
111111

112-
def get_param(self):
112+
def get_param(self, number):
113113
"""
114114
Reads an internal Partner object parameter.
115115
"""
116-
return self.library.Par_GetParam(self.pointer)
116+
logger.debug("retreiving param number %s" % number)
117+
type_ = snap7.types.param_types[number]
118+
value = type_()
119+
code = self.library.Par_GetParam(self.pointer, ctypes.c_int(number),
120+
ctypes.byref(value))
121+
check_error(code)
122+
return value.value
117123

118124
def get_stats(self):
119125
"""
@@ -152,11 +158,13 @@ def get_times(self):
152158
check_error(result, "partner")
153159
return send_time, recv_time
154160

155-
def set_param(self):
156-
"""
157-
Sets an internal Partner object parameter.
161+
@error_wrap
162+
def set_param(self, number, value):
163+
"""Sets an internal Partner object parameter.
158164
"""
159-
return self.library.Par_SetParam(self.pointer)
165+
logger.debug("setting param number %s to %s" % (number, value))
166+
return self.library.Par_SetParam(self.pointer, number,
167+
ctypes.byref(ctypes.c_int(value)))
160168

161169
def set_recv_callback(self):
162170
"""

test/test_client.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,7 @@
33

44
import snap7
55

6-
7-
logging.basicConfig()
8-
l = logging.getLogger()
9-
l.setLevel(logging.INFO)
10-
6+
logging.basicConfig(level=logging.WARNING)
117

128
ip = '127.0.0.1'
139
tcpport = 1102

test/test_partner.py

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import unittest as unittest
22
import snap7.partner
33

4+
import logging
5+
logging.basicConfig(level=logging.WARNING)
46

57
class TestPartner(unittest.TestCase):
68
def setUp(self):
@@ -36,7 +38,27 @@ def test_get_last_error(self):
3638
self.partner.get_last_error()
3739

3840
def test_get_param(self):
39-
self.partner.get_param()
41+
expected = (
42+
(snap7.types.LocalPort, 0),
43+
(snap7.types.RemotePort, 102),
44+
(snap7.types.PingTimeout, 750),
45+
(snap7.types.SendTimeout, 10),
46+
(snap7.types.RecvTimeout, 3000),
47+
(snap7.types.SrcRef, 256),
48+
(snap7.types.DstRef, 0),
49+
(snap7.types.SrcTSap, 0),
50+
(snap7.types.PDURequest, 480),
51+
(snap7.types.WorkInterval, 100),
52+
(snap7.types.BSendTimeout, 3000),
53+
(snap7.types.BRecvTimeout, 3000),
54+
(snap7.types.RecoveryTime, 500L),
55+
(snap7.types.KeepAliveTime, 5000L),
56+
)
57+
for param, value in expected:
58+
self.assertEqual(self.partner.get_param(param), value)
59+
60+
self.assertRaises(Exception, self.partner.get_param,
61+
snap7.types.MaxClients)
4062

4163
def test_get_stats(self):
4264
self.partner.get_stats()
@@ -48,7 +70,25 @@ def test_get_times(self):
4870
self.partner.get_times()
4971

5072
def test_set_param(self):
51-
self.partner.set_param()
73+
values = (
74+
(snap7.types.PingTimeout, 800),
75+
(snap7.types.SendTimeout, 15),
76+
(snap7.types.RecvTimeout, 3500),
77+
(snap7.types.WorkInterval, 50),
78+
(snap7.types.SrcRef, 128),
79+
(snap7.types.DstRef, 128),
80+
(snap7.types.SrcTSap, 128),
81+
(snap7.types.PDURequest, 470),
82+
(snap7.types.BSendTimeout, 2000),
83+
(snap7.types.BRecvTimeout, 2000),
84+
(snap7.types.RecoveryTime, 400),
85+
(snap7.types.KeepAliveTime, 4000),
86+
)
87+
for param, value in values:
88+
self.partner.set_param(param, value)
89+
90+
self.assertRaises(Exception, self.partner.set_param,
91+
snap7.types.RemotePort, 1)
5292

5393
def test_set_recv_callback(self):
5494
self.partner.set_recv_callback()

test/test_server.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import snap7.error
77
import snap7.server
88

9+
logging.basicConfig(level=logging.WARNING)
10+
911
class TestServer(unittest.TestCase):
1012
def setUp(self):
1113
self.server = snap7.server.Server()

0 commit comments

Comments
 (0)