diff --git a/src/core/network.ts b/src/core/network.ts
index ae0c6cb..1b36cc8 100644
--- a/src/core/network.ts
+++ b/src/core/network.ts
@@ -285,8 +285,8 @@ export class NetworkHub {
}
connect(v1: number, v2: number) {
- const node1 = this.Nodes.value.find(n => n.id === v1)
- const node2 = this.Nodes.value.find(n => n.id === v2)
+ const node1 = this.Nodes.value.find((n) => n.id === v1)
+ const node2 = this.Nodes.value.find((n) => n.id === v2)
if (!node1 || !node2) {
console.error('Connection error: node(s) not found.')
diff --git a/src/core/nodes/end_system.ts b/src/core/nodes/end_system.ts
index dfaf799..e0cd1c8 100644
--- a/src/core/nodes/end_system.ts
+++ b/src/core/nodes/end_system.ts
@@ -1,4 +1,4 @@
-import { Node } from '../node'
+import { Node } from './node'
import {
PKT_TYPE,
type Message,
diff --git a/src/core/nodes/five_g_gnb.ts b/src/core/nodes/five_g_gnb.ts
index e34d315..5052722 100644
--- a/src/core/nodes/five_g_gnb.ts
+++ b/src/core/nodes/five_g_gnb.ts
@@ -1,4 +1,4 @@
-import { Node } from '../node'
+import { Node } from './node'
import {
PKT_TYPE,
type Message,
diff --git a/src/core/nodes/five_g_ue.ts b/src/core/nodes/five_g_ue.ts
index b320acf..c760da2 100644
--- a/src/core/nodes/five_g_ue.ts
+++ b/src/core/nodes/five_g_ue.ts
@@ -1,4 +1,4 @@
-import { Node } from '../node'
+import { Node } from './node'
import {
PKT_TYPE,
type Message,
diff --git a/src/core/node.ts b/src/core/nodes/node.ts
similarity index 93%
rename from src/core/node.ts
rename to src/core/nodes/node.ts
index e2b6ac5..7ae7925 100644
--- a/src/core/node.ts
+++ b/src/core/nodes/node.ts
@@ -1,4 +1,4 @@
-import { type Message, type MsgHandler, type Packet, type PktHandler } from './typedefs'
+import { type Message, type MsgHandler, type Packet, type PktHandler, type RoutingTable } from '../typedefs'
export class Node {
id: number = 0
@@ -8,7 +8,7 @@ export class Node {
rx_cnt: number = 0
queue: Packet[] = []
ASN: number = 0
- routingTable: { [dst: number]: number } = {}
+ routingTable: RoutingTable = {}
msgHandlers: { [type: number]: MsgHandler } = {}
pktHandlers: { [type: number]: PktHandler } = {}
diff --git a/src/core/nodes/tsch.ts b/src/core/nodes/tsch.ts
index 70f8e52..d8f423a 100644
--- a/src/core/nodes/tsch.ts
+++ b/src/core/nodes/tsch.ts
@@ -1,4 +1,4 @@
-import { Node } from '../node'
+import { Node } from './node'
import {
PKT_TYPE,
type Message,
diff --git a/src/core/nodes/tsn.ts b/src/core/nodes/tsn.ts
index 4c0167c..008bfc1 100644
--- a/src/core/nodes/tsn.ts
+++ b/src/core/nodes/tsn.ts
@@ -1,4 +1,4 @@
-import { Node } from '../node'
+import { Node } from './node'
import {
PKT_TYPE,
type Message,
diff --git a/src/core/typedefs.ts b/src/core/typedefs.ts
deleted file mode 100644
index 1af2743..0000000
--- a/src/core/typedefs.ts
+++ /dev/null
@@ -1,142 +0,0 @@
-// enums are all captital and underscore, types are camel case
-
-export interface Config {
- seed: number
- num_nodes: number
- grid_size: number
- tx_range: number
-}
-
-export enum NODE_TYPE {
- TSCH,
- TSN,
- FIVE_G_GNB,
- FIVE_G_UE,
- END_SYSTEM_SERVER = 11,
- END_SYSTEM_SENSOR_CAMERA,
- END_SYSTEM_SENSOR_TEMP,
- END_SYSTEM_SENSOR_PRESSURE,
- END_SYSTEM_SENSOR_HUMIDITY,
- END_SYSTEM_ACTUATOR_ROBOTIC_ARM,
- END_SYSTEM_ACTUATOR_PNEUMATIC
-}
-
-export const NODE_TYPE_DISPLAY_NAME = <{ [name: string]: string }>{
- [NODE_TYPE.TSCH]: 'TSCH Node',
- [NODE_TYPE.TSN]: 'TSN Bridge',
- [NODE_TYPE.FIVE_G_GNB]: '5G gNB',
- [NODE_TYPE.FIVE_G_UE]: '5G UE',
- [NODE_TYPE.END_SYSTEM_SERVER]: 'Edge Server',
- [NODE_TYPE.END_SYSTEM_SENSOR_CAMERA]: 'Camera',
- [NODE_TYPE.END_SYSTEM_SENSOR_TEMP]: 'Temperature Sensor',
- [NODE_TYPE.END_SYSTEM_SENSOR_PRESSURE]: 'Pressure Sensor',
- [NODE_TYPE.END_SYSTEM_SENSOR_HUMIDITY]: 'Humidity Sensor',
- [NODE_TYPE.END_SYSTEM_ACTUATOR_ROBOTIC_ARM]: 'Robotic Arm',
- [NODE_TYPE.END_SYSTEM_ACTUATOR_PNEUMATIC]: 'Pneumatic Actuator'
-}
-
-export interface Node {
- id: number
- type: number
- pos: [number, number]
- neighbors: number[]
- tx_cnt: number
- rx_cnt: number
- w: Worker | undefined
-}
-
-export interface Link {
- // undirected for visualization
- uid: number // cantor pairing, uid=0.5*(v1+v2)*(v1+v2+1)+v2
- v1: number
- v2: number
- type: number
-}
-
-export enum LINK_TYPE {
- WIRED,
- WIRELESS
-}
-
-export interface Flow {
- id: number
- e2e_src: number
- e2e_dst: number
- deadline: number
- period: number
- workload: number
- path: number[] // id's of all nodes in path
- editing: boolean // whether or not the user can edit in FlowsPanel
-}
-
-// Packet is transfered among nodes, at data-link layer
-export interface Packet {
- uid: number
- protocol: string
- type: number
- e2e_src: number
- e2e_dst: number
- mac_src: number
- mac_dst: number
- asn: number
- len: number
- payload: any
-
- // for display on packet sniffer
- id: number
- children: any
-}
-
-export enum PKT_TYPE {
- DATA
-}
-
-export const PROTOCOL_TYPE = <{ [name: string]: string }>{
- TSCH: '802.15.4',
- TSN: '802.1',
- FIVE_G: '5G NR'
-}
-
-export enum ADDR {
- BROADCAST = -1
-}
-
-// Message is used for direct communication (debug, cmd, stats) between nodes and controller
-export interface Message {
- type: number
- id: number // node id
- payload: any
-}
-
-export enum MSG_TYPE {
- INIT,
- ASN,
- DONE, // finished all activities of the current slot
- ROUTING,
- FLOW, // install periodic flow
- STAT
-}
-
-export interface InitMsgPayload {
- id: number
- neighbors: number[]
-}
-
-export interface ASNMsgPayload {
- asn: number
-}
-
-export interface RoutingMsgPayload {
- [dst: number]: number
-}
-
-export interface FlowMsgPayload {
- flows: Flow[]
-}
-
-export type MsgHandler = (msg: Message) => void
-export type PktHandler = (pkt: Packet) => void
-
-export interface RoutingGraph {
- [id: number]: number[]
-}
diff --git a/src/core/typedefs/config.ts b/src/core/typedefs/config.ts
new file mode 100644
index 0000000..ba2661f
--- /dev/null
+++ b/src/core/typedefs/config.ts
@@ -0,0 +1,6 @@
+export interface Config {
+ seed: number
+ num_nodes: number
+ grid_size: number
+ tx_range: number
+}
diff --git a/src/core/typedefs/flow.ts b/src/core/typedefs/flow.ts
new file mode 100644
index 0000000..324ddb4
--- /dev/null
+++ b/src/core/typedefs/flow.ts
@@ -0,0 +1,10 @@
+export interface Flow {
+ id: number
+ e2e_src: number
+ e2e_dst: number
+ deadline: number
+ period: number
+ workload: number
+ path: number[] // id's of all nodes in path
+ editing: boolean // whether or not the user can edit in FlowsPanel
+}
diff --git a/src/core/typedefs/index.ts b/src/core/typedefs/index.ts
new file mode 100644
index 0000000..1f19de6
--- /dev/null
+++ b/src/core/typedefs/index.ts
@@ -0,0 +1,14 @@
+export * from './config'
+export * from './node'
+export * from './message'
+export * from './packet'
+export * from './link'
+export * from './routing'
+export * from './flow'
+export * from './schedule'
+
+export const PROTOCOL_TYPE = <{ [name: string]: string }>{
+ TSCH: '802.15.4',
+ TSN: '802.1',
+ FIVE_G: '5G NR'
+}
diff --git a/src/core/typedefs/link.ts b/src/core/typedefs/link.ts
new file mode 100644
index 0000000..92b9fbb
--- /dev/null
+++ b/src/core/typedefs/link.ts
@@ -0,0 +1,12 @@
+export interface Link {
+ // undirected for visualization
+ uid: number // cantor pairing, uid=0.5*(v1+v2)*(v1+v2+1)+v2
+ v1: number
+ v2: number
+ type: number
+}
+
+export enum LINK_TYPE {
+ WIRED,
+ WIRELESS
+}
diff --git a/src/core/typedefs/message.ts b/src/core/typedefs/message.ts
new file mode 100644
index 0000000..ab006d3
--- /dev/null
+++ b/src/core/typedefs/message.ts
@@ -0,0 +1,36 @@
+import type { Flow } from './flow'
+
+// Message is used for direct communication (debug, cmd, stats) between nodes and controller
+export interface Message {
+ type: number
+ id: number // node id
+ payload: any
+}
+
+export type MsgHandler = (msg: Message) => void
+
+export enum MSG_TYPE {
+ INIT,
+ ASN,
+ DONE, // finished all activities of the current slot
+ ROUTING,
+ FLOW, // install periodic flow
+ STAT
+}
+
+export interface InitMsgPayload {
+ id: number
+ neighbors: number[]
+}
+
+export interface ASNMsgPayload {
+ asn: number
+}
+
+export interface RoutingMsgPayload {
+ [dst: number]: number
+}
+
+export interface FlowMsgPayload {
+ flows: Flow[]
+}
diff --git a/src/core/typedefs/node.ts b/src/core/typedefs/node.ts
new file mode 100644
index 0000000..5b7fd03
--- /dev/null
+++ b/src/core/typedefs/node.ts
@@ -0,0 +1,37 @@
+export enum NODE_TYPE {
+ TSCH,
+ TSN,
+ FIVE_G_GNB,
+ FIVE_G_UE,
+ END_SYSTEM_SERVER = 11,
+ END_SYSTEM_SENSOR_CAMERA,
+ END_SYSTEM_SENSOR_TEMP,
+ END_SYSTEM_SENSOR_PRESSURE,
+ END_SYSTEM_SENSOR_HUMIDITY,
+ END_SYSTEM_ACTUATOR_ROBOTIC_ARM,
+ END_SYSTEM_ACTUATOR_PNEUMATIC
+}
+
+export const NODE_TYPE_DISPLAY_NAME = <{ [name: string]: string }>{
+ [NODE_TYPE.TSCH]: 'TSCH Node',
+ [NODE_TYPE.TSN]: 'TSN Bridge',
+ [NODE_TYPE.FIVE_G_GNB]: '5G gNB',
+ [NODE_TYPE.FIVE_G_UE]: '5G UE',
+ [NODE_TYPE.END_SYSTEM_SERVER]: 'Edge Server',
+ [NODE_TYPE.END_SYSTEM_SENSOR_CAMERA]: 'Camera',
+ [NODE_TYPE.END_SYSTEM_SENSOR_TEMP]: 'Temperature Sensor',
+ [NODE_TYPE.END_SYSTEM_SENSOR_PRESSURE]: 'Pressure Sensor',
+ [NODE_TYPE.END_SYSTEM_SENSOR_HUMIDITY]: 'Humidity Sensor',
+ [NODE_TYPE.END_SYSTEM_ACTUATOR_ROBOTIC_ARM]: 'Robotic Arm',
+ [NODE_TYPE.END_SYSTEM_ACTUATOR_PNEUMATIC]: 'Pneumatic Actuator'
+}
+
+export interface Node {
+ id: number
+ type: number
+ pos: [number, number]
+ neighbors: number[]
+ tx_cnt: number
+ rx_cnt: number
+ w: Worker | undefined
+}
diff --git a/src/core/typedefs/packet.ts b/src/core/typedefs/packet.ts
new file mode 100644
index 0000000..d074721
--- /dev/null
+++ b/src/core/typedefs/packet.ts
@@ -0,0 +1,23 @@
+// Packet is transfered among nodes, at data-link layer
+export interface Packet {
+ uid: number
+ protocol: string
+ type: number
+ e2e_src: number
+ e2e_dst: number
+ mac_src: number
+ mac_dst: number
+ asn: number
+ len: number
+ payload: any
+
+ // for display on packet sniffer
+ id: number
+ children: any
+}
+
+export type PktHandler = (pkt: Packet) => void
+
+export enum PKT_TYPE {
+ DATA
+}
diff --git a/src/core/typedefs/routing.ts b/src/core/typedefs/routing.ts
new file mode 100644
index 0000000..65b5a45
--- /dev/null
+++ b/src/core/typedefs/routing.ts
@@ -0,0 +1,11 @@
+export interface RoutingGraph {
+ [id: number]: number[]
+}
+
+export interface RoutingTable {
+ [id: number]: number
+}
+
+export enum ADDR {
+ BROADCAST = -1
+}
diff --git a/src/core/typedefs/schedule.ts b/src/core/typedefs/schedule.ts
new file mode 100644
index 0000000..c47bd00
--- /dev/null
+++ b/src/core/typedefs/schedule.ts
@@ -0,0 +1,15 @@
+// the global network schedule
+export interface Cell {
+ slot: number
+ type: number
+ mac_src: number
+ mac_dst: number
+ flow_id: number
+ flow_k: number
+ flow_h: number
+}
+
+export enum CELL_TYPE {
+ DATA,
+ MGMT
+}
diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue
index afd241e..b0ecf68 100644
--- a/src/views/HomeView.vue
+++ b/src/views/HomeView.vue
@@ -30,8 +30,6 @@ import EventLogs from '@/components/EventLogs.vue'
-
+