def __init__(self, lwip): """ Initialize new object. Parameters ---------- lwip : lib instance (loaded via ctypes) lwip library instance """ self._pbuf_alloc = ctypes_helper.wrap_function( lwip, 'pbuf_alloc', ctypes.POINTER(PBuf), [ctypes.c_int64, ctypes.c_uint16, ctypes.c_int64], ) self._pbuf_take = ctypes_helper.wrap_function( lwip, 'pbuf_take', ctypes.c_int8, [ctypes.POINTER(PBuf), ctypes.c_void_p, ctypes.c_uint16], ) self._pbuf_free = ctypes_helper.wrap_function( lwip, 'pbuf_free', ctypes.c_uint8, [ctypes.POINTER(PBuf)], )
def __init__(self, lwip, allocator): """ Initialize new UdpSocket object. Parameters ---------- lwip : lib instance the instance of the lwip library, loaded via ctypes allocator : Allocator stack memory allocator """ self._lwip = lwip self._allocator = allocator self._pcb = None self._rx_callback = None self._udp_new_ip_type = ctypes_helper.wrap_function( self._lwip, 'udp_new_ip_type', ctypes.POINTER(_UdpPcb), [ctypes.c_uint8], ) self._udp_bind = ctypes_helper.wrap_function( self._lwip, 'udp_bind', err_t, [ ctypes.POINTER(_UdpPcb), ctypes.POINTER(IpV4Addr), ctypes.c_uint16, ], ) self._udp_recv = ctypes_helper.wrap_function( self._lwip, 'udp_recv', None, [ctypes.POINTER(_UdpPcb), udp_recv_fn_func_type, ctypes.c_void_p], ) self._udp_send_to = ctypes_helper.wrap_function( self._lwip, 'udp_sendto', err_t, [ ctypes.POINTER(_UdpPcb), ctypes.POINTER(PBuf), ctypes.POINTER(IpV4Addr), ctypes.c_uint16, ], )
def set_default(self): netif_set_default = ctypes_helper.wrap_function( self._lwip, 'netif_set_default', None, [ctypes.POINTER(self._LwipNetIf)], ) netif_set_default(ctypes.byref(self._interface))
def set_link_down(self): netif_set_link_down = ctypes_helper.wrap_function( self._lwip, 'netif_set_link_down', None, [ctypes.POINTER(self._LwipNetIf)], ) netif_set_link_down(ctypes.byref(self._interface))
def __init__(self, lwip): """ Initialize new object. Parameters ---------- lwip : ctypes wrapper for lib lwip library instance """ self._lwip = lwip self._ping_init = ctypes_helper.wrap_function( self._lwip, 'ping_init', None, [ctypes.POINTER(IpAddr)], ) self._ping_send_now = ctypes_helper.wrap_function( self._lwip, 'ping_send_now', None, None, ) self._ping_callback_fn = ctypes.CFUNCTYPE( None, ctypes.c_uint8, ) self._set_ping_callback = ctypes_helper.wrap_function( self._lwip, 'set_ping_callback', None, [self._ping_callback_fn], )
def init(self): """ Initialize stack. The new instance of the stack library will be loaded. """ self._lwip = self._library_loader() self._sys_check_timeouts = ctypes_helper.wrap_function( self._lwip, 'sys_check_timeouts', None, None, ) self._lwip.lwip_init()
def __init__(self, name, lwip, stack): """ Initialize new object. Parameters ---------- name : string human readable interface name lwip : ctype lib instance of the lwip lib stack : Stack stack that will service the interface """ self._name = name self._lwip = lwip self._stack = stack self._netif_add = ctypes_helper.wrap_function( self._lwip, 'netif_add', ctypes.POINTER(self._LwipNetIf), [ ctypes.POINTER(self._LwipNetIf), ctypes.POINTER(IpV4Addr), ctypes.POINTER(IpV4Addr), ctypes.POINTER(IpV4Addr), ctypes.c_void_p, self.netif_init_fn_type, self.netif_input_fn_type, ], ) self._etharp_output = ctypes_helper.wrap_function( self._lwip, 'etharp_output', ctypes.c_int8, [ ctypes.POINTER(self._LwipNetIf), ctypes.POINTER(PBuf), ctypes.POINTER(IpV4Addr), ], ) self._ip_input = ctypes_helper.wrap_function( self._lwip, 'ethernet_input', ctypes.c_int8, [ ctypes.POINTER(PBuf), ctypes.POINTER(self._LwipNetIf), ], ) self._interface = self._LwipNetIf() self._netif_input = self.netif_input_fn_type() self._netif_output = self.netif_output_fn() self._netif_link_output = self.netif_linkoutput_fn( self._link_output_wrapper, ) self._netif_user_link_output = None self._netif_status = self.netif_status_cbk_fn() self._netif_link_status = self.netif_status_cbk_fn() self._ping_callback = None