Global functions

c104.set_debug_mode(mode: c104.Debug) None

set the debug mode

Parameters:

mode (c104.Debug) – debug mode bitset

Example

>>> c104.set_debug_mode(mode=c104.Debug.Client|c104.Debug.Connection)
c104.get_debug_mode() c104.Debug

get current debug mode

Returns:

debug mode bitset

Return type:

c104.Debug

Example

>>> mode = c104.get_debug_mode()
c104.enable_debug(mode: c104.Debug) None

enable additional debugging modes

Parameters:

mode (c104.Debug) – debug mode bitset

Example

>>> c104.set_debug_mode(mode=c104.Debug.Client|c104.Debug.Connection)
>>> c104.enable_debug(mode=c104.Debug.Callback|c104.Debug.Gil)
>>> c104.get_debug_mode() == c104.Debug.Client|c104.Debug.Connection|c104.Debug.Callback|c104.Debug.Gil
c104.disable_debug(mode: c104.Debug) None

disable debugging modes

Parameters:

mode (c104.Debug) – debug mode bitset

Example

>>> c104.set_debug_mode(mode=c104.Debug.Client|c104.Debug.Connection|c104.Debug.Callback|c104.Debug.Gil)
>>> c104.disable_debug(mode=c104.Debug.Callback|c104.Debug.Gil)
>>> c104.get_debug_mode() == c104.Debug.Client|c104.Debug.Connection
c104.explain_bytes()

explain bytes in a string

c104.explain_bytes_dict()

explain_bytes(apdu: bytes) -> str

Interpret 104er APDU bytes and extract information into a dictionary

Parameters:

apdu (bytes) – APDU protocol bytes

Returns:

information about APDU in dictionary {"format":str, "type":str, "cot":str, "rx": Optional[int], "tx": Optional[int], "numberOfObjects": Optional[int], "sequence": Optional[bool], "negative": Optional[bool], "test": Optional[bool], "commonAddress": Optional[int], "originatorAddress": Optional[int], "firstInformationObjectAddress": Optional[int], "elements": Optional[str]}

Return type:

dict

Example

>>> def sv_on_receive_raw(server: c104.Server, data: bytes) -> None:
>>>    pprint("SV] -->| {1} [{0}] | SERVER {2}:{3}".format(data.hex(), c104.explain_bytes_dict(apdu=data), server.ip, server.port))