summaryrefslogtreecommitdiff
path: root/Net1090
diff options
context:
space:
mode:
authorArturs Artamonovs <arturs.artamonovs@protonmail.com>2024-07-16 06:45:43 +0100
committerArturs Artamonovs <arturs.artamonovs@protonmail.com>2024-07-16 06:45:43 +0100
commitb32ecfab276fb8e1dff0e1d72ed819b548323328 (patch)
treec6b5b70754252520fd0b32513e76bb439b5bbfa5 /Net1090
parent96cd6ab4bc219810779fe57158dfdf7627c5a5a0 (diff)
downloadADSBDecoder-b32ecfab276fb8e1dff0e1d72ed819b548323328.tar.gz
ADSBDecoder-b32ecfab276fb8e1dff0e1d72ed819b548323328.zip
Working implementation of ADSB loaded from file. Net1090 can read from dump1090 socket
Diffstat (limited to 'Net1090')
-rw-r--r--Net1090/main.swift75
1 files changed, 75 insertions, 0 deletions
diff --git a/Net1090/main.swift b/Net1090/main.swift
new file mode 100644
index 0000000..93ff716
--- /dev/null
+++ b/Net1090/main.swift
@@ -0,0 +1,75 @@
+//
+// main.swift
+// Net1090
+//
+// Created by Jacky Jack on 11/07/2024.
+//
+
+import Foundation
+import Network
+import NIO
+
+class ADSBHandlder: ChannelInboundHandler {
+ typealias InboundIn = ByteBuffer
+ typealias OutboundOut = ByteBuffer
+
+ func channelActive(context: ChannelHandlerContext) {
+ print("Channel is active")
+ }
+
+ func channelRead(context: ChannelHandlerContext, data: NIOAny) {
+ var buffer = unwrapInboundIn(data)
+ let readableBytes = buffer.readableBytes
+ if let received = buffer.readString(length: readableBytes) {
+ print(received,terminator: "")
+ }
+ }
+
+ func errorCaught(context: ChannelHandlerContext, error: any Error) {
+ print("error: \(error.localizedDescription)")
+ context.close(promise: nil)
+ }
+}
+
+class TCPClient {
+ let group = MultiThreadedEventLoopGroup(numberOfThreads: 1)
+ var host: String
+ var port: Int
+
+ init(host: String, port: Int) {
+ self.host = host
+ self.port = port
+ }
+
+ func start() throws {
+ do {
+ let channel = try ClientBootstrap(group: group)
+ .channelOption(ChannelOptions.socket(SocketOptionLevel(SOL_SOCKET), SO_REUSEADDR), value: 1)
+ .channelInitializer{channel in
+ //channel.pipeline.add(handler: ADSBHandlder())
+ channel.pipeline.addHandlers([ADSBHandlder()])
+ }.connect(host: self.host, port: self.port)
+ .wait()
+ try channel.closeFuture.wait()
+ } catch let error {
+ print(error)
+ throw error
+ }
+ }
+
+ func stop() {
+
+ }
+}
+
+print("Hello, World!")
+print("Start listening client")
+
+let ADSBClient = TCPClient(host: "192.168.4.201", port: 30002)
+do {
+ try ADSBClient.start()
+} catch let error {
+ print("Error: \(error.localizedDescription)")
+ ADSBClient.stop()
+}
+