Package: inet.node.tsn
TsnClock
compound moduleThis module represents a hardware device containing a high precision hardware clock. The device also contains a gPTP protocol implementation and acts as a gPTP master node in the network.
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Extends
Name | Type | Description |
---|---|---|
GptpMaster | compound module |
This module provide a gPTP master network node. |
Parameters
Name | Type | Default value | Description |
---|---|---|---|
hasStatus | bool | false | |
osgModel | string | "" |
3D model for OSG visualization, no 3D model by default |
osgModelColor | string | "" |
tint color, no colorization by default |
canvasImage | string | "" |
image for canvas visualization, no image by default |
canvasImageColor | string | "" |
tint color, no colorization by default |
recordPcap | bool | false | |
numPcapRecorders | int | recordPcap ? 1 : 0 | |
numLoInterfaces | int | 1 | |
numWlanInterfaces | int | 0 | |
numEthInterfaces | int | 0 |
minimum number of ethernet interfaces |
numPppInterfaces | int | 0 |
minimum number of PPP interfaces |
numTunInterfaces | int | 0 | |
numVirtInterfaces | int | 0 | |
fcsMode | string | "declared" | |
hasIpv4 | bool | true | |
hasIpv6 | bool | false | |
hasGn | bool | false | |
forwarding | bool | false | |
multicastForwarding | bool | false | |
hasUdp | bool | firstAvailableOrEmpty("Udp") != "" | |
hasTcp | bool | firstAvailableOrEmpty("Tcp", "TcpLwip", "TcpNsc") != "" | |
hasSctp | bool | false | |
numApps | int | 0 | |
hasCutthroughSwitching | bool | false |
enable cut-through switching support |
Properties
Name | Value | Description |
---|---|---|
networkNode | ||
labels | node | |
class | NodeBase | |
display | i=device/card |
change icon to emphasise hardware device |
Gates
Name | Direction | Size | Description |
---|---|---|---|
radioIn [ ] | input | numWlanInterfaces | |
pppg [ ] | inout | numPppInterfaces | |
ethg [ ] | inout | numEthInterfaces |
Unassigned submodule parameters
Name | Type | Default value | Description |
---|---|---|---|
status.initialStatus | string | "UP" |
TODO @signal, @statistic |
pcapRecorder.verbose | bool | true |
whether to log packets on the module output |
pcapRecorder.pcapFile | string | "" |
the PCAP file to be written |
pcapRecorder.fileFormat | string | "pcapng" | |
pcapRecorder.snaplen | int | 65535 |
maximum number of bytes to record per packet |
pcapRecorder.dumpBadFrames | bool | true |
enable dump of frames with hasBitError |
pcapRecorder.moduleNamePatterns | string | "wlan[*] eth[*] ppp[*]" |
space-separated list of sibling module names to listen on |
pcapRecorder.sendingSignalNames | string | "packetSentToLower" |
space-separated list of outbound packet signals to subscribe to |
pcapRecorder.receivingSignalNames | string | "packetReceivedFromLower" |
space-separated list of inbound packet signals to subscribe to |
pcapRecorder.dumpProtocols | string | "ethernetmac ppp ieee80211mac" |
space-separated list of protocol names as defined in the Protocol class |
pcapRecorder.packetFilter | object | "*" |
which packets are considered, matches all packets by default |
pcapRecorder.helpers | string | "" |
usable PcapRecorder::IHelper helpers for accept packettype and store/convert packet as specified linktype currently available: "inet::AckingMacToEthernetPcapRecorderHelper" |
pcapRecorder.alwaysFlush | bool | false |
flush the pcapFile after each write to ensure that all packets are captured in case of a crash |
pcapRecorder.displayStringTextFormat | string | "rec: %n pks" | |
interfaceTable.displayAddresses | bool | false |
whether to display IP addresses on links |
cb.displayStringTextFormat | string | "processed %p pk (%l)" |
determines the text that is written on top of the submodule |
cb.forwardServiceRegistration | bool | true | |
cb.forwardProtocolRegistration | bool | true | |
bl.displayStringTextFormat | string | "processed %p pk (%l)" |
determines the text that is written on top of the submodule |
bl.forwardServiceRegistration | bool | true | |
bl.forwardProtocolRegistration | bool | true | |
li.displayStringTextFormat | string | "processed %p pk (%l)" |
determines the text that is written on top of the submodule |
li.forwardServiceRegistration | bool | true | |
li.forwardProtocolRegistration | bool | true | |
eth.bitrate | double | ||
nl.displayStringTextFormat | string | "processed %p pk (%l)" |
determines the text that is written on top of the submodule |
nl.forwardServiceRegistration | bool | true | |
nl.forwardProtocolRegistration | bool | true | |
tn.displayStringTextFormat | string | "processed %p pk (%l)" |
determines the text that is written on top of the submodule |
tn.forwardServiceRegistration | bool | true | |
tn.forwardProtocolRegistration | bool | true | |
at.displayStringTextFormat | string | "processed %p pk (%l)" |
determines the text that is written on top of the submodule |
at.forwardServiceRegistration | bool | true | |
at.forwardProtocolRegistration | bool | true |
Source code
// // This module represents a hardware device containing a high precision hardware // clock. The device also contains a gPTP protocol implementation and acts as a // gPTP master node in the network. // module TsnClock extends GptpMaster { parameters: bool hasCutthroughSwitching = default(false); // enable cut-through switching support clock.typename = default("OscillatorBasedClock"); // master clocks cannot be set ethernet.typename = default("EthernetLayer"); // use Ethernet protocol layer outside of network interfaces eth[*].typename = default("LayeredEthernetInterface"); // switch to modular Ethernet interface eth[*].phyLayer.typename = default(hasCutthroughSwitching ? "EthernetStreamingPhyLayer" : "EthernetPhyLayer"); // use packet streaming when cut-through switching is enabled @display("i=device/card"); // change icon to emphasise hardware device }File: src/inet/node/tsn/TsnClock.ned