Added some implementations from Schema in BluePrints

This commit is contained in:
Christian Risi 2024-11-29 15:22:26 +00:00
parent bb0472911b
commit b21f633bb4
14 changed files with 147 additions and 79 deletions

View File

@ -1,41 +1,41 @@
{
// Displayed name
"name": "IoT-Simulator-Core",
// Image to be used
"image": "swift",
// Customization
"customizations": {
"vscode": {
"extensions": [
"sswg.swift-lang"
]
}
},
// Env in container
"containerEnv": {
},
// Mounts in container
"mounts": [
{
"source": "${localWorkspaceFolder}",
"target": "/workspace",
"type": "bind"
}
],
// The WorkspaceFolder inside container
"workspaceFolder": "/workspace",
// RunArgs
"runArgs": [
"--name",
"IoT-Simulator-Core"
]
{
// Displayed name
"name": "IoT-Simulator-Core",
// Image to be used
"image": "swift",
// Customization
"customizations": {
"vscode": {
"extensions": [
"sswg.swift-lang"
]
}
},
// Env in container
"containerEnv": {
},
// Mounts in container
"mounts": [
{
"source": "${localWorkspaceFolder}",
"target": "/workspace",
"type": "bind"
}
],
// The WorkspaceFolder inside container
"workspaceFolder": "/workspace",
// RunArgs
"runArgs": [
"--name",
"IoT-Simulator-Core"
]
}

View File

@ -1,26 +1,26 @@
// swift-tools-version: 6.0
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "IoT-Simulator-Core",
defaultLocalization: LanguageTag(stringLiteral: "en-US"),
products: [
// Products define the executables and libraries a package produces, making them visible to other packages.
.library(
name: "IoT-Simulator-Core",
targets: ["IoT-Simulator-Core"])
],
dependencies: [],
targets: [
// Targets are the basic building blocks of a package, defining a module or a test suite.
// Targets can depend on other targets in this package and products from dependencies.
.target(
name: "IoT-Simulator-Core"),
.testTarget(
name: "IoT-Simulator-CoreTests",
dependencies: ["IoT-Simulator-Core"]
),
]
)
// swift-tools-version: 6.0
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "IoT-Simulator-Core",
defaultLocalization: LanguageTag(stringLiteral: "en-US"),
products: [
// Products define the executables and libraries a package produces, making them visible to other packages.
.library(
name: "IoT-Simulator-Core",
targets: ["IoT-Simulator-Core"])
],
dependencies: [],
targets: [
// Targets are the basic building blocks of a package, defining a module or a test suite.
// Targets can depend on other targets in this package and products from dependencies.
.target(
name: "IoT-Simulator-Core"),
.testTarget(
name: "IoT-Simulator-CoreTests",
dependencies: ["IoT-Simulator-Core"]
),
]
)

View File

@ -1,2 +1,2 @@
# IoT-Simulator-Core
# IoT-Simulator-Core

View File

@ -0,0 +1,31 @@
public class PhysicalEnvironment {
private var physicalEnvironment: [DataType: PhysicalData]
public let location: String
public init(_ location: String) {
self.physicalEnvironment = Dictionary()
self.location = location
}
/// Gets speficied datum from environment
/// - Parameter dataType: Type of data you want to retrieve
/// - Throws: NoPhysicalDataAvailable
/// - Returns: The datum asked for
public func getPhysicalData(_ dataType: DataType) throws -> PhysicalData {
guard let result: PhysicalData = self.physicalEnvironment[dataType] else {
throw CoreError.NoPhysicalDataAvailable(dataType: "\(dataType)")
}
return result
}
public func setPhysicalData(_ dataType: DataType, _ value: PhysicalData) {
self.physicalEnvironment[dataType] = value
}
public func removePhysicalData(_ dataType: DataType) -> PhysicalData? {
return self.physicalEnvironment.removeValue(forKey: dataType)
}
}

View File

@ -0,0 +1,3 @@
public class Message {
}

View File

@ -0,0 +1,13 @@
public class PhysicalData {
public let type: DataType
public let value: Float
public init(_ dataType: DataType, _ value: Float) {
self.type = dataType
self.value = value
}
}

View File

@ -0,0 +1,6 @@
public enum DataType {
case Temperature
case Humidity
case Scan
case Weight
}

View File

@ -0,0 +1,4 @@
public enum DeviceType {
case AsyncEdgeDevice
case EdgeDevice
}

View File

@ -0,0 +1,3 @@
public enum CoreError : Error {
case NoPhysicalDataAvailable( dataType: String)
}

View File

@ -1,3 +0,0 @@
public func sleepAndPrint() async {
}

View File

@ -1,2 +1,2 @@
// The Swift Programming Language
// https://docs.swift.org/swift-book
// The Swift Programming Language
// https://docs.swift.org/swift-book

View File

@ -0,0 +1,11 @@
public protocol EdgeDevice {
var deviceID : String {get}
var deviceType : DeviceType {get}
var dataType : DataType {get}
var disconnected : Bool {get set}
var compromised : Bool {get set}
var dutyCicle : UInt {get set}
func work() -> Message
}

View File

@ -1,6 +1,6 @@
import Testing
@testable import IoT_Simulator_Core
@Test func example() async throws {
// Write your test here and use APIs like `#expect(...)` to check expected conditions.
}
import Testing
@testable import IoT_Simulator_Core
@Test func example() async throws {
// Write your test here and use APIs like `#expect(...)` to check expected conditions.
}