diff --git a/software/python/sss7.py b/software/python/sss7.py new file mode 100644 index 0000000..3529a13 --- /dev/null +++ b/software/python/sss7.py @@ -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() diff --git a/software/python/test.py b/software/python/test.py new file mode 100644 index 0000000..88b0418 --- /dev/null +++ b/software/python/test.py @@ -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()