Merge branch 'python-port'

This commit is contained in:
Sebastian 2016-12-23 02:09:23 +01:00
commit 38e7d7bb1e
2 changed files with 109 additions and 0 deletions

70
software/python/sss7.py Normal file
View File

@ -0,0 +1,70 @@
#!/usr/bin/env python2
from ctypes import *
LIBSSS7_PATH = "../linux/bin/libsss7.so"
LIBSSS7_PAYLOAD_SIZE = 16
_SSS7_PAYLOAD_TYPE = c_ubyte * LIBSSS7_PAYLOAD_SIZE
_LIB_SSS7 = cdll.LoadLibrary(LIBSSS7_PATH)
# int libsss7_start(char *serialport);
_LIB_SSS7.libsss7_start.argtypes = [c_char_p]
_LIB_SSS7.libsss7_start.restype = c_int
# int libsss7_can_send(void);
_LIB_SSS7.libsss7_can_send.argtypes = None
_LIB_SSS7.libsss7_can_send.restype = c_int
# void libsss7_send(uint8_t msg[LIBSSS7_PAYLOAD_SIZE]);
_LIB_SSS7.libsss7_send.argtypes = [_SSS7_PAYLOAD_TYPE]
_LIB_SSS7.libsss7_send.restype = c_int
# int libsss7_send_failed(void);
_LIB_SSS7.libsss7_send_failed.argtypes = None
_LIB_SSS7.libsss7_send_failed.restype = c_int
# int libsss7_has_received(void);
_LIB_SSS7.libsss7_has_received.argtypes = None
_LIB_SSS7.libsss7_has_received.restype = c_int
# libsss7_get_received(uint8_t *msg);
_LIB_SSS7.libsss7_get_received.argtypes = [_SSS7_PAYLOAD_TYPE]
_LIB_SSS7.libsss7_get_received.restype = c_int
# void libsss7_stop();
_LIB_SSS7.libsss7_stop.argtypes = None
_LIB_SSS7.libsss7_stop.restype = None
class _SSS7(object):
def start(self, port):
return _LIB_SSS7.libsss7_start(port) == 0
def can_send(self):
return _LIB_SSS7.libsss7_can_send() == 1
def send(self,msg):
msg += [0] * (LIBSSS7_PAYLOAD_SIZE - len(msg))
payload = _SSS7_PAYLOAD_TYPE(*msg)
_LIB_SSS7.libsss7_send(payload)
def send_failed(self):
tmp = _LIB_SSS7.libsss7_send_failed()
print tmp
return tmp == 1
def has_received(self):
return _LIB_SSS7.libsss7_has_received()
def get_received(self):
payload = _SSS7_PAYLOAD_TYPE()
_LIB_SSS7.libsss7_get_received(payload)
return [payload[i] for i in range(0, LIBSSS7_PAYLOAD_SIZE)]
def stop(self):
_LIB_SSS7.libsss7_stop()
SSS7 = _SSS7()

39
software/python/test.py Normal file
View File

@ -0,0 +1,39 @@
#!/usr/bin/env python2
from time import sleep
from sss7 import SSS7
def to_byte_list(data):
return [ord(c) for c in data]
def to_string(data):
data = [chr(c) for c in data]
return "".join(data)
def main():
SSS7.start("/dev/ttyUSB0")
while not SSS7.can_send() :
sleep(0.1)
SSS7.send(to_byte_list("Hello python"))
while not SSS7.can_send():
sleep(0.1)
if SSS7.send_failed():
print "Send failed"
while not SSS7.has_received():
sleep(0.1)
print to_string(SSS7.get_received())
SSS7.stop()
if __name__ == '__main__':
main()