Skip to content
Snippets Groups Projects
Commit 8dcaf62e authored by Martin Teichmann's avatar Martin Teichmann
Browse files

improve readability: use Enum for constants

parent 68cdcfcf
No related branches found
No related tags found
No related merge requests found
...@@ -20,6 +20,7 @@ from asyncio import ( ...@@ -20,6 +20,7 @@ from asyncio import (
CancelledError, ensure_future, gather, sleep, wait_for, TimeoutError) CancelledError, ensure_future, gather, sleep, wait_for, TimeoutError)
from collections import defaultdict from collections import defaultdict
from contextlib import asynccontextmanager, AsyncExitStack, contextmanager from contextlib import asynccontextmanager, AsyncExitStack, contextmanager
from enum import Enum
import os import os
from struct import pack, unpack, calcsize, pack_into, unpack_from from struct import pack, unpack, calcsize, pack_into, unpack_from
from time import time from time import time
...@@ -267,18 +268,18 @@ class EBPFTerminal(Terminal): ...@@ -267,18 +268,18 @@ class EBPFTerminal(Terminal):
bases = {} bases = {}
if self.use_fmmu: if self.use_fmmu:
if self.pdo_in_sz: if self.pdo_in_sz:
bases[3] = (1, packet.fmmu_in_size) bases[3] = (BaseType.FMMU_IN, packet.fmmu_in_size)
packet.fmmu_in_size += self.pdo_in_sz packet.fmmu_in_size += self.pdo_in_sz
if readwrite and self.pdo_out_sz: if readwrite and self.pdo_out_sz:
bases[2] = (2, packet.fmmu_out_size) bases[2] = (BaseType.FMMU_OUT, packet.fmmu_out_size)
packet.fmmu_out_size += self.pdo_out_sz packet.fmmu_out_size += self.pdo_out_sz
else: else:
if self.pdo_in_sz: if self.pdo_in_sz:
bases[3] = (0, packet.size) bases[3] = (BaseType.NO_FMMU, packet.size)
packet.append(ECCmd.FPRD, b"\0" * self.pdo_in_sz, 0, packet.append(ECCmd.FPRD, b"\0" * self.pdo_in_sz, 0,
self.position, self.pdo_in_off) self.position, self.pdo_in_off)
if readwrite and self.pdo_out_sz: if readwrite and self.pdo_out_sz:
bases[2] = (0, packet.size) bases[2] = (BaseType.NO_FMMU, packet.size)
packet.append_writer(ECCmd.FPWR, b"\0" * self.pdo_out_sz, 0, packet.append_writer(ECCmd.FPWR, b"\0" * self.pdo_out_sz, 0,
self.position, self.pdo_out_off) self.position, self.pdo_out_off)
return bases return bases
...@@ -378,7 +379,7 @@ class FastEtherCat(SimpleEtherCat): ...@@ -378,7 +379,7 @@ class FastEtherCat(SimpleEtherCat):
class SterilePacket(Packet): class SterilePacket(Packet):
"""a sterile packet has all its sets exchanges by NOPs""" """a sterile packet has all its sets exchanged by NOPs"""
next_logical_addr = 0 # global for all packets next_logical_addr = 0 # global for all packets
logical_addr_inc = 0x800 logical_addr_inc = 0x800
...@@ -414,6 +415,11 @@ class SterilePacket(Packet): ...@@ -414,6 +415,11 @@ class SterilePacket(Packet):
for pos, cmd in self.on_the_fly: for pos, cmd in self.on_the_fly:
ebpf.pB[pos + self.ETHERNET_HEADER] = cmd.value ebpf.pB[pos + self.ETHERNET_HEADER] = cmd.value
class BaseType(Enum):
NO_FMMU = 0
FMMU_IN = 1
FMMU_OUT = 2
class SyncGroupBase: class SyncGroupBase:
missed_counter = 0 missed_counter = 0
...@@ -480,13 +486,16 @@ class SyncGroupBase: ...@@ -480,13 +486,16 @@ class SyncGroupBase:
terminals = {t: t.allocate(self.packet, rw) terminals = {t: t.allocate(self.packet, rw)
for t, rw in self.terminals.items()} for t, rw in self.terminals.items()}
in_pos, out_pos, logical_in, logical_out = self.packet.append_fmmu() in_pos, out_pos, logical_in, logical_out = self.packet.append_fmmu()
offsets = (0, in_pos, out_pos) offsets = {BaseType.NO_FMMU: 0,
BaseType.FMMU_IN: in_pos, BaseType.FMMU_OUT: out_pos}
self.terminals = {t: {sm: offsets[base] + off + Packet.DATAGRAM_HEADER self.terminals = {t: {sm: offsets[base] + off + Packet.DATAGRAM_HEADER
for sm, (base, off) in d.items()} for sm, (base, off) in d.items()}
for t, d in terminals.items()} for t, d in terminals.items()}
offsets = (None, logical_in, logical_out) offsets = {BaseType.FMMU_IN: logical_in,
BaseType.FMMU_OUT: logical_out}
self.fmmu_maps = {t: {sm: offsets[base] + off self.fmmu_maps = {t: {sm: offsets[base] + off
for sm, (base, off) in d.items() if base != 0} for sm, (base, off) in d.items()
if base is not BaseType.NO_FMMU}
for t, d in terminals.items()} for t, d in terminals.items()}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment