Add charts for telemetry, update core data with telemetryentity

This commit is contained in:
Garth Vander Houwen 2022-04-04 22:49:26 -07:00
parent ed198dc6a5
commit a2c73418fc
4 changed files with 45 additions and 4 deletions

View file

@ -34,6 +34,7 @@
DD90860E26F69BAE00DC5189 /* NodeMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD90860D26F69BAE00DC5189 /* NodeMap.swift */; };
DD913639270DFF4C00D7ACF3 /* LocalNotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD913638270DFF4C00D7ACF3 /* LocalNotificationManager.swift */; };
DD9D8F2F2764403B00080993 /* Meshtastic.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = DD9D8F2D2764403B00080993 /* Meshtastic.xcdatamodeld */; };
DD9E682F27FACD1F00EE0214 /* SwiftUICharts in Frameworks */ = {isa = PBXBuildFile; productRef = DD9E682E27FACD1F00EE0214 /* SwiftUICharts */; };
DDAF8C5326EB1DF10058C060 /* BLEManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAF8C5226EB1DF10058C060 /* BLEManager.swift */; };
DDAF8C5826ED07FD0058C060 /* mesh.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAF8C5726ED07FD0058C060 /* mesh.pb.swift */; };
DDAF8C5D26ED09490058C060 /* portnums.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAF8C5C26ED09490058C060 /* portnums.pb.swift */; };
@ -135,6 +136,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
DD9E682F27FACD1F00EE0214 /* SwiftUICharts in Frameworks */,
C9697FA527933B8C00250207 /* SQLite in Frameworks */,
DD5394FC276993AD00AD86B1 /* SwiftProtobuf in Frameworks */,
);
@ -388,6 +390,7 @@
packageProductDependencies = (
DD5394FB276993AD00AD86B1 /* SwiftProtobuf */,
C9697FA427933B8C00250207 /* SQLite */,
DD9E682E27FACD1F00EE0214 /* SwiftUICharts */,
);
productName = MeshtasticClient;
productReference = DDC2E15426CE248E0042C5E4 /* MeshtasticClient.app */;
@ -464,6 +467,7 @@
packageReferences = (
DD5394FA276993AD00AD86B1 /* XCRemoteSwiftPackageReference "swift-protobuf" */,
C9697FA327933B8C00250207 /* XCRemoteSwiftPackageReference "SQLite.swift" */,
DD9E682D27FACD1F00EE0214 /* XCRemoteSwiftPackageReference "SwiftUICharts" */,
);
productRefGroup = DDC2E15526CE248E0042C5E4 /* Products */;
projectDirPath = "";
@ -787,6 +791,7 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = GCH7VS5Y9R;
INFOPLIST_FILE = MeshtasticClientTests/Info.plist;
@ -809,6 +814,7 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = GCH7VS5Y9R;
INFOPLIST_FILE = MeshtasticClientTests/Info.plist;
@ -924,6 +930,14 @@
minimumVersion = 1.0.0;
};
};
DD9E682D27FACD1F00EE0214 /* XCRemoteSwiftPackageReference "SwiftUICharts" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/mecid/SwiftUICharts.git";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 0.6.8;
};
};
/* End XCRemoteSwiftPackageReference section */
/* Begin XCSwiftPackageProductDependency section */
@ -937,6 +951,11 @@
package = DD5394FA276993AD00AD86B1 /* XCRemoteSwiftPackageReference "swift-protobuf" */;
productName = SwiftProtobuf;
};
DD9E682E27FACD1F00EE0214 /* SwiftUICharts */ = {
isa = XCSwiftPackageProductDependency;
package = DD9E682D27FACD1F00EE0214 /* XCRemoteSwiftPackageReference "SwiftUICharts" */;
productName = SwiftUICharts;
};
/* End XCSwiftPackageProductDependency section */
/* Begin XCVersionGroup section */

View file

@ -18,6 +18,15 @@
"revision": "7e2c5f3cbbeea68e004915e3a8961e20bd11d824",
"version": "1.18.0"
}
},
{
"package": "SwiftUICharts",
"repositoryURL": "https://github.com/mecid/SwiftUICharts.git",
"state": {
"branch": null,
"revision": "15ec6551761e6a444e9439073e1f557c1c9700c6",
"version": "0.6.8"
}
}
]
},

View file

@ -967,8 +967,19 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph
}
}
// MARK: Incoming TELEMETRY_APP Packet
} else if decodedInfo.packet.decoded.portnum == PortNum.telemetryApp {
if let telemetryMessage = try? Telemetry(serializedData: decodedInfo.packet.decoded.payload) {
let telemetry = TelemetryEntity(context: context!)
telemetry.num = Int64(decodedInfo.packet.from)
print(decodedInfo.packet.decoded.requestID)
print(telemetryMessage)
}
if meshLoggingEnabled { MeshLogger.log(" MESH PACKET received for Telemetry App UNHANDLED \(try decodedInfo.packet.jsonString())") }
print(" MESH PACKET received for Telemetry App UNHANDLED \(try decodedInfo.packet.jsonString())")

View file

@ -50,7 +50,7 @@
<attribute name="voltage" optional="YES" attributeType="Float" defaultValueString="0.0" usesScalarValueType="YES"/>
<relationship name="myInfo" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="MyInfoEntity" inverseName="myInfoNode" inverseEntity="MyInfoEntity"/>
<relationship name="positions" optional="YES" toMany="YES" deletionRule="Nullify" ordered="YES" destinationEntity="PositionEntity" inverseName="nodePosition" inverseEntity="PositionEntity"/>
<relationship name="telemetry" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="TelemetryEntitiy"/>
<relationship name="telemetry" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="TelemetryEntity"/>
<relationship name="user" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="UserEntity" inverseName="userNode" inverseEntity="UserEntity"/>
<uniquenessConstraints>
<uniquenessConstraint>
@ -66,15 +66,16 @@
<attribute name="time" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
<relationship name="nodePosition" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="NodeInfoEntity" inverseName="positions" inverseEntity="NodeInfoEntity"/>
</entity>
<entity name="TelemetryEntitiy" representedClassName="TelemetryEntitiy" syncable="YES" codeGenerationType="class">
<entity name="TelemetryEntity" representedClassName="TelemetryEntity" syncable="YES" codeGenerationType="class">
<attribute name="barometricPressure" optional="YES" attributeType="Float" defaultValueString="0.0" usesScalarValueType="YES"/>
<attribute name="current" optional="YES" attributeType="Float" defaultValueString="0.0" usesScalarValueType="YES"/>
<attribute name="gasResistance" optional="YES" attributeType="Float" defaultValueString="0.0" usesScalarValueType="YES"/>
<attribute name="num" optional="YES" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES"/>
<attribute name="relativeHumidity" optional="YES" attributeType="Float" defaultValueString="0.0" usesScalarValueType="YES"/>
<attribute name="temperature" optional="YES" attributeType="Float" defaultValueString="0.0" usesScalarValueType="YES"/>
<attribute name="time" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
<attribute name="voltage" optional="YES" attributeType="Float" defaultValueString="0.0" usesScalarValueType="YES"/>
<relationship name="nodeTelemetry" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="TelemetryEntitiy"/>
<relationship name="nodeTelemetry" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="TelemetryEntity"/>
</entity>
<entity name="UserEntity" representedClassName="UserEntity" syncable="YES" codeGenerationType="class">
<attribute name="hwModel" attributeType="String"/>
@ -96,6 +97,7 @@
<element name="MyInfoEntity" positionX="-18" positionY="81" width="128" height="179"/>
<element name="NodeInfoEntity" positionX="-63" positionY="-18" width="128" height="209"/>
<element name="PositionEntity" positionX="-54" positionY="54" width="128" height="119"/>
<element name="TelemetryEntity" positionX="160" positionY="192" width="128" height="164"/>
<element name="UserEntity" positionX="0" positionY="144" width="128" height="200"/>
</elements>
</model>
</model>